annotate test/CodeGen/AVR/load.ll @ 121:803732b1fca8

LLVM 5.0
author kono
date Fri, 27 Oct 2017 17:07:41 +0900
parents 1172e4bd9c6f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
1 ; RUN: llc -mattr=avr6,sram < %s -march=avr | FileCheck %s
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
3 define i8 @load8(i8* %x) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
4 ; CHECK-LABEL: load8:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
5 ; CHECK: ld r24, {{[XYZ]}}
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
6 %1 = load i8, i8* %x
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
7 ret i8 %1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
8 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
9
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
10 define i16 @load16(i16* %x) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
11 ; CHECK-LABEL: load16:
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
12 ; CHECK: ld r24, {{[XYZ]}}+
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
13 ; CHECK: ld r25, {{[XYZ]}}
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
14 %1 = load i16, i16* %x
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
15 ret i16 %1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
16 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
17
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
18 define i8 @load8disp(i8* %x) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
19 ; CHECK-LABEL: load8disp:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
20 ; CHECK: ldd r24, {{[YZ]}}+63
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
21 %1 = getelementptr inbounds i8, i8* %x, i64 63
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
22 %2 = load i8, i8* %1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
23 ret i8 %2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
24 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
25
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
26 define i8 @load8nodisp(i8* %x) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
27 ; CHECK-LABEL: load8nodisp:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
28 ; CHECK: movw r26, r24
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
29 ; CHECK: subi r26, 192
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
30 ; CHECK: sbci r27, 255
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
31 ; CHECK: ld r24, {{[XYZ]}}
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
32 %1 = getelementptr inbounds i8, i8* %x, i64 64
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
33 %2 = load i8, i8* %1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
34 ret i8 %2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
35 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
36
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
37 define i16 @load16disp(i16* %x) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
38 ; CHECK-LABEL: load16disp:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
39 ; CHECK: ldd r24, {{[YZ]}}+62
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
40 ; CHECK: ldd r25, {{[YZ]}}+63
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
41 %1 = getelementptr inbounds i16, i16* %x, i64 31
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
42 %2 = load i16, i16* %1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
43 ret i16 %2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
44 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
45
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
46 define i16 @load16nodisp(i16* %x) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
47 ; CHECK-LABEL: load16nodisp:
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
48 ; CHECK: movw r26, r24
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
49 ; CHECK: subi r26, 192
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
50 ; CHECK: sbci r27, 255
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
51 ; CHECK: ld r24, {{[XYZ]}}+
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
52 ; CHECK: ld r25, {{[XYZ]}}
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
53 %1 = getelementptr inbounds i16, i16* %x, i64 32
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
54 %2 = load i16, i16* %1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
55 ret i16 %2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
56 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
57
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
58 define i8 @load8postinc(i8* %x, i8 %y) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
59 ; CHECK-LABEL: load8postinc:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
60 ; CHECK: ld {{.*}}, {{[XYZ]}}+
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
61 entry:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
62 %tobool6 = icmp eq i8 %y, 0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
63 br i1 %tobool6, label %while.end, label %while.body
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
64 while.body: ; preds = %entry, %while.body
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
65 %r.09 = phi i8 [ %add, %while.body ], [ 0, %entry ]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
66 %y.addr.08 = phi i8 [ %dec, %while.body ], [ %y, %entry ]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
67 %x.addr.07 = phi i8* [ %incdec.ptr, %while.body ], [ %x, %entry ]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
68 %dec = add i8 %y.addr.08, -1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
69 %incdec.ptr = getelementptr inbounds i8, i8* %x.addr.07, i16 1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
70 %0 = load i8, i8* %x.addr.07
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
71 %add = add i8 %0, %r.09
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
72 %tobool = icmp eq i8 %dec, 0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
73 br i1 %tobool, label %while.end, label %while.body
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
74 while.end: ; preds = %while.body, %entry
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
75 %r.0.lcssa = phi i8 [ 0, %entry ], [ %add, %while.body ]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
76 ret i8 %r.0.lcssa
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
77 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
78
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
79 define i16 @load16postinc(i16* %x, i16 %y) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
80 ; CHECK-LABEL: load16postinc:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
81 ; CHECK: ld {{.*}}, {{[XYZ]}}+
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
82 ; CHECK: ld {{.*}}, {{[XYZ]}}+
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
83 entry:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
84 %tobool2 = icmp eq i16 %y, 0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
85 br i1 %tobool2, label %while.end, label %while.body
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
86 while.body: ; preds = %entry, %while.body
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
87 %r.05 = phi i16 [ %add, %while.body ], [ 0, %entry ]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
88 %y.addr.04 = phi i16 [ %dec, %while.body ], [ %y, %entry ]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
89 %x.addr.03 = phi i16* [ %incdec.ptr, %while.body ], [ %x, %entry ]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
90 %dec = add nsw i16 %y.addr.04, -1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
91 %incdec.ptr = getelementptr inbounds i16, i16* %x.addr.03, i16 1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
92 %0 = load i16, i16* %x.addr.03
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
93 %add = add nsw i16 %0, %r.05
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
94 %tobool = icmp eq i16 %dec, 0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
95 br i1 %tobool, label %while.end, label %while.body
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
96 while.end: ; preds = %while.body, %entry
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
97 %r.0.lcssa = phi i16 [ 0, %entry ], [ %add, %while.body ]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
98 ret i16 %r.0.lcssa
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
99 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
100
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
101 define i8 @load8predec(i8* %x, i8 %y) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
102 ; CHECK-LABEL: load8predec:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
103 ; CHECK: ld {{.*}}, -{{[XYZ]}}
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
104 entry:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
105 %tobool6 = icmp eq i8 %y, 0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
106 br i1 %tobool6, label %while.end, label %while.body
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
107 while.body: ; preds = %entry, %while.body
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
108 %r.09 = phi i8 [ %add, %while.body ], [ 0, %entry ]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
109 %y.addr.08 = phi i8 [ %dec, %while.body ], [ %y, %entry ]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
110 %x.addr.07 = phi i8* [ %incdec.ptr, %while.body ], [ %x, %entry ]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
111 %dec = add i8 %y.addr.08, -1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
112 %incdec.ptr = getelementptr inbounds i8, i8* %x.addr.07, i16 -1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
113 %0 = load i8, i8* %incdec.ptr
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
114 %add = add i8 %0, %r.09
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
115 %tobool = icmp eq i8 %dec, 0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
116 br i1 %tobool, label %while.end, label %while.body
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
117 while.end: ; preds = %while.body, %entry
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
118 %r.0.lcssa = phi i8 [ 0, %entry ], [ %add, %while.body ]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
119 ret i8 %r.0.lcssa
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
120 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
121
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
122 define i16 @load16predec(i16* %x, i16 %y) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
123 ; CHECK-LABEL: load16predec:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
124 ; CHECK: ld {{.*}}, -{{[XYZ]}}
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
125 ; CHECK: ld {{.*}}, -{{[XYZ]}}
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
126 entry:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
127 %tobool2 = icmp eq i16 %y, 0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
128 br i1 %tobool2, label %while.end, label %while.body
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
129 while.body: ; preds = %entry, %while.body
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
130 %r.05 = phi i16 [ %add, %while.body ], [ 0, %entry ]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
131 %y.addr.04 = phi i16 [ %dec, %while.body ], [ %y, %entry ]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
132 %x.addr.03 = phi i16* [ %incdec.ptr, %while.body ], [ %x, %entry ]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
133 %dec = add nsw i16 %y.addr.04, -1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
134 %incdec.ptr = getelementptr inbounds i16, i16* %x.addr.03, i16 -1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
135 %0 = load i16, i16* %incdec.ptr
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
136 %add = add nsw i16 %0, %r.05
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
137 %tobool = icmp eq i16 %dec, 0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
138 br i1 %tobool, label %while.end, label %while.body
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
139 while.end: ; preds = %while.body, %entry
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
140 %r.0.lcssa = phi i16 [ 0, %entry ], [ %add, %while.body ]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
141 ret i16 %r.0.lcssa
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
142 }