Use Align for TFL::TransientStackAlignment
[llvm-core.git] / test / CodeGen / MSP430 / InstII.ll
blob596d5b045beb52f7867a4d4cdafa8fb352103ced
1 ; RUN: llc -march=msp430 < %s | FileCheck %s
2 target datalayout = "e-p:16:8:8-i8:8:8-i16:8:8-i32:8:8"
3 target triple = "msp430-generic-generic"
5 define void @rra8m(i8* %i) {
6 entry:
7 ; CHECK-LABEL: rra8m:
8 ; CHECK: rra.b 2(r12)
9   %0 = getelementptr inbounds i8, i8* %i, i16 2
10   %1 = load i8, i8* %0, align 1
11   %shr = ashr i8 %1, 1
12   store i8 %shr, i8* %0, align 1
13   ret void
16 define void @rra16m(i16* %i) {
17 entry:
18 ; CHECK-LABEL: rra16m:
19 ; CHECK: rra 4(r12)
20   %0 = getelementptr inbounds i16, i16* %i, i16 2
21   %1 = load i16, i16* %0, align 2
22   %shr = ashr i16 %1, 1
23   store i16 %shr, i16* %0, align 2
24   ret void
27 ; TODO: `clrc; rrc.b 2(r12)` is expected
28 define void @rrc8m(i8* %g) {
29 entry:
30 ; CHECK-LABEL: rrc8m:
31 ; CHECK: mov.b 2(r12), r13
32 ; CHECK: clrc
33 ; CHECK: rrc.b r13
34 ; CHECK: mov.b r13, 2(r12)
35   %add.ptr = getelementptr inbounds i8, i8* %g, i16 2
36   %0 = load i8, i8* %add.ptr, align 1
37   %1 = lshr i8 %0, 1
38   store i8 %1, i8* %add.ptr, align 1
39   ret void
42 ; TODO: `clrc; rrc 4(r12)` is expected
43 define void @rrc16m(i16* %g) {
44 entry:
45 ; CHECK-LABEL: rrc16m:
46 ; CHECK: mov 4(r12), r13
47 ; CHECK: clrc
48 ; CHECK: rrc r13
49 ; CHECK: mov r13, 4(r12)
50   %add.ptr = getelementptr inbounds i16, i16* %g, i16 2
51   %0 = load i16, i16* %add.ptr, align 2
52   %shr = lshr i16 %0, 1
53   store i16 %shr, i16* %add.ptr, align 2
54   ret void
57 define void @sxt16m(i16* %x) {
58 entry:
59 ; CHECK-LABEL: sxt16m:
60 ; CHECK: sxt 4(r12)
61   %add.ptr = getelementptr inbounds i16, i16* %x, i16 2
62   %0 = bitcast i16* %add.ptr to i8*
63   %1 = load i8, i8* %0, align 1
64   %conv = sext i8 %1 to i16
65   store i16 %conv, i16* %add.ptr, align 2
66   ret void