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)