X86: produce more friendly errors during MachO relocation handling
[oota-llvm.git] / test / MC / Mips / mips-expansions.s
1 # RUN: llvm-mc %s -triple=mipsel-unknown-linux -show-encoding -mcpu=mips32r2 | \
2 # RUN:   FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-LE
3 # RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips32r2 | \
4 # RUN:   FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-BE
5
6 # Check that the IAS expands macro instructions in the same way as GAS.
7
8 # Load address, done by MipsAsmParser::expandLoadAddressReg()
9 # and MipsAsmParser::expandLoadAddressImm():
10   la $8, 1f
11 # CHECK-LE: lui     $8, %hi(($tmp0))      # encoding: [A,A,0x08,0x3c]
12 # CHECK-LE:                             #   fixup A - offset: 0, value: %hi(($tmp0)), kind: fixup_Mips_HI16
13 # CHECK-LE: addiu   $8, $8, %lo(($tmp0))  # encoding: [A,A,0x08,0x25]
14 # CHECK-LE:                             #   fixup A - offset: 0, value: %lo(($tmp0)), kind: fixup_Mips_LO16
15
16 # LW/SW and LDC1/SDC1 of symbol address, done by MipsAsmParser::expandMemInst():
17   .set noat
18   lw $10, symbol($4)
19 # CHECK-LE: lui     $10, %hi(symbol)        # encoding: [A,A,0x0a,0x3c]
20 # CHECK-LE:                                 #   fixup A - offset: 0, value: symbol@ABS_HI, kind: fixup_Mips_HI16
21 # CHECK-LE: addu    $10, $10, $4            # encoding: [0x21,0x50,0x44,0x01]
22 # CHECK-LE: lw      $10, %lo(symbol)($10)   # encoding: [A,A,0x4a,0x8d]
23 # CHECK-LE:                                 #   fixup A - offset: 0, value: symbol@ABS_LO, kind: fixup_Mips_LO16
24   .set at
25   sw $10, symbol($9)
26 # CHECK-LE: lui     $1, %hi(symbol)         # encoding: [A,A,0x01,0x3c]
27 # CHECK-LE:                                 #   fixup A - offset: 0, value: symbol@ABS_HI, kind: fixup_Mips_HI16
28 # CHECK-LE: addu    $1, $1, $9              # encoding: [0x21,0x08,0x29,0x00]
29 # CHECK-LE: sw      $10, %lo(symbol)($1)    # encoding: [A,A,0x2a,0xac]
30 # CHECK-LE:                                 #   fixup A - offset: 0, value: symbol@ABS_LO, kind: fixup_Mips_LO16
31
32   lw $8, 1f
33 # CHECK-LE: lui $8, %hi($tmp0)              # encoding: [A,A,0x08,0x3c]
34 # CHECK-LE:                                 #   fixup A - offset: 0, value: ($tmp0)@ABS_HI, kind: fixup_Mips_HI16
35 # CHECK-LE: lw  $8, %lo($tmp0)($8)          # encoding: [A,A,0x08,0x8d]
36 # CHECK-LE:                                 #   fixup A - offset: 0, value: ($tmp0)@ABS_LO, kind: fixup_Mips_LO16
37   sw $8, 1f
38 # CHECK-LE: lui $1, %hi($tmp0)              # encoding: [A,A,0x01,0x3c]
39 # CHECK-LE:                                 #   fixup A - offset: 0, value: ($tmp0)@ABS_HI, kind: fixup_Mips_HI16
40 # CHECK-LE: sw  $8, %lo($tmp0)($1)          # encoding: [A,A,0x28,0xac]
41 # CHECK-LE:                                 #   fixup A - offset: 0, value: ($tmp0)@ABS_LO, kind: fixup_Mips_LO16
42
43   lw $10, 655483($4)
44 # CHECK-LE: lui     $10, 10                 # encoding: [0x0a,0x00,0x0a,0x3c]
45 # CHECK-LE: addu    $10, $10, $4            # encoding: [0x21,0x50,0x44,0x01]
46 # CHECK-LE: lw      $10, 123($10)           # encoding: [0x7b,0x00,0x4a,0x8d]
47   sw $10, 123456($9)
48 # CHECK-LE: lui     $1, 2                   # encoding: [0x02,0x00,0x01,0x3c]
49 # CHECK-LE: addu    $1, $1, $9              # encoding: [0x21,0x08,0x29,0x00]
50 # CHECK-LE: sw      $10, 57920($1)          # encoding: [0x40,0xe2,0x2a,0xac]
51
52   lw $8, symbol
53 # CHECK-LE:     lui     $8, %hi(symbol)     # encoding: [A,A,0x08,0x3c]
54 # CHECK-LE:                                 #   fixup A - offset: 0, value: symbol@ABS_HI, kind: fixup_Mips_HI16
55 # CHECK-LE-NOT: move    $8, $8              # encoding: [0x21,0x40,0x00,0x01]
56 # CHECK-LE:     lw      $8, %lo(symbol)($8) # encoding: [A,A,0x08,0x8d]
57 # CHECK-LE:                                 #   fixup A - offset: 0, value: symbol@ABS_LO, kind: fixup_Mips_LO16
58   sw $8, symbol
59 # CHECK-LE:     lui     $1, %hi(symbol)     # encoding: [A,A,0x01,0x3c]
60 # CHECK-LE:                                 #   fixup A - offset: 0, value: symbol@ABS_HI, kind: fixup_Mips_HI16
61 # CHECK-LE-NOT: move    $1, $1              # encoding: [0x21,0x08,0x20,0x00]
62 # CHECK-LE:     sw      $8, %lo(symbol)($1) # encoding: [A,A,0x28,0xac]
63 # CHECK-LE:                                 #   fixup A - offset: 0, value: symbol@ABS_LO, kind: fixup_Mips_LO16
64
65   ldc1 $f0, symbol
66 # CHECK-LE: lui     $1, %hi(symbol)
67 # CHECK-LE: ldc1    $f0, %lo(symbol)($1)
68   sdc1 $f0, symbol
69 # CHECK-LE: lui     $1, %hi(symbol)
70 # CHECK-LE: sdc1    $f0, %lo(symbol)($1)
71
72 # Test BNE with an immediate as the 2nd operand.
73   bne $2, 0, 1332
74 # CHECK-LE: bnez  $2, 1332          # encoding: [0x4d,0x01,0x40,0x14]
75 # CHECK-LE: nop                     # encoding: [0x00,0x00,0x00,0x00]
76
77   bne $2, 123, 1332
78 # CHECK-LE: addiu $1, $zero, 123    # encoding: [0x7b,0x00,0x01,0x24]
79 # CHECK-LE: bne   $2, $1, 1332      # encoding: [0x4d,0x01,0x41,0x14]
80 # CHECK-LE: nop                     # encoding: [0x00,0x00,0x00,0x00]
81
82   bne $2, -2345, 1332
83 # CHECK-LE: addiu $1, $zero, -2345  # encoding: [0xd7,0xf6,0x01,0x24]
84 # CHECK-LE: bne   $2, $1, 1332      # encoding: [0x4d,0x01,0x41,0x14]
85 # CHECK-LE: nop                     # encoding: [0x00,0x00,0x00,0x00]
86
87   bne $2, 65538, 1332
88 # CHECK-LE: lui   $1, 1             # encoding: [0x01,0x00,0x01,0x3c]
89 # CHECK-LE: ori   $1, $1, 2         # encoding: [0x02,0x00,0x21,0x34]
90 # CHECK-LE: bne   $2, $1, 1332      # encoding: [0x4d,0x01,0x41,0x14]
91 # CHECK-LE: nop                     # encoding: [0x00,0x00,0x00,0x00]
92
93   bne $2, ~7, 1332
94 # CHECK-LE: addiu $1, $zero, -8     # encoding: [0xf8,0xff,0x01,0x24]
95 # CHECK-LE: bne   $2, $1, 1332      # encoding: [0x4d,0x01,0x41,0x14]
96 # CHECK-LE: nop                     # encoding: [0x00,0x00,0x00,0x00]
97
98   bne $2, 0x10000, 1332
99 # CHECK-LE: lui   $1, 1             # encoding: [0x01,0x00,0x01,0x3c]
100 # CHECK-LE: bne   $2, $1, 1332      # encoding: [0x4d,0x01,0x41,0x14]
101 # CHECK-LE: nop                     # encoding: [0x00,0x00,0x00,0x00]
102
103 # Test BEQ with an immediate as the 2nd operand.
104   beq $2, 0, 1332
105 # CHECK-LE: beqz  $2, 1332          # encoding: [0x4d,0x01,0x40,0x10]
106 # CHECK-LE: nop                     # encoding: [0x00,0x00,0x00,0x00]
107
108   beq $2, 123, 1332
109 # CHECK-LE: addiu $1, $zero, 123    # encoding: [0x7b,0x00,0x01,0x24]
110 # CHECK-LE: beq   $2, $1, 1332      # encoding: [0x4d,0x01,0x41,0x10]
111 # CHECK-LE: nop                     # encoding: [0x00,0x00,0x00,0x00]
112
113   beq $2, -2345, 1332
114 # CHECK-LE: addiu $1, $zero, -2345  # encoding: [0xd7,0xf6,0x01,0x24]
115 # CHECK-LE: beq   $2, $1, 1332      # encoding: [0x4d,0x01,0x41,0x10]
116 # CHECK-LE: nop                     # encoding: [0x00,0x00,0x00,0x00]
117
118   beq $2, 65538, 1332
119 # CHECK-LE: lui   $1, 1             # encoding: [0x01,0x00,0x01,0x3c]
120 # CHECK-LE: ori   $1, $1, 2         # encoding: [0x02,0x00,0x21,0x34]
121 # CHECK-LE: beq   $2, $1, 1332      # encoding: [0x4d,0x01,0x41,0x10]
122 # CHECK-LE: nop                     # encoding: [0x00,0x00,0x00,0x00]
123
124   beq $2, ~7, 1332
125 # CHECK-LE: addiu $1, $zero, -8     # encoding: [0xf8,0xff,0x01,0x24]
126 # CHECK-LE: beq   $2, $1, 1332      # encoding: [0x4d,0x01,0x41,0x10]
127 # CHECK-LE: nop                     # encoding: [0x00,0x00,0x00,0x00]
128
129   beq $2, 0x10000, 1332
130 # CHECK-LE: lui   $1, 1             # encoding: [0x01,0x00,0x01,0x3c]
131 # CHECK-LE: beq   $2, $1, 1332      # encoding: [0x4d,0x01,0x41,0x10]
132 # CHECK-LE: nop                     # encoding: [0x00,0x00,0x00,0x00]
133
134 # Test ULH with immediate operand.
135 ulh_imm: # CHECK-LABEL: ulh_imm:
136   ulh $8, 0
137 # CHECK-BE: lb   $1, 0($zero)      # encoding: [0x80,0x01,0x00,0x00]
138 # CHECK-BE: lbu  $8, 1($zero)      # encoding: [0x90,0x08,0x00,0x01]
139 # CHECK-BE: sll  $1, $1, 8         # encoding: [0x00,0x01,0x0a,0x00]
140 # CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
141 # CHECK-LE: lb   $1, 1($zero)      # encoding: [0x01,0x00,0x01,0x80]
142 # CHECK-LE: lbu  $8, 0($zero)      # encoding: [0x00,0x00,0x08,0x90]
143 # CHECK-LE: sll  $1, $1, 8         # encoding: [0x00,0x0a,0x01,0x00]
144 # CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
145
146   ulh $8, 2
147 # CHECK-BE: lb   $1, 2($zero)      # encoding: [0x80,0x01,0x00,0x02]
148 # CHECK-BE: lbu  $8, 3($zero)      # encoding: [0x90,0x08,0x00,0x03]
149 # CHECK-BE: sll  $1, $1, 8         # encoding: [0x00,0x01,0x0a,0x00]
150 # CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
151 # CHECK-LE: lb   $1, 3($zero)      # encoding: [0x03,0x00,0x01,0x80]
152 # CHECK-LE: lbu  $8, 2($zero)      # encoding: [0x02,0x00,0x08,0x90]
153 # CHECK-LE: sll  $1, $1, 8         # encoding: [0x00,0x0a,0x01,0x00]
154 # CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
155
156   ulh $8, 0x8000
157 # CHECK-BE: ori  $1, $zero, 32768  # encoding: [0x34,0x01,0x80,0x00]
158 # CHECK-BE: lb   $8, 0($1)         # encoding: [0x80,0x28,0x00,0x00]
159 # CHECK-BE: lbu  $1, 1($1)         # encoding: [0x90,0x21,0x00,0x01]
160 # CHECK-BE: sll  $8, $8, 8         # encoding: [0x00,0x08,0x42,0x00]
161 # CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
162 # CHECK-LE: ori  $1, $zero, 32768  # encoding: [0x00,0x80,0x01,0x34]
163 # CHECK-LE: lb   $8, 1($1)         # encoding: [0x01,0x00,0x28,0x80]
164 # CHECK-LE: lbu  $1, 0($1)         # encoding: [0x00,0x00,0x21,0x90]
165 # CHECK-LE: sll  $8, $8, 8         # encoding: [0x00,0x42,0x08,0x00]
166 # CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
167
168   ulh $8, -0x8000
169 # CHECK-BE: lb   $1, -32768($zero) # encoding: [0x80,0x01,0x80,0x00]
170 # CHECK-BE: lbu  $8, -32767($zero) # encoding: [0x90,0x08,0x80,0x01]
171 # CHECK-BE: sll  $1, $1, 8         # encoding: [0x00,0x01,0x0a,0x00]
172 # CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
173 # CHECK-LE: lb   $1, -32767($zero) # encoding: [0x01,0x80,0x01,0x80]
174 # CHECK-LE: lbu  $8, -32768($zero) # encoding: [0x00,0x80,0x08,0x90]
175 # CHECK-LE: sll  $1, $1, 8         # encoding: [0x00,0x0a,0x01,0x00]
176 # CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
177
178   ulh $8, 0x10000
179 # CHECK-BE: lui  $1, 1             # encoding: [0x3c,0x01,0x00,0x01]
180 # CHECK-BE: lb   $8, 0($1)         # encoding: [0x80,0x28,0x00,0x00]
181 # CHECK-BE: lbu  $1, 1($1)         # encoding: [0x90,0x21,0x00,0x01]
182 # CHECK-BE: sll  $8, $8, 8         # encoding: [0x00,0x08,0x42,0x00]
183 # CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
184 # CHECK-LE: lui  $1, 1             # encoding: [0x01,0x00,0x01,0x3c]
185 # CHECK-LE: lb   $8, 1($1)         # encoding: [0x01,0x00,0x28,0x80]
186 # CHECK-LE: lbu  $1, 0($1)         # encoding: [0x00,0x00,0x21,0x90]
187 # CHECK-LE: sll  $8, $8, 8         # encoding: [0x00,0x42,0x08,0x00]
188 # CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
189
190   ulh $8, 0x18888
191 # CHECK-BE: lui  $1, 1             # encoding: [0x3c,0x01,0x00,0x01]
192 # CHECK-BE: ori  $1, $1, 34952     # encoding: [0x34,0x21,0x88,0x88]
193 # CHECK-BE: lb   $8, 0($1)         # encoding: [0x80,0x28,0x00,0x00]
194 # CHECK-BE: lbu  $1, 1($1)         # encoding: [0x90,0x21,0x00,0x01]
195 # CHECK-BE: sll  $8, $8, 8         # encoding: [0x00,0x08,0x42,0x00]
196 # CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
197 # CHECK-LE: lui  $1, 1             # encoding: [0x01,0x00,0x01,0x3c]
198 # CHECK-LE: ori  $1, $1, 34952     # encoding: [0x88,0x88,0x21,0x34]
199 # CHECK-LE: lb   $8, 1($1)         # encoding: [0x01,0x00,0x28,0x80]
200 # CHECK-LE: lbu  $1, 0($1)         # encoding: [0x00,0x00,0x21,0x90]
201 # CHECK-LE: sll  $8, $8, 8         # encoding: [0x00,0x42,0x08,0x00]
202 # CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
203
204   ulh $8, -32769
205 # CHECK-BE: lui  $1, 65535         # encoding: [0x3c,0x01,0xff,0xff]
206 # CHECK-BE: ori  $1, $1, 32767     # encoding: [0x34,0x21,0x7f,0xff]
207 # CHECK-BE: lb   $8, 0($1)         # encoding: [0x80,0x28,0x00,0x00]
208 # CHECK-BE: lbu  $1, 1($1)         # encoding: [0x90,0x21,0x00,0x01]
209 # CHECK-BE: sll  $8, $8, 8         # encoding: [0x00,0x08,0x42,0x00]
210 # CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
211 # CHECK-LE: lui  $1, 65535         # encoding: [0xff,0xff,0x01,0x3c]
212 # CHECK-LE: ori  $1, $1, 32767     # encoding: [0xff,0x7f,0x21,0x34]
213 # CHECK-LE: lb   $8, 1($1)         # encoding: [0x01,0x00,0x28,0x80]
214 # CHECK-LE: lbu  $1, 0($1)         # encoding: [0x00,0x00,0x21,0x90]
215 # CHECK-LE: sll  $8, $8, 8         # encoding: [0x00,0x42,0x08,0x00]
216 # CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
217
218   ulh $8, 32767
219 # CHECK-BE: addiu $1, $zero, 32767  # encoding: [0x24,0x01,0x7f,0xff]
220 # CHECK-BE: lb   $8, 0($1)          # encoding: [0x80,0x28,0x00,0x00]
221 # CHECK-BE: lbu  $1, 1($1)          # encoding: [0x90,0x21,0x00,0x01]
222 # CHECK-BE: sll  $8, $8, 8          # encoding: [0x00,0x08,0x42,0x00]
223 # CHECK-BE: or   $8, $8, $1         # encoding: [0x01,0x01,0x40,0x25]
224 # CHECK-LE: addiu $1, $zero, 32767  # encoding: [0xff,0x7f,0x01,0x24]
225 # CHECK-LE: lb   $8, 1($1)          # encoding: [0x01,0x00,0x28,0x80]
226 # CHECK-LE: lbu  $1, 0($1)          # encoding: [0x00,0x00,0x21,0x90]
227 # CHECK-LE: sll  $8, $8, 8          # encoding: [0x00,0x42,0x08,0x00]
228 # CHECK-LE: or   $8, $8, $1         # encoding: [0x25,0x40,0x01,0x01]
229
230 # Test ULH with immediate offset and a source register operand.
231 ulh_reg: # CHECK-LABEL: ulh_reg:
232   ulh $8, 0($9)
233 # CHECK-BE: lb   $1, 0($9)         # encoding: [0x81,0x21,0x00,0x00]
234 # CHECK-BE: lbu  $8, 1($9)         # encoding: [0x91,0x28,0x00,0x01]
235 # CHECK-BE: sll  $1, $1, 8         # encoding: [0x00,0x01,0x0a,0x00]
236 # CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
237 # CHECK-LE: lb   $1, 1($9)         # encoding: [0x01,0x00,0x21,0x81]
238 # CHECK-LE: lbu  $8, 0($9)         # encoding: [0x00,0x00,0x28,0x91]
239 # CHECK-LE: sll  $1, $1, 8         # encoding: [0x00,0x0a,0x01,0x00]
240 # CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
241
242   ulh $8, 2($9)
243 # CHECK-BE: lb   $1, 2($9)         # encoding: [0x81,0x21,0x00,0x02]
244 # CHECK-BE: lbu  $8, 3($9)         # encoding: [0x91,0x28,0x00,0x03]
245 # CHECK-BE: sll  $1, $1, 8         # encoding: [0x00,0x01,0x0a,0x00]
246 # CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
247 # CHECK-LE: lb   $1, 3($9)         # encoding: [0x03,0x00,0x21,0x81]
248 # CHECK-LE: lbu  $8, 2($9)         # encoding: [0x02,0x00,0x28,0x91]
249 # CHECK-LE: sll  $1, $1, 8         # encoding: [0x00,0x0a,0x01,0x00]
250 # CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
251
252   ulh $8, 0x8000($9)
253 # CHECK-BE: ori  $1, $zero, 32768  # encoding: [0x34,0x01,0x80,0x00]
254 # CHECK-BE: addu $1, $1, $9        # encoding: [0x00,0x29,0x08,0x21]
255 # CHECK-BE: lb   $8, 0($1)         # encoding: [0x80,0x28,0x00,0x00]
256 # CHECK-BE: lbu  $1, 1($1)         # encoding: [0x90,0x21,0x00,0x01]
257 # CHECK-BE: sll  $8, $8, 8         # encoding: [0x00,0x08,0x42,0x00]
258 # CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
259 # CHECK-LE: ori  $1, $zero, 32768  # encoding: [0x00,0x80,0x01,0x34]
260 # CHECK-LE: addu $1, $1, $9        # encoding: [0x21,0x08,0x29,0x00]
261 # CHECK-LE: lb   $8, 1($1)         # encoding: [0x01,0x00,0x28,0x80]
262 # CHECK-LE: lbu  $1, 0($1)         # encoding: [0x00,0x00,0x21,0x90]
263 # CHECK-LE: sll  $8, $8, 8         # encoding: [0x00,0x42,0x08,0x00]
264 # CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
265
266   ulh $8, -0x8000($9)
267 # CHECK-BE: lb   $1, -32768($9)    # encoding: [0x81,0x21,0x80,0x00]
268 # CHECK-BE: lbu  $8, -32767($9)    # encoding: [0x91,0x28,0x80,0x01]
269 # CHECK-BE: sll  $1, $1, 8         # encoding: [0x00,0x01,0x0a,0x00]
270 # CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
271 # CHECK-LE: lb   $1, -32767($9)    # encoding: [0x01,0x80,0x21,0x81]
272 # CHECK-LE: lbu  $8, -32768($9)    # encoding: [0x00,0x80,0x28,0x91]
273 # CHECK-LE: sll  $1, $1, 8         # encoding: [0x00,0x0a,0x01,0x00]
274 # CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
275
276   ulh $8, 0x10000($9)
277 # CHECK-BE: lui  $1, 1             # encoding: [0x3c,0x01,0x00,0x01]
278 # CHECK-BE: addu $1, $1, $9        # encoding: [0x00,0x29,0x08,0x21]
279 # CHECK-BE: lb   $8, 0($1)         # encoding: [0x80,0x28,0x00,0x00]
280 # CHECK-BE: lbu  $1, 1($1)         # encoding: [0x90,0x21,0x00,0x01]
281 # CHECK-BE: sll  $8, $8, 8         # encoding: [0x00,0x08,0x42,0x00]
282 # CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
283 # CHECK-LE: lui  $1, 1             # encoding: [0x01,0x00,0x01,0x3c]
284 # CHECK-LE: addu $1, $1, $9        # encoding: [0x21,0x08,0x29,0x00]
285 # CHECK-LE: lb   $8, 1($1)         # encoding: [0x01,0x00,0x28,0x80]
286 # CHECK-LE: lbu  $1, 0($1)         # encoding: [0x00,0x00,0x21,0x90]
287 # CHECK-LE: sll  $8, $8, 8         # encoding: [0x00,0x42,0x08,0x00]
288 # CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
289
290   ulh $8, 0x18888($9)
291 # CHECK-BE: lui  $1, 1             # encoding: [0x3c,0x01,0x00,0x01]
292 # CHECK-BE: ori  $1, $1, 34952     # encoding: [0x34,0x21,0x88,0x88]
293 # CHECK-BE: addu $1, $1, $9        # encoding: [0x00,0x29,0x08,0x21]
294 # CHECK-BE: lb   $8, 0($1)         # encoding: [0x80,0x28,0x00,0x00]
295 # CHECK-BE: lbu  $1, 1($1)         # encoding: [0x90,0x21,0x00,0x01]
296 # CHECK-BE: sll  $8, $8, 8         # encoding: [0x00,0x08,0x42,0x00]
297 # CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
298 # CHECK-LE: lui  $1, 1             # encoding: [0x01,0x00,0x01,0x3c]
299 # CHECK-LE: ori  $1, $1, 34952     # encoding: [0x88,0x88,0x21,0x34]
300 # CHECK-LE: addu $1, $1, $9        # encoding: [0x21,0x08,0x29,0x00]
301 # CHECK-LE: lb   $8, 1($1)         # encoding: [0x01,0x00,0x28,0x80]
302 # CHECK-LE: lbu  $1, 0($1)         # encoding: [0x00,0x00,0x21,0x90]
303 # CHECK-LE: sll  $8, $8, 8         # encoding: [0x00,0x42,0x08,0x00]
304 # CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
305
306   ulh $8, -32769($9)
307 # CHECK-BE: lui  $1, 65535         # encoding: [0x3c,0x01,0xff,0xff]
308 # CHECK-BE: ori  $1, $1, 32767     # encoding: [0x34,0x21,0x7f,0xff]
309 # CHECK-BE: addu $1, $1, $9        # encoding: [0x00,0x29,0x08,0x21]
310 # CHECK-BE: lb   $8, 0($1)         # encoding: [0x80,0x28,0x00,0x00]
311 # CHECK-BE: lbu  $1, 1($1)         # encoding: [0x90,0x21,0x00,0x01]
312 # CHECK-BE: sll  $8, $8, 8         # encoding: [0x00,0x08,0x42,0x00]
313 # CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
314 # CHECK-LE: lui  $1, 65535         # encoding: [0xff,0xff,0x01,0x3c]
315 # CHECK-LE: ori  $1, $1, 32767     # encoding: [0xff,0x7f,0x21,0x34]
316 # CHECK-LE: addu $1, $1, $9        # encoding: [0x21,0x08,0x29,0x00]
317 # CHECK-LE: lb   $8, 1($1)         # encoding: [0x01,0x00,0x28,0x80]
318 # CHECK-LE: lbu  $1, 0($1)         # encoding: [0x00,0x00,0x21,0x90]
319 # CHECK-LE: sll  $8, $8, 8         # encoding: [0x00,0x42,0x08,0x00]
320 # CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
321
322   ulh $8, 32767($9)
323 # CHECK-BE: addiu $1, $zero, 32767 # encoding: [0x24,0x01,0x7f,0xff]
324 # CHECK-BE: addu $1, $1, $9        # encoding: [0x00,0x29,0x08,0x21]
325 # CHECK-BE: lb   $8, 0($1)         # encoding: [0x80,0x28,0x00,0x00]
326 # CHECK-BE: lbu  $1, 1($1)         # encoding: [0x90,0x21,0x00,0x01]
327 # CHECK-BE: sll  $8, $8, 8         # encoding: [0x00,0x08,0x42,0x00]
328 # CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
329 # CHECK-LE: addiu $1, $zero, 32767 # encoding: [0xff,0x7f,0x01,0x24]
330 # CHECK-LE: addu $1, $1, $9        # encoding: [0x21,0x08,0x29,0x00]
331 # CHECK-LE: lb   $8, 1($1)         # encoding: [0x01,0x00,0x28,0x80]
332 # CHECK-LE: lbu  $1, 0($1)         # encoding: [0x00,0x00,0x21,0x90]
333 # CHECK-LE: sll  $8, $8, 8         # encoding: [0x00,0x42,0x08,0x00]
334 # CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
335
336 # Test ULHU with immediate operand.
337 ulhu_imm: # CHECK-LABEL: ulhu_imm:
338   ulhu $8, 0
339 # CHECK-BE: lbu  $1, 0($zero)      # encoding: [0x90,0x01,0x00,0x00]
340 # CHECK-BE: lbu  $8, 1($zero)      # encoding: [0x90,0x08,0x00,0x01]
341 # CHECK-BE: sll  $1, $1, 8         # encoding: [0x00,0x01,0x0a,0x00]
342 # CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
343 # CHECK-LE: lbu  $1, 1($zero)      # encoding: [0x01,0x00,0x01,0x90]
344 # CHECK-LE: lbu  $8, 0($zero)      # encoding: [0x00,0x00,0x08,0x90]
345 # CHECK-LE: sll  $1, $1, 8         # encoding: [0x00,0x0a,0x01,0x00]
346 # CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
347
348   ulhu $8, 2
349 # CHECK-BE: lbu  $1, 2($zero)      # encoding: [0x90,0x01,0x00,0x02]
350 # CHECK-BE: lbu  $8, 3($zero)      # encoding: [0x90,0x08,0x00,0x03]
351 # CHECK-BE: sll  $1, $1, 8         # encoding: [0x00,0x01,0x0a,0x00]
352 # CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
353 # CHECK-LE: lbu  $1, 3($zero)      # encoding: [0x03,0x00,0x01,0x90]
354 # CHECK-LE: lbu  $8, 2($zero)      # encoding: [0x02,0x00,0x08,0x90]
355 # CHECK-LE: sll  $1, $1, 8         # encoding: [0x00,0x0a,0x01,0x00]
356 # CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
357
358   ulhu $8, 0x8000
359 # CHECK-BE: ori  $1, $zero, 32768  # encoding: [0x34,0x01,0x80,0x00]
360 # CHECK-BE: lbu  $8, 0($1)         # encoding: [0x90,0x28,0x00,0x00]
361 # CHECK-BE: lbu  $1, 1($1)         # encoding: [0x90,0x21,0x00,0x01]
362 # CHECK-BE: sll  $8, $8, 8         # encoding: [0x00,0x08,0x42,0x00]
363 # CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
364 # CHECK-LE: ori  $1, $zero, 32768  # encoding: [0x00,0x80,0x01,0x34]
365 # CHECK-LE: lbu  $8, 1($1)         # encoding: [0x01,0x00,0x28,0x90]
366 # CHECK-LE: lbu  $1, 0($1)         # encoding: [0x00,0x00,0x21,0x90]
367 # CHECK-LE: sll  $8, $8, 8         # encoding: [0x00,0x42,0x08,0x00]
368 # CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
369
370   ulhu $8, -0x8000
371 # CHECK-BE: lbu  $1, -32768($zero) # encoding: [0x90,0x01,0x80,0x00]
372 # CHECK-BE: lbu  $8, -32767($zero) # encoding: [0x90,0x08,0x80,0x01]
373 # CHECK-BE: sll  $1, $1, 8         # encoding: [0x00,0x01,0x0a,0x00]
374 # CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
375 # CHECK-LE: lbu  $1, -32767($zero) # encoding: [0x01,0x80,0x01,0x90]
376 # CHECK-LE: lbu  $8, -32768($zero) # encoding: [0x00,0x80,0x08,0x90]
377 # CHECK-LE: sll  $1, $1, 8         # encoding: [0x00,0x0a,0x01,0x00]
378 # CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
379
380   ulhu $8, 0x10000
381 # CHECK-BE: lui  $1, 1             # encoding: [0x3c,0x01,0x00,0x01]
382 # CHECK-BE: lbu  $8, 0($1)         # encoding: [0x90,0x28,0x00,0x00]
383 # CHECK-BE: lbu  $1, 1($1)         # encoding: [0x90,0x21,0x00,0x01]
384 # CHECK-BE: sll  $8, $8, 8         # encoding: [0x00,0x08,0x42,0x00]
385 # CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
386 # CHECK-LE: lui  $1, 1             # encoding: [0x01,0x00,0x01,0x3c]
387 # CHECK-LE: lbu  $8, 1($1)         # encoding: [0x01,0x00,0x28,0x90]
388 # CHECK-LE: lbu  $1, 0($1)         # encoding: [0x00,0x00,0x21,0x90]
389 # CHECK-LE: sll  $8, $8, 8         # encoding: [0x00,0x42,0x08,0x00]
390 # CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
391
392   ulhu $8, 0x18888
393 # CHECK-BE: lui  $1, 1             # encoding: [0x3c,0x01,0x00,0x01]
394 # CHECK-BE: ori  $1, $1, 34952     # encoding: [0x34,0x21,0x88,0x88]
395 # CHECK-BE: lbu  $8, 0($1)         # encoding: [0x90,0x28,0x00,0x00]
396 # CHECK-BE: lbu  $1, 1($1)         # encoding: [0x90,0x21,0x00,0x01]
397 # CHECK-BE: sll  $8, $8, 8         # encoding: [0x00,0x08,0x42,0x00]
398 # CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
399 # CHECK-LE: lui  $1, 1             # encoding: [0x01,0x00,0x01,0x3c]
400 # CHECK-LE: ori  $1, $1, 34952     # encoding: [0x88,0x88,0x21,0x34]
401 # CHECK-LE: lbu  $8, 1($1)         # encoding: [0x01,0x00,0x28,0x90]
402 # CHECK-LE: lbu  $1, 0($1)         # encoding: [0x00,0x00,0x21,0x90]
403 # CHECK-LE: sll  $8, $8, 8         # encoding: [0x00,0x42,0x08,0x00]
404 # CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
405
406   ulhu $8, -32769
407 # CHECK-BE: lui  $1, 65535         # encoding: [0x3c,0x01,0xff,0xff]
408 # CHECK-BE: ori  $1, $1, 32767     # encoding: [0x34,0x21,0x7f,0xff]
409 # CHECK-BE: lbu  $8, 0($1)         # encoding: [0x90,0x28,0x00,0x00]
410 # CHECK-BE: lbu  $1, 1($1)         # encoding: [0x90,0x21,0x00,0x01]
411 # CHECK-BE: sll  $8, $8, 8         # encoding: [0x00,0x08,0x42,0x00]
412 # CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
413 # CHECK-LE: lui  $1, 65535         # encoding: [0xff,0xff,0x01,0x3c]
414 # CHECK-LE: ori  $1, $1, 32767     # encoding: [0xff,0x7f,0x21,0x34]
415 # CHECK-LE: lbu  $8, 1($1)         # encoding: [0x01,0x00,0x28,0x90]
416 # CHECK-LE: lbu  $1, 0($1)         # encoding: [0x00,0x00,0x21,0x90]
417 # CHECK-LE: sll  $8, $8, 8         # encoding: [0x00,0x42,0x08,0x00]
418 # CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
419
420   ulhu $8, 32767
421 # CHECK-BE: addiu $1, $zero, 32767  # encoding: [0x24,0x01,0x7f,0xff]
422 # CHECK-BE: lbu  $8, 0($1)          # encoding: [0x90,0x28,0x00,0x00]
423 # CHECK-BE: lbu  $1, 1($1)          # encoding: [0x90,0x21,0x00,0x01]
424 # CHECK-BE: sll  $8, $8, 8          # encoding: [0x00,0x08,0x42,0x00]
425 # CHECK-BE: or   $8, $8, $1         # encoding: [0x01,0x01,0x40,0x25]
426 # CHECK-LE: addiu $1, $zero, 32767  # encoding: [0xff,0x7f,0x01,0x24]
427 # CHECK-LE: lbu  $8, 1($1)          # encoding: [0x01,0x00,0x28,0x90]
428 # CHECK-LE: lbu  $1, 0($1)          # encoding: [0x00,0x00,0x21,0x90]
429 # CHECK-LE: sll  $8, $8, 8          # encoding: [0x00,0x42,0x08,0x00]
430 # CHECK-LE: or   $8, $8, $1         # encoding: [0x25,0x40,0x01,0x01]
431
432 # Test ULHU with immediate offset and a source register operand.
433   ulhu $8, 0($9)
434 # CHECK-BE: lbu  $1, 0($9)         # encoding: [0x91,0x21,0x00,0x00]
435 # CHECK-BE: lbu  $8, 1($9)         # encoding: [0x91,0x28,0x00,0x01]
436 # CHECK-BE: sll  $1, $1, 8         # encoding: [0x00,0x01,0x0a,0x00]
437 # CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
438 # CHECK-LE: lbu  $1, 1($9)         # encoding: [0x01,0x00,0x21,0x91]
439 # CHECK-LE: lbu  $8, 0($9)         # encoding: [0x00,0x00,0x28,0x91]
440 # CHECK-LE: sll  $1, $1, 8         # encoding: [0x00,0x0a,0x01,0x00]
441 # CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
442
443   ulhu $8, 2($9)
444 # CHECK-BE: lbu  $1, 2($9)         # encoding: [0x91,0x21,0x00,0x02]
445 # CHECK-BE: lbu  $8, 3($9)         # encoding: [0x91,0x28,0x00,0x03]
446 # CHECK-BE: sll  $1, $1, 8         # encoding: [0x00,0x01,0x0a,0x00]
447 # CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
448 # CHECK-LE: lbu  $1, 3($9)         # encoding: [0x03,0x00,0x21,0x91]
449 # CHECK-LE: lbu  $8, 2($9)         # encoding: [0x02,0x00,0x28,0x91]
450 # CHECK-LE: sll  $1, $1, 8         # encoding: [0x00,0x0a,0x01,0x00]
451 # CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
452
453   ulhu $8, 0x8000($9)
454 # CHECK-BE: ori  $1, $zero, 32768  # encoding: [0x34,0x01,0x80,0x00]
455 # CHECK-BE: addu $1, $1, $9        # encoding: [0x00,0x29,0x08,0x21]
456 # CHECK-BE: lbu  $8, 0($1)         # encoding: [0x90,0x28,0x00,0x00]
457 # CHECK-BE: lbu  $1, 1($1)         # encoding: [0x90,0x21,0x00,0x01]
458 # CHECK-BE: sll  $8, $8, 8         # encoding: [0x00,0x08,0x42,0x00]
459 # CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
460 # CHECK-LE: ori  $1, $zero, 32768  # encoding: [0x00,0x80,0x01,0x34]
461 # CHECK-LE: addu $1, $1, $9        # encoding: [0x21,0x08,0x29,0x00]
462 # CHECK-LE: lbu  $8, 1($1)         # encoding: [0x01,0x00,0x28,0x90]
463 # CHECK-LE: lbu  $1, 0($1)         # encoding: [0x00,0x00,0x21,0x90]
464 # CHECK-LE: sll  $8, $8, 8         # encoding: [0x00,0x42,0x08,0x00]
465 # CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
466
467   ulhu $8, -0x8000($9)
468 # CHECK-BE: lbu  $1, -32768($9)    # encoding: [0x91,0x21,0x80,0x00]
469 # CHECK-BE: lbu  $8, -32767($9)    # encoding: [0x91,0x28,0x80,0x01]
470 # CHECK-BE: sll  $1, $1, 8         # encoding: [0x00,0x01,0x0a,0x00]
471 # CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
472 # CHECK-LE: lbu  $1, -32767($9)    # encoding: [0x01,0x80,0x21,0x91]
473 # CHECK-LE: lbu  $8, -32768($9)    # encoding: [0x00,0x80,0x28,0x91]
474 # CHECK-LE: sll  $1, $1, 8         # encoding: [0x00,0x0a,0x01,0x00]
475 # CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
476
477   ulhu $8, 0x10000($9)
478 # CHECK-BE: lui  $1, 1             # encoding: [0x3c,0x01,0x00,0x01]
479 # CHECK-BE: addu $1, $1, $9        # encoding: [0x00,0x29,0x08,0x21]
480 # CHECK-BE: lbu  $8, 0($1)         # encoding: [0x90,0x28,0x00,0x00]
481 # CHECK-BE: lbu  $1, 1($1)         # encoding: [0x90,0x21,0x00,0x01]
482 # CHECK-BE: sll  $8, $8, 8         # encoding: [0x00,0x08,0x42,0x00]
483 # CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
484 # CHECK-LE: lui  $1, 1             # encoding: [0x01,0x00,0x01,0x3c]
485 # CHECK-LE: addu $1, $1, $9        # encoding: [0x21,0x08,0x29,0x00]
486 # CHECK-LE: lbu  $8, 1($1)         # encoding: [0x01,0x00,0x28,0x90]
487 # CHECK-LE: lbu  $1, 0($1)         # encoding: [0x00,0x00,0x21,0x90]
488 # CHECK-LE: sll  $8, $8, 8         # encoding: [0x00,0x42,0x08,0x00]
489 # CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
490
491   ulhu $8, 0x18888($9)
492 # CHECK-BE: lui  $1, 1             # encoding: [0x3c,0x01,0x00,0x01]
493 # CHECK-BE: ori  $1, $1, 34952     # encoding: [0x34,0x21,0x88,0x88]
494 # CHECK-BE: addu $1, $1, $9        # encoding: [0x00,0x29,0x08,0x21]
495 # CHECK-BE: lbu  $8, 0($1)         # encoding: [0x90,0x28,0x00,0x00]
496 # CHECK-BE: lbu  $1, 1($1)         # encoding: [0x90,0x21,0x00,0x01]
497 # CHECK-BE: sll  $8, $8, 8         # encoding: [0x00,0x08,0x42,0x00]
498 # CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
499 # CHECK-LE: lui  $1, 1             # encoding: [0x01,0x00,0x01,0x3c]
500 # CHECK-LE: ori  $1, $1, 34952     # encoding: [0x88,0x88,0x21,0x34]
501 # CHECK-LE: addu $1, $1, $9        # encoding: [0x21,0x08,0x29,0x00]
502 # CHECK-LE: lbu  $8, 1($1)         # encoding: [0x01,0x00,0x28,0x90]
503 # CHECK-LE: lbu  $1, 0($1)         # encoding: [0x00,0x00,0x21,0x90]
504 # CHECK-LE: sll  $8, $8, 8         # encoding: [0x00,0x42,0x08,0x00]
505 # CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
506
507   ulhu $8, -32769($9)
508 # CHECK-BE: lui  $1, 65535         # encoding: [0x3c,0x01,0xff,0xff]
509 # CHECK-BE: ori  $1, $1, 32767     # encoding: [0x34,0x21,0x7f,0xff]
510 # CHECK-BE: addu $1, $1, $9        # encoding: [0x00,0x29,0x08,0x21]
511 # CHECK-BE: lbu  $8, 0($1)         # encoding: [0x90,0x28,0x00,0x00]
512 # CHECK-BE: lbu  $1, 1($1)         # encoding: [0x90,0x21,0x00,0x01]
513 # CHECK-BE: sll  $8, $8, 8         # encoding: [0x00,0x08,0x42,0x00]
514 # CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
515 # CHECK-LE: lui  $1, 65535         # encoding: [0xff,0xff,0x01,0x3c]
516 # CHECK-LE: ori  $1, $1, 32767     # encoding: [0xff,0x7f,0x21,0x34]
517 # CHECK-LE: addu $1, $1, $9        # encoding: [0x21,0x08,0x29,0x00]
518 # CHECK-LE: lbu  $8, 1($1)         # encoding: [0x01,0x00,0x28,0x90]
519 # CHECK-LE: lbu  $1, 0($1)         # encoding: [0x00,0x00,0x21,0x90]
520 # CHECK-LE: sll  $8, $8, 8         # encoding: [0x00,0x42,0x08,0x00]
521 # CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
522
523   ulhu $8, 32767($9)
524 # CHECK-BE: addiu $1, $zero, 32767 # encoding: [0x24,0x01,0x7f,0xff]
525 # CHECK-BE: addu $1, $1, $9        # encoding: [0x00,0x29,0x08,0x21]
526 # CHECK-BE: lbu  $8, 0($1)         # encoding: [0x90,0x28,0x00,0x00]
527 # CHECK-BE: lbu  $1, 1($1)         # encoding: [0x90,0x21,0x00,0x01]
528 # CHECK-BE: sll  $8, $8, 8         # encoding: [0x00,0x08,0x42,0x00]
529 # CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
530 # CHECK-LE: addiu $1, $zero, 32767 # encoding: [0xff,0x7f,0x01,0x24]
531 # CHECK-LE: addu $1, $1, $9        # encoding: [0x21,0x08,0x29,0x00]
532 # CHECK-LE: lbu  $8, 1($1)         # encoding: [0x01,0x00,0x28,0x90]
533 # CHECK-LE: lbu  $1, 0($1)         # encoding: [0x00,0x00,0x21,0x90]
534 # CHECK-LE: sll  $8, $8, 8         # encoding: [0x00,0x42,0x08,0x00]
535 # CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
536
537 # Test ULW with immediate operand.
538   ulw $8, 0
539 # CHECK-BE: lwl  $8, 0($zero)      # encoding: [0x88,0x08,0x00,0x00]
540 # CHECK-BE: lwr  $8, 3($zero)      # encoding: [0x98,0x08,0x00,0x03]
541 # CHECK-LE: lwl $8, 3($zero)       # encoding: [0x03,0x00,0x08,0x88]
542 # CHECK-LE: lwr $8, 0($zero)       # encoding: [0x00,0x00,0x08,0x98]
543
544   ulw $8, 2
545 # CHECK-BE: lwl  $8, 2($zero)      # encoding: [0x88,0x08,0x00,0x02]
546 # CHECK-BE: lwr  $8, 5($zero)      # encoding: [0x98,0x08,0x00,0x05]
547 # CHECK-LE: lwl $8, 5($zero)       # encoding: [0x05,0x00,0x08,0x88]
548 # CHECK-LE: lwr $8, 2($zero)       # encoding: [0x02,0x00,0x08,0x98]
549
550   ulw $8, 0x8000
551 # CHECK-BE: ori  $1, $zero, 32768  # encoding: [0x34,0x01,0x80,0x00]
552 # CHECK-BE: lwl  $8, 0($1)         # encoding: [0x88,0x28,0x00,0x00]
553 # CHECK-BE: lwr  $8, 3($1)         # encoding: [0x98,0x28,0x00,0x03]
554 # CHECK-LE: ori $1, $zero, 32768   # encoding: [0x00,0x80,0x01,0x34]
555 # CHECK-LE: lwl $8, 3($1)          # encoding: [0x03,0x00,0x28,0x88]
556 # CHECK-LE: lwr $8, 0($1)          # encoding: [0x00,0x00,0x28,0x98]
557
558   ulw $8, -0x8000
559 # CHECK-BE: lwl  $8, -32768($zero) # encoding: [0x88,0x08,0x80,0x00]
560 # CHECK-BE: lwr  $8, -32765($zero) # encoding: [0x98,0x08,0x80,0x03]
561 # CHECK-LE: lwl $8, -32765($zero)  # encoding: [0x03,0x80,0x08,0x88]
562 # CHECK-LE: lwr $8, -32768($zero)  # encoding: [0x00,0x80,0x08,0x98]
563
564   ulw $8, 0x10000
565 # CHECK-BE: lui  $1, 1             # encoding: [0x3c,0x01,0x00,0x01]
566 # CHECK-BE: lwl  $8, 0($1)         # encoding: [0x88,0x28,0x00,0x00]
567 # CHECK-BE: lwr  $8, 3($1)         # encoding: [0x98,0x28,0x00,0x03]
568 # CHECK-LE: lui $1, 1              # encoding: [0x01,0x00,0x01,0x3c]
569 # CHECK-LE: lwl $8, 3($1)          # encoding: [0x03,0x00,0x28,0x88]
570 # CHECK-LE: lwr $8, 0($1)          # encoding: [0x00,0x00,0x28,0x98]
571
572   ulw $8, 0x18888
573 # CHECK-BE: lui  $1, 1             # encoding: [0x3c,0x01,0x00,0x01]
574 # CHECK-BE: ori  $1, $1, 34952     # encoding: [0x34,0x21,0x88,0x88]
575 # CHECK-BE: lwl  $8, 0($1)         # encoding: [0x88,0x28,0x00,0x00]
576 # CHECK-BE: lwr  $8, 3($1)         # encoding: [0x98,0x28,0x00,0x03]
577 # CHECK-LE: lui $1, 1              # encoding: [0x01,0x00,0x01,0x3c]
578 # CHECK-LE: ori $1, $1, 34952      # encoding: [0x88,0x88,0x21,0x34]
579 # CHECK-LE: lwl $8, 3($1)          # encoding: [0x03,0x00,0x28,0x88]
580 # CHECK-LE: lwr $8, 0($1)          # encoding: [0x00,0x00,0x28,0x98]
581
582   ulw $8, -32771
583 # CHECK-BE: lui  $1, 65535         # encoding: [0x3c,0x01,0xff,0xff]
584 # CHECK-BE: ori  $1, $1, 32765     # encoding: [0x34,0x21,0x7f,0xfd]
585 # CHECK-BE: lwl  $8, 0($1)         # encoding: [0x88,0x28,0x00,0x00]
586 # CHECK-BE: lwr  $8, 3($1)         # encoding: [0x98,0x28,0x00,0x03]
587 # CHECK-LE: lui $1, 65535          # encoding: [0xff,0xff,0x01,0x3c]
588 # CHECK-LE: ori $1, $1, 32765      # encoding: [0xfd,0x7f,0x21,0x34]
589 # CHECK-LE: lwl $8, 3($1)          # encoding: [0x03,0x00,0x28,0x88]
590 # CHECK-LE: lwr $8, 0($1)          # encoding: [0x00,0x00,0x28,0x98]
591
592   ulw $8, 32765
593 # CHECK-BE: addiu $1, $zero, 32765 # encoding: [0x24,0x01,0x7f,0xfd]
594 # CHECK-BE: lwl  $8, 0($1)         # encoding: [0x88,0x28,0x00,0x00]
595 # CHECK-BE: lwr  $8, 3($1)         # encoding: [0x98,0x28,0x00,0x03]
596 # CHECK-LE: addiu $1, $zero, 32765 # encoding: [0xfd,0x7f,0x01,0x24]
597 # CHECK-LE: lwl $8, 3($1)          # encoding: [0x03,0x00,0x28,0x88]
598 # CHECK-LE: lwr $8, 0($1)          # encoding: [0x00,0x00,0x28,0x98]
599
600 # Test ULW with immediate offset and a source register operand.
601   ulw $8, 0($9)
602 # CHECK-BE: lwl  $8, 0($9)         # encoding: [0x89,0x28,0x00,0x00]
603 # CHECK-BE: lwr  $8, 3($9)         # encoding: [0x99,0x28,0x00,0x03]
604 # CHECK-LE: lwl  $8, 3($9)         # encoding: [0x03,0x00,0x28,0x89]
605 # CHECK-LE: lwr  $8, 0($9)         # encoding: [0x00,0x00,0x28,0x99]
606
607   ulw $8, 2($9)
608 # CHECK-BE: lwl  $8, 2($9)         # encoding: [0x89,0x28,0x00,0x02]
609 # CHECK-BE: lwr  $8, 5($9)         # encoding: [0x99,0x28,0x00,0x05]
610 # CHECK-LE: lwl  $8, 5($9)         # encoding: [0x05,0x00,0x28,0x89]
611 # CHECK-LE: lwr  $8, 2($9)         # encoding: [0x02,0x00,0x28,0x99]
612
613   ulw $8, 0x8000($9)
614 # CHECK-BE: ori  $1, $zero, 32768  # encoding: [0x34,0x01,0x80,0x00]
615 # CHECK-BE: addu $1, $1, $9        # encoding: [0x00,0x29,0x08,0x21]
616 # CHECK-BE: lwl  $8, 0($1)         # encoding: [0x88,0x28,0x00,0x00]
617 # CHECK-BE: lwr  $8, 3($1)         # encoding: [0x98,0x28,0x00,0x03]
618 # CHECK-LE: ori  $1, $zero, 32768  # encoding: [0x00,0x80,0x01,0x34]
619 # CHECK-LE: addu $1, $1, $9        # encoding: [0x21,0x08,0x29,0x00]
620 # CHECK-LE: lwl  $8, 3($1)         # encoding: [0x03,0x00,0x28,0x88]
621 # CHECK-LE: lwr  $8, 0($1)         # encoding: [0x00,0x00,0x28,0x98]
622
623   ulw $8, -0x8000($9)
624 # CHECK-BE: lwl  $8, -32768($9)    # encoding: [0x89,0x28,0x80,0x00]
625 # CHECK-BE: lwr  $8, -32765($9)    # encoding: [0x99,0x28,0x80,0x03]
626 # CHECK-LE: lwl  $8, -32765($9)    # encoding: [0x03,0x80,0x28,0x89]
627 # CHECK-LE: lwr  $8, -32768($9)    # encoding: [0x00,0x80,0x28,0x99]
628
629   ulw $8, 0x10000($9)
630 # CHECK-BE: lui  $1, 1             # encoding: [0x3c,0x01,0x00,0x01]
631 # CHECK-BE: addu $1, $1, $9        # encoding: [0x00,0x29,0x08,0x21]
632 # CHECK-BE: lwl  $8, 0($1)         # encoding: [0x88,0x28,0x00,0x00]
633 # CHECK-BE: lwr  $8, 3($1)         # encoding: [0x98,0x28,0x00,0x03]
634 # CHECK-LE: lui  $1, 1             # encoding: [0x01,0x00,0x01,0x3c]
635 # CHECK-LE: addu $1, $1, $9        # encoding: [0x21,0x08,0x29,0x00]
636 # CHECK-LE: lwl  $8, 3($1)         # encoding: [0x03,0x00,0x28,0x88]
637 # CHECK-LE: lwr  $8, 0($1)         # encoding: [0x00,0x00,0x28,0x98]
638
639   ulw $8, 0x18888($9)
640 # CHECK-BE: lui  $1, 1             # encoding: [0x3c,0x01,0x00,0x01]
641 # CHECK-BE: ori  $1, $1, 34952     # encoding: [0x34,0x21,0x88,0x88]
642 # CHECK-BE: addu $1, $1, $9        # encoding: [0x00,0x29,0x08,0x21]
643 # CHECK-BE: lwl  $8, 0($1)         # encoding: [0x88,0x28,0x00,0x00]
644 # CHECK-BE: lwr  $8, 3($1)         # encoding: [0x98,0x28,0x00,0x03]
645 # CHECK-LE: lui  $1, 1             # encoding: [0x01,0x00,0x01,0x3c]
646 # CHECK-LE: ori  $1, $1, 34952     # encoding: [0x88,0x88,0x21,0x34]
647 # CHECK-LE: addu $1, $1, $9        # encoding: [0x21,0x08,0x29,0x00]
648 # CHECK-LE: lwl  $8, 3($1)         # encoding: [0x03,0x00,0x28,0x88]
649 # CHECK-LE: lwr  $8, 0($1)         # encoding: [0x00,0x00,0x28,0x98]
650
651   ulw $8, -32771($9)
652 # CHECK-BE: lui  $1, 65535         # encoding: [0x3c,0x01,0xff,0xff]
653 # CHECK-BE: ori  $1, $1, 32765     # encoding: [0x34,0x21,0x7f,0xfd]
654 # CHECK-BE: addu $1, $1, $9        # encoding: [0x00,0x29,0x08,0x21]
655 # CHECK-BE: lwl  $8, 0($1)         # encoding: [0x88,0x28,0x00,0x00]
656 # CHECK-BE: lwr  $8, 3($1)         # encoding: [0x98,0x28,0x00,0x03]
657 # CHECK-LE: lui  $1, 65535         # encoding: [0xff,0xff,0x01,0x3c]
658 # CHECK-LE: ori  $1, $1, 32765     # encoding: [0xfd,0x7f,0x21,0x34]
659 # CHECK-LE: addu $1, $1, $9        # encoding: [0x21,0x08,0x29,0x00]
660 # CHECK-LE: lwl  $8, 3($1)         # encoding: [0x03,0x00,0x28,0x88]
661 # CHECK-LE: lwr  $8, 0($1)         # encoding: [0x00,0x00,0x28,0x98]
662
663   ulw $8, 32765($9)
664 # CHECK-BE: addiu $1, $zero, 32765 # encoding: [0x24,0x01,0x7f,0xfd]
665 # CHECK-BE: addu $1, $1, $9        # encoding: [0x00,0x29,0x08,0x21]
666 # CHECK-BE: lwl  $8, 0($1)         # encoding: [0x88,0x28,0x00,0x00]
667 # CHECK-BE: lwr  $8, 3($1)         # encoding: [0x98,0x28,0x00,0x03]
668 # CHECK-LE: addiu $1, $zero, 32765 # encoding: [0xfd,0x7f,0x01,0x24]
669 # CHECK-LE: addu $1, $1, $9        # encoding: [0x21,0x08,0x29,0x00]
670 # CHECK-LE: lwl  $8, 3($1)         # encoding: [0x03,0x00,0x28,0x88]
671 # CHECK-LE: lwr  $8, 0($1)         # encoding: [0x00,0x00,0x28,0x98]
672
673 1:
674   add $4, $4, $4