4
4
5
5
define noundef half @wave_active_max_half (half noundef %expr ) {
6
6
entry:
7
- ; CHECK: call half @dx.op.waveActiveOp.f16(i32 119, half %expr, i8 3, i8 0){{$}}
7
+ ; CHECK: call half @dx.op.waveActiveOp.f16(i32 119, half %expr, i8 3, i8 0) #[[#ATTR:]]
8
8
%ret = call half @llvm.dx.wave.reduce.max.f16 (half %expr )
9
9
ret half %ret
10
10
}
11
11
12
12
define noundef float @wave_active_max_float (float noundef %expr ) {
13
13
entry:
14
- ; CHECK: call float @dx.op.waveActiveOp.f32(i32 119, float %expr, i8 3, i8 0){{$}}
14
+ ; CHECK: call float @dx.op.waveActiveOp.f32(i32 119, float %expr, i8 3, i8 0) #[[#ATTR]]
15
15
%ret = call float @llvm.dx.wave.reduce.max.f32 (float %expr )
16
16
ret float %ret
17
17
}
18
18
19
19
define noundef double @wave_active_max_double (double noundef %expr ) {
20
20
entry:
21
- ; CHECK: call double @dx.op.waveActiveOp.f64(i32 119, double %expr, i8 3, i8 0){{$}}
21
+ ; CHECK: call double @dx.op.waveActiveOp.f64(i32 119, double %expr, i8 3, i8 0) #[[#ATTR]]
22
22
%ret = call double @llvm.dx.wave.reduce.max.f64 (double %expr )
23
23
ret double %ret
24
24
}
25
25
26
26
define noundef i16 @wave_active_max_i16 (i16 noundef %expr ) {
27
27
entry:
28
- ; CHECK: call i16 @dx.op.waveActiveOp.i16(i32 119, i16 %expr, i8 3, i8 0){{$}}
28
+ ; CHECK: call i16 @dx.op.waveActiveOp.i16(i32 119, i16 %expr, i8 3, i8 0) #[[#ATTR]]
29
29
%ret = call i16 @llvm.dx.wave.reduce.max.i16 (i16 %expr )
30
30
ret i16 %ret
31
31
}
32
32
33
33
define noundef i32 @wave_active_max_i32 (i32 noundef %expr ) {
34
34
entry:
35
- ; CHECK: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 %expr, i8 3, i8 0){{$}}
35
+ ; CHECK: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 %expr, i8 3, i8 0) #[[#ATTR]]
36
36
%ret = call i32 @llvm.dx.wave.reduce.max.i32 (i32 %expr )
37
37
ret i32 %ret
38
38
}
39
39
40
40
define noundef i64 @wave_active_max_i64 (i64 noundef %expr ) {
41
41
entry:
42
- ; CHECK: call i64 @dx.op.waveActiveOp.i64(i32 119, i64 %expr, i8 3, i8 0){{$}}
42
+ ; CHECK: call i64 @dx.op.waveActiveOp.i64(i32 119, i64 %expr, i8 3, i8 0) #[[#ATTR]]
43
43
%ret = call i64 @llvm.dx.wave.reduce.max.i64 (i64 %expr )
44
44
ret i64 %ret
45
45
}
46
46
47
47
define noundef i16 @wave_active_umax_i16 (i16 noundef %expr ) {
48
48
entry:
49
- ; CHECK: call i16 @dx.op.waveActiveOp.i16(i32 119, i16 %expr, i8 3, i8 1){{$}}
49
+ ; CHECK: call i16 @dx.op.waveActiveOp.i16(i32 119, i16 %expr, i8 3, i8 1) #[[#ATTR]]
50
50
%ret = call i16 @llvm.dx.wave.reduce.umax.i16 (i16 %expr )
51
51
ret i16 %ret
52
52
}
53
53
54
54
define noundef i32 @wave_active_umax_i32 (i32 noundef %expr ) {
55
55
entry:
56
- ; CHECK: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 %expr, i8 3, i8 1){{$}}
56
+ ; CHECK: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 %expr, i8 3, i8 1) #[[#ATTR]]
57
57
%ret = call i32 @llvm.dx.wave.reduce.umax.i32 (i32 %expr )
58
58
ret i32 %ret
59
59
}
60
60
61
61
define noundef i64 @wave_active_umax_i64 (i64 noundef %expr ) {
62
62
entry:
63
- ; CHECK: call i64 @dx.op.waveActiveOp.i64(i32 119, i64 %expr, i8 3, i8 1){{$}}
63
+ ; CHECK: call i64 @dx.op.waveActiveOp.i64(i32 119, i64 %expr, i8 3, i8 1) #[[#ATTR]]
64
64
%ret = call i64 @llvm.dx.wave.reduce.umax.i64 (i64 %expr )
65
65
ret i64 %ret
66
66
}
@@ -82,27 +82,27 @@ declare i64 @llvm.dx.wave.reduce.umax.i64(i64)
82
82
83
83
define noundef <2 x half > @wave_active_max_v2half (<2 x half > noundef %expr ) {
84
84
entry:
85
- ; CHECK: call half @dx.op.waveActiveOp.f16(i32 119, half %expr.i0, i8 3, i8 0){{$}}
86
- ; CHECK: call half @dx.op.waveActiveOp.f16(i32 119, half %expr.i1, i8 3, i8 0){{$}}
85
+ ; CHECK: call half @dx.op.waveActiveOp.f16(i32 119, half %expr.i0, i8 3, i8 0) #[[#ATTR]]
86
+ ; CHECK: call half @dx.op.waveActiveOp.f16(i32 119, half %expr.i1, i8 3, i8 0) #[[#ATTR]]
87
87
%ret = call <2 x half > @llvm.dx.wave.reduce.max.v2f16 (<2 x half > %expr )
88
88
ret <2 x half > %ret
89
89
}
90
90
91
91
define noundef <3 x i32 > @wave_active_max_v3i32 (<3 x i32 > noundef %expr ) {
92
92
entry:
93
- ; CHECK: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 %expr.i0, i8 3, i8 0){{$}}
94
- ; CHECK: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 %expr.i1, i8 3, i8 0){{$}}
95
- ; CHECK: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 %expr.i2, i8 3, i8 0){{$}}
93
+ ; CHECK: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 %expr.i0, i8 3, i8 0) #[[#ATTR]]
94
+ ; CHECK: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 %expr.i1, i8 3, i8 0) #[[#ATTR]]
95
+ ; CHECK: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 %expr.i2, i8 3, i8 0) #[[#ATTR]]
96
96
%ret = call <3 x i32 > @llvm.dx.wave.reduce.max.v3i32 (<3 x i32 > %expr )
97
97
ret <3 x i32 > %ret
98
98
}
99
99
100
100
define noundef <4 x double > @wave_active_max_v4f64 (<4 x double > noundef %expr ) {
101
101
entry:
102
- ; CHECK: call double @dx.op.waveActiveOp.f64(i32 119, double %expr.i0, i8 3, i8 0){{$}}
103
- ; CHECK: call double @dx.op.waveActiveOp.f64(i32 119, double %expr.i1, i8 3, i8 0){{$}}
104
- ; CHECK: call double @dx.op.waveActiveOp.f64(i32 119, double %expr.i2, i8 3, i8 0){{$}}
105
- ; CHECK: call double @dx.op.waveActiveOp.f64(i32 119, double %expr.i3, i8 3, i8 0){{$}}
102
+ ; CHECK: call double @dx.op.waveActiveOp.f64(i32 119, double %expr.i0, i8 3, i8 0) #[[#ATTR]]
103
+ ; CHECK: call double @dx.op.waveActiveOp.f64(i32 119, double %expr.i1, i8 3, i8 0) #[[#ATTR]]
104
+ ; CHECK: call double @dx.op.waveActiveOp.f64(i32 119, double %expr.i2, i8 3, i8 0) #[[#ATTR]]
105
+ ; CHECK: call double @dx.op.waveActiveOp.f64(i32 119, double %expr.i3, i8 3, i8 0) #[[#ATTR]]
106
106
%ret = call <4 x double > @llvm.dx.wave.reduce.max.v4f64 (<4 x double > %expr )
107
107
ret <4 x double > %ret
108
108
}
@@ -113,31 +113,33 @@ declare <4 x double> @llvm.dx.wave.reduce.max.v4f64(<4 x double>)
113
113
114
114
define noundef <2 x i16 > @wave_active_umax_v2i16 (<2 x i16 > noundef %expr ) {
115
115
entry:
116
- ; CHECK: call i16 @dx.op.waveActiveOp.i16(i32 119, i16 %expr.i0, i8 3, i8 1){{$}}
117
- ; CHECK: call i16 @dx.op.waveActiveOp.i16(i32 119, i16 %expr.i1, i8 3, i8 1){{$}}
116
+ ; CHECK: call i16 @dx.op.waveActiveOp.i16(i32 119, i16 %expr.i0, i8 3, i8 1) #[[#ATTR]]
117
+ ; CHECK: call i16 @dx.op.waveActiveOp.i16(i32 119, i16 %expr.i1, i8 3, i8 1) #[[#ATTR]]
118
118
%ret = call <2 x i16 > @llvm.dx.wave.reduce.umax.v2f16 (<2 x i16 > %expr )
119
119
ret <2 x i16 > %ret
120
120
}
121
121
122
122
define noundef <3 x i32 > @wave_active_umax_v3i32 (<3 x i32 > noundef %expr ) {
123
123
entry:
124
- ; CHECK: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 %expr.i0, i8 3, i8 1){{$}}
125
- ; CHECK: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 %expr.i1, i8 3, i8 1){{$}}
126
- ; CHECK: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 %expr.i2, i8 3, i8 1){{$}}
124
+ ; CHECK: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 %expr.i0, i8 3, i8 1) #[[#ATTR]]
125
+ ; CHECK: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 %expr.i1, i8 3, i8 1) #[[#ATTR]]
126
+ ; CHECK: call i32 @dx.op.waveActiveOp.i32(i32 119, i32 %expr.i2, i8 3, i8 1) #[[#ATTR]]
127
127
%ret = call <3 x i32 > @llvm.dx.wave.reduce.umax.v3i32 (<3 x i32 > %expr )
128
128
ret <3 x i32 > %ret
129
129
}
130
130
131
131
define noundef <4 x i64 > @wave_active_umax_v4f64 (<4 x i64 > noundef %expr ) {
132
132
entry:
133
- ; CHECK: call i64 @dx.op.waveActiveOp.i64(i32 119, i64 %expr.i0, i8 3, i8 1){{$}}
134
- ; CHECK: call i64 @dx.op.waveActiveOp.i64(i32 119, i64 %expr.i1, i8 3, i8 1){{$}}
135
- ; CHECK: call i64 @dx.op.waveActiveOp.i64(i32 119, i64 %expr.i2, i8 3, i8 1){{$}}
136
- ; CHECK: call i64 @dx.op.waveActiveOp.i64(i32 119, i64 %expr.i3, i8 3, i8 1){{$}}
133
+ ; CHECK: call i64 @dx.op.waveActiveOp.i64(i32 119, i64 %expr.i0, i8 3, i8 1) #[[#ATTR]]
134
+ ; CHECK: call i64 @dx.op.waveActiveOp.i64(i32 119, i64 %expr.i1, i8 3, i8 1) #[[#ATTR]]
135
+ ; CHECK: call i64 @dx.op.waveActiveOp.i64(i32 119, i64 %expr.i2, i8 3, i8 1) #[[#ATTR]]
136
+ ; CHECK: call i64 @dx.op.waveActiveOp.i64(i32 119, i64 %expr.i3, i8 3, i8 1) #[[#ATTR]]
137
137
%ret = call <4 x i64 > @llvm.dx.wave.reduce.umax.v4f64 (<4 x i64 > %expr )
138
138
ret <4 x i64 > %ret
139
139
}
140
140
141
+ ; CHECK: attributes #[[#ATTR]] = {{{.*}} memory(none) {{.*}}}
142
+
141
143
declare <2 x i16 > @llvm.dx.wave.reduce.umax.v2f16 (<2 x i16 >)
142
144
declare <3 x i32 > @llvm.dx.wave.reduce.umax.v3i32 (<3 x i32 >)
143
145
declare <4 x i64 > @llvm.dx.wave.reduce.umax.v4f64 (<4 x i64 >)
0 commit comments