Mercurial > hg > CbC > CbC_llvm
comparison test/Transforms/InstCombine/align-external.ll @ 95:afa8332a0e37 LLVM3.8
LLVM 3.8
author | Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 13 Oct 2015 17:48:58 +0900 |
parents | 95c75e76d11b |
children |
comparison
equal
deleted
inserted
replaced
84:f3e34b893a5f | 95:afa8332a0e37 |
---|---|
1 ; RUN: opt < %s -instcombine -S | FileCheck %s | 1 ; RUN: opt < %s -instcombine -S | FileCheck %s |
2 | 2 |
3 ; Don't assume that external global variables or those with weak linkage have | 3 ; Don't assume that external global variables or those with weak linkage have |
4 ; their preferred alignment. They may only have the ABI minimum alignment. | 4 ; their preferred alignment. They may only have the ABI minimum alignment. |
5 | 5 |
6 ; CHECK: %s = shl i64 %a, 3 | |
7 ; CHECK: %r = or i64 %s, ptrtoint (i32* @A to i64) | |
8 ; CHECK: %q = add i64 %r, 1 | |
9 ; CHECK: ret i64 %q | |
10 | |
11 target datalayout = "i32:8:32" | 6 target datalayout = "i32:8:32" |
12 | 7 |
13 @A = external global i32 | 8 @A = external global i32 |
14 @B = weak_odr global i32 0 | 9 @B = weak_odr global i32 0 |
10 | |
11 @C = available_externally global <4 x i32> zeroinitializer, align 4 | |
12 ; CHECK: @C = available_externally global <4 x i32> zeroinitializer, align 4 | |
15 | 13 |
16 define i64 @foo(i64 %a) { | 14 define i64 @foo(i64 %a) { |
17 %t = ptrtoint i32* @A to i64 | 15 %t = ptrtoint i32* @A to i64 |
18 %s = shl i64 %a, 3 | 16 %s = shl i64 %a, 3 |
19 %r = or i64 %t, %s | 17 %r = or i64 %t, %s |
20 %q = add i64 %r, 1 | 18 %q = add i64 %r, 1 |
21 ret i64 %q | 19 ret i64 %q |
22 } | 20 } |
23 | 21 |
22 ; CHECK-LABEL: define i64 @foo(i64 %a) | |
23 ; CHECK: %s = shl i64 %a, 3 | |
24 ; CHECK: %r = or i64 %s, ptrtoint (i32* @A to i64) | |
25 ; CHECK: %q = add i64 %r, 1 | |
26 ; CHECK: ret i64 %q | |
27 | |
24 define i32 @bar() { | 28 define i32 @bar() { |
25 ; CHECK-LABEL: @bar( | 29 %r = load i32, i32* @B, align 1 |
26 %r = load i32* @B, align 1 | |
27 ; CHECK: align 1 | |
28 ret i32 %r | 30 ret i32 %r |
29 } | 31 } |
32 | |
33 ; CHECK-LABEL: @bar() | |
34 ; CHECK: align 1 | |
35 | |
36 define void @vec_store() { | |
37 store <4 x i32> <i32 0, i32 1, i32 2, i32 3>, <4 x i32>* @C, align 4 | |
38 ret void | |
39 } | |
40 ; CHECK: define void @vec_store() | |
41 ; CHECK: store <4 x i32> <i32 0, i32 1, i32 2, i32 3>, <4 x i32>* @C, align 4 |