b8f1e7a3e87ea8cbaaf5893e36c37d3a167bdc6d
[oota-llvm.git] / test / MC / Mips / mips64-expansions.s
1 # RUN: llvm-mc %s -triple=mips64el-unknown-linux -show-encoding -mcpu=mips64r2 | FileCheck %s
2 #
3 # Test the 'dli' and 'dla' 64-bit variants of 'li' and 'la'.
4
5 # Immediate is <= 32 bits.
6   dli $5, 123
7 # CHECK:     addiu $5, $zero, 123   # encoding: [0x7b,0x00,0x05,0x24]
8
9   dli $6, -2345
10 # CHECK:     addiu $6, $zero, -2345 # encoding: [0xd7,0xf6,0x06,0x24]
11
12   dli $7, 65538
13 # CHECK:     lui   $7, 1            # encoding: [0x01,0x00,0x07,0x3c]
14 # CHECK:     ori   $7, $7, 2        # encoding: [0x02,0x00,0xe7,0x34]
15
16   dli $8, ~7
17 # CHECK:     addiu $8, $zero, -8    # encoding: [0xf8,0xff,0x08,0x24]
18
19   dli $9, 0x10000
20 # CHECK:     lui   $9, 1            # encoding: [0x01,0x00,0x09,0x3c]
21 # CHECK-NOT: ori   $9, $9, 0        # encoding: [0x00,0x00,0x29,0x35]
22
23
24 # Positive immediate which is => 32 bits and <= 48 bits.
25   dli $8, 0x100000000
26 # CHECK: lui  $8, 1                 # encoding: [0x01,0x00,0x08,0x3c]
27 # CHECK: dsll $8, $8, 16            # encoding: [0x38,0x44,0x08,0x00]
28
29   dli $8, 0x100000001
30 # CHECK: lui  $8, 1                 # encoding: [0x01,0x00,0x08,0x3c]
31 # CHECK: dsll $8, $8, 16            # encoding: [0x38,0x44,0x08,0x00]
32 # CHECK: ori  $8, $8, 1             # encoding: [0x01,0x00,0x08,0x35]
33
34   dli $8, 0x100010000
35 # CHECK: lui  $8, 1                 # encoding: [0x01,0x00,0x08,0x3c]
36 # CHECK: ori  $8, $8, 1             # encoding: [0x01,0x00,0x08,0x35]
37 # CHECK: dsll $8, $8, 16            # encoding: [0x38,0x44,0x08,0x00]
38
39   dli $8, 0x100010001
40 # CHECK: lui  $8, 1                 # encoding: [0x01,0x00,0x08,0x3c]
41 # CHECK: ori  $8, $8, 1             # encoding: [0x01,0x00,0x08,0x35]
42 # CHECK: dsll $8, $8, 16            # encoding: [0x38,0x44,0x08,0x00]
43 # CHECK: ori  $8, $8, 1             # encoding: [0x01,0x00,0x08,0x35]
44
45
46 # Positive immediate which is > 48 bits.
47   dli $8, 0x1000000000000
48 # CHECK: lui    $8, 1               # encoding: [0x01,0x00,0x08,0x3c]
49 # CHECK: dsll32 $8, $8, 0           # encoding: [0x3c,0x40,0x08,0x00]
50
51   dli $8, 0x1000000000001
52 # CHECK: lui    $8, 1               # encoding: [0x01,0x00,0x08,0x3c]
53 # CHECK: dsll32 $8, $8, 0           # encoding: [0x3c,0x40,0x08,0x00]
54 # CHECK: ori    $8, $8, 1           # encoding: [0x01,0x00,0x08,0x35]
55
56   dli $8, 0x1000000010000
57 # CHECK: lui    $8, 1               # encoding: [0x01,0x00,0x08,0x3c]
58 # CHECK: dsll   $8, $8, 16          # encoding: [0x38,0x44,0x08,0x00]
59 # CHECK: ori    $8, $8, 1           # encoding: [0x01,0x00,0x08,0x35]
60 # CHECK: dsll   $8, $8, 16          # encoding: [0x38,0x44,0x08,0x00]
61
62   dli $8, 0x1000100000000
63 # CHECK: lui    $8, 1               # encoding: [0x01,0x00,0x08,0x3c]
64 # CHECK: ori    $8, $8, 1           # encoding: [0x01,0x00,0x08,0x35]
65 # CHECK: dsll32 $8, $8, 0           # encoding: [0x3c,0x40,0x08,0x00]
66
67   dli $8, 0x1000000010001
68 # CHECK: lui    $8, 1               # encoding: [0x01,0x00,0x08,0x3c]
69 # CHECK: dsll   $8, $8, 16          # encoding: [0x38,0x44,0x08,0x00]
70 # CHECK: ori    $8, $8, 1           # encoding: [0x01,0x00,0x08,0x35]
71 # CHECK: dsll   $8, $8, 16          # encoding: [0x38,0x44,0x08,0x00]
72 # CHECK: ori    $8, $8, 1           # encoding: [0x01,0x00,0x08,0x35]
73
74   dli $8, 0x1000100010000
75 # CHECK: lui    $8, 1               # encoding: [0x01,0x00,0x08,0x3c]
76 # CHECK: ori    $8, $8, 1           # encoding: [0x01,0x00,0x08,0x35]
77 # CHECK: dsll   $8, $8, 16          # encoding: [0x38,0x44,0x08,0x00]
78 # CHECK: ori    $8, $8, 1           # encoding: [0x01,0x00,0x08,0x35]
79 # CHECK: dsll   $8, $8, 16          # encoding: [0x38,0x44,0x08,0x00]
80
81   dli $8, 0x1000100000001
82 # CHECK: lui    $8, 1               # encoding: [0x01,0x00,0x08,0x3c]
83 # CHECK: ori    $8, $8, 1           # encoding: [0x01,0x00,0x08,0x35]
84 # CHECK: dsll32 $8, $8, 0           # encoding: [0x3c,0x40,0x08,0x00]
85 # CHECK: ori    $8, $8, 1           # encoding: [0x01,0x00,0x08,0x35]
86
87   dli $8, 0x1000100010001
88 # CHECK: lui    $8, 1               # encoding: [0x01,0x00,0x08,0x3c]
89 # CHECK: ori    $8, $8, 1           # encoding: [0x01,0x00,0x08,0x35]
90 # CHECK: dsll   $8, $8, 16          # encoding: [0x38,0x44,0x08,0x00]
91 # CHECK: ori    $8, $8, 1           # encoding: [0x01,0x00,0x08,0x35]
92 # CHECK: dsll   $8, $8, 16          # encoding: [0x38,0x44,0x08,0x00]
93 # CHECK: ori    $8, $8, 1           # encoding: [0x01,0x00,0x08,0x35]
94
95
96 # Negative immediate which is => 32 bits and <= 48 bits.
97   dli $8, -0x100000000
98 # CHECK: lui    $8, 65535           # encoding: [0xff,0xff,0x08,0x3c]
99 # CHECK: ori    $8, $8, 65535       # encoding: [0xff,0xff,0x08,0x35]
100 # CHECK: dsll32 $8, $8, 0           # encoding: [0x3c,0x40,0x08,0x00]
101
102   dli $8, -0x100000001
103 # CHECK: lui    $8, 65535           # encoding: [0xff,0xff,0x08,0x3c]
104 # CHECK: ori    $8, $8, 65534       # encoding: [0xfe,0xff,0x08,0x35]
105 # CHECK: dsll   $8, $8, 16          # encoding: [0x38,0x44,0x08,0x00]
106 # CHECK: ori    $8, $8, 65535       # encoding: [0xff,0xff,0x08,0x35]
107 # CHECK: dsll   $8, $8, 16          # encoding: [0x38,0x44,0x08,0x00]
108 # CHECK: ori    $8, $8, 65535       # encoding: [0xff,0xff,0x08,0x35]
109
110   dli $8, -0x100010000
111 # CHECK: lui    $8, 65535           # encoding: [0xff,0xff,0x08,0x3c]
112 # CHECK: ori    $8, $8, 65534       # encoding: [0xfe,0xff,0x08,0x35]
113 # CHECK: dsll   $8, $8, 16          # encoding: [0x38,0x44,0x08,0x00]
114 # CHECK: ori    $8, $8, 65535       # encoding: [0xff,0xff,0x08,0x35]
115 # CHECK: dsll   $8, $8, 16          # encoding: [0x38,0x44,0x08,0x00]
116
117   dli $8, -0x100010001
118 # CHECK: lui    $8, 65535           # encoding: [0xff,0xff,0x08,0x3c]
119 # CHECK: ori    $8, $8, 65534       # encoding: [0xfe,0xff,0x08,0x35]
120 # CHECK: dsll   $8, $8, 16          # encoding: [0x38,0x44,0x08,0x00]
121 # CHECK: ori    $8, $8, 65534       # encoding: [0xfe,0xff,0x08,0x35]
122 # CHECK: dsll   $8, $8, 16          # encoding: [0x38,0x44,0x08,0x00]
123 # CHECK: ori    $8, $8, 65535       # encoding: [0xff,0xff,0x08,0x35]
124
125
126 # Negative immediate which is > 48 bits.
127   dli $8, -0x1000000000000
128 # CHECK: lui    $8, 65535           # encoding: [0xff,0xff,0x08,0x3c]
129 # CHECK: dsll32 $8, $8, 0           # encoding: [0x3c,0x40,0x08,0x00]
130
131   dli $8, -0x1000000000001
132 # CHECK: lui    $8, 65534           # encoding: [0xfe,0xff,0x08,0x3c]
133 # CHECK: ori    $8, $8, 65535       # encoding: [0xff,0xff,0x08,0x35]
134 # CHECK: dsll   $8, $8, 16          # encoding: [0x38,0x44,0x08,0x00]
135 # CHECK: ori    $8, $8, 65535       # encoding: [0xff,0xff,0x08,0x35]
136 # CHECK: dsll   $8, $8, 16          # encoding: [0x38,0x44,0x08,0x00]
137 # CHECK: ori    $8, $8, 65535       # encoding: [0xff,0xff,0x08,0x35]
138
139   dli $8, -0x1000000010000
140 # CHECK: lui    $8, 65534           # encoding: [0xfe,0xff,0x08,0x3c]
141 # CHECK: ori    $8, $8, 65535       # encoding: [0xff,0xff,0x08,0x35]
142 # CHECK: dsll   $8, $8, 16          # encoding: [0x38,0x44,0x08,0x00]
143 # CHECK: ori    $8, $8, 65535       # encoding: [0xff,0xff,0x08,0x35]
144 # CHECK: dsll   $8, $8, 16          # encoding: [0x38,0x44,0x08,0x00]
145
146   dli $8, -0x1000100000000
147 # CHECK: lui    $8, 65534           # encoding: [0xfe,0xff,0x08,0x3c]
148 # CHECK: ori    $8, $8, 65535       # encoding: [0xff,0xff,0x08,0x35]
149 # CHECK: dsll32 $8, $8, 0           # encoding: [0x3c,0x40,0x08,0x00]
150
151   dli $8, -0x1000000010001
152 # CHECK: lui    $8, 65534           # encoding: [0xfe,0xff,0x08,0x3c]
153 # CHECK: ori    $8, $8, 65535       # encoding: [0xff,0xff,0x08,0x35]
154 # CHECK: dsll   $8, $8, 16          # encoding: [0x38,0x44,0x08,0x00]
155 # CHECK: ori    $8, $8, 65534       # encoding: [0xfe,0xff,0x08,0x35]
156 # CHECK: dsll   $8, $8, 16          # encoding: [0x38,0x44,0x08,0x00]
157 # CHECK: ori    $8, $8, 65535       # encoding: [0xff,0xff,0x08,0x35]
158
159   dli $8, -0x1000100010000
160 # CHECK: lui    $8, 65534           # encoding: [0xfe,0xff,0x08,0x3c]
161 # CHECK: ori    $8, $8, 65534       # encoding: [0xfe,0xff,0x08,0x35]
162 # CHECK: dsll   $8, $8, 16          # encoding: [0x38,0x44,0x08,0x00]
163 # CHECK: ori    $8, $8, 65535       # encoding: [0xff,0xff,0x08,0x35]
164 # CHECK: dsll   $8, $8, 16          # encoding: [0x38,0x44,0x08,0x00]
165
166   dli $8, -0x1000100000001
167 # CHECK: lui    $8, 65534           # encoding: [0xfe,0xff,0x08,0x3c]
168 # CHECK: ori    $8, $8, 65534       # encoding: [0xfe,0xff,0x08,0x35]
169 # CHECK: dsll   $8, $8, 16          # encoding: [0x38,0x44,0x08,0x00]
170 # CHECK: ori    $8, $8, 65535       # encoding: [0xff,0xff,0x08,0x35]
171 # CHECK: dsll   $8, $8, 16          # encoding: [0x38,0x44,0x08,0x00]
172 # CHECK: ori    $8, $8, 65535       # encoding: [0xff,0xff,0x08,0x35]
173
174   dli $8, -0x1000100010001
175 # CHECK: lui    $8, 65534           # encoding: [0xfe,0xff,0x08,0x3c]
176 # CHECK: ori    $8, $8, 65534       # encoding: [0xfe,0xff,0x08,0x35]
177 # CHECK: dsll   $8, $8, 16          # encoding: [0x38,0x44,0x08,0x00]
178 # CHECK: ori    $8, $8, 65534       # encoding: [0xfe,0xff,0x08,0x35]
179 # CHECK: dsll   $8, $8, 16          # encoding: [0x38,0x44,0x08,0x00]
180 # CHECK: ori    $8, $8, 65535       # encoding: [0xff,0xff,0x08,0x35]
181
182 # Check that signed negative 32-bit immediates are loaded correctly:
183   li $10, ~(0x101010)
184 # CHECK: lui $10, 65519        # encoding: [0xef,0xff,0x0a,0x3c]
185 # CHECK: ori $10, $10, 61423   # encoding: [0xef,0xef,0x4a,0x35]
186 # CHECK-NOT: dsll
187
188   dli $10, ~(0x202020)
189 # CHECK: lui $10, 65503        # encoding: [0xdf,0xff,0x0a,0x3c]
190 # CHECK: ori $10, $10, 57311   # encoding: [0xdf,0xdf,0x4a,0x35]
191 # CHECK-NOT: dsll
192
193   dli $9, 0x80000000
194 # CHECK: ori  $9, $zero, 32768 # encoding: [0x00,0x80,0x09,0x34]
195 # CHECK: dsll $9, $9, 16       # encoding: [0x38,0x4c,0x09,0x00]
196
197 # Test bne with an immediate as the 2nd operand.
198   bne $2, 0x100010001, 1332
199 # CHECK: lui  $1, 1                 # encoding: [0x01,0x00,0x01,0x3c]
200 # CHECK: ori  $1, $1, 1             # encoding: [0x01,0x00,0x21,0x34]
201 # CHECK: dsll $1, $1, 16            # encoding: [0x38,0x0c,0x01,0x00]
202 # CHECK: ori  $1, $1, 1             # encoding: [0x01,0x00,0x21,0x34]
203 # CHECK: bne  $2, $1, 1332          # encoding: [0x4d,0x01,0x41,0x14]
204 # CHECK: nop                        # encoding: [0x00,0x00,0x00,0x00]
205
206   bne $2, 0x1000100010001, 1332
207 # CHECK: lui  $1, 1                 # encoding: [0x01,0x00,0x01,0x3c]
208 # CHECK: ori  $1, $1, 1             # encoding: [0x01,0x00,0x21,0x34]
209 # CHECK: dsll $1, $1, 16            # encoding: [0x38,0x0c,0x01,0x00]
210 # CHECK: ori  $1, $1, 1             # encoding: [0x01,0x00,0x21,0x34]
211 # CHECK: dsll $1, $1, 16            # encoding: [0x38,0x0c,0x01,0x00]
212 # CHECK: ori  $1, $1, 1             # encoding: [0x01,0x00,0x21,0x34]
213 # CHECK: bne  $2, $1, 1332          # encoding: [0x4d,0x01,0x41,0x14]
214 # CHECK: nop                        # encoding: [0x00,0x00,0x00,0x00]
215
216   bne $2, -0x100010001, 1332
217 # CHECK: lui  $1, 65535             # encoding: [0xff,0xff,0x01,0x3c]
218 # CHECK: ori  $1, $1, 65534         # encoding: [0xfe,0xff,0x21,0x34]
219 # CHECK: dsll $1, $1, 16            # encoding: [0x38,0x0c,0x01,0x00]
220 # CHECK: ori  $1, $1, 65534         # encoding: [0xfe,0xff,0x21,0x34]
221 # CHECK: dsll $1, $1, 16            # encoding: [0x38,0x0c,0x01,0x00]
222 # CHECK: ori  $1, $1, 65535         # encoding: [0xff,0xff,0x21,0x34]
223 # CHECK: bne  $2, $1, 1332          # encoding: [0x4d,0x01,0x41,0x14]
224 # CHECK: nop                        # encoding: [0x00,0x00,0x00,0x00]
225
226   bne $2, -0x1000100010001, 1332
227 # CHECK: lui  $1, 65534             # encoding: [0xfe,0xff,0x01,0x3c]
228 # CHECK: ori  $1, $1, 65534         # encoding: [0xfe,0xff,0x21,0x34]
229 # CHECK: dsll $1, $1, 16            # encoding: [0x38,0x0c,0x01,0x00]
230 # CHECK: ori  $1, $1, 65534         # encoding: [0xfe,0xff,0x21,0x34]
231 # CHECK: dsll $1, $1, 16            # encoding: [0x38,0x0c,0x01,0x00]
232 # CHECK: ori  $1, $1, 65535         # encoding: [0xff,0xff,0x21,0x34]
233 # CHECK: bne  $2, $1, 1332          # encoding: [0x4d,0x01,0x41,0x14]
234 # CHECK: nop                        # encoding: [0x00,0x00,0x00,0x00]
235
236 # Test beq with an immediate as the 2nd operand.
237   beq $2, 0x100010001, 1332
238 # CHECK: lui  $1, 1                 # encoding: [0x01,0x00,0x01,0x3c]
239 # CHECK: ori  $1, $1, 1             # encoding: [0x01,0x00,0x21,0x34]
240 # CHECK: dsll $1, $1, 16            # encoding: [0x38,0x0c,0x01,0x00]
241 # CHECK: ori  $1, $1, 1             # encoding: [0x01,0x00,0x21,0x34]
242 # CHECK: beq  $2, $1, 1332          # encoding: [0x4d,0x01,0x41,0x10]
243 # CHECK: nop                        # encoding: [0x00,0x00,0x00,0x00]
244
245   beq $2, 0x1000100010001, 1332
246 # CHECK: lui  $1, 1                 # encoding: [0x01,0x00,0x01,0x3c]
247 # CHECK: ori  $1, $1, 1             # encoding: [0x01,0x00,0x21,0x34]
248 # CHECK: dsll $1, $1, 16            # encoding: [0x38,0x0c,0x01,0x00]
249 # CHECK: ori  $1, $1, 1             # encoding: [0x01,0x00,0x21,0x34]
250 # CHECK: dsll $1, $1, 16            # encoding: [0x38,0x0c,0x01,0x00]
251 # CHECK: ori  $1, $1, 1             # encoding: [0x01,0x00,0x21,0x34]
252 # CHECK: beq  $2, $1, 1332          # encoding: [0x4d,0x01,0x41,0x10]
253 # CHECK: nop                        # encoding: [0x00,0x00,0x00,0x00]
254
255   beq $2, -0x100010001, 1332
256 # CHECK: lui  $1, 65535             # encoding: [0xff,0xff,0x01,0x3c]
257 # CHECK: ori  $1, $1, 65534         # encoding: [0xfe,0xff,0x21,0x34]
258 # CHECK: dsll $1, $1, 16            # encoding: [0x38,0x0c,0x01,0x00]
259 # CHECK: ori  $1, $1, 65534         # encoding: [0xfe,0xff,0x21,0x34]
260 # CHECK: dsll $1, $1, 16            # encoding: [0x38,0x0c,0x01,0x00]
261 # CHECK: ori  $1, $1, 65535         # encoding: [0xff,0xff,0x21,0x34]
262 # CHECK: beq  $2, $1, 1332          # encoding: [0x4d,0x01,0x41,0x10]
263 # CHECK: nop                        # encoding: [0x00,0x00,0x00,0x00]
264
265   beq $2, -0x1000100010001, 1332
266 # CHECK: lui  $1, 65534             # encoding: [0xfe,0xff,0x01,0x3c]
267 # CHECK: ori  $1, $1, 65534         # encoding: [0xfe,0xff,0x21,0x34]
268 # CHECK: dsll $1, $1, 16            # encoding: [0x38,0x0c,0x01,0x00]
269 # CHECK: ori  $1, $1, 65534         # encoding: [0xfe,0xff,0x21,0x34]
270 # CHECK: dsll $1, $1, 16            # encoding: [0x38,0x0c,0x01,0x00]
271 # CHECK: ori  $1, $1, 65535         # encoding: [0xff,0xff,0x21,0x34]
272 # CHECK: beq  $2, $1, 1332          # encoding: [0x4d,0x01,0x41,0x10]
273 # CHECK: nop                        # encoding: [0x00,0x00,0x00,0x00]
274
275 # Test ulhu with 64-bit immediate addresses.
276   ulhu $8, 0x100010001
277 # CHECK: lui  $1, 1            # encoding: [0x01,0x00,0x01,0x3c]
278 # CHECK: ori  $1, $1, 1        # encoding: [0x01,0x00,0x21,0x34]
279 # CHECK: dsll $1, $1, 16       # encoding: [0x38,0x0c,0x01,0x00]
280 # CHECK: ori  $1, $1, 1        # encoding: [0x01,0x00,0x21,0x34]
281 # CHECK: lbu  $8, 1($1)        # encoding: [0x01,0x00,0x28,0x90]
282 # CHECK: lbu  $1, 0($1)        # encoding: [0x00,0x00,0x21,0x90]
283 # CHECK: sll  $8, $8, 8        # encoding: [0x00,0x42,0x08,0x00]
284 # CHECK: or   $8, $8, $1       # encoding: [0x25,0x40,0x01,0x01]
285
286   ulhu $8, 0x1000100010001
287 # CHECK: lui  $1, 1            # encoding: [0x01,0x00,0x01,0x3c]
288 # CHECK: ori  $1, $1, 1        # encoding: [0x01,0x00,0x21,0x34]
289 # CHECK: dsll $1, $1, 16       # encoding: [0x38,0x0c,0x01,0x00]
290 # CHECK: ori  $1, $1, 1        # encoding: [0x01,0x00,0x21,0x34]
291 # CHECK: dsll $1, $1, 16       # encoding: [0x38,0x0c,0x01,0x00]
292 # CHECK: ori  $1, $1, 1        # encoding: [0x01,0x00,0x21,0x34]
293 # CHECK: lbu  $8, 1($1)        # encoding: [0x01,0x00,0x28,0x90]
294 # CHECK: lbu  $1, 0($1)        # encoding: [0x00,0x00,0x21,0x90]
295 # CHECK: sll  $8, $8, 8        # encoding: [0x00,0x42,0x08,0x00]
296 # CHECK: or   $8, $8, $1       # encoding: [0x25,0x40,0x01,0x01]
297
298   ulhu $8, -0x100010001
299 # CHECK: lui  $1, 65535        # encoding: [0xff,0xff,0x01,0x3c]
300 # CHECK: ori  $1, $1, 65534    # encoding: [0xfe,0xff,0x21,0x34]
301 # CHECK: dsll $1, $1, 16       # encoding: [0x38,0x0c,0x01,0x00]
302 # CHECK: ori  $1, $1, 65534    # encoding: [0xfe,0xff,0x21,0x34]
303 # CHECK: dsll $1, $1, 16       # encoding: [0x38,0x0c,0x01,0x00]
304 # CHECK: ori  $1, $1, 65535    # encoding: [0xff,0xff,0x21,0x34]
305 # CHECK: lbu  $8, 1($1)        # encoding: [0x01,0x00,0x28,0x90]
306 # CHECK: lbu  $1, 0($1)        # encoding: [0x00,0x00,0x21,0x90]
307 # CHECK: sll  $8, $8, 8        # encoding: [0x00,0x42,0x08,0x00]
308 # CHECK: or   $8, $8, $1       # encoding: [0x25,0x40,0x01,0x01]
309
310   ulhu $8, -0x1000100010001
311 # CHECK: lui  $1, 65534        # encoding: [0xfe,0xff,0x01,0x3c]
312 # CHECK: ori  $1, $1, 65534    # encoding: [0xfe,0xff,0x21,0x34]
313 # CHECK: dsll $1, $1, 16       # encoding: [0x38,0x0c,0x01,0x00]
314 # CHECK: ori  $1, $1, 65534    # encoding: [0xfe,0xff,0x21,0x34]
315 # CHECK: dsll $1, $1, 16       # encoding: [0x38,0x0c,0x01,0x00]
316 # CHECK: ori  $1, $1, 65535    # encoding: [0xff,0xff,0x21,0x34]
317 # CHECK: lbu  $8, 1($1)        # encoding: [0x01,0x00,0x28,0x90]
318 # CHECK: lbu  $1, 0($1)        # encoding: [0x00,0x00,0x21,0x90]
319 # CHECK: sll  $8, $8, 8        # encoding: [0x00,0x42,0x08,0x00]
320 # CHECK: or   $8, $8, $1       # encoding: [0x25,0x40,0x01,0x01]
321
322 # Test ulhu with source register and 64-bit immediate offset.
323   ulhu $8, 0x100010001($9)
324 # CHECK: lui   $1, 1           # encoding: [0x01,0x00,0x01,0x3c]
325 # CHECK: ori   $1, $1, 1       # encoding: [0x01,0x00,0x21,0x34]
326 # CHECK: dsll  $1, $1, 16      # encoding: [0x38,0x0c,0x01,0x00]
327 # CHECK: ori   $1, $1, 1       # encoding: [0x01,0x00,0x21,0x34]
328 # CHECK: daddu $1, $1, $9      # encoding: [0x2d,0x08,0x29,0x00]
329 # CHECK: lbu   $8, 1($1)       # encoding: [0x01,0x00,0x28,0x90]
330 # CHECK: lbu   $1, 0($1)       # encoding: [0x00,0x00,0x21,0x90]
331 # CHECK: sll   $8, $8, 8       # encoding: [0x00,0x42,0x08,0x00]
332 # CHECK: or    $8, $8, $1      # encoding: [0x25,0x40,0x01,0x01]
333
334   ulhu $8, 0x1000100010001($9)
335 # CHECK: lui   $1, 1           # encoding: [0x01,0x00,0x01,0x3c]
336 # CHECK: ori   $1, $1, 1       # encoding: [0x01,0x00,0x21,0x34]
337 # CHECK: dsll  $1, $1, 16      # encoding: [0x38,0x0c,0x01,0x00]
338 # CHECK: ori   $1, $1, 1       # encoding: [0x01,0x00,0x21,0x34]
339 # CHECK: dsll  $1, $1, 16      # encoding: [0x38,0x0c,0x01,0x00]
340 # CHECK: ori   $1, $1, 1       # encoding: [0x01,0x00,0x21,0x34]
341 # CHECK: daddu $1, $1, $9      # encoding: [0x2d,0x08,0x29,0x00]
342 # CHECK: lbu   $8, 1($1)       # encoding: [0x01,0x00,0x28,0x90]
343 # CHECK: lbu   $1, 0($1)       # encoding: [0x00,0x00,0x21,0x90]
344 # CHECK: sll   $8, $8, 8       # encoding: [0x00,0x42,0x08,0x00]
345 # CHECK: or    $8, $8, $1      # encoding: [0x25,0x40,0x01,0x01]
346
347   ulhu $8, -0x100010001($9)
348 # CHECK: lui   $1, 65535       # encoding: [0xff,0xff,0x01,0x3c]
349 # CHECK: ori   $1, $1, 65534   # encoding: [0xfe,0xff,0x21,0x34]
350 # CHECK: dsll  $1, $1, 16      # encoding: [0x38,0x0c,0x01,0x00]
351 # CHECK: ori   $1, $1, 65534   # encoding: [0xfe,0xff,0x21,0x34]
352 # CHECK: dsll  $1, $1, 16      # encoding: [0x38,0x0c,0x01,0x00]
353 # CHECK: ori   $1, $1, 65535   # encoding: [0xff,0xff,0x21,0x34]
354 # CHECK: daddu $1, $1, $9      # encoding: [0x2d,0x08,0x29,0x00]
355 # CHECK: lbu   $8, 1($1)       # encoding: [0x01,0x00,0x28,0x90]
356 # CHECK: lbu   $1, 0($1)       # encoding: [0x00,0x00,0x21,0x90]
357 # CHECK: sll   $8, $8, 8       # encoding: [0x00,0x42,0x08,0x00]
358 # CHECK: or    $8, $8, $1      # encoding: [0x25,0x40,0x01,0x01]
359
360   ulhu $8, -0x1000100010001($9)
361 # CHECK: lui   $1, 65534       # encoding: [0xfe,0xff,0x01,0x3c]
362 # CHECK: ori   $1, $1, 65534   # encoding: [0xfe,0xff,0x21,0x34]
363 # CHECK: dsll  $1, $1, 16      # encoding: [0x38,0x0c,0x01,0x00]
364 # CHECK: ori   $1, $1, 65534   # encoding: [0xfe,0xff,0x21,0x34]
365 # CHECK: dsll  $1, $1, 16      # encoding: [0x38,0x0c,0x01,0x00]
366 # CHECK: ori   $1, $1, 65535   # encoding: [0xff,0xff,0x21,0x34]
367 # CHECK: daddu $1, $1, $9      # encoding: [0x2d,0x08,0x29,0x00]
368 # CHECK: lbu   $8, 1($1)       # encoding: [0x01,0x00,0x28,0x90]
369 # CHECK: lbu   $1, 0($1)       # encoding: [0x00,0x00,0x21,0x90]
370 # CHECK: sll   $8, $8, 8       # encoding: [0x00,0x42,0x08,0x00]
371 # CHECK: or    $8, $8, $1      # encoding: [0x25,0x40,0x01,0x01]
372
373 # Test ulw with 64-bit immediate addresses.
374   ulw $8, 0x100010001
375 # CHECK: lui  $1, 1           # encoding: [0x01,0x00,0x01,0x3c]
376 # CHECK: ori  $1, $1, 1       # encoding: [0x01,0x00,0x21,0x34]
377 # CHECK: dsll $1, $1, 16      # encoding: [0x38,0x0c,0x01,0x00]
378 # CHECK: ori  $1, $1, 1       # encoding: [0x01,0x00,0x21,0x34]
379 # CHECK: lwl  $8, 3($1)       # encoding: [0x03,0x00,0x28,0x88]
380 # CHECK: lwr  $8, 0($1)       # encoding: [0x00,0x00,0x28,0x98]
381
382   ulw $8, 0x1000100010001
383 # CHECK: lui  $1, 1           # encoding: [0x01,0x00,0x01,0x3c]
384 # CHECK: ori  $1, $1, 1       # encoding: [0x01,0x00,0x21,0x34]
385 # CHECK: dsll $1, $1, 16      # encoding: [0x38,0x0c,0x01,0x00]
386 # CHECK: ori  $1, $1, 1       # encoding: [0x01,0x00,0x21,0x34]
387 # CHECK: dsll $1, $1, 16      # encoding: [0x38,0x0c,0x01,0x00]
388 # CHECK: ori  $1, $1, 1       # encoding: [0x01,0x00,0x21,0x34]
389 # CHECK: lwl  $8, 3($1)       # encoding: [0x03,0x00,0x28,0x88]
390 # CHECK: lwr  $8, 0($1)       # encoding: [0x00,0x00,0x28,0x98]
391
392   ulw $8, -0x100010001
393 # CHECK: lui  $1, 65535       # encoding: [0xff,0xff,0x01,0x3c]
394 # CHECK: ori  $1, $1, 65534   # encoding: [0xfe,0xff,0x21,0x34]
395 # CHECK: dsll $1, $1, 16      # encoding: [0x38,0x0c,0x01,0x00]
396 # CHECK: ori  $1, $1, 65534   # encoding: [0xfe,0xff,0x21,0x34]
397 # CHECK: dsll $1, $1, 16      # encoding: [0x38,0x0c,0x01,0x00]
398 # CHECK: ori  $1, $1, 65535   # encoding: [0xff,0xff,0x21,0x34]
399 # CHECK: lwl  $8, 3($1)       # encoding: [0x03,0x00,0x28,0x88]
400 # CHECK: lwr  $8, 0($1)       # encoding: [0x00,0x00,0x28,0x98]
401
402   ulw $8, -0x1000100010001
403 # CHECK: lui  $1, 65534       # encoding: [0xfe,0xff,0x01,0x3c]
404 # CHECK: ori  $1, $1, 65534   # encoding: [0xfe,0xff,0x21,0x34]
405 # CHECK: dsll $1, $1, 16      # encoding: [0x38,0x0c,0x01,0x00]
406 # CHECK: ori  $1, $1, 65534   # encoding: [0xfe,0xff,0x21,0x34]
407 # CHECK: dsll $1, $1, 16      # encoding: [0x38,0x0c,0x01,0x00]
408 # CHECK: ori  $1, $1, 65535   # encoding: [0xff,0xff,0x21,0x34]
409 # CHECK: lwl  $8, 3($1)       # encoding: [0x03,0x00,0x28,0x88]
410 # CHECK: lwr  $8, 0($1)       # encoding: [0x00,0x00,0x28,0x98]
411
412 # Test ulw with source register and 64-bit immediate offset.
413   ulw $8, 0x100010001($9)
414 # CHECK: lui   $1, 1          # encoding: [0x01,0x00,0x01,0x3c]
415 # CHECK: ori   $1, $1, 1      # encoding: [0x01,0x00,0x21,0x34]
416 # CHECK: dsll  $1, $1, 16     # encoding: [0x38,0x0c,0x01,0x00]
417 # CHECK: ori   $1, $1, 1      # encoding: [0x01,0x00,0x21,0x34]
418 # CHECK: daddu $1, $1, $9     # encoding: [0x2d,0x08,0x29,0x00]
419 # CHECK: lwl   $8, 3($1)      # encoding: [0x03,0x00,0x28,0x88]
420 # CHECK: lwr   $8, 0($1)      # encoding: [0x00,0x00,0x28,0x98]
421
422   ulw $8, 0x1000100010001($9)
423 # CHECK: lui   $1, 1          # encoding: [0x01,0x00,0x01,0x3c]
424 # CHECK: ori   $1, $1, 1      # encoding: [0x01,0x00,0x21,0x34]
425 # CHECK: dsll  $1, $1, 16     # encoding: [0x38,0x0c,0x01,0x00]
426 # CHECK: ori   $1, $1, 1      # encoding: [0x01,0x00,0x21,0x34]
427 # CHECK: dsll  $1, $1, 16     # encoding: [0x38,0x0c,0x01,0x00]
428 # CHECK: ori   $1, $1, 1      # encoding: [0x01,0x00,0x21,0x34]
429 # CHECK: daddu $1, $1, $9     # encoding: [0x2d,0x08,0x29,0x00]
430 # CHECK: lwl   $8, 3($1)      # encoding: [0x03,0x00,0x28,0x88]
431 # CHECK: lwr   $8, 0($1)      # encoding: [0x00,0x00,0x28,0x98]
432
433   ulw $8, -0x100010001($9)
434 # CHECK: lui   $1, 65535      # encoding: [0xff,0xff,0x01,0x3c]
435 # CHECK: ori   $1, $1, 65534  # encoding: [0xfe,0xff,0x21,0x34]
436 # CHECK: dsll  $1, $1, 16     # encoding: [0x38,0x0c,0x01,0x00]
437 # CHECK: ori   $1, $1, 65534  # encoding: [0xfe,0xff,0x21,0x34]
438 # CHECK: dsll  $1, $1, 16     # encoding: [0x38,0x0c,0x01,0x00]
439 # CHECK: ori   $1, $1, 65535  # encoding: [0xff,0xff,0x21,0x34]
440 # CHECK: daddu $1, $1, $9     # encoding: [0x2d,0x08,0x29,0x00]
441 # CHECK: lwl   $8, 3($1)      # encoding: [0x03,0x00,0x28,0x88]
442 # CHECK: lwr   $8, 0($1)      # encoding: [0x00,0x00,0x28,0x98]
443
444   ulw $8, -0x1000100010001($9)
445 # CHECK: lui   $1, 65534      # encoding: [0xfe,0xff,0x01,0x3c]
446 # CHECK: ori   $1, $1, 65534  # encoding: [0xfe,0xff,0x21,0x34]
447 # CHECK: dsll  $1, $1, 16     # encoding: [0x38,0x0c,0x01,0x00]
448 # CHECK: ori   $1, $1, 65534  # encoding: [0xfe,0xff,0x21,0x34]
449 # CHECK: dsll  $1, $1, 16     # encoding: [0x38,0x0c,0x01,0x00]
450 # CHECK: ori   $1, $1, 65535  # encoding: [0xff,0xff,0x21,0x34]
451 # CHECK: daddu $1, $1, $9     # encoding: [0x2d,0x08,0x29,0x00]
452 # CHECK: lwl   $8, 3($1)      # encoding: [0x03,0x00,0x28,0x88]
453 # CHECK: lwr   $8, 0($1)      # encoding: [0x00,0x00,0x28,0x98]