[MIParser] Set RegClassOrRegBank during instruction parsing
[llvm-complete.git] / test / CodeGen / AVR / io.ll
blobb8b04a0e02464e1f2a0346ef17a875b001704c2b
1 ; RUN: llc < %s -march=avr | FileCheck %s
3 define i8 @read8() {
4 ; CHECK-LABEL: read8
5 ; CHECK: in r24, 8
6   %1 = load i8, i8* inttoptr (i16 40 to i8*)
7   ret i8 %1
10 define i16 @read16() {
11 ; CHECK-LABEL: read16
12 ; CHECK: in r24, 8
13 ; CHECK: in r25, 9
14   %1 = load i16, i16* inttoptr (i16 40 to i16*)
15   ret i16 %1
18 define i32 @read32() {
19 ; CHECK-LABEL: read32
20 ; CHECK: in r22, 8
21 ; CHECK: in r23, 9
22 ; CHECK: in r24, 10
23 ; CHECK: in r25, 11
24   %1 = load i32, i32* inttoptr (i16 40 to i32*)
25   ret i32 %1
28 define i64 @read64() {
29 ; CHECK-LABEL: read64
30 ; CHECK: in r18, 8
31 ; CHECK: in r19, 9
32 ; CHECK: in r20, 10
33 ; CHECK: in r21, 11
34 ; CHECK: in r22, 12
35 ; CHECK: in r23, 13
36 ; CHECK: in r24, 14
37 ; CHECK: in r25, 15
38   %1 = load i64, i64* inttoptr (i16 40 to i64*)
39   ret i64 %1
42 define void @write8() {
43 ; CHECK-LABEL: write8
44 ; CHECK: out 8
45   store i8 22, i8* inttoptr (i16 40 to i8*)
46   ret void
49 define void @write16() {
50 ; CHECK-LABEL: write16
51 ; CHECK: out 9
52 ; CHECK: out 8
53   store i16 1234, i16* inttoptr (i16 40 to i16*)
54   ret void
57 define void @write32() {
58 ; CHECK-LABEL: write32
59 ; CHECK: out 11
60 ; CHECK: out 10
61 ; CHECK: out 9
62 ; CHECK: out 8
63   store i32 12345678, i32* inttoptr (i16 40 to i32*)
64   ret void
67 define void @write64() {
68 ; CHECK-LABEL: write64
69 ; CHECK: out 15
70 ; CHECK: out 14
71 ; CHECK: out 13
72 ; CHECK: out 12
73 ; CHECK: out 11
74 ; CHECK: out 10
75 ; CHECK: out 9
76 ; CHECK: out 8
77   store i64 1234567891234567, i64* inttoptr (i16 40 to i64*)
78   ret void
81 define void @sbi8() {
82 ; CHECK-LABEL: sbi8
83 ; CHECK: sbi 8, 5
84   %1 = load i8, i8* inttoptr (i16 40 to i8*)
85   %or = or i8 %1, 32
86   store i8 %or, i8* inttoptr (i16 40 to i8*)
87   ret void
90 define void @cbi8() {
91 ; CHECK-LABEL: cbi8
92 ; CHECK: cbi 8, 5
93   %1 = load volatile i8, i8* inttoptr (i16 40 to i8*)
94   %and = and i8 %1, -33
95   store volatile i8 %and, i8* inttoptr (i16 40 to i8*)
96   ret void