1 ; RUN
: llvm-mc
-triple avr
-show-encoding
< %s | FileCheck
%s
3 ; TODO
: Add support for lo8
(-foo
+ 3), and add test
4 ; FIXME
: most of these tests use values
(i.e.
0x0815) that are out of bounds.
14 ; CHECK
: ldi
r24, lo8
(66) ; encoding
: [0x82,0xe4]
15 ; CHECK
: ldi
r24, lo8
(9026) ; encoding
: [0x82,0xe4]
17 ; CHECK
: ldi
r24, lo8
(35) ; encoding
: [0x83,0xe2]
18 ; CHECK
: ldi
r24, hi8
(9026) ; encoding
: [0x83,0xe2]
26 ; CHECK
: ldi
r24, lo8
(bar
) ; encoding
: [0x80'A',0xe0]
27 ; CHECK
: ; fixup
A - offset
: 0, value
: lo8
(bar
), kind
: fixup_lo8_ldi
28 ; CHECK
: ldi
r24, hi8
(bar
) ; encoding
: [0x80'A',0xe0]
29 ; CHECK
: ; fixup
A - offset
: 0, value
: hi8
(bar
), kind
: fixup_hi8_ldi
37 ; CHECK
: ldi
r24, lo8
(2069) ; encoding
: [0x85,0xe1]
38 ; CHECK
: ldi
r24, lo8
(foo
) ; encoding
: [0x80'A',0xe0]
39 ; CHECK
: ; fixup
A - offset
: 0, value
: lo8
(foo
), kind
: fixup_lo8_ldi
40 ; CHECK
: ldi
r24, lo8
(bar+
5) ; encoding
: [0x80'A',0xe0]
41 ; CHECK
: ; fixup
A - offset
: 0, value
: lo8
(bar+
5), kind
: fixup_lo8_ldi
45 ldi
r24, lo8
(-(123456))
48 ; CHECK
: ldi
r24, lo8
(-(123456)) ; encoding
: [0x80,0xec]
49 ; CHECK
: ldi
r24, lo8
(-(foo
)) ; encoding
: [0x80'A',0xe0]
50 ; CHECK
: ; fixup
A - offset
: 0, value
: lo8
(-(foo
)), kind
: fixup_lo8_ldi_neg
58 ; CHECK
: ldi
r24, hi8
(2069) ; encoding
: [0x88,0xe0]
59 ; CHECK
: ldi
r24, hi8
(foo
) ; encoding
: [0x80'A',0xe0]
60 ; CHECK
: ; fixup
A - offset
: 0, value
: hi8
(foo
), kind
: fixup_hi8_ldi
61 ; CHECK
: ldi
r24, hi8
(bar+
5) ; encoding
: [0x80'A',0xe0]
62 ; CHECK
: ; fixup
A - offset
: 0, value
: hi8
(bar+
5), kind
: fixup_hi8_ldi
66 ldi
r24, hi8
(-(123456))
69 ; CHECK
: ldi
r24, hi8
(-(123456)) ; encoding
: [0x8d,0xe1]
70 ; CHECK
: ldi
r24, hi8
(-(foo
)) ; encoding
: [0x80'A',0xe0]
71 ; CHECK
: ; fixup
A - offset
: 0, value
: hi8
(-(foo
)), kind
: fixup_hi8_ldi_neg
79 ; CHECK
: ldi
r24, hh8
(2069) ; encoding
: [0x80,0xe0]
80 ; CHECK
: ldi
r24, hh8
(foo
) ; encoding
: [0x80'A',0xe0]
81 ; CHECK
: ; fixup
A - offset
: 0, value
: hh8
(foo
), kind
: fixup_hh8_ldi
82 ; CHECK
: ldi
r24, hh8
(bar+
5) ; encoding
: [0x80'A',0xe0]
83 ; CHECK
: ; fixup
A - offset
: 0, value
: hh8
(bar+
5), kind
: fixup_hh8_ldi
87 ldi
r24, hh8
(-(123456))
90 ; CHECK
: ldi
r24, hh8
(-(123456)) ; encoding
: [0x8e,0xef]
91 ; CHECK
: ldi
r24, hh8
(-(foo
)) ; encoding
: [0x80'A',0xe0]
92 ; CHECK
: ; fixup
A - offset
: 0, value
: hh8
(-(foo
)), kind
: fixup_hh8_ldi_neg
94 hlo8
: ; synonym with hh8
() above
, hence the.
.. odd results
98 ldi
r24, hlo8
(bar
+ 5)
100 ; CHECK
: ldi
r24, hh8
(2069) ; encoding
: [0x80,0xe0]
101 ; CHECK
: ldi
r24, hh8
(foo
) ; encoding
: [0x80'A',0xe0]
102 ; CHECK
: ; fixup
A - offset
: 0, value
: hh8
(foo
), kind
: fixup_hh8_ldi
103 ; CHECK
: ldi
r24, hh8
(bar+
5) ; encoding
: [0x80'A',0xe0]
104 ; CHECK
: ; fixup
A - offset
: 0, value
: hh8
(bar+
5), kind
: fixup_hh8_ldi
108 ldi
r24, hlo8
(-(123456))
109 ldi
r24, hlo8
(-(foo
))
112 ; CHECK
: ldi
r24, hh8
(-(123456)) ; encoding
: [0x8e,0xef]
113 ; CHECK
: ldi
r24, hh8
(-(foo
)) ; encoding
: [0x80'A',0xe0]
114 ; CHECK
: ; fixup
A - offset
: 0, value
: hh8
(-(foo
)), kind
: fixup_hh8_ldi_neg
118 ldi
r24, hhi8
(0x0815)
120 ldi
r24, hhi8
(bar
+ 5)
122 ; CHECK
: ldi
r24, hhi8
(2069) ; encoding
: [0x80,0xe0]
123 ; CHECK
: ldi
r24, hhi8
(foo
) ; encoding
: [0x80'A',0xe0]
124 ; CHECK
: ; fixup
A - offset
: 0, value
: hhi8
(foo
), kind
: fixup_ms8_ldi
125 ; CHECK
: ldi
r24, hhi8
(bar+
5) ; encoding
: [0x80'A',0xe0]
126 ; CHECK
: ; fixup
A - offset
: 0, value
: hhi8
(bar+
5), kind
: fixup_ms8_ldi
129 ldi
r24, hhi8
(-(123456))
130 ldi
r24, hhi8
(-(foo
))
133 ; CHECK
: ldi
r24, hhi8
(-(123456)) ; encoding
: [0x8f,0xef]
134 ; CHECK
: ldi
r24, hhi8
(-(foo
)) ; encoding
: [0x80'A',0xe0]
135 ; CHECK
: ; fixup
A - offset
: 0, value
: hhi8
(-(foo
)), kind
: fixup_ms8_ldi_neg
138 ldi
r24, pm_lo8
(0x0815)
140 ldi
r24, pm_lo8
(bar
+ 5)
142 ; CHECK
: ldi
r24, pm_lo8
(2069) ; encoding
: [0x8a,0xe0]
143 ; CHECK
: ldi
r24, pm_lo8
(foo
) ; encoding
: [0x80'A',0xe0]
144 ; CHECK
: ; fixup
A - offset
: 0, value
: pm_lo8
(foo
), kind
: fixup_lo8_ldi_pm
145 ; CHECK
: ldi
r24, pm_lo8
(bar+
5) ; encoding
: [0x80'A',0xe0]
146 ; CHECK
: ; fixup
A - offset
: 0, value
: pm_lo8
(bar+
5), kind
: fixup_lo8_ldi_pm
149 ldi
r24, pm_hi8
(0x0815)
151 ldi
r24, pm_hi8
(bar
+ 5)
153 ; CHECK
: ldi
r24, pm_hi8
(2069) ; encoding
: [0x84,0xe0]
154 ; CHECK
: ldi
r24, pm_hi8
(foo
) ; encoding
: [0x80'A',0xe0]
155 ; CHECK
: ; fixup
A - offset
: 0, value
: pm_hi8
(foo
), kind
: fixup_hi8_ldi_pm
156 ; CHECK
: ldi
r24, pm_hi8
(bar+
5) ; encoding
: [0x80'A',0xe0]
157 ; CHECK
: ; fixup
A - offset
: 0, value
: pm_hi8
(bar+
5), kind
: fixup_hi8_ldi_pm
160 ldi
r24, pm_hh8
(0x0815)
162 ldi
r24, pm_hh8
(bar
+ 5)
164 ; CHECK
: ldi
r24, pm_hh8
(2069) ; encoding
: [0x80,0xe0]
165 ; CHECK
: ldi
r24, pm_hh8
(foo
) ; encoding
: [0x80'A',0xe0]
166 ; CHECK
: ; fixup
A - offset
: 0, value
: pm_hh8
(foo
), kind
: fixup_hh8_ldi_pm
167 ; CHECK
: ldi
r24, pm_hh8
(bar+
5) ; encoding
: [0x80'A',0xe0]
168 ; CHECK
: ; fixup
A - offset
: 0, value
: pm_hh8
(bar+
5), kind
: fixup_hh8_ldi_pm
172 ldi
r24, pm_lo8
(-(0x0815))
173 ldi
r24, pm_lo8
(-(foo
))
174 ldi
r24, pm_lo8
(-(bar
+ 5))
176 ; CHECK
: ldi
r24, pm_lo8
(-(2069)) ; encoding
: [0x85,0xef]
177 ; CHECK
: ldi
r24, pm_lo8
(-(foo
)) ; encoding
: [0x80'A',0xe0]
178 ; CHECK
: ; fixup
A - offset
: 0, value
: pm_lo8
(-(foo
)), kind
: fixup_lo8_ldi_pm_neg
179 ; CHECK
: ldi
r24, pm_lo8
(-(bar+
5)) ; encoding
: [0x80'A',0xe0]
180 ; CHECK
: ; fixup
A - offset
: 0, value
: pm_lo8
(-(bar+
5)), kind
: fixup_lo8_ldi_pm_neg
183 ldi
r24, pm_hi8
(-(0x0815))
184 ldi
r24, pm_hi8
(-(foo
))
185 ldi
r24, pm_hi8
(-(bar
+ 5))
187 ; CHECK
: ldi
r24, pm_hi8
(-(2069)) ; encoding
: [0x8b,0xef]
188 ; CHECK
: ldi
r24, pm_hi8
(-(foo
)) ; encoding
: [0x80'A',0xe0]
189 ; CHECK
: ; fixup
A - offset
: 0, value
: pm_hi8
(-(foo
)), kind
: fixup_hi8_ldi_pm_neg
190 ; CHECK
: ldi
r24, pm_hi8
(-(bar+
5)) ; encoding
: [0x80'A',0xe0]
191 ; CHECK
: ; fixup
A - offset
: 0, value
: pm_hi8
(-(bar+
5)), kind
: fixup_hi8_ldi_pm_neg
194 ldi
r24, pm_hh8
(-(0x0815))
195 ldi
r24, pm_hh8
(-(foo
))
196 ldi
r24, pm_hh8
(-(bar
+ 5))
198 ; CHECK
: ldi
r24, pm_hh8
(-(2069)) ; encoding
: [0x8f,0xef]
199 ; CHECK
: ldi
r24, pm_hh8
(-(foo
)) ; encoding
: [0x80'A',0xe0]
200 ; CHECK
: ; fixup
A - offset
: 0, value
: pm_hh8
(-(foo
)), kind
: fixup_hh8_ldi_pm_neg
201 ; CHECK
: ldi
r24, pm_hh8
(-(bar+
5)) ; encoding
: [0x80'A',0xe0]
202 ; CHECK
: ; fixup
A - offset
: 0, value
: pm_hh8
(-(bar+
5)), kind
: fixup_hh8_ldi_pm_neg