@@ -136,42 +136,41 @@ for.end: ; preds = %for.body
136
136
define float @foo3 (ptr nocapture readonly %A ) #0 {
137
137
; CHECK-LABEL: @foo3(
138
138
; CHECK-NEXT: entry:
139
- ; CHECK-NEXT: [[TMP0 :%.*]] = load float, ptr [[A:%.*]], align 4
140
- ; CHECK-NEXT: [[ARRAYIDX1 :%.*]] = getelementptr inbounds float, ptr [[A]], i64 1
139
+ ; CHECK-NEXT: [[ARRAYIDX1 :%.*]] = getelementptr inbounds float, ptr [[A:%.*]], i64 1
140
+ ; CHECK-NEXT: [[TMP0 :%.*]] = load <2 x float> , ptr [[A]], align 4
141
141
; CHECK-NEXT: [[TMP1:%.*]] = load <4 x float>, ptr [[ARRAYIDX1]], align 4
142
- ; CHECK-NEXT: [[TMP2:%.*]] = shufflevector <4 x float> [[TMP1]], <4 x float> poison, <2 x i32> <i32 poison, i32 0>
143
- ; CHECK-NEXT: [[TMP3:%.*]] = insertelement <2 x float> [[TMP2]], float [[TMP0]], i32 0
142
+ ; CHECK-NEXT: [[TMP2:%.*]] = extractelement <2 x float> [[TMP0]], i32 0
144
143
; CHECK-NEXT: br label [[FOR_BODY:%.*]]
145
144
; CHECK: for.body:
146
145
; CHECK-NEXT: [[INDVARS_IV:%.*]] = phi i64 [ 0, [[ENTRY:%.*]] ], [ [[INDVARS_IV_NEXT:%.*]], [[FOR_BODY]] ]
147
- ; CHECK-NEXT: [[R_052:%.*]] = phi float [ [[TMP0 ]], [[ENTRY]] ], [ [[ADD6:%.*]], [[FOR_BODY]] ]
148
- ; CHECK-NEXT: [[TMP4 :%.*]] = phi <4 x float> [ [[TMP1]], [[ENTRY]] ], [ [[TMP13 :%.*]], [[FOR_BODY]] ]
149
- ; CHECK-NEXT: [[TMP5 :%.*]] = phi <2 x float> [ [[TMP3 ]], [[ENTRY]] ], [ [[TMP9 :%.*]], [[FOR_BODY]] ]
150
- ; CHECK-NEXT: [[TMP6 :%.*]] = extractelement <2 x float> [[TMP5 ]], i32 0
151
- ; CHECK-NEXT: [[MUL:%.*]] = fmul float [[TMP6 ]], 7.000000e+00
146
+ ; CHECK-NEXT: [[R_052:%.*]] = phi float [ [[TMP2 ]], [[ENTRY]] ], [ [[ADD6:%.*]], [[FOR_BODY]] ]
147
+ ; CHECK-NEXT: [[TMP3 :%.*]] = phi <4 x float> [ [[TMP1]], [[ENTRY]] ], [ [[TMP12 :%.*]], [[FOR_BODY]] ]
148
+ ; CHECK-NEXT: [[TMP4 :%.*]] = phi <2 x float> [ [[TMP0 ]], [[ENTRY]] ], [ [[TMP8 :%.*]], [[FOR_BODY]] ]
149
+ ; CHECK-NEXT: [[TMP5 :%.*]] = extractelement <2 x float> [[TMP4 ]], i32 0
150
+ ; CHECK-NEXT: [[MUL:%.*]] = fmul float [[TMP5 ]], 7.000000e+00
152
151
; CHECK-NEXT: [[ADD6]] = fadd float [[R_052]], [[MUL]]
153
- ; CHECK-NEXT: [[TMP7 :%.*]] = add nsw i64 [[INDVARS_IV]], 2
154
- ; CHECK-NEXT: [[ARRAYIDX14:%.*]] = getelementptr inbounds float, ptr [[A]], i64 [[TMP7 ]]
155
- ; CHECK-NEXT: [[TMP8 :%.*]] = load float, ptr [[ARRAYIDX14]], align 4
152
+ ; CHECK-NEXT: [[TMP6 :%.*]] = add nsw i64 [[INDVARS_IV]], 2
153
+ ; CHECK-NEXT: [[ARRAYIDX14:%.*]] = getelementptr inbounds float, ptr [[A]], i64 [[TMP6 ]]
154
+ ; CHECK-NEXT: [[TMP7 :%.*]] = load float, ptr [[ARRAYIDX14]], align 4
156
155
; CHECK-NEXT: [[INDVARS_IV_NEXT]] = add nuw nsw i64 [[INDVARS_IV]], 3
157
156
; CHECK-NEXT: [[ARRAYIDX19:%.*]] = getelementptr inbounds float, ptr [[A]], i64 [[INDVARS_IV_NEXT]]
158
- ; CHECK-NEXT: [[TMP9 ]] = load <2 x float>, ptr [[ARRAYIDX19]], align 4
159
- ; CHECK-NEXT: [[TMP10 :%.*]] = shufflevector <2 x float> [[TMP5 ]], <2 x float> [[TMP9 ]], <4 x i32> <i32 1, i32 poison, i32 2, i32 3>
160
- ; CHECK-NEXT: [[TMP11 :%.*]] = insertelement <4 x float> [[TMP10 ]], float [[TMP8 ]], i32 1
161
- ; CHECK-NEXT: [[TMP12 :%.*]] = fmul <4 x float> [[TMP11 ]], <float 8.000000e+00, float 9.000000e+00, float 1.000000e+01, float 1.100000e+01>
162
- ; CHECK-NEXT: [[TMP13 ]] = fadd <4 x float> [[TMP4 ]], [[TMP12 ]]
163
- ; CHECK-NEXT: [[TMP14 :%.*]] = trunc i64 [[INDVARS_IV_NEXT]] to i32
164
- ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i32 [[TMP14 ]], 121
157
+ ; CHECK-NEXT: [[TMP8 ]] = load <2 x float>, ptr [[ARRAYIDX19]], align 4
158
+ ; CHECK-NEXT: [[TMP9 :%.*]] = shufflevector <2 x float> [[TMP4 ]], <2 x float> [[TMP8 ]], <4 x i32> <i32 1, i32 poison, i32 2, i32 3>
159
+ ; CHECK-NEXT: [[TMP10 :%.*]] = insertelement <4 x float> [[TMP9 ]], float [[TMP7 ]], i32 1
160
+ ; CHECK-NEXT: [[TMP11 :%.*]] = fmul <4 x float> [[TMP10 ]], <float 8.000000e+00, float 9.000000e+00, float 1.000000e+01, float 1.100000e+01>
161
+ ; CHECK-NEXT: [[TMP12 ]] = fadd <4 x float> [[TMP3 ]], [[TMP11 ]]
162
+ ; CHECK-NEXT: [[TMP13 :%.*]] = trunc i64 [[INDVARS_IV_NEXT]] to i32
163
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i32 [[TMP13 ]], 121
165
164
; CHECK-NEXT: br i1 [[CMP]], label [[FOR_BODY]], label [[FOR_END:%.*]]
166
165
; CHECK: for.end:
167
- ; CHECK-NEXT: [[TMP15 :%.*]] = extractelement <4 x float> [[TMP13 ]], i32 0
168
- ; CHECK-NEXT: [[ADD28:%.*]] = fadd float [[ADD6]], [[TMP15 ]]
169
- ; CHECK-NEXT: [[TMP16 :%.*]] = extractelement <4 x float> [[TMP13 ]], i32 1
170
- ; CHECK-NEXT: [[ADD29:%.*]] = fadd float [[ADD28]], [[TMP16 ]]
171
- ; CHECK-NEXT: [[TMP17 :%.*]] = extractelement <4 x float> [[TMP13 ]], i32 2
172
- ; CHECK-NEXT: [[ADD30:%.*]] = fadd float [[ADD29]], [[TMP17 ]]
173
- ; CHECK-NEXT: [[TMP18 :%.*]] = extractelement <4 x float> [[TMP13 ]], i32 3
174
- ; CHECK-NEXT: [[ADD31:%.*]] = fadd float [[ADD30]], [[TMP18 ]]
166
+ ; CHECK-NEXT: [[TMP14 :%.*]] = extractelement <4 x float> [[TMP12 ]], i32 0
167
+ ; CHECK-NEXT: [[ADD28:%.*]] = fadd float [[ADD6]], [[TMP14 ]]
168
+ ; CHECK-NEXT: [[TMP15 :%.*]] = extractelement <4 x float> [[TMP12 ]], i32 1
169
+ ; CHECK-NEXT: [[ADD29:%.*]] = fadd float [[ADD28]], [[TMP15 ]]
170
+ ; CHECK-NEXT: [[TMP16 :%.*]] = extractelement <4 x float> [[TMP12 ]], i32 2
171
+ ; CHECK-NEXT: [[ADD30:%.*]] = fadd float [[ADD29]], [[TMP16 ]]
172
+ ; CHECK-NEXT: [[TMP17 :%.*]] = extractelement <4 x float> [[TMP12 ]], i32 3
173
+ ; CHECK-NEXT: [[ADD31:%.*]] = fadd float [[ADD30]], [[TMP17 ]]
175
174
; CHECK-NEXT: ret float [[ADD31]]
176
175
;
177
176
entry:
0 commit comments