You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
; CHECK-NEXT: [[SCALABLE_SIZE:%.*]] = mul nuw i32 [[VSCALE]], 1
260
+
; CHECK-NEXT: [[TMP6:%.*]] = and <vscale x 1 x i1> [[TMP2]], insertelement (<vscale x 1 x i1> zeroinitializer, i1 true, i64 0)
261
+
; CHECK-NEXT: [[TMP4:%.*]] = call <vscale x 1 x i64> @llvm.masked.load.nxv1i64.p0(ptr [[PTR:%.*]], i32 1, <vscale x 1 x i1> [[TMP6]], <vscale x 1 x i64> poison)
262
+
; CHECK-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 1 x i64>, i32 } poison, <vscale x 1 x i64> [[TMP4]], 0
263
+
; CHECK-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 1 x i64>, i32 } [[TMP5]], i32 1, 1
264
+
; CHECK-NEXT: ret { <vscale x 1 x i64>, i32 } [[TMP3]]
265
+
;
266
+
%load = call { <vscale x 1 x i64>, i32 } @llvm.vp.load.ff.nxv1i64.p0(ptr%ptr, <vscale x 1 x i1> %m, i32%evl)
267
+
ret { <vscale x 1 x i64>, i32 } %load
268
+
}
269
+
270
+
define { <vscale x 1 x i64>, i32 } @vpload_ff_nxv1i64_vscale(ptr%ptr, <vscale x 1 x i1> %m) {
; CHECK-NEXT: [[VLMAX:%.*]] = mul nuw i32 [[VSCALE]], 1
274
+
; CHECK-NEXT: [[TMP4:%.*]] = and <vscale x 1 x i1> [[M:%.*]], insertelement (<vscale x 1 x i1> zeroinitializer, i1 true, i64 0)
275
+
; CHECK-NEXT: [[TMP2:%.*]] = call <vscale x 1 x i64> @llvm.masked.load.nxv1i64.p0(ptr [[PTR:%.*]], i32 1, <vscale x 1 x i1> [[TMP4]], <vscale x 1 x i64> poison)
276
+
; CHECK-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 1 x i64>, i32 } poison, <vscale x 1 x i64> [[TMP2]], 0
277
+
; CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 1 x i64>, i32 } [[TMP3]], i32 1, 1
278
+
; CHECK-NEXT: ret { <vscale x 1 x i64>, i32 } [[TMP1]]
279
+
;
280
+
%vscale = calli32@llvm.vscale.i32()
281
+
%vlmax = mulnuwi32%vscale, 1
282
+
%load = call { <vscale x 1 x i64>, i32 } @llvm.vp.load.ff.nxv1i64.p0(ptr%ptr, <vscale x 1 x i1> %m, i32%vlmax)
283
+
ret { <vscale x 1 x i64>, i32 } %load
284
+
}
285
+
286
+
define { <vscale x 1 x i64>, i32 } @vpload_ff_nxv1i64_allones_mask(ptr%ptr, i32zeroext%evl) {
287
+
; CHECK-LABEL: @vpload_ff_nxv1i64_allones_mask(
288
+
; CHECK-NEXT: [[TMP1:%.*]] = call <vscale x 1 x i1> @llvm.get.active.lane.mask.nxv1i1.i32(i32 0, i32 [[EVL:%.*]])
289
+
; CHECK-NEXT: [[TMP2:%.*]] = and <vscale x 1 x i1> [[TMP1]], splat (i1 true)
; CHECK-NEXT: [[SCALABLE_SIZE:%.*]] = mul nuw i32 [[VSCALE]], 1
292
+
; CHECK-NEXT: [[TMP6:%.*]] = and <vscale x 1 x i1> [[TMP2]], insertelement (<vscale x 1 x i1> zeroinitializer, i1 true, i64 0)
293
+
; CHECK-NEXT: [[TMP4:%.*]] = call <vscale x 1 x i64> @llvm.masked.load.nxv1i64.p0(ptr [[PTR:%.*]], i32 1, <vscale x 1 x i1> [[TMP6]], <vscale x 1 x i64> poison)
294
+
; CHECK-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 1 x i64>, i32 } poison, <vscale x 1 x i64> [[TMP4]], 0
295
+
; CHECK-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 1 x i64>, i32 } [[TMP5]], i32 1, 1
296
+
; CHECK-NEXT: ret { <vscale x 1 x i64>, i32 } [[TMP3]]
297
+
;
298
+
%load = call { <vscale x 1 x i64>, i32 } @llvm.vp.load.ff.nxv1i64.p0(ptr%ptr, <vscale x 1 x i1> splat (i1true), i32%evl)
299
+
ret { <vscale x 1 x i64>, i32 } %load
300
+
}
301
+
302
+
define { <vscale x 1 x i64>, i32 } @vpload_ff_nxv1i64_allones_mask_vscale(ptr%ptr) {
; CHECK-NEXT: [[VLMAX:%.*]] = mul nuw i32 [[VSCALE]], 1
306
+
; CHECK-NEXT: [[TMP3:%.*]] = call <vscale x 1 x i64> @llvm.masked.load.nxv1i64.p0(ptr [[PTR:%.*]], i32 1, <vscale x 1 x i1> insertelement (<vscale x 1 x i1> zeroinitializer, i1 true, i64 0), <vscale x 1 x i64> poison)
307
+
; CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 1 x i64>, i32 } poison, <vscale x 1 x i64> [[TMP3]], 0
308
+
; CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 1 x i64>, i32 } [[TMP2]], i32 1, 1
309
+
; CHECK-NEXT: ret { <vscale x 1 x i64>, i32 } [[TMP1]]
310
+
;
311
+
%vscale = calli32@llvm.vscale.i32()
312
+
%vlmax = mulnuwi32%vscale, 1
313
+
%load = call { <vscale x 1 x i64>, i32 } @llvm.vp.load.ff.nxv1i64.p0(ptr%ptr, <vscale x 1 x i1> splat (i1true), i32%vlmax)
314
+
ret { <vscale x 1 x i64>, i32 } %load
315
+
}
316
+
199
317
declarei32@llvm.vscale.i32()
200
318
201
319
declare <2 x i64> @llvm.vp.load.v2i64.p0(ptr, <2 x i1>, i32)
0 commit comments