55define noundef half @wave_active_sum_half (half noundef %expr ) {
66entry:
77; CHECK: call half @dx.op.waveActiveOp.f16(i32 119, half %expr, i8 0, i8 0)
8- %ret = call half @llvm.dx.wave.active .sum.f16 (half %expr )
8+ %ret = call half @llvm.dx.wave.reduce .sum.f16 (half %expr )
99 ret half %ret
1010}
1111
1212define noundef float @wave_active_sum_float (float noundef %expr ) {
1313entry:
1414; CHECK: call float @dx.op.waveActiveOp.f32(i32 119, float %expr, i8 0, i8 0)
15- %ret = call float @llvm.dx.wave.active .sum.f32 (float %expr )
15+ %ret = call float @llvm.dx.wave.reduce .sum.f32 (float %expr )
1616 ret float %ret
1717}
1818
1919define noundef double @wave_active_sum_double (double noundef %expr ) {
2020entry:
2121; CHECK: call double @dx.op.waveActiveOp.f64(i32 119, double %expr, i8 0, i8 0)
22- %ret = call double @llvm.dx.wave.active .sum.f64 (double %expr )
22+ %ret = call double @llvm.dx.wave.reduce .sum.f64 (double %expr )
2323 ret double %ret
2424}
2525
2626define noundef i16 @wave_active_sum_i16 (i16 noundef %expr ) {
2727entry:
2828; CHECK: call i16 @dx.op.waveActiveOp.i16(i32 119, i16 %expr, i8 0, i8 0)
29- %ret = call i16 @llvm.dx.wave.active .sum.i16 (i16 %expr )
29+ %ret = call i16 @llvm.dx.wave.reduce .sum.i16 (i16 %expr )
3030 ret i16 %ret
3131}
3232
3333define noundef i32 @wave_active_sum_i32 (i32 noundef %expr ) {
3434entry:
3535; CHECK: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 %expr, i8 0, i8 0)
36- %ret = call i32 @llvm.dx.wave.active .sum.i32 (i32 %expr )
36+ %ret = call i32 @llvm.dx.wave.reduce .sum.i32 (i32 %expr )
3737 ret i32 %ret
3838}
3939
4040define noundef i64 @wave_active_sum_i64 (i64 noundef %expr ) {
4141entry:
4242; CHECK: call i64 @dx.op.waveActiveOp.i64(i32 119, i64 %expr, i8 0, i8 0)
43- %ret = call i64 @llvm.dx.wave.active .sum.i64 (i64 %expr )
43+ %ret = call i64 @llvm.dx.wave.reduce .sum.i64 (i64 %expr )
4444 ret i64 %ret
4545}
4646
4747define noundef i16 @wave_active_usum_i16 (i16 noundef %expr ) {
4848entry:
4949; CHECK: call i16 @dx.op.waveActiveOp.i16(i32 119, i16 %expr, i8 0, i8 1)
50- %ret = call i16 @llvm.dx.wave.active .usum.i16 (i16 %expr )
50+ %ret = call i16 @llvm.dx.wave.reduce .usum.i16 (i16 %expr )
5151 ret i16 %ret
5252}
5353
5454define noundef i32 @wave_active_usum_i32 (i32 noundef %expr ) {
5555entry:
5656; CHECK: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 %expr, i8 0, i8 1)
57- %ret = call i32 @llvm.dx.wave.active .usum.i32 (i32 %expr )
57+ %ret = call i32 @llvm.dx.wave.reduce .usum.i32 (i32 %expr )
5858 ret i32 %ret
5959}
6060
6161define noundef i64 @wave_active_usum_i64 (i64 noundef %expr ) {
6262entry:
6363; CHECK: call i64 @dx.op.waveActiveOp.i64(i32 119, i64 %expr, i8 0, i8 1)
64- %ret = call i64 @llvm.dx.wave.active .usum.i64 (i64 %expr )
64+ %ret = call i64 @llvm.dx.wave.reduce .usum.i64 (i64 %expr )
6565 ret i64 %ret
6666}
6767
68- declare half @llvm.dx.wave.active .sum.f16 (half )
69- declare float @llvm.dx.wave.active .sum.f32 (float )
70- declare double @llvm.dx.wave.active .sum.f64 (double )
68+ declare half @llvm.dx.wave.reduce .sum.f16 (half )
69+ declare float @llvm.dx.wave.reduce .sum.f32 (float )
70+ declare double @llvm.dx.wave.reduce .sum.f64 (double )
7171
72- declare i16 @llvm.dx.wave.active .sum.i16 (i16 )
73- declare i32 @llvm.dx.wave.active .sum.i32 (i32 )
74- declare i64 @llvm.dx.wave.active .sum.i64 (i64 )
72+ declare i16 @llvm.dx.wave.reduce .sum.i16 (i16 )
73+ declare i32 @llvm.dx.wave.reduce .sum.i32 (i32 )
74+ declare i64 @llvm.dx.wave.reduce .sum.i64 (i64 )
7575
76- declare i16 @llvm.dx.wave.active .usum.i16 (i16 )
77- declare i32 @llvm.dx.wave.active .usum.i32 (i32 )
78- declare i64 @llvm.dx.wave.active .usum.i64 (i64 )
76+ declare i16 @llvm.dx.wave.reduce .usum.i16 (i16 )
77+ declare i32 @llvm.dx.wave.reduce .usum.i32 (i32 )
78+ declare i64 @llvm.dx.wave.reduce .usum.i64 (i64 )
7979
8080; Test that for vector values, WaveActiveSum scalarizes and maps down to the
8181; DirectX op
@@ -84,7 +84,7 @@ define noundef <2 x half> @wave_active_sum_v2half(<2 x half> noundef %expr) {
8484entry:
8585; CHECK: call half @dx.op.waveActiveOp.f16(i32 119, half %expr.i0, i8 0, i8 0)
8686; CHECK: call half @dx.op.waveActiveOp.f16(i32 119, half %expr.i1, i8 0, i8 0)
87- %ret = call <2 x half > @llvm.dx.wave.active .sum.v2f16 (<2 x half > %expr )
87+ %ret = call <2 x half > @llvm.dx.wave.reduce .sum.v2f16 (<2 x half > %expr )
8888 ret <2 x half > %ret
8989}
9090
9393; CHECK: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 %expr.i0, i8 0, i8 0)
9494; CHECK: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 %expr.i1, i8 0, i8 0)
9595; CHECK: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 %expr.i2, i8 0, i8 0)
96- %ret = call <3 x i32 > @llvm.dx.wave.active .sum.v3i32 (<3 x i32 > %expr )
96+ %ret = call <3 x i32 > @llvm.dx.wave.reduce .sum.v3i32 (<3 x i32 > %expr )
9797 ret <3 x i32 > %ret
9898}
9999
@@ -103,19 +103,19 @@ entry:
103103; CHECK: call double @dx.op.waveActiveOp.f64(i32 119, double %expr.i1, i8 0, i8 0)
104104; CHECK: call double @dx.op.waveActiveOp.f64(i32 119, double %expr.i2, i8 0, i8 0)
105105; CHECK: call double @dx.op.waveActiveOp.f64(i32 119, double %expr.i3, i8 0, i8 0)
106- %ret = call <4 x double > @llvm.dx.wave.active .sum.v464 (<4 x double > %expr )
106+ %ret = call <4 x double > @llvm.dx.wave.reduce .sum.v464 (<4 x double > %expr )
107107 ret <4 x double > %ret
108108}
109109
110- declare <2 x half > @llvm.dx.wave.active .sum.v2f16 (<2 x half >)
111- declare <3 x i32 > @llvm.dx.wave.active .sum.v3i32 (<3 x i32 >)
112- declare <4 x double > @llvm.dx.wave.active .sum.v4f64 (<4 x double >)
110+ declare <2 x half > @llvm.dx.wave.reduce .sum.v2f16 (<2 x half >)
111+ declare <3 x i32 > @llvm.dx.wave.reduce .sum.v3i32 (<3 x i32 >)
112+ declare <4 x double > @llvm.dx.wave.reduce .sum.v4f64 (<4 x double >)
113113
114114define noundef <2 x i16 > @wave_active_usum_v2i16 (<2 x i16 > noundef %expr ) {
115115entry:
116116; CHECK: call i16 @dx.op.waveActiveOp.i16(i32 119, i16 %expr.i0, i8 0, i8 1)
117117; CHECK: call i16 @dx.op.waveActiveOp.i16(i32 119, i16 %expr.i1, i8 0, i8 1)
118- %ret = call <2 x i16 > @llvm.dx.wave.active .usum.v2f16 (<2 x i16 > %expr )
118+ %ret = call <2 x i16 > @llvm.dx.wave.reduce .usum.v2f16 (<2 x i16 > %expr )
119119 ret <2 x i16 > %ret
120120}
121121
@@ -124,7 +124,7 @@ entry:
124124; CHECK: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 %expr.i0, i8 0, i8 1)
125125; CHECK: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 %expr.i1, i8 0, i8 1)
126126; CHECK: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 %expr.i2, i8 0, i8 1)
127- %ret = call <3 x i32 > @llvm.dx.wave.active .usum.v3i32 (<3 x i32 > %expr )
127+ %ret = call <3 x i32 > @llvm.dx.wave.reduce .usum.v3i32 (<3 x i32 > %expr )
128128 ret <3 x i32 > %ret
129129}
130130
@@ -134,10 +134,10 @@ entry:
134134; CHECK: call i64 @dx.op.waveActiveOp.i64(i32 119, i64 %expr.i1, i8 0, i8 1)
135135; CHECK: call i64 @dx.op.waveActiveOp.i64(i32 119, i64 %expr.i2, i8 0, i8 1)
136136; CHECK: call i64 @dx.op.waveActiveOp.i64(i32 119, i64 %expr.i3, i8 0, i8 1)
137- %ret = call <4 x i64 > @llvm.dx.wave.active .usum.v464 (<4 x i64 > %expr )
137+ %ret = call <4 x i64 > @llvm.dx.wave.reduce .usum.v464 (<4 x i64 > %expr )
138138 ret <4 x i64 > %ret
139139}
140140
141- declare <2 x i16 > @llvm.dx.wave.active .usum.v2f16 (<2 x i16 >)
142- declare <3 x i32 > @llvm.dx.wave.active .usum.v3i32 (<3 x i32 >)
143- declare <4 x i64 > @llvm.dx.wave.active .usum.v4f64 (<4 x i64 >)
141+ declare <2 x i16 > @llvm.dx.wave.reduce .usum.v2f16 (<2 x i16 >)
142+ declare <3 x i32 > @llvm.dx.wave.reduce .usum.v3i32 (<3 x i32 >)
143+ declare <4 x i64 > @llvm.dx.wave.reduce .usum.v4f64 (<4 x i64 >)
0 commit comments