Use Align for TFL::TransientStackAlignment
[llvm-core.git] / test / CodeGen / MSP430 / shifts.ll
blob5a1fc9c324bb8df07c0b55fe7458ac19df1ec2c1
1 ; RUN: llc < %s | FileCheck %s
2 target datalayout = "e-p:16:8:8-i8:8:8-i16:8:8-i32:8:8-n8:16"
3 target triple = "msp430-elf"
5 define zeroext i8 @lshr8(i8 zeroext %a, i8 zeroext %cnt) nounwind readnone {
6 entry:
7 ; CHECK-LABEL: lshr8:
8 ; CHECK: clrc
9 ; CHECK: rrc.b
10   %shr = lshr i8 %a, %cnt
11   ret i8 %shr
14 define signext i8 @ashr8(i8 signext %a, i8 zeroext %cnt) nounwind readnone {
15 entry:
16 ; CHECK-LABEL: ashr8:
17 ; CHECK: rra.b
18   %shr = ashr i8 %a, %cnt
19   ret i8 %shr
22 define zeroext i8 @shl8(i8 zeroext %a, i8 zeroext %cnt) nounwind readnone {
23 entry:
24 ; CHECK: shl8
25 ; CHECK: add.b
26   %shl = shl i8 %a, %cnt
27   ret i8 %shl
30 define zeroext i16 @lshr16(i16 zeroext %a, i16 zeroext %cnt) nounwind readnone {
31 entry:
32 ; CHECK-LABEL: lshr16:
33 ; CHECK: clrc
34 ; CHECK: rrc
35   %shr = lshr i16 %a, %cnt
36   ret i16 %shr
39 define signext i16 @ashr16(i16 signext %a, i16 zeroext %cnt) nounwind readnone {
40 entry:
41 ; CHECK-LABEL: ashr16:
42 ; CHECK: rra
43   %shr = ashr i16 %a, %cnt
44   ret i16 %shr
47 define zeroext i16 @shl16(i16 zeroext %a, i16 zeroext %cnt) nounwind readnone {
48 entry:
49 ; CHECK-LABEL: shl16:
50 ; CHECK: add
51   %shl = shl i16 %a, %cnt
52   ret i16 %shl
55 define i16 @ashr10_i16(i16 %a) #0 {
56 entry:
57 ; CHECK-LABEL: ashr10_i16:
58 ; CHECK:      swpb      r12
59 ; CHECK-NEXT: sxt       r12
60 ; CHECK-NEXT: rra       r12
61 ; CHECK-NEXT: rra       r12
62   %shr = ashr i16 %a, 10
63   ret i16 %shr
66 define i16 @lshr10_i16(i16 %a) #0 {
67 entry:
68 ; CHECK-LABEL: lshr10_i16:
69 ; CHECK:      swpb      r12
70 ; CHECK-NEXT: mov.b     r12, r12
71 ; CHECK-NEXT: clrc
72 ; CHECK-NEXT: rrc       r12
73 ; CHECK-NEXT: rra       r12
74   %shr = lshr i16 %a, 10
75   ret i16 %shr
78 define i16 @lshl10_i16(i16 %a) #0 {
79 entry:
80 ; CHECK-LABEL: lshl10_i16:
81 ; CHECK:      mov.b r12, r12
82 ; CHECK-NEXT: swpb r12
83 ; CHECK-NEXT: add r12, r12
84 ; CHECK-NEXT: add r12, r12
85   %shl = shl i16 %a, 10
86   ret i16 %shl