[ARM] Adjust how NEON shifts are lowered
[llvm-core.git] / test / Transforms / GVNSink / struct.ll
blob2228cf2803aea0a37f4441d4047b1df6cc5aa228
1 ; RUN: opt -gvn-sink -S < %s | FileCheck %s
3 %struct = type {i32, i32}
4 %struct2 = type { [ 2 x i32], i32 }
6 ; Struct indices cannot be variant.
8 ; CHECK-LABEL: @f() {
9 ; CHECK: getelementptr
10 ; CHECK: getelementptr
11 define void @f() {
12 bb:
13   br i1 undef, label %bb2, label %bb1
15 bb1:                                              ; preds = %bb
16   %tmp = getelementptr inbounds %struct, %struct* null, i64 0, i32 1
17   br label %bb4
19 bb2:                                              ; preds = %bb
20   %tmp3 = getelementptr inbounds %struct, %struct* null, i64 0, i32 0
21   br label %bb4
23 bb4:                                              ; preds = %bb2, %bb1
24   %tmp5 = phi i32 [ 1, %bb1 ], [ 0, %bb2 ]
25   ret void
28 ; Struct indices cannot be variant.
30 ; CHECK-LABEL: @g() {
31 ; CHECK: getelementptr
32 ; CHECK: getelementptr
33 define void @g() {
34 bb:
35   br i1 undef, label %bb2, label %bb1
37 bb1:                                              ; preds = %bb
38   %tmp = getelementptr inbounds %struct2, %struct2* null, i64 0, i32 0, i32 1
39   br label %bb4
41 bb2:                                              ; preds = %bb
42   %tmp3 = getelementptr inbounds %struct2, %struct2* null, i64 0, i32 0, i32 0
43   br label %bb4
45 bb4:                                              ; preds = %bb2, %bb1
46   %tmp5 = phi i32 [ 1, %bb1 ], [ 0, %bb2 ]
47   ret void
51 ; ... but the first parameter to a GEP can.
53 ; CHECK-LABEL: @h() {
54 ; CHECK: getelementptr
55 ; CHECK-NOT: getelementptr
56 define void @h() {
57 bb:
58   br i1 undef, label %bb2, label %bb1
60 bb1:                                              ; preds = %bb
61   %tmp = getelementptr inbounds %struct, %struct* null, i32 0, i32 0
62   br label %bb4
64 bb2:                                              ; preds = %bb
65   %tmp3 = getelementptr inbounds %struct, %struct* null, i32 1, i32 0
66   br label %bb4
68 bb4:                                              ; preds = %bb2, %bb1
69   %tmp5 = phi i32 [ 0, %bb1 ], [ 1, %bb2 ]
70   ret void