5
5
define noundef half @wave_active_sum_half (half noundef %expr ) {
6
6
entry:
7
7
; 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 )
9
9
ret half %ret
10
10
}
11
11
12
12
define noundef float @wave_active_sum_float (float noundef %expr ) {
13
13
entry:
14
14
; 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 )
16
16
ret float %ret
17
17
}
18
18
19
19
define noundef double @wave_active_sum_double (double noundef %expr ) {
20
20
entry:
21
21
; 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 )
23
23
ret double %ret
24
24
}
25
25
26
26
define noundef i16 @wave_active_sum_i16 (i16 noundef %expr ) {
27
27
entry:
28
28
; 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 )
30
30
ret i16 %ret
31
31
}
32
32
33
33
define noundef i32 @wave_active_sum_i32 (i32 noundef %expr ) {
34
34
entry:
35
35
; 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 )
37
37
ret i32 %ret
38
38
}
39
39
40
40
define noundef i64 @wave_active_sum_i64 (i64 noundef %expr ) {
41
41
entry:
42
42
; 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 )
44
44
ret i64 %ret
45
45
}
46
46
47
47
define noundef i16 @wave_active_usum_i16 (i16 noundef %expr ) {
48
48
entry:
49
49
; 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 )
51
51
ret i16 %ret
52
52
}
53
53
54
54
define noundef i32 @wave_active_usum_i32 (i32 noundef %expr ) {
55
55
entry:
56
56
; 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 )
58
58
ret i32 %ret
59
59
}
60
60
61
61
define noundef i64 @wave_active_usum_i64 (i64 noundef %expr ) {
62
62
entry:
63
63
; 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 )
65
65
ret i64 %ret
66
66
}
67
67
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 )
71
71
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 )
75
75
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 )
79
79
80
80
; Test that for vector values, WaveActiveSum scalarizes and maps down to the
81
81
; DirectX op
@@ -84,7 +84,7 @@ define noundef <2 x half> @wave_active_sum_v2half(<2 x half> noundef %expr) {
84
84
entry:
85
85
; CHECK: call half @dx.op.waveActiveOp.f16(i32 119, half %expr.i0, i8 0, i8 0)
86
86
; 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 )
88
88
ret <2 x half > %ret
89
89
}
90
90
93
93
; CHECK: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 %expr.i0, i8 0, i8 0)
94
94
; CHECK: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 %expr.i1, i8 0, i8 0)
95
95
; 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 )
97
97
ret <3 x i32 > %ret
98
98
}
99
99
@@ -103,19 +103,19 @@ entry:
103
103
; CHECK: call double @dx.op.waveActiveOp.f64(i32 119, double %expr.i1, i8 0, i8 0)
104
104
; CHECK: call double @dx.op.waveActiveOp.f64(i32 119, double %expr.i2, i8 0, i8 0)
105
105
; 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 )
107
107
ret <4 x double > %ret
108
108
}
109
109
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 >)
113
113
114
114
define noundef <2 x i16 > @wave_active_usum_v2i16 (<2 x i16 > noundef %expr ) {
115
115
entry:
116
116
; CHECK: call i16 @dx.op.waveActiveOp.i16(i32 119, i16 %expr.i0, i8 0, i8 1)
117
117
; 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 )
119
119
ret <2 x i16 > %ret
120
120
}
121
121
@@ -124,7 +124,7 @@ entry:
124
124
; CHECK: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 %expr.i0, i8 0, i8 1)
125
125
; CHECK: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 %expr.i1, i8 0, i8 1)
126
126
; 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 )
128
128
ret <3 x i32 > %ret
129
129
}
130
130
@@ -134,10 +134,10 @@ entry:
134
134
; CHECK: call i64 @dx.op.waveActiveOp.i64(i32 119, i64 %expr.i1, i8 0, i8 1)
135
135
; CHECK: call i64 @dx.op.waveActiveOp.i64(i32 119, i64 %expr.i2, i8 0, i8 1)
136
136
; 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 )
138
138
ret <4 x i64 > %ret
139
139
}
140
140
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