@@ -13,19 +13,22 @@ define void @test(i64* %ptr, i64* noalias %res) {
13
13
; CHECK-NEXT: br label [[FOR_BODY:%.*]]
14
14
; CHECK: for.body:
15
15
; CHECK-NEXT: [[CALL_I_I:%.*]] = call i32* @get_ptr()
16
+ ; CHECK-NEXT: [[L_0_0:%.*]] = load i32, i32* [[CALL_I_I]], align 2
16
17
; CHECK-NEXT: [[GEP_1:%.*]] = getelementptr i32, i32* [[CALL_I_I]], i32 2
18
+ ; CHECK-NEXT: [[L_1_0:%.*]] = load i32, i32* [[GEP_1]], align 2
19
+ ; CHECK-NEXT: [[EXT_0_0:%.*]] = zext i32 [[L_0_0]] to i64
20
+ ; CHECK-NEXT: [[EXT_1_0:%.*]] = zext i32 [[L_1_0]] to i64
21
+ ; CHECK-NEXT: [[SUB_1:%.*]] = sub nsw i64 [[EXT_0_0]], [[EXT_1_0]]
17
22
; CHECK-NEXT: [[GEP_2:%.*]] = getelementptr i32, i32* [[CALL_I_I]], i32 1
18
- ; CHECK-NEXT: [[TMP0:%.*]] = bitcast i32* [[CALL_I_I]] to <2 x i32>*
19
- ; CHECK-NEXT: [[TMP1:%.*]] = load <2 x i32>, <2 x i32>* [[TMP0]], align 2
23
+ ; CHECK-NEXT: [[L_0_1:%.*]] = load i32, i32* [[GEP_2]], align 2
20
24
; CHECK-NEXT: [[GEP_3:%.*]] = getelementptr i32, i32* [[CALL_I_I]], i32 3
21
- ; CHECK-NEXT: [[TMP2:%.*]] = bitcast i32* [[GEP_1]] to <2 x i32>*
22
- ; CHECK-NEXT: [[TMP3:%.*]] = load <2 x i32>, <2 x i32>* [[TMP2]], align 2
23
- ; CHECK-NEXT: [[TMP4:%.*]] = zext <2 x i32> [[TMP1]] to <2 x i64>
24
- ; CHECK-NEXT: [[TMP5:%.*]] = zext <2 x i32> [[TMP3]] to <2 x i64>
25
- ; CHECK-NEXT: [[TMP6:%.*]] = sub nsw <2 x i64> [[TMP4]], [[TMP5]]
26
- ; CHECK-NEXT: [[RES_1:%.*]] = getelementptr i64, i64* [[RES:%.*]], i64 1
27
- ; CHECK-NEXT: [[TMP7:%.*]] = bitcast i64* [[RES]] to <2 x i64>*
28
- ; CHECK-NEXT: store <2 x i64> [[TMP6]], <2 x i64>* [[TMP7]], align 8
25
+ ; CHECK-NEXT: [[L_1_1:%.*]] = load i32, i32* [[GEP_3]], align 2
26
+ ; CHECK-NEXT: [[EXT_0_1:%.*]] = zext i32 [[L_0_1]] to i64
27
+ ; CHECK-NEXT: [[EXT_1_1:%.*]] = zext i32 [[L_1_1]] to i64
28
+ ; CHECK-NEXT: [[SUB_2:%.*]] = sub nsw i64 [[EXT_0_1]], [[EXT_1_1]]
29
+ ; CHECK-NEXT: store i64 [[SUB_1]], i64* [[RES:%.*]], align 8
30
+ ; CHECK-NEXT: [[RES_1:%.*]] = getelementptr i64, i64* [[RES]], i64 1
31
+ ; CHECK-NEXT: store i64 [[SUB_2]], i64* [[RES_1]], align 8
29
32
; CHECK-NEXT: [[C:%.*]] = call i1 @cond()
30
33
; CHECK-NEXT: br i1 [[C]], label [[FOR_BODY]], label [[EXIT:%.*]]
31
34
; CHECK: exit:
0 commit comments