@@ -18,7 +18,7 @@ define <vscale x 8 x i16> @test_svlogb_f16_x_1(<vscale x 8 x i1> %pg, <vscale x
18
18
; CHECK-2p2-NEXT: flogb z0.h, p0/z, z0.h
19
19
; CHECK-2p2-NEXT: ret
20
20
entry:
21
- %0 = tail call <vscale x 8 x i16 > @llvm.aarch64.sve.flogb.nxv8f16 (<vscale x 8 x i16 > undef , <vscale x 8 x i1 > %pg , <vscale x 8 x half > %x )
21
+ %0 = tail call <vscale x 8 x i16 > @llvm.aarch64.sve.flogb.nxv8f16 (<vscale x 8 x i16 > poison , <vscale x 8 x i1 > %pg , <vscale x 8 x half > %x )
22
22
ret <vscale x 8 x i16 > %0
23
23
}
24
24
@@ -33,7 +33,7 @@ define <vscale x 8 x i16> @test_svlogb_f16_x_2(<vscale x 8 x i1> %pg, double %z0
33
33
; CHECK-2p2-NEXT: flogb z0.h, p0/z, z1.h
34
34
; CHECK-2p2-NEXT: ret
35
35
entry:
36
- %0 = tail call <vscale x 8 x i16 > @llvm.aarch64.sve.flogb.nxv8f16 (<vscale x 8 x i16 > undef , <vscale x 8 x i1 > %pg , <vscale x 8 x half > %x )
36
+ %0 = tail call <vscale x 8 x i16 > @llvm.aarch64.sve.flogb.nxv8f16 (<vscale x 8 x i16 > poison , <vscale x 8 x i1 > %pg , <vscale x 8 x half > %x )
37
37
ret <vscale x 8 x i16 > %0
38
38
}
39
39
@@ -64,7 +64,7 @@ define <vscale x 4 x i32> @test_svlogb_f32_x_1(<vscale x 4 x i1> %pg, <vscale x
64
64
; CHECK-2p2-NEXT: flogb z0.s, p0/z, z0.s
65
65
; CHECK-2p2-NEXT: ret
66
66
entry:
67
- %0 = tail call <vscale x 4 x i32 > @llvm.aarch64.sve.flogb.nxv4f32 (<vscale x 4 x i32 > undef , <vscale x 4 x i1 > %pg , <vscale x 4 x float > %x )
67
+ %0 = tail call <vscale x 4 x i32 > @llvm.aarch64.sve.flogb.nxv4f32 (<vscale x 4 x i32 > poison , <vscale x 4 x i1 > %pg , <vscale x 4 x float > %x )
68
68
ret <vscale x 4 x i32 > %0
69
69
}
70
70
@@ -79,7 +79,7 @@ define <vscale x 4 x i32> @test_svlogb_f32_x_2(<vscale x 4 x i1> %pg, double %z0
79
79
; CHECK-2p2-NEXT: flogb z0.s, p0/z, z1.s
80
80
; CHECK-2p2-NEXT: ret
81
81
entry:
82
- %0 = tail call <vscale x 4 x i32 > @llvm.aarch64.sve.flogb.nxv4f32 (<vscale x 4 x i32 > undef , <vscale x 4 x i1 > %pg , <vscale x 4 x float > %x )
82
+ %0 = tail call <vscale x 4 x i32 > @llvm.aarch64.sve.flogb.nxv4f32 (<vscale x 4 x i32 > poison , <vscale x 4 x i1 > %pg , <vscale x 4 x float > %x )
83
83
ret <vscale x 4 x i32 > %0
84
84
}
85
85
@@ -110,7 +110,7 @@ define <vscale x 2 x i64> @test_svlogb_f64_x_1(<vscale x 2 x i1> %pg, <vscale x
110
110
; CHECK-2p2-NEXT: flogb z0.d, p0/z, z0.d
111
111
; CHECK-2p2-NEXT: ret
112
112
entry:
113
- %0 = tail call <vscale x 2 x i64 > @llvm.aarch64.sve.flogb.nxv2f64 (<vscale x 2 x i64 > undef , <vscale x 2 x i1 > %pg , <vscale x 2 x double > %x )
113
+ %0 = tail call <vscale x 2 x i64 > @llvm.aarch64.sve.flogb.nxv2f64 (<vscale x 2 x i64 > poison , <vscale x 2 x i1 > %pg , <vscale x 2 x double > %x )
114
114
ret <vscale x 2 x i64 > %0
115
115
}
116
116
@@ -125,7 +125,7 @@ define <vscale x 2 x i64> @test_svlogb_f64_x_2(<vscale x 2 x i1> %pg, double %z0
125
125
; CHECK-2p2-NEXT: flogb z0.d, p0/z, z1.d
126
126
; CHECK-2p2-NEXT: ret
127
127
entry:
128
- %0 = tail call <vscale x 2 x i64 > @llvm.aarch64.sve.flogb.nxv2f64 (<vscale x 2 x i64 > undef , <vscale x 2 x i1 > %pg , <vscale x 2 x double > %x )
128
+ %0 = tail call <vscale x 2 x i64 > @llvm.aarch64.sve.flogb.nxv2f64 (<vscale x 2 x i64 > poison , <vscale x 2 x i1 > %pg , <vscale x 2 x double > %x )
129
129
ret <vscale x 2 x i64 > %0
130
130
}
131
131
@@ -144,3 +144,115 @@ entry:
144
144
%0 = tail call <vscale x 2 x i64 > @llvm.aarch64.sve.flogb.nxv2f64 (<vscale x 2 x i64 > zeroinitializer , <vscale x 2 x i1 > %pg , <vscale x 2 x double > %x )
145
145
ret <vscale x 2 x i64 > %0
146
146
}
147
+
148
+ define <vscale x 8 x i16 > @test_svlogb_nxv8f16_ptrue_u (double %z0 , <vscale x 8 x half > %x ) {
149
+ ; CHECK-LABEL: test_svlogb_nxv8f16_ptrue_u:
150
+ ; CHECK: // %bb.0: // %entry
151
+ ; CHECK-NEXT: ptrue p0.h
152
+ ; CHECK-NEXT: flogb z0.h, p0/m, z1.h
153
+ ; CHECK-NEXT: ret
154
+ ;
155
+ ; CHECK-2p2-LABEL: test_svlogb_nxv8f16_ptrue_u:
156
+ ; CHECK-2p2: // %bb.0: // %entry
157
+ ; CHECK-2p2-NEXT: ptrue p0.h
158
+ ; CHECK-2p2-NEXT: flogb z0.h, p0/z, z1.h
159
+ ; CHECK-2p2-NEXT: ret
160
+ entry:
161
+ %pg = call <vscale x 8 x i1 > @llvm.aarch64.sve.ptrue.nxv8i1 (i32 31 )
162
+ %0 = tail call <vscale x 8 x i16 > @llvm.aarch64.sve.flogb.nxv8f16 (<vscale x 8 x i16 > poison, <vscale x 8 x i1 > %pg , <vscale x 8 x half > %x )
163
+ ret <vscale x 8 x i16 > %0
164
+ }
165
+
166
+ define <vscale x 8 x i16 > @test_svlogb_nxv8f16_ptrue (double %z0 , <vscale x 8 x i16 > %x , <vscale x 8 x half > %y ) {
167
+ ; CHECK-LABEL: test_svlogb_nxv8f16_ptrue:
168
+ ; CHECK: // %bb.0: // %entry
169
+ ; CHECK-NEXT: mov z0.d, z1.d
170
+ ; CHECK-NEXT: ptrue p0.h
171
+ ; CHECK-NEXT: flogb z0.h, p0/m, z2.h
172
+ ; CHECK-NEXT: ret
173
+ ;
174
+ ; CHECK-2p2-LABEL: test_svlogb_nxv8f16_ptrue:
175
+ ; CHECK-2p2: // %bb.0: // %entry
176
+ ; CHECK-2p2-NEXT: ptrue p0.h
177
+ ; CHECK-2p2-NEXT: flogb z0.h, p0/z, z2.h
178
+ ; CHECK-2p2-NEXT: ret
179
+ entry:
180
+ %pg = call <vscale x 8 x i1 > @llvm.aarch64.sve.ptrue.nxv8i1 (i32 31 )
181
+ %0 = tail call <vscale x 8 x i16 > @llvm.aarch64.sve.flogb.nxv8f16 (<vscale x 8 x i16 > %x , <vscale x 8 x i1 > %pg , <vscale x 8 x half > %y )
182
+ ret <vscale x 8 x i16 > %0
183
+ }
184
+
185
+ define <vscale x 4 x i32 > @test_svlogb_nxv4f32_ptrue_u (double %z0 , <vscale x 4 x float > %x ) {
186
+ ; CHECK-LABEL: test_svlogb_nxv4f32_ptrue_u:
187
+ ; CHECK: // %bb.0: // %entry
188
+ ; CHECK-NEXT: ptrue p0.s
189
+ ; CHECK-NEXT: flogb z0.s, p0/m, z1.s
190
+ ; CHECK-NEXT: ret
191
+ ;
192
+ ; CHECK-2p2-LABEL: test_svlogb_nxv4f32_ptrue_u:
193
+ ; CHECK-2p2: // %bb.0: // %entry
194
+ ; CHECK-2p2-NEXT: ptrue p0.s
195
+ ; CHECK-2p2-NEXT: flogb z0.s, p0/z, z1.s
196
+ ; CHECK-2p2-NEXT: ret
197
+ entry:
198
+ %pg = call <vscale x 4 x i1 > @llvm.aarch64.sve.ptrue.nxv4i1 (i32 31 )
199
+ %0 = tail call <vscale x 4 x i32 > @llvm.aarch64.sve.flogb.nxv4f32 (<vscale x 4 x i32 > poison, <vscale x 4 x i1 > %pg , <vscale x 4 x float > %x )
200
+ ret <vscale x 4 x i32 > %0
201
+ }
202
+
203
+ define <vscale x 4 x i32 > @test_svlogb_nxv4f32_ptrue (double %z0 , <vscale x 4 x i32 > %x , <vscale x 4 x float > %y ) {
204
+ ; CHECK-LABEL: test_svlogb_nxv4f32_ptrue:
205
+ ; CHECK: // %bb.0: // %entry
206
+ ; CHECK-NEXT: mov z0.d, z1.d
207
+ ; CHECK-NEXT: ptrue p0.s
208
+ ; CHECK-NEXT: flogb z0.s, p0/m, z2.s
209
+ ; CHECK-NEXT: ret
210
+ ;
211
+ ; CHECK-2p2-LABEL: test_svlogb_nxv4f32_ptrue:
212
+ ; CHECK-2p2: // %bb.0: // %entry
213
+ ; CHECK-2p2-NEXT: ptrue p0.s
214
+ ; CHECK-2p2-NEXT: flogb z0.s, p0/z, z2.s
215
+ ; CHECK-2p2-NEXT: ret
216
+ entry:
217
+ %pg = call <vscale x 4 x i1 > @llvm.aarch64.sve.ptrue.nxv4i1 (i32 31 )
218
+ %0 = tail call <vscale x 4 x i32 > @llvm.aarch64.sve.flogb.nxv4f32 (<vscale x 4 x i32 > %x , <vscale x 4 x i1 > %pg , <vscale x 4 x float > %y )
219
+ ret <vscale x 4 x i32 > %0
220
+ }
221
+
222
+ define <vscale x 2 x i64 > @test_svlogb_nxv2f64_ptrue_u (double %z0 , <vscale x 2 x double > %x ) {
223
+ ; CHECK-LABEL: test_svlogb_nxv2f64_ptrue_u:
224
+ ; CHECK: // %bb.0: // %entry
225
+ ; CHECK-NEXT: ptrue p0.d
226
+ ; CHECK-NEXT: flogb z0.d, p0/m, z1.d
227
+ ; CHECK-NEXT: ret
228
+ ;
229
+ ; CHECK-2p2-LABEL: test_svlogb_nxv2f64_ptrue_u:
230
+ ; CHECK-2p2: // %bb.0: // %entry
231
+ ; CHECK-2p2-NEXT: ptrue p0.d
232
+ ; CHECK-2p2-NEXT: flogb z0.d, p0/z, z1.d
233
+ ; CHECK-2p2-NEXT: ret
234
+ entry:
235
+ %pg = call <vscale x 2 x i1 > @llvm.aarch64.sve.ptrue.nxv2i1 (i32 31 )
236
+ %0 = tail call <vscale x 2 x i64 > @llvm.aarch64.sve.flogb.nxv2f64 (<vscale x 2 x i64 > poison, <vscale x 2 x i1 > %pg , <vscale x 2 x double > %x )
237
+ ret <vscale x 2 x i64 > %0
238
+ }
239
+
240
+ define <vscale x 2 x i64 > @test_svlogb_nxv2f64_ptrue (double %z0 , <vscale x 2 x i64 > %x , <vscale x 2 x double > %y ) {
241
+ ; CHECK-LABEL: test_svlogb_nxv2f64_ptrue:
242
+ ; CHECK: // %bb.0: // %entry
243
+ ; CHECK-NEXT: mov z0.d, z1.d
244
+ ; CHECK-NEXT: ptrue p0.d
245
+ ; CHECK-NEXT: flogb z0.d, p0/m, z2.d
246
+ ; CHECK-NEXT: ret
247
+ ;
248
+ ; CHECK-2p2-LABEL: test_svlogb_nxv2f64_ptrue:
249
+ ; CHECK-2p2: // %bb.0: // %entry
250
+ ; CHECK-2p2-NEXT: ptrue p0.d
251
+ ; CHECK-2p2-NEXT: flogb z0.d, p0/z, z2.d
252
+ ; CHECK-2p2-NEXT: ret
253
+ entry:
254
+ %pg = call <vscale x 2 x i1 > @llvm.aarch64.sve.ptrue.nxv2i1 (i32 31 )
255
+ %0 = tail call <vscale x 2 x i64 > @llvm.aarch64.sve.flogb.nxv2f64 (<vscale x 2 x i64 > %x , <vscale x 2 x i1 > %pg , <vscale x 2 x double > %y )
256
+ ret <vscale x 2 x i64 > %0
257
+ }
258
+
0 commit comments