summaryrefslogtreecommitdiffstats
path: root/test/Transforms/InstCombine/align-external.ll
diff options
context:
space:
mode:
Diffstat (limited to 'test/Transforms/InstCombine/align-external.ll')
-rw-r--r--test/Transforms/InstCombine/align-external.ll26
1 files changed, 19 insertions, 7 deletions
diff --git a/test/Transforms/InstCombine/align-external.ll b/test/Transforms/InstCombine/align-external.ll
index ee98a01..15f3096 100644
--- a/test/Transforms/InstCombine/align-external.ll
+++ b/test/Transforms/InstCombine/align-external.ll
@@ -3,16 +3,14 @@
; Don't assume that external global variables or those with weak linkage have
; their preferred alignment. They may only have the ABI minimum alignment.
-; CHECK: %s = shl i64 %a, 3
-; CHECK: %r = or i64 %s, ptrtoint (i32* @A to i64)
-; CHECK: %q = add i64 %r, 1
-; CHECK: ret i64 %q
-
target datalayout = "i32:8:32"
@A = external global i32
@B = weak_odr global i32 0
+@C = available_externally global <4 x i32> zeroinitializer, align 4
+; CHECK: @C = available_externally global <4 x i32> zeroinitializer, align 4
+
define i64 @foo(i64 %a) {
%t = ptrtoint i32* @A to i64
%s = shl i64 %a, 3
@@ -21,9 +19,23 @@ define i64 @foo(i64 %a) {
ret i64 %q
}
+; CHECK-LABEL: define i64 @foo(i64 %a)
+; CHECK: %s = shl i64 %a, 3
+; CHECK: %r = or i64 %s, ptrtoint (i32* @A to i64)
+; CHECK: %q = add i64 %r, 1
+; CHECK: ret i64 %q
+
define i32 @bar() {
-; CHECK-LABEL: @bar(
%r = load i32, i32* @B, align 1
-; CHECK: align 1
ret i32 %r
}
+
+; CHECK-LABEL: @bar()
+; CHECK: align 1
+
+define void @vec_store() {
+ store <4 x i32> <i32 0, i32 1, i32 2, i32 3>, <4 x i32>* @C, align 4
+ ret void
+}
+; CHECK: define void @vec_store()
+; CHECK: store <4 x i32> <i32 0, i32 1, i32 2, i32 3>, <4 x i32>* @C, align 4
OpenPOWER on IntegriCloud