|
3 | 3 |
|
4 | 4 | target triple = "x86_64-redhat-linux-gnu" |
5 | 5 |
|
| 6 | +; Should not get vectorized. |
6 | 7 | define void @test(ptr %p1, i64 %arg1, i64 %arg2) { |
7 | 8 | ; CHECK-LABEL: define void @test( |
8 | 9 | ; CHECK-SAME: ptr [[P1:%.*]], i64 [[ARG1:%.*]], i64 [[ARG2:%.*]]) { |
9 | | -; CHECK-NEXT: [[ENTRY:.*]]: |
10 | | -; CHECK-NEXT: br label %[[LOOP1:.*]] |
11 | | -; CHECK: [[LOOP1]]: |
12 | | -; CHECK-NEXT: [[I:%.*]] = phi ptr [ [[I21:%.*]], %[[BB20:.*]] ], [ [[P1]], %[[ENTRY]] ] |
| 10 | +; CHECK-NEXT: [[_PREHEADER48_PREHEADER_1:.*]]: |
| 11 | +; CHECK-NEXT: br label %[[_LOOPEXIT49_1:.*]] |
| 12 | +; CHECK: [[_LOOPEXIT49_1]]: |
| 13 | +; CHECK-NEXT: [[I:%.*]] = phi ptr [ [[I21:%.*]], %[[BB20:.*]] ], [ [[P1]], %[[_PREHEADER48_PREHEADER_1]] ] |
13 | 14 | ; CHECK-NEXT: br i1 false, label %[[BB22:.*]], label %[[DOTPREHEADER48_PREHEADER_1:.*]] |
14 | 15 | ; CHECK: [[DEAD:.*]]: |
15 | 16 | ; CHECK-NEXT: br label %[[DOTPREHEADER48_PREHEADER_1]] |
16 | | -; CHECK: [[_PREHEADER48_PREHEADER_1:.*:]] |
17 | | -; CHECK-NEXT: [[I5:%.*]] = phi ptr [ [[I]], %[[DEAD]] ], [ [[I]], %[[LOOP1]] ] |
| 17 | +; CHECK: [[_PREHEADER48_PREHEADER_2:.*:]] |
| 18 | +; CHECK-NEXT: [[I5:%.*]] = phi ptr [ [[I]], %[[DEAD]] ], [ [[I]], %[[_LOOPEXIT49_1]] ] |
18 | 19 | ; CHECK-NEXT: br label %[[DOTLOOPEXIT49_1:.*]] |
19 | 20 | ; CHECK: [[DEAD1:.*]]: |
20 | 21 | ; CHECK-NEXT: br i1 false, label %[[DOTLOOPEXIT49_1]], label %[[BB20]] |
21 | | -; CHECK: [[_LOOPEXIT49_1:.*:]] |
| 22 | +; CHECK: [[_LOOPEXIT49_2:.*:]] |
22 | 23 | ; CHECK-NEXT: [[I6:%.*]] = phi ptr [ [[I5]], %[[DEAD1]] ], [ [[I5]], %[[DOTPREHEADER48_PREHEADER_1]] ] |
23 | 24 | ; CHECK-NEXT: [[I7:%.*]] = getelementptr i8, ptr [[I6]], i64 [[ARG1]] |
24 | 25 | ; CHECK-NEXT: br label %[[BB10:.*]] |
25 | 26 | ; CHECK: [[DEAD2:.*]]: |
26 | 27 | ; CHECK-NEXT: br label %[[BB10]] |
27 | 28 | ; CHECK: [[BB10]]: |
28 | 29 | ; CHECK-NEXT: [[I11:%.*]] = phi ptr [ [[I7]], %[[DOTLOOPEXIT49_1]] ], [ null, %[[DEAD2]] ] |
29 | | -; CHECK-NEXT: [[TMP0:%.*]] = load <2 x i64>, ptr [[I11]], align 1 |
30 | | -; CHECK-NEXT: [[TMP1:%.*]] = shufflevector <2 x i64> [[TMP0]], <2 x i64> poison, <2 x i32> <i32 1, i32 0> |
31 | | -; CHECK-NEXT: store <2 x i64> [[TMP1]], ptr [[I6]], align 1 |
| 30 | +; CHECK-NEXT: [[I16:%.*]] = getelementptr i8, ptr [[I11]], i64 8 |
| 31 | +; CHECK-NEXT: [[I17:%.*]] = load i64, ptr [[I16]], align 1 |
| 32 | +; CHECK-NEXT: store i64 [[I17]], ptr [[I6]], align 1 |
| 33 | +; CHECK-NEXT: [[I18:%.*]] = getelementptr i8, ptr [[I6]], i64 8 |
| 34 | +; CHECK-NEXT: [[I19:%.*]] = load i64, ptr [[I11]], align 1 |
| 35 | +; CHECK-NEXT: store i64 [[I19]], ptr [[I18]], align 1 |
32 | 36 | ; CHECK-NEXT: br label %[[BB20]] |
33 | 37 | ; CHECK: [[BB20]]: |
34 | 38 | ; CHECK-NEXT: [[I21]] = phi ptr [ [[I5]], %[[DEAD1]] ], [ [[I6]], %[[BB10]] ] |
35 | | -; CHECK-NEXT: br label %[[LOOP1]] |
| 39 | +; CHECK-NEXT: br label %[[_LOOPEXIT49_1]] |
36 | 40 | ; CHECK: [[BB22]]: |
37 | 41 | ; CHECK-NEXT: [[I23:%.*]] = getelementptr i8, ptr [[I]], i64 [[ARG2]] |
38 | 42 | ; CHECK-NEXT: [[I25:%.*]] = getelementptr i8, ptr [[I23]], i64 8 |
|
0 commit comments