@@ -34,19 +34,21 @@ define <2 x i64> @scalarize_v2i64_ones_mask(i64* %p, <2 x i64> %passthru) {
34
34
; CHECK-LABEL: @scalarize_v2i64_ones_mask(
35
35
; CHECK-NEXT: [[TMP1:%.*]] = getelementptr inbounds i64, i64* [[P:%.*]], i32 0
36
36
; CHECK-NEXT: [[LOAD0:%.*]] = load i64, i64* [[TMP1]], align 1
37
- ; CHECK-NEXT: [[RES0:%.*]] = insertelement <2 x i64> [[PASSTHRU:%.*]] , i64 [[LOAD0]], i64 0
37
+ ; CHECK-NEXT: [[RES0:%.*]] = insertelement <2 x i64> undef , i64 [[LOAD0]], i64 0
38
38
; CHECK-NEXT: [[TMP2:%.*]] = getelementptr inbounds i64, i64* [[P]], i32 1
39
39
; CHECK-NEXT: [[LOAD1:%.*]] = load i64, i64* [[TMP2]], align 1
40
40
; CHECK-NEXT: [[RES1:%.*]] = insertelement <2 x i64> [[RES0]], i64 [[LOAD1]], i64 1
41
- ; CHECK-NEXT: ret <2 x i64> [[RES1]]
41
+ ; CHECK-NEXT: [[TMP3:%.*]] = shufflevector <2 x i64> [[RES1]], <2 x i64> [[PASSTHRU:%.*]], <2 x i32> <i32 0, i32 1>
42
+ ; CHECK-NEXT: ret <2 x i64> [[TMP3]]
42
43
;
43
44
%ret = call <2 x i64 > @llvm.masked.expandload.v2i64.p0v2i64 (i64* %p , <2 x i1 > <i1 true , i1 true >, <2 x i64 > %passthru )
44
45
ret <2 x i64 > %ret
45
46
}
46
47
47
48
define <2 x i64 > @scalarize_v2i64_zero_mask (i64* %p , <2 x i64 > %passthru ) {
48
49
; CHECK-LABEL: @scalarize_v2i64_zero_mask(
49
- ; CHECK-NEXT: ret <2 x i64> [[PASSTHRU:%.*]]
50
+ ; CHECK-NEXT: [[TMP1:%.*]] = shufflevector <2 x i64> undef, <2 x i64> [[PASSTHRU:%.*]], <2 x i32> <i32 2, i32 3>
51
+ ; CHECK-NEXT: ret <2 x i64> [[TMP1]]
50
52
;
51
53
%ret = call <2 x i64 > @llvm.masked.expandload.v2i64.p0v2i64 (i64* %p , <2 x i1 > <i1 false , i1 false >, <2 x i64 > %passthru )
52
54
ret <2 x i64 > %ret
@@ -56,8 +58,9 @@ define <2 x i64> @scalarize_v2i64_const_mask(i64* %p, <2 x i64> %passthru) {
56
58
; CHECK-LABEL: @scalarize_v2i64_const_mask(
57
59
; CHECK-NEXT: [[TMP1:%.*]] = getelementptr inbounds i64, i64* [[P:%.*]], i32 0
58
60
; CHECK-NEXT: [[LOAD1:%.*]] = load i64, i64* [[TMP1]], align 1
59
- ; CHECK-NEXT: [[RES1:%.*]] = insertelement <2 x i64> [[PASSTHRU:%.*]], i64 [[LOAD1]], i64 1
60
- ; CHECK-NEXT: ret <2 x i64> [[RES1]]
61
+ ; CHECK-NEXT: [[RES1:%.*]] = insertelement <2 x i64> undef, i64 [[LOAD1]], i64 1
62
+ ; CHECK-NEXT: [[TMP2:%.*]] = shufflevector <2 x i64> [[RES1]], <2 x i64> [[PASSTHRU:%.*]], <2 x i32> <i32 2, i32 1>
63
+ ; CHECK-NEXT: ret <2 x i64> [[TMP2]]
61
64
;
62
65
%ret = call <2 x i64 > @llvm.masked.expandload.v2i64.p0v2i64 (i64* %p , <2 x i1 > <i1 false , i1 true >, <2 x i64 > %passthru )
63
66
ret <2 x i64 > %ret
0 commit comments