Mercurial > hg > Members > tobaru > cbc > CbC_llvm
comparison test/CodeGen/MSP430/AddrMode-mov-xr.ll @ 95:afa8332a0e37
LLVM 3.8
author | Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 13 Oct 2015 17:48:58 +0900 |
parents | 95c75e76d11b |
children | 803732b1fca8 |
comparison
equal
deleted
inserted
replaced
84:f3e34b893a5f | 95:afa8332a0e37 |
---|---|
19 ; CHECK: mov.w r15, &foo | 19 ; CHECK: mov.w r15, &foo |
20 | 20 |
21 @bar = external global [2 x i8] | 21 @bar = external global [2 x i8] |
22 | 22 |
23 define void @am3(i16 %i, i8 %a) nounwind { | 23 define void @am3(i16 %i, i8 %a) nounwind { |
24 %1 = getelementptr [2 x i8]* @bar, i16 0, i16 %i | 24 %1 = getelementptr [2 x i8], [2 x i8]* @bar, i16 0, i16 %i |
25 store i8 %a, i8* %1 | 25 store i8 %a, i8* %1 |
26 ret void | 26 ret void |
27 } | 27 } |
28 ; CHECK-LABEL: am3: | 28 ; CHECK-LABEL: am3: |
29 ; CHECK: mov.b r14, bar(r15) | 29 ; CHECK: mov.b r14, bar(r15) |
34 } | 34 } |
35 ; CHECK-LABEL: am4: | 35 ; CHECK-LABEL: am4: |
36 ; CHECK: mov.w r15, &32 | 36 ; CHECK: mov.w r15, &32 |
37 | 37 |
38 define void @am5(i16* nocapture %p, i16 %a) nounwind readonly { | 38 define void @am5(i16* nocapture %p, i16 %a) nounwind readonly { |
39 %1 = getelementptr inbounds i16* %p, i16 2 | 39 %1 = getelementptr inbounds i16, i16* %p, i16 2 |
40 store i16 %a, i16* %1 | 40 store i16 %a, i16* %1 |
41 ret void | 41 ret void |
42 } | 42 } |
43 ; CHECK-LABEL: am5: | 43 ; CHECK-LABEL: am5: |
44 ; CHECK: mov.w r14, 4(r15) | 44 ; CHECK: mov.w r14, 4(r15) |
45 | 45 |
46 %S = type { i16, i16 } | 46 %S = type { i16, i16 } |
47 @baz = common global %S zeroinitializer, align 1 | 47 @baz = common global %S zeroinitializer, align 1 |
48 | 48 |
49 define void @am6(i16 %a) nounwind { | 49 define void @am6(i16 %a) nounwind { |
50 store i16 %a, i16* getelementptr (%S* @baz, i32 0, i32 1) | 50 store i16 %a, i16* getelementptr (%S, %S* @baz, i32 0, i32 1) |
51 ret void | 51 ret void |
52 } | 52 } |
53 ; CHECK-LABEL: am6: | 53 ; CHECK-LABEL: am6: |
54 ; CHECK: mov.w r15, &baz+2 | 54 ; CHECK: mov.w r15, &baz+2 |
55 | 55 |
56 %T = type { i16, [2 x i8] } | 56 %T = type { i16, [2 x i8] } |
57 @duh = external global %T | 57 @duh = external global %T |
58 | 58 |
59 define void @am7(i16 %n, i8 %a) nounwind { | 59 define void @am7(i16 %n, i8 %a) nounwind { |
60 %1 = getelementptr %T* @duh, i32 0, i32 1 | 60 %1 = getelementptr %T, %T* @duh, i32 0, i32 1 |
61 %2 = getelementptr [2 x i8]* %1, i16 0, i16 %n | 61 %2 = getelementptr [2 x i8], [2 x i8]* %1, i16 0, i16 %n |
62 store i8 %a, i8* %2 | 62 store i8 %a, i8* %2 |
63 ret void | 63 ret void |
64 } | 64 } |
65 ; CHECK-LABEL: am7: | 65 ; CHECK-LABEL: am7: |
66 ; CHECK: mov.b r14, duh+2(r15) | 66 ; CHECK: mov.b r14, duh+2(r15) |