@@ -57,30 +57,36 @@ define void @cff_index_load_offsets(i1 %cond, i8 %x, i8* %p) #0 {
57
57
; CHECK-NEXT: [[TMP18:%.*]] = or <4 x i32> [[TMP16]], [[TMP10]]
58
58
; CHECK-NEXT: [[TMP19:%.*]] = or <4 x i32> [[TMP17]], [[TMP11]]
59
59
; CHECK-NEXT: [[TMP20:%.*]] = load i8, i8* undef, align 1, !tbaa [[TBAA1]]
60
+ ; CHECK-NEXT: [[BROADCAST_SPLATINSERT8:%.*]] = insertelement <4 x i8> poison, i8 [[TMP20]], i32 0
61
+ ; CHECK-NEXT: [[BROADCAST_SPLAT9:%.*]] = shufflevector <4 x i8> [[BROADCAST_SPLATINSERT8]], <4 x i8> poison, <4 x i32> zeroinitializer
60
62
; CHECK-NEXT: [[TMP21:%.*]] = load i8, i8* undef, align 1, !tbaa [[TBAA1]]
63
+ ; CHECK-NEXT: [[BROADCAST_SPLATINSERT10:%.*]] = insertelement <4 x i8> poison, i8 [[TMP21]], i32 0
64
+ ; CHECK-NEXT: [[BROADCAST_SPLAT11:%.*]] = shufflevector <4 x i8> [[BROADCAST_SPLATINSERT10]], <4 x i8> poison, <4 x i32> zeroinitializer
61
65
; CHECK-NEXT: [[TMP22:%.*]] = or <4 x i32> [[TMP18]], zeroinitializer
62
66
; CHECK-NEXT: [[TMP23:%.*]] = or <4 x i32> [[TMP19]], zeroinitializer
63
- ; CHECK-NEXT: [[TMP24:%.*]] = or <4 x i32> [[TMP22]], zeroinitializer
64
- ; CHECK-NEXT: [[TMP25:%.*]] = or <4 x i32> [[TMP23]], zeroinitializer
65
- ; CHECK-NEXT: [[TMP26:%.*]] = extractelement <4 x i32> [[TMP24]], i32 0
66
- ; CHECK-NEXT: store i32 [[TMP26]], i32* undef, align 4, !tbaa [[TBAA4:![0-9]+]]
67
- ; CHECK-NEXT: [[TMP27:%.*]] = extractelement <4 x i32> [[TMP24]], i32 1
68
- ; CHECK-NEXT: store i32 [[TMP27]], i32* undef, align 4, !tbaa [[TBAA4]]
69
- ; CHECK-NEXT: [[TMP28:%.*]] = extractelement <4 x i32> [[TMP24]], i32 2
70
- ; CHECK-NEXT: store i32 [[TMP28]], i32* undef, align 4, !tbaa [[TBAA4]]
71
- ; CHECK-NEXT: [[TMP29:%.*]] = extractelement <4 x i32> [[TMP24]], i32 3
67
+ ; CHECK-NEXT: [[TMP24:%.*]] = zext <4 x i8> [[BROADCAST_SPLAT9]] to <4 x i32>
68
+ ; CHECK-NEXT: [[TMP25:%.*]] = zext <4 x i8> [[BROADCAST_SPLAT11]] to <4 x i32>
69
+ ; CHECK-NEXT: [[TMP26:%.*]] = or <4 x i32> [[TMP22]], [[TMP24]]
70
+ ; CHECK-NEXT: [[TMP27:%.*]] = or <4 x i32> [[TMP23]], [[TMP25]]
71
+ ; CHECK-NEXT: [[TMP28:%.*]] = extractelement <4 x i32> [[TMP26]], i32 0
72
+ ; CHECK-NEXT: store i32 [[TMP28]], i32* undef, align 4, !tbaa [[TBAA4:![0-9]+]]
73
+ ; CHECK-NEXT: [[TMP29:%.*]] = extractelement <4 x i32> [[TMP26]], i32 1
72
74
; CHECK-NEXT: store i32 [[TMP29]], i32* undef, align 4, !tbaa [[TBAA4]]
73
- ; CHECK-NEXT: [[TMP30:%.*]] = extractelement <4 x i32> [[TMP25 ]], i32 0
75
+ ; CHECK-NEXT: [[TMP30:%.*]] = extractelement <4 x i32> [[TMP26 ]], i32 2
74
76
; CHECK-NEXT: store i32 [[TMP30]], i32* undef, align 4, !tbaa [[TBAA4]]
75
- ; CHECK-NEXT: [[TMP31:%.*]] = extractelement <4 x i32> [[TMP25 ]], i32 1
77
+ ; CHECK-NEXT: [[TMP31:%.*]] = extractelement <4 x i32> [[TMP26 ]], i32 3
76
78
; CHECK-NEXT: store i32 [[TMP31]], i32* undef, align 4, !tbaa [[TBAA4]]
77
- ; CHECK-NEXT: [[TMP32:%.*]] = extractelement <4 x i32> [[TMP25 ]], i32 2
79
+ ; CHECK-NEXT: [[TMP32:%.*]] = extractelement <4 x i32> [[TMP27 ]], i32 0
78
80
; CHECK-NEXT: store i32 [[TMP32]], i32* undef, align 4, !tbaa [[TBAA4]]
79
- ; CHECK-NEXT: [[TMP33:%.*]] = extractelement <4 x i32> [[TMP25 ]], i32 3
81
+ ; CHECK-NEXT: [[TMP33:%.*]] = extractelement <4 x i32> [[TMP27 ]], i32 1
80
82
; CHECK-NEXT: store i32 [[TMP33]], i32* undef, align 4, !tbaa [[TBAA4]]
83
+ ; CHECK-NEXT: [[TMP34:%.*]] = extractelement <4 x i32> [[TMP27]], i32 2
84
+ ; CHECK-NEXT: store i32 [[TMP34]], i32* undef, align 4, !tbaa [[TBAA4]]
85
+ ; CHECK-NEXT: [[TMP35:%.*]] = extractelement <4 x i32> [[TMP27]], i32 3
86
+ ; CHECK-NEXT: store i32 [[TMP35]], i32* undef, align 4, !tbaa [[TBAA4]]
81
87
; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 8
82
- ; CHECK-NEXT: [[TMP34 :%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
83
- ; CHECK-NEXT: br i1 [[TMP34 ]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP6:![0-9]+]]
88
+ ; CHECK-NEXT: [[TMP36 :%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
89
+ ; CHECK-NEXT: br i1 [[TMP36 ]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP6:![0-9]+]]
84
90
; CHECK: middle.block:
85
91
; CHECK-NEXT: [[CMP_N:%.*]] = icmp eq i64 [[TMP2]], [[N_VEC]]
86
92
; CHECK-NEXT: br i1 [[CMP_N]], label [[SW_EPILOG:%.*]], label [[SCALAR_PH]]
@@ -91,14 +97,14 @@ define void @cff_index_load_offsets(i1 %cond, i8 %x, i8* %p) #0 {
91
97
; CHECK-NEXT: [[P_359:%.*]] = phi i8* [ [[ADD_PTR86:%.*]], [[FOR_BODY68]] ], [ [[BC_RESUME_VAL]], [[SCALAR_PH]] ]
92
98
; CHECK-NEXT: [[CONV70:%.*]] = zext i8 [[X]] to i32
93
99
; CHECK-NEXT: [[SHL71:%.*]] = shl nuw i32 [[CONV70]], 24
94
- ; CHECK-NEXT: [[TMP35 :%.*]] = load i8, i8* [[P]], align 1, !tbaa [[TBAA1]]
95
- ; CHECK-NEXT: [[CONV73:%.*]] = zext i8 [[TMP35 ]] to i32
100
+ ; CHECK-NEXT: [[TMP37 :%.*]] = load i8, i8* [[P]], align 1, !tbaa [[TBAA1]]
101
+ ; CHECK-NEXT: [[CONV73:%.*]] = zext i8 [[TMP37 ]] to i32
96
102
; CHECK-NEXT: [[SHL74:%.*]] = shl nuw nsw i32 [[CONV73]], 16
97
103
; CHECK-NEXT: [[OR75:%.*]] = or i32 [[SHL74]], [[SHL71]]
98
- ; CHECK-NEXT: [[TMP36 :%.*]] = load i8, i8* undef, align 1, !tbaa [[TBAA1]]
104
+ ; CHECK-NEXT: [[TMP38 :%.*]] = load i8, i8* undef, align 1, !tbaa [[TBAA1]]
99
105
; CHECK-NEXT: [[SHL78:%.*]] = shl nuw nsw i32 undef, 8
100
106
; CHECK-NEXT: [[OR79:%.*]] = or i32 [[OR75]], [[SHL78]]
101
- ; CHECK-NEXT: [[CONV81:%.*]] = zext i8 undef to i32
107
+ ; CHECK-NEXT: [[CONV81:%.*]] = zext i8 [[TMP38]] to i32
102
108
; CHECK-NEXT: [[OR83:%.*]] = or i32 [[OR79]], [[CONV81]]
103
109
; CHECK-NEXT: store i32 [[OR83]], i32* undef, align 4, !tbaa [[TBAA4]]
104
110
; CHECK-NEXT: [[ADD_PTR86]] = getelementptr inbounds i8, i8* [[P_359]], i64 4
@@ -126,7 +132,7 @@ for.body68: ; preds = %for.body68, %if.the
126
132
%1 = load i8 , i8* undef , align 1 , !tbaa !1
127
133
%shl78 = shl nuw nsw i32 undef , 8
128
134
%or79 = or i32 %or75 , %shl78
129
- %conv81 = zext i8 undef to i32
135
+ %conv81 = zext i8 %1 to i32
130
136
%or83 = or i32 %or79 , %conv81
131
137
store i32 %or83 , i32* undef , align 4 , !tbaa !4
132
138
%add.ptr86 = getelementptr inbounds i8 , i8* %p.359 , i64 4
0 commit comments