1# RUN: llvm-mc %s -triple=mipsel-unknown-linux -mcpu=mips32r2 -mattr=-xgot \
2# RUN:            -show-encoding | FileCheck %s --check-prefixes=CHECK,CHECK-LE,GOT
3# RUN: llvm-mc %s -triple=mipsel-unknown-linux -mcpu=mips32r2 -mattr=+xgot \
4# RUN:            -show-encoding | FileCheck %s --check-prefixes=CHECK,CHECK-LE,XGOT
5# RUN: llvm-mc %s -triple=mips-unknown-linux -mcpu=mips32r2 \
6# RUN:            -show-encoding | FileCheck %s --check-prefixes=CHECK,CHECK-BE
7
8# Check that the IAS expands macro instructions in the same way as GAS.
9
10# Load address, done by MipsAsmParser::expandLoadAddressReg()
11# and MipsAsmParser::expandLoadAddressImm():
12  la $8, 1f
13# CHECK-LE: lui     $8, %hi($tmp0)        # encoding: [A,A,0x08,0x3c]
14# CHECK-LE:                               #   fixup A - offset: 0, value: %hi($tmp0), kind: fixup_Mips_HI16
15# CHECK-LE: addiu   $8, $8, %lo($tmp0)    # encoding: [A,A,0x08,0x25]
16# CHECK-LE:                               #   fixup A - offset: 0, value: %lo($tmp0), kind: fixup_Mips_LO16
17
18  lb $4, 0x8000
19# CHECK-LE: lui     $4, 1                   # encoding: [0x01,0x00,0x04,0x3c]
20# CHECK-LE: lb      $4, -32768($4)          # encoding: [0x00,0x80,0x84,0x80]
21
22  lb  $4, 0x20004($3)
23# CHECK-LE: lui     $4, 2                   # encoding: [0x02,0x00,0x04,0x3c]
24# CHECK-LE: addu    $4, $4, $3              # encoding: [0x21,0x20,0x83,0x00]
25# CHECK-LE: lb      $4, 4($4)               # encoding: [0x04,0x00,0x84,0x80]
26
27  lbu $4, 0x8000
28# CHECK-LE: lui     $4, 1                   # encoding: [0x01,0x00,0x04,0x3c]
29# CHECK-LE: lbu     $4, -32768($4)          # encoding: [0x00,0x80,0x84,0x90]
30
31  lbu  $4, 0x20004($3)
32# CHECK-LE: lui     $4, 2                   # encoding: [0x02,0x00,0x04,0x3c]
33# CHECK-LE: addu    $4, $4, $3              # encoding: [0x21,0x20,0x83,0x00]
34# CHECK-LE: lbu     $4, 4($4)               # encoding: [0x04,0x00,0x84,0x90]
35
36  lh   $4, 0x8000
37# CHECK-LE: lui     $4, 1
38# CHECK-LE: lh      $4, -32768($4)
39
40  lh   $4, 0x20004($3)
41# CHECK-LE: lui     $4, 2
42# CHECK-LE: addu    $4, $4, $3
43# CHECK-LE: lh      $4, 4($4)
44
45  lhu  $4, 0x8000
46# CHECK-LE: lui     $4, 1
47# CHECK-LE: lhu     $4, -32768($4)
48
49  lhu  $4, 0x20004($3)
50# CHECK-LE: lui     $4, 2
51# CHECK-LE: addu    $4, $4, $3
52# CHECK-LE: lhu     $4, 4($4)
53
54# LW/SW and LDC1/SDC1 of symbol address, done by MipsAsmParser::expandMemInst():
55# NON-PIC code
56  .set noat
57  lw $10, symbol($4)
58# CHECK-LE: lui     $10, %hi(symbol)        # encoding: [A,A,0x0a,0x3c]
59# CHECK-LE:                                 #   fixup A - offset: 0, value: %hi(symbol), kind: fixup_Mips_HI16
60# CHECK-LE: addu    $10, $10, $4            # encoding: [0x21,0x50,0x44,0x01]
61# CHECK-LE: lw      $10, %lo(symbol)($10)   # encoding: [A,A,0x4a,0x8d]
62# CHECK-LE:                                 #   fixup A - offset: 0, value: %lo(symbol), kind: fixup_Mips_LO16
63  .set at
64  sw $10, symbol($9)
65# CHECK-LE: lui     $1, %hi(symbol)         # encoding: [A,A,0x01,0x3c]
66# CHECK-LE:                                 #   fixup A - offset: 0, value: %hi(symbol), kind: fixup_Mips_HI16
67# CHECK-LE: addu    $1, $1, $9              # encoding: [0x21,0x08,0x29,0x00]
68# CHECK-LE: sw      $10, %lo(symbol)($1)    # encoding: [A,A,0x2a,0xac]
69# CHECK-LE:                                 #   fixup A - offset: 0, value: %lo(symbol), kind: fixup_Mips_LO16
70
71  lw $8, 1f
72# CHECK-LE: lui $8, %hi($tmp0)              # encoding: [A,A,0x08,0x3c]
73# CHECK-LE:                                 #   fixup A - offset: 0, value: %hi($tmp0), kind: fixup_Mips_HI16
74# CHECK-LE: lw  $8, %lo($tmp0)($8)          # encoding: [A,A,0x08,0x8d]
75# CHECK-LE:                                 #   fixup A - offset: 0, value: %lo($tmp0), kind: fixup_Mips_LO16
76  sw $8, 1f
77# CHECK-LE: lui $1, %hi($tmp0)              # encoding: [A,A,0x01,0x3c]
78# CHECK-LE:                                 #   fixup A - offset: 0, value: %hi($tmp0), kind: fixup_Mips_HI16
79# CHECK-LE: sw  $8, %lo($tmp0)($1)          # encoding: [A,A,0x28,0xac]
80# CHECK-LE:                                 #   fixup A - offset: 0, value: %lo($tmp0), kind: fixup_Mips_LO16
81
82  lw $10, 655483($4)
83# CHECK-LE: lui     $10, 10                 # encoding: [0x0a,0x00,0x0a,0x3c]
84# CHECK-LE: addu    $10, $10, $4            # encoding: [0x21,0x50,0x44,0x01]
85# CHECK-LE: lw      $10, 123($10)           # encoding: [0x7b,0x00,0x4a,0x8d]
86  sw $10, 123456($9)
87# CHECK-LE: lui     $1, 2                   # encoding: [0x02,0x00,0x01,0x3c]
88# CHECK-LE: addu    $1, $1, $9              # encoding: [0x21,0x08,0x29,0x00]
89# CHECK-LE: sw      $10, -7616($1)          # encoding: [0x40,0xe2,0x2a,0xac]
90
91  lw $8, symbol
92# CHECK-LE:     lui     $8, %hi(symbol)     # encoding: [A,A,0x08,0x3c]
93# CHECK-LE:                                 #   fixup A - offset: 0, value: %hi(symbol), kind: fixup_Mips_HI16
94# CHECK-LE-NOT: move    $8, $8              # encoding: [0x21,0x40,0x00,0x01]
95# CHECK-LE:     lw      $8, %lo(symbol)($8) # encoding: [A,A,0x08,0x8d]
96# CHECK-LE:                                 #   fixup A - offset: 0, value: %lo(symbol), kind: fixup_Mips_LO16
97  sw $8, symbol
98# CHECK-LE:     lui     $1, %hi(symbol)     # encoding: [A,A,0x01,0x3c]
99# CHECK-LE:                                 #   fixup A - offset: 0, value: %hi(symbol), kind: fixup_Mips_HI16
100# CHECK-LE-NOT: move    $1, $1              # encoding: [0x21,0x08,0x20,0x00]
101# CHECK-LE:     sw      $8, %lo(symbol)($1) # encoding: [A,A,0x28,0xac]
102# CHECK-LE:                                 #   fixup A - offset: 0, value: %lo(symbol), kind: fixup_Mips_LO16
103
104  ldc1 $f0, symbol
105# CHECK-LE: lui     $1, %hi(symbol)
106# CHECK-LE: ldc1    $f0, %lo(symbol)($1)
107  sdc1 $f0, symbol
108# CHECK-LE: lui     $1, %hi(symbol)
109# CHECK-LE: sdc1    $f0, %lo(symbol)($1)
110
111# PIC code
112  .option pic2
113  .set noat
114  lw $10, symbol($4)
115# GOT:      lw      $10, %got(symbol)($gp)  # encoding: [A,A,0x8a,0x8f]
116# GOT-NEXT:                                 #   fixup A - offset: 0, value: %got(symbol), kind: fixup_Mips_GOT
117# GOT-NEXT: addu    $10, $10, $4            # encoding: [0x21,0x50,0x44,0x01]
118# GOT-NEXT: lw      $10, 0($10)             # encoding: [0x00,0x00,0x4a,0x8d]
119
120# XGOT:      lui    $10, %got_hi(symbol)     # encoding: [A,A,0x0a,0x3c]
121# XGOT-NEXT:                                 #   fixup A - offset: 0, value: %got_hi(symbol), kind: fixup_Mips_GOT_HI16
122# XGOT-NEXT: addu   $10, $10, $gp            # encoding: [0x21,0x50,0x5c,0x01]
123# XGOT-NEXT: lw     $10, %got_lo(symbol)($10) # encoding: [A,A,0x4a,0x8d]
124# XGOT-NEXT:                                 #   fixup A - offset: 0, value: %got_lo(symbol), kind: fixup_Mips_GOT_LO16
125# XGOT-NEXT: addu   $10, $10, $4             # encoding: [0x21,0x50,0x44,0x01]
126# XGOT-NEXT: lw     $10, 0($10)              # encoding: [0x00,0x00,0x4a,0x8d]
127  .set at
128  sw $10, symbol($9)
129# GOT:      lw      $1, %got(symbol)($gp)   # encoding: [A,A,0x81,0x8f]
130# GOT-NEXT:                                 #   fixup A - offset: 0, value: %got(symbol), kind: fixup_Mips_GOT
131# GOT-NEXT: addu    $1, $1, $9              # encoding: [0x21,0x08,0x29,0x00]
132# GOT-NEXT: sw      $10, 0($1)              # encoding: [0x00,0x00,0x2a,0xac]
133
134# XGOT:      lui    $1, %got_hi(symbol)     # encoding: [A,A,0x01,0x3c]
135# XGOT-NEXT:                                #   fixup A - offset: 0, value: %got_hi(symbol), kind: fixup_Mips_GOT_HI16
136# XGOT-NEXT: addu   $1, $1, $gp             # encoding: [0x21,0x08,0x3c,0x00]
137# XGOT-NEXT: lw     $1, %got_lo(symbol)($1) # encoding: [A,A,0x21,0x8c]
138# XGOT-NEXT:                                #   fixup A - offset: 0, value: %got_lo(symbol), kind: fixup_Mips_GOT_LO16
139# XGOT-NEXT: addu   $1, $1, $9              # encoding: [0x21,0x08,0x29,0x00]
140# XGOT-NEXT: sw     $10, 0($1)              # encoding: [0x00,0x00,0x2a,0xac]
141
142  lw $8, 1f+8
143# GOT:      lw      $8, %got($tmp0)($gp)    # encoding: [A,A,0x88,0x8f]
144# GOT-NEXT:                                 #   fixup A - offset: 0, value: %got($tmp0), kind: fixup_Mips_GOT
145# GOT-NEXT: addiu   $8, $8, %lo($tmp0)      # encoding: [A,A,0x08,0x25]
146# GOT-NEXT:                                 #   fixup A - offset: 0, value: %lo($tmp0), kind: fixup_Mips_LO16
147# GOT-NEXT: lw      $8, 8($8)               # encoding: [0x08,0x00,0x08,0x8d]
148
149# XGOT:      lw     $8, %got($tmp0)($gp)    # encoding: [A,A,0x88,0x8f]
150# XGOT-NEXT:                                #   fixup A - offset: 0, value: %got($tmp0), kind: fixup_Mips_GOT
151# XGOT-NEXT: addiu  $8, $8, %lo($tmp0)      # encoding: [A,A,0x08,0x25]
152# XGOT-NEXT:                                #   fixup A - offset: 0, value: %lo($tmp0), kind: fixup_Mips_LO16
153# XGOT-NEXT: lw     $8, 8($8)               # encoding: [0x08,0x00,0x08,0x8d]
154  sw $8, 1f+8
155# GOT:      lw      $1, %got($tmp0)($gp)    # encoding: [A,A,0x81,0x8f]
156# GOT-NEXT:                                 #   fixup A - offset: 0, value: %got($tmp0), kind: fixup_Mips_GOT
157# GOT-NEXT: addiu   $1, $1, %lo($tmp0)      # encoding: [A,A,0x21,0x24]
158# GOT-NEXT:                                 #   fixup A - offset: 0, value: %lo($tmp0), kind: fixup_Mips_LO16
159# GOT-NEXT: sw      $8, 8($1)               # encoding: [0x08,0x00,0x28,0xac]
160
161# XGOT:      lw     $1, %got($tmp0)($gp)    # encoding: [A,A,0x81,0x8f]
162# XGOT-NEXT:                                #   fixup A - offset: 0, value: %got($tmp0), kind: fixup_Mips_GOT
163# XGOT-NEXT: addiu  $1, $1, %lo($tmp0)      # encoding: [A,A,0x21,0x24]
164# XGOT-NEXT:                                #   fixup A - offset: 0, value: %lo($tmp0), kind: fixup_Mips_LO16
165# XGOT-NEXT: sw     $8, 8($1)               # encoding: [0x08,0x00,0x28,0xac]
166
167  lw $10, 655483($4)
168# GOT:      lui     $10, 10                 # encoding: [0x0a,0x00,0x0a,0x3c]
169# GOT-NEXT: addu    $10, $10, $4            # encoding: [0x21,0x50,0x44,0x01]
170# GOT-NEXT: lw      $10, 123($10)           # encoding: [0x7b,0x00,0x4a,0x8d]
171
172# XGOT:      lui    $10, 10                 # encoding: [0x0a,0x00,0x0a,0x3c]
173# XGOT-NEXT: addu   $10, $10, $4            # encoding: [0x21,0x50,0x44,0x01]
174# XGOT-NEXT: lw     $10, 123($10)           # encoding: [0x7b,0x00,0x4a,0x8d]
175  sw $10, 123456($9)
176# GOT:      lui     $1, 2                   # encoding: [0x02,0x00,0x01,0x3c]
177# GOT-NEXT: addu    $1, $1, $9              # encoding: [0x21,0x08,0x29,0x00]
178# GOT-NEXT: sw      $10, -7616($1)          # encoding: [0x40,0xe2,0x2a,0xac]
179
180# XGOT:      lui    $1, 2                   # encoding: [0x02,0x00,0x01,0x3c]
181# XGOT-NEXT: addu   $1, $1, $9              # encoding: [0x21,0x08,0x29,0x00]
182# XGOT-NEXT: sw     $10, -7616($1)          # encoding: [0x40,0xe2,0x2a,0xac]
183
184  lw $8, symbol+8
185# GOT:      lw      $8, %got(symbol)($gp)   # encoding: [A,A,0x88,0x8f]
186# GOT-NEXT:                                 #   fixup A - offset: 0, value: %got(symbol), kind: fixup_Mips_GOT
187# GOT-NEXT: lw      $8, 8($8)               # encoding: [0x08,0x00,0x08,0x8d]
188
189# XGOT:      lui    $8, %got_hi(symbol)     # encoding: [A,A,0x08,0x3c]
190# XGOT-NEXT:                                #   fixup A - offset: 0, value: %got_hi(symbol), kind: fixup_Mips_GOT_HI16
191# XGOT-NEXT: addu   $8, $8, $gp             # encoding: [0x21,0x40,0x1c,0x01]
192# XGOT-NEXT: lw     $8, %got_lo(symbol)($8) # encoding: [A,A,0x08,0x8d]
193# XGOT-NEXT:                                #   fixup A - offset: 0, value: %got_lo(symbol), kind: fixup_Mips_GOT_LO16
194# XGOT-NEXT: lw     $8, 8($8)               # encoding: [0x08,0x00,0x08,0x8d]
195  sw $8, symbol+8
196# GOT:      lw      $1, %got(symbol)($gp)   # encoding: [A,A,0x81,0x8f]
197# GOT-NEXT:                                 #   fixup A - offset: 0, value: %got(symbol), kind: fixup_Mips_GOT
198# GOT-NEXT: sw $8, 8($1)                    # encoding: [0x08,0x00,0x28,0xac]
199
200# XGOT:      lui    $1, %got_hi(symbol)     # encoding: [A,A,0x01,0x3c]
201# XGOT-NEXT:                                #   fixup A - offset: 0, value: %got_hi(symbol), kind: fixup_Mips_GOT_HI16
202# XGOT-NEXT: addu   $1, $1, $gp             # encoding: [0x21,0x08,0x3c,0x00]
203# XGOT-NEXT: lw     $1, %got_lo(symbol)($1) # encoding: [A,A,0x21,0x8c]
204# XGOT-NEXT:                                #   fixup A - offset: 0, value: %got_lo(symbol), kind: fixup_Mips_GOT_LO16
205# XGOT-NEXT: sw     $8, 8($1)               # encoding: [0x08,0x00,0x28,0xac]
206
207  ldc1 $f0, symbol
208# GOT:      lw      $1, %got(symbol)($gp)   # encoding: [A,A,0x81,0x8f]
209# GOT-NEXT:                                 #   fixup A - offset: 0, value: %got(symbol), kind: fixup_Mips_GOT
210# GOT-NEXT: ldc1    $f0, 0($1)              # encoding: [0x00,0x00,0x20,0xd4]
211
212# XGOT:      lui    $1, %got_hi(symbol)     # encoding: [A,A,0x01,0x3c]
213# XGOT-NEXT:                                #   fixup A - offset: 0, value: %got_hi(symbol), kind: fixup_Mips_GOT_HI16
214# XGOT-NEXT: addu   $1, $1, $gp             # encoding: [0x21,0x08,0x3c,0x00]
215# XGOT-NEXT: lw     $1, %got_lo(symbol)($1) # encoding: [A,A,0x21,0x8c]
216# XGOT-NEXT:                                #   fixup A - offset: 0, value: %got_lo(symbol), kind: fixup_Mips_GOT_LO16
217# XGOT-NEXT: ldc1   $f0, 0($1)              # encoding: [0x00,0x00,0x20,0xd4]
218  sdc1 $f0, symbol
219# GOT:      lw      $1, %got(symbol)($gp)   # encoding: [A,A,0x81,0x8f]
220# GOT-NEXT:                                 #   fixup A - offset: 0, value: %got(symbol), kind: fixup_Mips_GOT
221# GOT-NEXT: sdc1    $f0, 0($1)              # encoding: [0x00,0x00,0x20,0xf4]
222
223# XGOT:      lui    $1, %got_hi(symbol)     # encoding: [A,A,0x01,0x3c]
224# XGOT-NEXT:                                #   fixup A - offset: 0, value: %got_hi(symbol), kind: fixup_Mips_GOT_HI16
225# XGOT-NEXT: addu   $1, $1, $gp             # encoding: [0x21,0x08,0x3c,0x00]
226# XGOT-NEXT: lw     $1, %got_lo(symbol)($1) # encoding: [A,A,0x21,0x8c]
227# XGOT-NEXT:                                #   fixup A - offset: 0, value: %got_lo(symbol), kind: fixup_Mips_GOT_LO16
228# XGOT-NEXT: sdc1   $f0, 0($1)              # encoding: [0x00,0x00,0x20,0xf4]
229  .option pic0
230
231# Test BNE with an immediate as the 2nd operand.
232  bne $2, 0, 1332
233# CHECK-LE: bnez  $2, 1332          # encoding: [0x4d,0x01,0x40,0x14]
234# CHECK-LE: nop                     # encoding: [0x00,0x00,0x00,0x00]
235
236  bne $2, 123, 1332
237# CHECK-LE: addiu $1, $zero, 123    # encoding: [0x7b,0x00,0x01,0x24]
238# CHECK-LE: bne   $2, $1, 1332      # encoding: [0x4d,0x01,0x41,0x14]
239# CHECK-LE: nop                     # encoding: [0x00,0x00,0x00,0x00]
240
241  bne $2, -2345, 1332
242# CHECK-LE: addiu $1, $zero, -2345  # encoding: [0xd7,0xf6,0x01,0x24]
243# CHECK-LE: bne   $2, $1, 1332      # encoding: [0x4d,0x01,0x41,0x14]
244# CHECK-LE: nop                     # encoding: [0x00,0x00,0x00,0x00]
245
246  bne $2, 65538, 1332
247# CHECK-LE: lui   $1, 1             # encoding: [0x01,0x00,0x01,0x3c]
248# CHECK-LE: ori   $1, $1, 2         # encoding: [0x02,0x00,0x21,0x34]
249# CHECK-LE: bne   $2, $1, 1332      # encoding: [0x4d,0x01,0x41,0x14]
250# CHECK-LE: nop                     # encoding: [0x00,0x00,0x00,0x00]
251
252  bne $2, ~7, 1332
253# CHECK-LE: addiu $1, $zero, -8     # encoding: [0xf8,0xff,0x01,0x24]
254# CHECK-LE: bne   $2, $1, 1332      # encoding: [0x4d,0x01,0x41,0x14]
255# CHECK-LE: nop                     # encoding: [0x00,0x00,0x00,0x00]
256
257  bne $2, 0x10000, 1332
258# CHECK-LE: lui   $1, 1             # encoding: [0x01,0x00,0x01,0x3c]
259# CHECK-LE: bne   $2, $1, 1332      # encoding: [0x4d,0x01,0x41,0x14]
260# CHECK-LE: nop                     # encoding: [0x00,0x00,0x00,0x00]
261
262# Test BEQ with an immediate as the 2nd operand.
263  beq $2, 0, 1332
264# CHECK-LE: beqz  $2, 1332          # encoding: [0x4d,0x01,0x40,0x10]
265# CHECK-LE: nop                     # encoding: [0x00,0x00,0x00,0x00]
266
267  beq $2, 123, 1332
268# CHECK-LE: addiu $1, $zero, 123    # encoding: [0x7b,0x00,0x01,0x24]
269# CHECK-LE: beq   $2, $1, 1332      # encoding: [0x4d,0x01,0x41,0x10]
270# CHECK-LE: nop                     # encoding: [0x00,0x00,0x00,0x00]
271
272  beq $2, -2345, 1332
273# CHECK-LE: addiu $1, $zero, -2345  # encoding: [0xd7,0xf6,0x01,0x24]
274# CHECK-LE: beq   $2, $1, 1332      # encoding: [0x4d,0x01,0x41,0x10]
275# CHECK-LE: nop                     # encoding: [0x00,0x00,0x00,0x00]
276
277  beq $2, 65538, 1332
278# CHECK-LE: lui   $1, 1             # encoding: [0x01,0x00,0x01,0x3c]
279# CHECK-LE: ori   $1, $1, 2         # encoding: [0x02,0x00,0x21,0x34]
280# CHECK-LE: beq   $2, $1, 1332      # encoding: [0x4d,0x01,0x41,0x10]
281# CHECK-LE: nop                     # encoding: [0x00,0x00,0x00,0x00]
282
283  beq $2, ~7, 1332
284# CHECK-LE: addiu $1, $zero, -8     # encoding: [0xf8,0xff,0x01,0x24]
285# CHECK-LE: beq   $2, $1, 1332      # encoding: [0x4d,0x01,0x41,0x10]
286# CHECK-LE: nop                     # encoding: [0x00,0x00,0x00,0x00]
287
288  beq $2, 0x10000, 1332
289# CHECK-LE: lui   $1, 1             # encoding: [0x01,0x00,0x01,0x3c]
290# CHECK-LE: beq   $2, $1, 1332      # encoding: [0x4d,0x01,0x41,0x10]
291# CHECK-LE: nop                     # encoding: [0x00,0x00,0x00,0x00]
292
293  beq $2, 65538, foo
294# CHECK-LE: lui   $1, 1             # encoding: [0x01,0x00,0x01,0x3c]
295# CHECK-LE: ori   $1, $1, 2         # encoding: [0x02,0x00,0x21,0x34]
296# CHECK-LE: beq   $2, $1, foo       # encoding: [A,A,0x41,0x10]
297# CHECK-LE: nop                     # encoding: [0x00,0x00,0x00,0x00]
298
299# Test ULH with immediate operand.
300ulh_imm: # CHECK-LABEL: ulh_imm:
301  ulh $8, 0
302# CHECK-BE: lb   $1, 0($zero)      # encoding: [0x80,0x01,0x00,0x00]
303# CHECK-BE: lbu  $8, 1($zero)      # encoding: [0x90,0x08,0x00,0x01]
304# CHECK-BE: sll  $1, $1, 8         # encoding: [0x00,0x01,0x0a,0x00]
305# CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
306# CHECK-LE: lb   $1, 1($zero)      # encoding: [0x01,0x00,0x01,0x80]
307# CHECK-LE: lbu  $8, 0($zero)      # encoding: [0x00,0x00,0x08,0x90]
308# CHECK-LE: sll  $1, $1, 8         # encoding: [0x00,0x0a,0x01,0x00]
309# CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
310
311  ulh $8, 2
312# CHECK-BE: lb   $1, 2($zero)      # encoding: [0x80,0x01,0x00,0x02]
313# CHECK-BE: lbu  $8, 3($zero)      # encoding: [0x90,0x08,0x00,0x03]
314# CHECK-BE: sll  $1, $1, 8         # encoding: [0x00,0x01,0x0a,0x00]
315# CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
316# CHECK-LE: lb   $1, 3($zero)      # encoding: [0x03,0x00,0x01,0x80]
317# CHECK-LE: lbu  $8, 2($zero)      # encoding: [0x02,0x00,0x08,0x90]
318# CHECK-LE: sll  $1, $1, 8         # encoding: [0x00,0x0a,0x01,0x00]
319# CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
320
321  ulh $8, 0x8000
322# CHECK-BE: ori  $1, $zero, 32768  # encoding: [0x34,0x01,0x80,0x00]
323# CHECK-BE: lb   $8, 0($1)         # encoding: [0x80,0x28,0x00,0x00]
324# CHECK-BE: lbu  $1, 1($1)         # encoding: [0x90,0x21,0x00,0x01]
325# CHECK-BE: sll  $8, $8, 8         # encoding: [0x00,0x08,0x42,0x00]
326# CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
327# CHECK-LE: ori  $1, $zero, 32768  # encoding: [0x00,0x80,0x01,0x34]
328# CHECK-LE: lb   $8, 1($1)         # encoding: [0x01,0x00,0x28,0x80]
329# CHECK-LE: lbu  $1, 0($1)         # encoding: [0x00,0x00,0x21,0x90]
330# CHECK-LE: sll  $8, $8, 8         # encoding: [0x00,0x42,0x08,0x00]
331# CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
332
333  ulh $8, -0x8000
334# CHECK-BE: lb   $1, -32768($zero) # encoding: [0x80,0x01,0x80,0x00]
335# CHECK-BE: lbu  $8, -32767($zero) # encoding: [0x90,0x08,0x80,0x01]
336# CHECK-BE: sll  $1, $1, 8         # encoding: [0x00,0x01,0x0a,0x00]
337# CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
338# CHECK-LE: lb   $1, -32767($zero) # encoding: [0x01,0x80,0x01,0x80]
339# CHECK-LE: lbu  $8, -32768($zero) # encoding: [0x00,0x80,0x08,0x90]
340# CHECK-LE: sll  $1, $1, 8         # encoding: [0x00,0x0a,0x01,0x00]
341# CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
342
343  ulh $8, 0x10000
344# CHECK-BE: lui  $1, 1             # encoding: [0x3c,0x01,0x00,0x01]
345# CHECK-BE: lb   $8, 0($1)         # encoding: [0x80,0x28,0x00,0x00]
346# CHECK-BE: lbu  $1, 1($1)         # encoding: [0x90,0x21,0x00,0x01]
347# CHECK-BE: sll  $8, $8, 8         # encoding: [0x00,0x08,0x42,0x00]
348# CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
349# CHECK-LE: lui  $1, 1             # encoding: [0x01,0x00,0x01,0x3c]
350# CHECK-LE: lb   $8, 1($1)         # encoding: [0x01,0x00,0x28,0x80]
351# CHECK-LE: lbu  $1, 0($1)         # encoding: [0x00,0x00,0x21,0x90]
352# CHECK-LE: sll  $8, $8, 8         # encoding: [0x00,0x42,0x08,0x00]
353# CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
354
355  ulh $8, 0x18888
356# CHECK-BE: lui  $1, 1             # encoding: [0x3c,0x01,0x00,0x01]
357# CHECK-BE: ori  $1, $1, 34952     # encoding: [0x34,0x21,0x88,0x88]
358# CHECK-BE: lb   $8, 0($1)         # encoding: [0x80,0x28,0x00,0x00]
359# CHECK-BE: lbu  $1, 1($1)         # encoding: [0x90,0x21,0x00,0x01]
360# CHECK-BE: sll  $8, $8, 8         # encoding: [0x00,0x08,0x42,0x00]
361# CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
362# CHECK-LE: lui  $1, 1             # encoding: [0x01,0x00,0x01,0x3c]
363# CHECK-LE: ori  $1, $1, 34952     # encoding: [0x88,0x88,0x21,0x34]
364# CHECK-LE: lb   $8, 1($1)         # encoding: [0x01,0x00,0x28,0x80]
365# CHECK-LE: lbu  $1, 0($1)         # encoding: [0x00,0x00,0x21,0x90]
366# CHECK-LE: sll  $8, $8, 8         # encoding: [0x00,0x42,0x08,0x00]
367# CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
368
369  ulh $8, -32769
370# CHECK-BE: lui  $1, 65535         # encoding: [0x3c,0x01,0xff,0xff]
371# CHECK-BE: ori  $1, $1, 32767     # encoding: [0x34,0x21,0x7f,0xff]
372# CHECK-BE: lb   $8, 0($1)         # encoding: [0x80,0x28,0x00,0x00]
373# CHECK-BE: lbu  $1, 1($1)         # encoding: [0x90,0x21,0x00,0x01]
374# CHECK-BE: sll  $8, $8, 8         # encoding: [0x00,0x08,0x42,0x00]
375# CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
376# CHECK-LE: lui  $1, 65535         # encoding: [0xff,0xff,0x01,0x3c]
377# CHECK-LE: ori  $1, $1, 32767     # encoding: [0xff,0x7f,0x21,0x34]
378# CHECK-LE: lb   $8, 1($1)         # encoding: [0x01,0x00,0x28,0x80]
379# CHECK-LE: lbu  $1, 0($1)         # encoding: [0x00,0x00,0x21,0x90]
380# CHECK-LE: sll  $8, $8, 8         # encoding: [0x00,0x42,0x08,0x00]
381# CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
382
383  ulh $8, 32767
384# CHECK-BE: addiu $1, $zero, 32767  # encoding: [0x24,0x01,0x7f,0xff]
385# CHECK-BE: lb   $8, 0($1)          # encoding: [0x80,0x28,0x00,0x00]
386# CHECK-BE: lbu  $1, 1($1)          # encoding: [0x90,0x21,0x00,0x01]
387# CHECK-BE: sll  $8, $8, 8          # encoding: [0x00,0x08,0x42,0x00]
388# CHECK-BE: or   $8, $8, $1         # encoding: [0x01,0x01,0x40,0x25]
389# CHECK-LE: addiu $1, $zero, 32767  # encoding: [0xff,0x7f,0x01,0x24]
390# CHECK-LE: lb   $8, 1($1)          # encoding: [0x01,0x00,0x28,0x80]
391# CHECK-LE: lbu  $1, 0($1)          # encoding: [0x00,0x00,0x21,0x90]
392# CHECK-LE: sll  $8, $8, 8          # encoding: [0x00,0x42,0x08,0x00]
393# CHECK-LE: or   $8, $8, $1         # encoding: [0x25,0x40,0x01,0x01]
394
395# Test ULH with immediate offset and a source register operand.
396ulh_reg: # CHECK-LABEL: ulh_reg:
397  ulh $8, 0($9)
398# CHECK-BE: lb   $1, 0($9)         # encoding: [0x81,0x21,0x00,0x00]
399# CHECK-BE: lbu  $8, 1($9)         # encoding: [0x91,0x28,0x00,0x01]
400# CHECK-BE: sll  $1, $1, 8         # encoding: [0x00,0x01,0x0a,0x00]
401# CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
402# CHECK-LE: lb   $1, 1($9)         # encoding: [0x01,0x00,0x21,0x81]
403# CHECK-LE: lbu  $8, 0($9)         # encoding: [0x00,0x00,0x28,0x91]
404# CHECK-LE: sll  $1, $1, 8         # encoding: [0x00,0x0a,0x01,0x00]
405# CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
406
407  ulh $8, 2($9)
408# CHECK-BE: lb   $1, 2($9)         # encoding: [0x81,0x21,0x00,0x02]
409# CHECK-BE: lbu  $8, 3($9)         # encoding: [0x91,0x28,0x00,0x03]
410# CHECK-BE: sll  $1, $1, 8         # encoding: [0x00,0x01,0x0a,0x00]
411# CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
412# CHECK-LE: lb   $1, 3($9)         # encoding: [0x03,0x00,0x21,0x81]
413# CHECK-LE: lbu  $8, 2($9)         # encoding: [0x02,0x00,0x28,0x91]
414# CHECK-LE: sll  $1, $1, 8         # encoding: [0x00,0x0a,0x01,0x00]
415# CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
416
417  ulh $8, 0x8000($9)
418# CHECK-BE: ori  $1, $zero, 32768  # encoding: [0x34,0x01,0x80,0x00]
419# CHECK-BE: addu $1, $1, $9        # encoding: [0x00,0x29,0x08,0x21]
420# CHECK-BE: lb   $8, 0($1)         # encoding: [0x80,0x28,0x00,0x00]
421# CHECK-BE: lbu  $1, 1($1)         # encoding: [0x90,0x21,0x00,0x01]
422# CHECK-BE: sll  $8, $8, 8         # encoding: [0x00,0x08,0x42,0x00]
423# CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
424# CHECK-LE: ori  $1, $zero, 32768  # encoding: [0x00,0x80,0x01,0x34]
425# CHECK-LE: addu $1, $1, $9        # encoding: [0x21,0x08,0x29,0x00]
426# CHECK-LE: lb   $8, 1($1)         # encoding: [0x01,0x00,0x28,0x80]
427# CHECK-LE: lbu  $1, 0($1)         # encoding: [0x00,0x00,0x21,0x90]
428# CHECK-LE: sll  $8, $8, 8         # encoding: [0x00,0x42,0x08,0x00]
429# CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
430
431  ulh $8, -0x8000($9)
432# CHECK-BE: lb   $1, -32768($9)    # encoding: [0x81,0x21,0x80,0x00]
433# CHECK-BE: lbu  $8, -32767($9)    # encoding: [0x91,0x28,0x80,0x01]
434# CHECK-BE: sll  $1, $1, 8         # encoding: [0x00,0x01,0x0a,0x00]
435# CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
436# CHECK-LE: lb   $1, -32767($9)    # encoding: [0x01,0x80,0x21,0x81]
437# CHECK-LE: lbu  $8, -32768($9)    # encoding: [0x00,0x80,0x28,0x91]
438# CHECK-LE: sll  $1, $1, 8         # encoding: [0x00,0x0a,0x01,0x00]
439# CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
440
441  ulh $8, 0x10000($9)
442# CHECK-BE: lui  $1, 1             # encoding: [0x3c,0x01,0x00,0x01]
443# CHECK-BE: addu $1, $1, $9        # encoding: [0x00,0x29,0x08,0x21]
444# CHECK-BE: lb   $8, 0($1)         # encoding: [0x80,0x28,0x00,0x00]
445# CHECK-BE: lbu  $1, 1($1)         # encoding: [0x90,0x21,0x00,0x01]
446# CHECK-BE: sll  $8, $8, 8         # encoding: [0x00,0x08,0x42,0x00]
447# CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
448# CHECK-LE: lui  $1, 1             # encoding: [0x01,0x00,0x01,0x3c]
449# CHECK-LE: addu $1, $1, $9        # encoding: [0x21,0x08,0x29,0x00]
450# CHECK-LE: lb   $8, 1($1)         # encoding: [0x01,0x00,0x28,0x80]
451# CHECK-LE: lbu  $1, 0($1)         # encoding: [0x00,0x00,0x21,0x90]
452# CHECK-LE: sll  $8, $8, 8         # encoding: [0x00,0x42,0x08,0x00]
453# CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
454
455  ulh $8, 0x18888($9)
456# CHECK-BE: lui  $1, 1             # encoding: [0x3c,0x01,0x00,0x01]
457# CHECK-BE: ori  $1, $1, 34952     # encoding: [0x34,0x21,0x88,0x88]
458# CHECK-BE: addu $1, $1, $9        # encoding: [0x00,0x29,0x08,0x21]
459# CHECK-BE: lb   $8, 0($1)         # encoding: [0x80,0x28,0x00,0x00]
460# CHECK-BE: lbu  $1, 1($1)         # encoding: [0x90,0x21,0x00,0x01]
461# CHECK-BE: sll  $8, $8, 8         # encoding: [0x00,0x08,0x42,0x00]
462# CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
463# CHECK-LE: lui  $1, 1             # encoding: [0x01,0x00,0x01,0x3c]
464# CHECK-LE: ori  $1, $1, 34952     # encoding: [0x88,0x88,0x21,0x34]
465# CHECK-LE: addu $1, $1, $9        # encoding: [0x21,0x08,0x29,0x00]
466# CHECK-LE: lb   $8, 1($1)         # encoding: [0x01,0x00,0x28,0x80]
467# CHECK-LE: lbu  $1, 0($1)         # encoding: [0x00,0x00,0x21,0x90]
468# CHECK-LE: sll  $8, $8, 8         # encoding: [0x00,0x42,0x08,0x00]
469# CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
470
471  ulh $8, -32769($9)
472# CHECK-BE: lui  $1, 65535         # encoding: [0x3c,0x01,0xff,0xff]
473# CHECK-BE: ori  $1, $1, 32767     # encoding: [0x34,0x21,0x7f,0xff]
474# CHECK-BE: addu $1, $1, $9        # encoding: [0x00,0x29,0x08,0x21]
475# CHECK-BE: lb   $8, 0($1)         # encoding: [0x80,0x28,0x00,0x00]
476# CHECK-BE: lbu  $1, 1($1)         # encoding: [0x90,0x21,0x00,0x01]
477# CHECK-BE: sll  $8, $8, 8         # encoding: [0x00,0x08,0x42,0x00]
478# CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
479# CHECK-LE: lui  $1, 65535         # encoding: [0xff,0xff,0x01,0x3c]
480# CHECK-LE: ori  $1, $1, 32767     # encoding: [0xff,0x7f,0x21,0x34]
481# CHECK-LE: addu $1, $1, $9        # encoding: [0x21,0x08,0x29,0x00]
482# CHECK-LE: lb   $8, 1($1)         # encoding: [0x01,0x00,0x28,0x80]
483# CHECK-LE: lbu  $1, 0($1)         # encoding: [0x00,0x00,0x21,0x90]
484# CHECK-LE: sll  $8, $8, 8         # encoding: [0x00,0x42,0x08,0x00]
485# CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
486
487  ulh $8, 32767($9)
488# CHECK-BE: addiu $1, $9, 32767    # encoding: [0x25,0x21,0x7f,0xff]
489# CHECK-BE: lb   $8, 0($1)         # encoding: [0x80,0x28,0x00,0x00]
490# CHECK-BE: lbu  $1, 1($1)         # encoding: [0x90,0x21,0x00,0x01]
491# CHECK-BE: sll  $8, $8, 8         # encoding: [0x00,0x08,0x42,0x00]
492# CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
493# CHECK-LE: addiu $1, $9, 32767    # encoding: [0xff,0x7f,0x21,0x25]
494# CHECK-LE: lb   $8, 1($1)         # encoding: [0x01,0x00,0x28,0x80]
495# CHECK-LE: lbu  $1, 0($1)         # encoding: [0x00,0x00,0x21,0x90]
496# CHECK-LE: sll  $8, $8, 8         # encoding: [0x00,0x42,0x08,0x00]
497# CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
498
499# Test ULHU with immediate operand.
500ulhu_imm: # CHECK-LABEL: ulhu_imm:
501  ulhu $8, 0
502# CHECK-BE: lbu  $1, 0($zero)      # encoding: [0x90,0x01,0x00,0x00]
503# CHECK-BE: lbu  $8, 1($zero)      # encoding: [0x90,0x08,0x00,0x01]
504# CHECK-BE: sll  $1, $1, 8         # encoding: [0x00,0x01,0x0a,0x00]
505# CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
506# CHECK-LE: lbu  $1, 1($zero)      # encoding: [0x01,0x00,0x01,0x90]
507# CHECK-LE: lbu  $8, 0($zero)      # encoding: [0x00,0x00,0x08,0x90]
508# CHECK-LE: sll  $1, $1, 8         # encoding: [0x00,0x0a,0x01,0x00]
509# CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
510
511  ulhu $8, 2
512# CHECK-BE: lbu  $1, 2($zero)      # encoding: [0x90,0x01,0x00,0x02]
513# CHECK-BE: lbu  $8, 3($zero)      # encoding: [0x90,0x08,0x00,0x03]
514# CHECK-BE: sll  $1, $1, 8         # encoding: [0x00,0x01,0x0a,0x00]
515# CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
516# CHECK-LE: lbu  $1, 3($zero)      # encoding: [0x03,0x00,0x01,0x90]
517# CHECK-LE: lbu  $8, 2($zero)      # encoding: [0x02,0x00,0x08,0x90]
518# CHECK-LE: sll  $1, $1, 8         # encoding: [0x00,0x0a,0x01,0x00]
519# CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
520
521  ulhu $8, 0x8000
522# CHECK-BE: ori  $1, $zero, 32768  # encoding: [0x34,0x01,0x80,0x00]
523# CHECK-BE: lbu  $8, 0($1)         # encoding: [0x90,0x28,0x00,0x00]
524# CHECK-BE: lbu  $1, 1($1)         # encoding: [0x90,0x21,0x00,0x01]
525# CHECK-BE: sll  $8, $8, 8         # encoding: [0x00,0x08,0x42,0x00]
526# CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
527# CHECK-LE: ori  $1, $zero, 32768  # encoding: [0x00,0x80,0x01,0x34]
528# CHECK-LE: lbu  $8, 1($1)         # encoding: [0x01,0x00,0x28,0x90]
529# CHECK-LE: lbu  $1, 0($1)         # encoding: [0x00,0x00,0x21,0x90]
530# CHECK-LE: sll  $8, $8, 8         # encoding: [0x00,0x42,0x08,0x00]
531# CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
532
533  ulhu $8, -0x8000
534# CHECK-BE: lbu  $1, -32768($zero) # encoding: [0x90,0x01,0x80,0x00]
535# CHECK-BE: lbu  $8, -32767($zero) # encoding: [0x90,0x08,0x80,0x01]
536# CHECK-BE: sll  $1, $1, 8         # encoding: [0x00,0x01,0x0a,0x00]
537# CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
538# CHECK-LE: lbu  $1, -32767($zero) # encoding: [0x01,0x80,0x01,0x90]
539# CHECK-LE: lbu  $8, -32768($zero) # encoding: [0x00,0x80,0x08,0x90]
540# CHECK-LE: sll  $1, $1, 8         # encoding: [0x00,0x0a,0x01,0x00]
541# CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
542
543  ulhu $8, 0x10000
544# CHECK-BE: lui  $1, 1             # encoding: [0x3c,0x01,0x00,0x01]
545# CHECK-BE: lbu  $8, 0($1)         # encoding: [0x90,0x28,0x00,0x00]
546# CHECK-BE: lbu  $1, 1($1)         # encoding: [0x90,0x21,0x00,0x01]
547# CHECK-BE: sll  $8, $8, 8         # encoding: [0x00,0x08,0x42,0x00]
548# CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
549# CHECK-LE: lui  $1, 1             # encoding: [0x01,0x00,0x01,0x3c]
550# CHECK-LE: lbu  $8, 1($1)         # encoding: [0x01,0x00,0x28,0x90]
551# CHECK-LE: lbu  $1, 0($1)         # encoding: [0x00,0x00,0x21,0x90]
552# CHECK-LE: sll  $8, $8, 8         # encoding: [0x00,0x42,0x08,0x00]
553# CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
554
555  ulhu $8, 0x18888
556# CHECK-BE: lui  $1, 1             # encoding: [0x3c,0x01,0x00,0x01]
557# CHECK-BE: ori  $1, $1, 34952     # encoding: [0x34,0x21,0x88,0x88]
558# CHECK-BE: lbu  $8, 0($1)         # encoding: [0x90,0x28,0x00,0x00]
559# CHECK-BE: lbu  $1, 1($1)         # encoding: [0x90,0x21,0x00,0x01]
560# CHECK-BE: sll  $8, $8, 8         # encoding: [0x00,0x08,0x42,0x00]
561# CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
562# CHECK-LE: lui  $1, 1             # encoding: [0x01,0x00,0x01,0x3c]
563# CHECK-LE: ori  $1, $1, 34952     # encoding: [0x88,0x88,0x21,0x34]
564# CHECK-LE: lbu  $8, 1($1)         # encoding: [0x01,0x00,0x28,0x90]
565# CHECK-LE: lbu  $1, 0($1)         # encoding: [0x00,0x00,0x21,0x90]
566# CHECK-LE: sll  $8, $8, 8         # encoding: [0x00,0x42,0x08,0x00]
567# CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
568
569  ulhu $8, -32769
570# CHECK-BE: lui  $1, 65535         # encoding: [0x3c,0x01,0xff,0xff]
571# CHECK-BE: ori  $1, $1, 32767     # encoding: [0x34,0x21,0x7f,0xff]
572# CHECK-BE: lbu  $8, 0($1)         # encoding: [0x90,0x28,0x00,0x00]
573# CHECK-BE: lbu  $1, 1($1)         # encoding: [0x90,0x21,0x00,0x01]
574# CHECK-BE: sll  $8, $8, 8         # encoding: [0x00,0x08,0x42,0x00]
575# CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
576# CHECK-LE: lui  $1, 65535         # encoding: [0xff,0xff,0x01,0x3c]
577# CHECK-LE: ori  $1, $1, 32767     # encoding: [0xff,0x7f,0x21,0x34]
578# CHECK-LE: lbu  $8, 1($1)         # encoding: [0x01,0x00,0x28,0x90]
579# CHECK-LE: lbu  $1, 0($1)         # encoding: [0x00,0x00,0x21,0x90]
580# CHECK-LE: sll  $8, $8, 8         # encoding: [0x00,0x42,0x08,0x00]
581# CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
582
583  ulhu $8, 32767
584# CHECK-BE: addiu $1, $zero, 32767  # encoding: [0x24,0x01,0x7f,0xff]
585# CHECK-BE: lbu  $8, 0($1)          # encoding: [0x90,0x28,0x00,0x00]
586# CHECK-BE: lbu  $1, 1($1)          # encoding: [0x90,0x21,0x00,0x01]
587# CHECK-BE: sll  $8, $8, 8          # encoding: [0x00,0x08,0x42,0x00]
588# CHECK-BE: or   $8, $8, $1         # encoding: [0x01,0x01,0x40,0x25]
589# CHECK-LE: addiu $1, $zero, 32767  # encoding: [0xff,0x7f,0x01,0x24]
590# CHECK-LE: lbu  $8, 1($1)          # encoding: [0x01,0x00,0x28,0x90]
591# CHECK-LE: lbu  $1, 0($1)          # encoding: [0x00,0x00,0x21,0x90]
592# CHECK-LE: sll  $8, $8, 8          # encoding: [0x00,0x42,0x08,0x00]
593# CHECK-LE: or   $8, $8, $1         # encoding: [0x25,0x40,0x01,0x01]
594
595# Test ULHU with immediate offset and a source register operand.
596  ulhu $8, 0($9)
597# CHECK-BE: lbu  $1, 0($9)         # encoding: [0x91,0x21,0x00,0x00]
598# CHECK-BE: lbu  $8, 1($9)         # encoding: [0x91,0x28,0x00,0x01]
599# CHECK-BE: sll  $1, $1, 8         # encoding: [0x00,0x01,0x0a,0x00]
600# CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
601# CHECK-LE: lbu  $1, 1($9)         # encoding: [0x01,0x00,0x21,0x91]
602# CHECK-LE: lbu  $8, 0($9)         # encoding: [0x00,0x00,0x28,0x91]
603# CHECK-LE: sll  $1, $1, 8         # encoding: [0x00,0x0a,0x01,0x00]
604# CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
605
606  ulhu $8, 2($9)
607# CHECK-BE: lbu  $1, 2($9)         # encoding: [0x91,0x21,0x00,0x02]
608# CHECK-BE: lbu  $8, 3($9)         # encoding: [0x91,0x28,0x00,0x03]
609# CHECK-BE: sll  $1, $1, 8         # encoding: [0x00,0x01,0x0a,0x00]
610# CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
611# CHECK-LE: lbu  $1, 3($9)         # encoding: [0x03,0x00,0x21,0x91]
612# CHECK-LE: lbu  $8, 2($9)         # encoding: [0x02,0x00,0x28,0x91]
613# CHECK-LE: sll  $1, $1, 8         # encoding: [0x00,0x0a,0x01,0x00]
614# CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
615
616  ulhu $8, 0x8000($9)
617# CHECK-BE: ori  $1, $zero, 32768  # encoding: [0x34,0x01,0x80,0x00]
618# CHECK-BE: addu $1, $1, $9        # encoding: [0x00,0x29,0x08,0x21]
619# CHECK-BE: lbu  $8, 0($1)         # encoding: [0x90,0x28,0x00,0x00]
620# CHECK-BE: lbu  $1, 1($1)         # encoding: [0x90,0x21,0x00,0x01]
621# CHECK-BE: sll  $8, $8, 8         # encoding: [0x00,0x08,0x42,0x00]
622# CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
623# CHECK-LE: ori  $1, $zero, 32768  # encoding: [0x00,0x80,0x01,0x34]
624# CHECK-LE: addu $1, $1, $9        # encoding: [0x21,0x08,0x29,0x00]
625# CHECK-LE: lbu  $8, 1($1)         # encoding: [0x01,0x00,0x28,0x90]
626# CHECK-LE: lbu  $1, 0($1)         # encoding: [0x00,0x00,0x21,0x90]
627# CHECK-LE: sll  $8, $8, 8         # encoding: [0x00,0x42,0x08,0x00]
628# CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
629
630  ulhu $8, -0x8000($9)
631# CHECK-BE: lbu  $1, -32768($9)    # encoding: [0x91,0x21,0x80,0x00]
632# CHECK-BE: lbu  $8, -32767($9)    # encoding: [0x91,0x28,0x80,0x01]
633# CHECK-BE: sll  $1, $1, 8         # encoding: [0x00,0x01,0x0a,0x00]
634# CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
635# CHECK-LE: lbu  $1, -32767($9)    # encoding: [0x01,0x80,0x21,0x91]
636# CHECK-LE: lbu  $8, -32768($9)    # encoding: [0x00,0x80,0x28,0x91]
637# CHECK-LE: sll  $1, $1, 8         # encoding: [0x00,0x0a,0x01,0x00]
638# CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
639
640  ulhu $8, 0x10000($9)
641# CHECK-BE: lui  $1, 1             # encoding: [0x3c,0x01,0x00,0x01]
642# CHECK-BE: addu $1, $1, $9        # encoding: [0x00,0x29,0x08,0x21]
643# CHECK-BE: lbu  $8, 0($1)         # encoding: [0x90,0x28,0x00,0x00]
644# CHECK-BE: lbu  $1, 1($1)         # encoding: [0x90,0x21,0x00,0x01]
645# CHECK-BE: sll  $8, $8, 8         # encoding: [0x00,0x08,0x42,0x00]
646# CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
647# CHECK-LE: lui  $1, 1             # encoding: [0x01,0x00,0x01,0x3c]
648# CHECK-LE: addu $1, $1, $9        # encoding: [0x21,0x08,0x29,0x00]
649# CHECK-LE: lbu  $8, 1($1)         # encoding: [0x01,0x00,0x28,0x90]
650# CHECK-LE: lbu  $1, 0($1)         # encoding: [0x00,0x00,0x21,0x90]
651# CHECK-LE: sll  $8, $8, 8         # encoding: [0x00,0x42,0x08,0x00]
652# CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
653
654  ulhu $8, 0x18888($9)
655# CHECK-BE: lui  $1, 1             # encoding: [0x3c,0x01,0x00,0x01]
656# CHECK-BE: ori  $1, $1, 34952     # encoding: [0x34,0x21,0x88,0x88]
657# CHECK-BE: addu $1, $1, $9        # encoding: [0x00,0x29,0x08,0x21]
658# CHECK-BE: lbu  $8, 0($1)         # encoding: [0x90,0x28,0x00,0x00]
659# CHECK-BE: lbu  $1, 1($1)         # encoding: [0x90,0x21,0x00,0x01]
660# CHECK-BE: sll  $8, $8, 8         # encoding: [0x00,0x08,0x42,0x00]
661# CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
662# CHECK-LE: lui  $1, 1             # encoding: [0x01,0x00,0x01,0x3c]
663# CHECK-LE: ori  $1, $1, 34952     # encoding: [0x88,0x88,0x21,0x34]
664# CHECK-LE: addu $1, $1, $9        # encoding: [0x21,0x08,0x29,0x00]
665# CHECK-LE: lbu  $8, 1($1)         # encoding: [0x01,0x00,0x28,0x90]
666# CHECK-LE: lbu  $1, 0($1)         # encoding: [0x00,0x00,0x21,0x90]
667# CHECK-LE: sll  $8, $8, 8         # encoding: [0x00,0x42,0x08,0x00]
668# CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
669
670  ulhu $8, -32769($9)
671# CHECK-BE: lui  $1, 65535         # encoding: [0x3c,0x01,0xff,0xff]
672# CHECK-BE: ori  $1, $1, 32767     # encoding: [0x34,0x21,0x7f,0xff]
673# CHECK-BE: addu $1, $1, $9        # encoding: [0x00,0x29,0x08,0x21]
674# CHECK-BE: lbu  $8, 0($1)         # encoding: [0x90,0x28,0x00,0x00]
675# CHECK-BE: lbu  $1, 1($1)         # encoding: [0x90,0x21,0x00,0x01]
676# CHECK-BE: sll  $8, $8, 8         # encoding: [0x00,0x08,0x42,0x00]
677# CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
678# CHECK-LE: lui  $1, 65535         # encoding: [0xff,0xff,0x01,0x3c]
679# CHECK-LE: ori  $1, $1, 32767     # encoding: [0xff,0x7f,0x21,0x34]
680# CHECK-LE: addu $1, $1, $9        # encoding: [0x21,0x08,0x29,0x00]
681# CHECK-LE: lbu  $8, 1($1)         # encoding: [0x01,0x00,0x28,0x90]
682# CHECK-LE: lbu  $1, 0($1)         # encoding: [0x00,0x00,0x21,0x90]
683# CHECK-LE: sll  $8, $8, 8         # encoding: [0x00,0x42,0x08,0x00]
684# CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
685
686  ulhu $8, 32767($9)
687# CHECK-BE: addiu   $1, $9, 32767  # encoding: [0x25,0x21,0x7f,0xff]
688# CHECK-BE: lbu  $8, 0($1)         # encoding: [0x90,0x28,0x00,0x00]
689# CHECK-BE: lbu  $1, 1($1)         # encoding: [0x90,0x21,0x00,0x01]
690# CHECK-BE: sll  $8, $8, 8         # encoding: [0x00,0x08,0x42,0x00]
691# CHECK-BE: or   $8, $8, $1        # encoding: [0x01,0x01,0x40,0x25]
692# CHECK-LE: addiu $1, $9, 32767    # encoding: [0xff,0x7f,0x21,0x25]
693# CHECK-LE: lbu  $8, 1($1)         # encoding: [0x01,0x00,0x28,0x90]
694# CHECK-LE: lbu  $1, 0($1)         # encoding: [0x00,0x00,0x21,0x90]
695# CHECK-LE: sll  $8, $8, 8         # encoding: [0x00,0x42,0x08,0x00]
696# CHECK-LE: or   $8, $8, $1        # encoding: [0x25,0x40,0x01,0x01]
697
698# Test ULW with immediate operand.
699  ulw $8, 0
700# CHECK-BE: lwl  $8, 0($zero)      # encoding: [0x88,0x08,0x00,0x00]
701# CHECK-BE: lwr  $8, 3($zero)      # encoding: [0x98,0x08,0x00,0x03]
702# CHECK-LE: lwl $8, 3($zero)       # encoding: [0x03,0x00,0x08,0x88]
703# CHECK-LE: lwr $8, 0($zero)       # encoding: [0x00,0x00,0x08,0x98]
704
705  ulw $8, 2
706# CHECK-BE: lwl  $8, 2($zero)      # encoding: [0x88,0x08,0x00,0x02]
707# CHECK-BE: lwr  $8, 5($zero)      # encoding: [0x98,0x08,0x00,0x05]
708# CHECK-LE: lwl $8, 5($zero)       # encoding: [0x05,0x00,0x08,0x88]
709# CHECK-LE: lwr $8, 2($zero)       # encoding: [0x02,0x00,0x08,0x98]
710
711  ulw $8, 0x8000
712# CHECK-BE: ori  $1, $zero, 32768  # encoding: [0x34,0x01,0x80,0x00]
713# CHECK-BE: lwl  $8, 0($1)         # encoding: [0x88,0x28,0x00,0x00]
714# CHECK-BE: lwr  $8, 3($1)         # encoding: [0x98,0x28,0x00,0x03]
715# CHECK-LE: ori $1, $zero, 32768   # encoding: [0x00,0x80,0x01,0x34]
716# CHECK-LE: lwl $8, 3($1)          # encoding: [0x03,0x00,0x28,0x88]
717# CHECK-LE: lwr $8, 0($1)          # encoding: [0x00,0x00,0x28,0x98]
718
719  ulw $8, -0x8000
720# CHECK-BE: lwl  $8, -32768($zero) # encoding: [0x88,0x08,0x80,0x00]
721# CHECK-BE: lwr  $8, -32765($zero) # encoding: [0x98,0x08,0x80,0x03]
722# CHECK-LE: lwl $8, -32765($zero)  # encoding: [0x03,0x80,0x08,0x88]
723# CHECK-LE: lwr $8, -32768($zero)  # encoding: [0x00,0x80,0x08,0x98]
724
725  ulw $8, 0x10000
726# CHECK-BE: lui  $1, 1             # encoding: [0x3c,0x01,0x00,0x01]
727# CHECK-BE: lwl  $8, 0($1)         # encoding: [0x88,0x28,0x00,0x00]
728# CHECK-BE: lwr  $8, 3($1)         # encoding: [0x98,0x28,0x00,0x03]
729# CHECK-LE: lui $1, 1              # encoding: [0x01,0x00,0x01,0x3c]
730# CHECK-LE: lwl $8, 3($1)          # encoding: [0x03,0x00,0x28,0x88]
731# CHECK-LE: lwr $8, 0($1)          # encoding: [0x00,0x00,0x28,0x98]
732
733  ulw $8, 0x18888
734# CHECK-BE: lui  $1, 1             # encoding: [0x3c,0x01,0x00,0x01]
735# CHECK-BE: ori  $1, $1, 34952     # encoding: [0x34,0x21,0x88,0x88]
736# CHECK-BE: lwl  $8, 0($1)         # encoding: [0x88,0x28,0x00,0x00]
737# CHECK-BE: lwr  $8, 3($1)         # encoding: [0x98,0x28,0x00,0x03]
738# CHECK-LE: lui $1, 1              # encoding: [0x01,0x00,0x01,0x3c]
739# CHECK-LE: ori $1, $1, 34952      # encoding: [0x88,0x88,0x21,0x34]
740# CHECK-LE: lwl $8, 3($1)          # encoding: [0x03,0x00,0x28,0x88]
741# CHECK-LE: lwr $8, 0($1)          # encoding: [0x00,0x00,0x28,0x98]
742
743  ulw $8, -32771
744# CHECK-BE: lui  $1, 65535         # encoding: [0x3c,0x01,0xff,0xff]
745# CHECK-BE: ori  $1, $1, 32765     # encoding: [0x34,0x21,0x7f,0xfd]
746# CHECK-BE: lwl  $8, 0($1)         # encoding: [0x88,0x28,0x00,0x00]
747# CHECK-BE: lwr  $8, 3($1)         # encoding: [0x98,0x28,0x00,0x03]
748# CHECK-LE: lui $1, 65535          # encoding: [0xff,0xff,0x01,0x3c]
749# CHECK-LE: ori $1, $1, 32765      # encoding: [0xfd,0x7f,0x21,0x34]
750# CHECK-LE: lwl $8, 3($1)          # encoding: [0x03,0x00,0x28,0x88]
751# CHECK-LE: lwr $8, 0($1)          # encoding: [0x00,0x00,0x28,0x98]
752
753  ulw $8, 32765
754# CHECK-BE: addiu $1, $zero, 32765 # encoding: [0x24,0x01,0x7f,0xfd]
755# CHECK-BE: lwl  $8, 0($1)         # encoding: [0x88,0x28,0x00,0x00]
756# CHECK-BE: lwr  $8, 3($1)         # encoding: [0x98,0x28,0x00,0x03]
757# CHECK-LE: addiu $1, $zero, 32765 # encoding: [0xfd,0x7f,0x01,0x24]
758# CHECK-LE: lwl $8, 3($1)          # encoding: [0x03,0x00,0x28,0x88]
759# CHECK-LE: lwr $8, 0($1)          # encoding: [0x00,0x00,0x28,0x98]
760
761# Test ULW with immediate offset and a source register operand.
762  ulw $8, 0($9)
763# CHECK-BE: lwl  $8, 0($9)         # encoding: [0x89,0x28,0x00,0x00]
764# CHECK-BE: lwr  $8, 3($9)         # encoding: [0x99,0x28,0x00,0x03]
765# CHECK-LE: lwl  $8, 3($9)         # encoding: [0x03,0x00,0x28,0x89]
766# CHECK-LE: lwr  $8, 0($9)         # encoding: [0x00,0x00,0x28,0x99]
767
768  ulw $8, 2($9)
769# CHECK-BE: lwl  $8, 2($9)         # encoding: [0x89,0x28,0x00,0x02]
770# CHECK-BE: lwr  $8, 5($9)         # encoding: [0x99,0x28,0x00,0x05]
771# CHECK-LE: lwl  $8, 5($9)         # encoding: [0x05,0x00,0x28,0x89]
772# CHECK-LE: lwr  $8, 2($9)         # encoding: [0x02,0x00,0x28,0x99]
773
774  ulw $8, 0x8000($9)
775# CHECK-BE: ori  $1, $zero, 32768  # encoding: [0x34,0x01,0x80,0x00]
776# CHECK-BE: addu $1, $1, $9        # encoding: [0x00,0x29,0x08,0x21]
777# CHECK-BE: lwl  $8, 0($1)         # encoding: [0x88,0x28,0x00,0x00]
778# CHECK-BE: lwr  $8, 3($1)         # encoding: [0x98,0x28,0x00,0x03]
779# CHECK-LE: ori  $1, $zero, 32768  # encoding: [0x00,0x80,0x01,0x34]
780# CHECK-LE: addu $1, $1, $9        # encoding: [0x21,0x08,0x29,0x00]
781# CHECK-LE: lwl  $8, 3($1)         # encoding: [0x03,0x00,0x28,0x88]
782# CHECK-LE: lwr  $8, 0($1)         # encoding: [0x00,0x00,0x28,0x98]
783
784  ulw $8, -0x8000($9)
785# CHECK-BE: lwl  $8, -32768($9)    # encoding: [0x89,0x28,0x80,0x00]
786# CHECK-BE: lwr  $8, -32765($9)    # encoding: [0x99,0x28,0x80,0x03]
787# CHECK-LE: lwl  $8, -32765($9)    # encoding: [0x03,0x80,0x28,0x89]
788# CHECK-LE: lwr  $8, -32768($9)    # encoding: [0x00,0x80,0x28,0x99]
789
790  ulw $8, 0x10000($9)
791# CHECK-BE: lui  $1, 1             # encoding: [0x3c,0x01,0x00,0x01]
792# CHECK-BE: addu $1, $1, $9        # encoding: [0x00,0x29,0x08,0x21]
793# CHECK-BE: lwl  $8, 0($1)         # encoding: [0x88,0x28,0x00,0x00]
794# CHECK-BE: lwr  $8, 3($1)         # encoding: [0x98,0x28,0x00,0x03]
795# CHECK-LE: lui  $1, 1             # encoding: [0x01,0x00,0x01,0x3c]
796# CHECK-LE: addu $1, $1, $9        # encoding: [0x21,0x08,0x29,0x00]
797# CHECK-LE: lwl  $8, 3($1)         # encoding: [0x03,0x00,0x28,0x88]
798# CHECK-LE: lwr  $8, 0($1)         # encoding: [0x00,0x00,0x28,0x98]
799
800  ulw $8, 0x18888($9)
801# CHECK-BE: lui  $1, 1             # encoding: [0x3c,0x01,0x00,0x01]
802# CHECK-BE: ori  $1, $1, 34952     # encoding: [0x34,0x21,0x88,0x88]
803# CHECK-BE: addu $1, $1, $9        # encoding: [0x00,0x29,0x08,0x21]
804# CHECK-BE: lwl  $8, 0($1)         # encoding: [0x88,0x28,0x00,0x00]
805# CHECK-BE: lwr  $8, 3($1)         # encoding: [0x98,0x28,0x00,0x03]
806# CHECK-LE: lui  $1, 1             # encoding: [0x01,0x00,0x01,0x3c]
807# CHECK-LE: ori  $1, $1, 34952     # encoding: [0x88,0x88,0x21,0x34]
808# CHECK-LE: addu $1, $1, $9        # encoding: [0x21,0x08,0x29,0x00]
809# CHECK-LE: lwl  $8, 3($1)         # encoding: [0x03,0x00,0x28,0x88]
810# CHECK-LE: lwr  $8, 0($1)         # encoding: [0x00,0x00,0x28,0x98]
811
812  ulw $8, -32771($9)
813# CHECK-BE: lui  $1, 65535         # encoding: [0x3c,0x01,0xff,0xff]
814# CHECK-BE: ori  $1, $1, 32765     # encoding: [0x34,0x21,0x7f,0xfd]
815# CHECK-BE: addu $1, $1, $9        # encoding: [0x00,0x29,0x08,0x21]
816# CHECK-BE: lwl  $8, 0($1)         # encoding: [0x88,0x28,0x00,0x00]
817# CHECK-BE: lwr  $8, 3($1)         # encoding: [0x98,0x28,0x00,0x03]
818# CHECK-LE: lui  $1, 65535         # encoding: [0xff,0xff,0x01,0x3c]
819# CHECK-LE: ori  $1, $1, 32765     # encoding: [0xfd,0x7f,0x21,0x34]
820# CHECK-LE: addu $1, $1, $9        # encoding: [0x21,0x08,0x29,0x00]
821# CHECK-LE: lwl  $8, 3($1)         # encoding: [0x03,0x00,0x28,0x88]
822# CHECK-LE: lwr  $8, 0($1)         # encoding: [0x00,0x00,0x28,0x98]
823
824  ulw $8, 32765($9)
825# CHECK-BE: addiu $1, $9, 32765    # encoding: [0x25,0x21,0x7f,0xfd]
826# CHECK-BE: lwl  $8, 0($1)         # encoding: [0x88,0x28,0x00,0x00]
827# CHECK-BE: lwr  $8, 3($1)         # encoding: [0x98,0x28,0x00,0x03]
828# CHECK-LE: addiu $1, $9, 32765    # encoding: [0xfd,0x7f,0x21,0x25]
829# CHECK-LE: lwl  $8, 3($1)         # encoding: [0x03,0x00,0x28,0x88]
830# CHECK-LE: lwr  $8, 0($1)         # encoding: [0x00,0x00,0x28,0x98]
831
832  ulw $8, 0($8)
833# CHECK-BE: lwl $1, 0($8)          # encoding: [0x89,0x01,0x00,0x00]
834# CHECK-BE: lwr $1, 3($8)          # encoding: [0x99,0x01,0x00,0x03]
835# CHECK-BE: move $8, $1            # encoding: [0x00,0x20,0x40,0x25]
836# CHECK-LE: lwl $1, 3($8)          # encoding: [0x03,0x00,0x01,0x89]
837# CHECK-LE: lwr $1, 0($8)          # encoding: [0x00,0x00,0x01,0x99]
838# CHECK-LE: move $8, $1            # encoding: [0x25,0x40,0x20,0x00]
839
840  ulw $8, 2($8)
841# CHECK-BE: lwl $1, 2($8)          # encoding: [0x89,0x01,0x00,0x02]
842# CHECK-BE: lwr $1, 5($8)          # encoding: [0x99,0x01,0x00,0x05]
843# CHECK-BE: move $8, $1            # encoding: [0x00,0x20,0x40,0x25]
844# CHECK-LE: lwl $1, 5($8)          # encoding: [0x05,0x00,0x01,0x89]
845# CHECK-LE: lwr $1, 2($8)          # encoding: [0x02,0x00,0x01,0x99]
846# CHECK-LE: move $8, $1            # encoding: [0x25,0x40,0x20,0x00]
847
848  ulw $8, 0x8000($8)
849# CHECK-BE: ori $1, $zero, 32768   # encoding: [0x34,0x01,0x80,0x00]
850# CHECK-BE: addu $1, $1, $8        # encoding: [0x00,0x28,0x08,0x21]
851# CHECK-BE: lwl $8, 0($1)          # encoding: [0x88,0x28,0x00,0x00]
852# CHECK-BE: lwr $8, 3($1)          # encoding: [0x98,0x28,0x00,0x03]
853# CHECK-LE: ori $1, $zero, 32768   # encoding: [0x00,0x80,0x01,0x34]
854# CHECK-LE: addu $1, $1, $8        # encoding: [0x21,0x08,0x28,0x00]
855# CHECK-LE: lwl $8, 3($1)          # encoding: [0x03,0x00,0x28,0x88]
856# CHECK-LE: lwr $8, 0($1)          # encoding: [0x00,0x00,0x28,0x98]
857
858  ulw $8, -0x8000($8)
859# CHECK-BE: lwl $1, -32768($8)     # encoding: [0x89,0x01,0x80,0x00]
860# CHECK-BE: lwr $1, -32765($8)     # encoding: [0x99,0x01,0x80,0x03]
861# CHECK-BE: move $8, $1            # encoding: [0x00,0x20,0x40,0x25]
862# CHECK-LE: lwl $1, -32765($8)     # encoding: [0x03,0x80,0x01,0x89]
863# CHECK-LE: lwr $1, -32768($8)     # encoding: [0x00,0x80,0x01,0x99]
864# CHECK-LE: move $8, $1            # encoding: [0x25,0x40,0x20,0x00]
865
866  ulw $8, 0x10000($8)
867# CHECK-BE: lui $1, 1              # encoding: [0x3c,0x01,0x00,0x01]
868# CHECK-BE: addu $1, $1, $8        # encoding: [0x00,0x28,0x08,0x21]
869# CHECK-BE: lwl $8, 0($1)          # encoding: [0x88,0x28,0x00,0x00]
870# CHECK-BE: lwr $8, 3($1)          # encoding: [0x98,0x28,0x00,0x03]
871# CHECK-LE: lui $1, 1              # encoding: [0x01,0x00,0x01,0x3c]
872# CHECK-LE: addu $1, $1, $8        # encoding: [0x21,0x08,0x28,0x00]
873# CHECK-LE: lwl $8, 3($1)          # encoding: [0x03,0x00,0x28,0x88]
874# CHECK-LE: lwr $8, 0($1)          # encoding: [0x00,0x00,0x28,0x98]
875
876  ulw $8, 0x18888($8)
877# CHECK-BE: lui $1, 1              # encoding: [0x3c,0x01,0x00,0x01]
878# CHECK-BE: ori $1, $1, 34952      # encoding: [0x34,0x21,0x88,0x88]
879# CHECK-BE: addu $1, $1, $8        # encoding: [0x00,0x28,0x08,0x21]
880# CHECK-BE: lwl $8, 0($1)          # encoding: [0x88,0x28,0x00,0x00]
881# CHECK-BE: lwr $8, 3($1)          # encoding: [0x98,0x28,0x00,0x03]
882# CHECK-LE: lui $1, 1              # encoding: [0x01,0x00,0x01,0x3c]
883# CHECK-LE: ori $1, $1, 34952      # encoding: [0x88,0x88,0x21,0x34]
884# CHECK-LE: addu $1, $1, $8        # encoding: [0x21,0x08,0x28,0x00]
885# CHECK-LE: lwl $8, 3($1)          # encoding: [0x03,0x00,0x28,0x88]
886# CHECK-LE: lwr $8, 0($1)          # encoding: [0x00,0x00,0x28,0x98]
887
888  ulw $8, -32771($8)
889# CHECK-BE: lui $1, 65535          # encoding: [0x3c,0x01,0xff,0xff]
890# CHECK-BE: ori $1, $1, 32765      # encoding: [0x34,0x21,0x7f,0xfd]
891# CHECK-BE: addu $1, $1, $8        # encoding: [0x00,0x28,0x08,0x21]
892# CHECK-BE: lwl $8, 0($1)          # encoding: [0x88,0x28,0x00,0x00]
893# CHECK-BE: lwr $8, 3($1)          # encoding: [0x98,0x28,0x00,0x03]
894# CHECK-LE: lui $1, 65535          # encoding: [0xff,0xff,0x01,0x3c]
895# CHECK-LE: ori $1, $1, 32765      # encoding: [0xfd,0x7f,0x21,0x34]
896# CHECK-LE: addu $1, $1, $8        # encoding: [0x21,0x08,0x28,0x00]
897# CHECK-LE: lwl $8, 3($1)          # encoding: [0x03,0x00,0x28,0x88]
898# CHECK-LE: lwr $8, 0($1)          # encoding: [0x00,0x00,0x28,0x98]
899
900  ulw $8, 32765($8)
901# CHECK-BE: addiu $1, $8, 32765    # encoding: [0x25,0x01,0x7f,0xfd]
902# CHECK-BE: lwl $8, 0($1)          # encoding: [0x88,0x28,0x00,0x00]
903# CHECK-BE: lwr $8, 3($1)          # encoding: [0x98,0x28,0x00,0x03]
904# CHECK-LE: addiu $1, $8, 32765    # encoding: [0xfd,0x7f,0x01,0x25]
905# CHECK-LE: lwl $8, 3($1)          # encoding: [0x03,0x00,0x28,0x88]
906# CHECK-LE: lwr $8, 0($1)          # encoding: [0x00,0x00,0x28,0x98]
907
908ush_imm: # CHECK-LABEL: ush_imm
909  ush $8, 0
910  # CHECK-BE: sb        $8, 1($zero)            # encoding: [0xa0,0x08,0x00,0x01]
911  # CHECK-BE: srl       $1, $8, 8               # encoding: [0x00,0x08,0x0a,0x02]
912  # CHECK-BE: sb        $1, 0($zero)            # encoding: [0xa0,0x01,0x00,0x00]
913  # CHECK-LE: sb        $8, 0($zero)            # encoding: [0x00,0x00,0x08,0xa0]
914  # CHECK-LE: srl       $1, $8, 8               # encoding: [0x02,0x0a,0x08,0x00]
915  # CHECK-LE: sb        $1, 1($zero)            # encoding: [0x01,0x00,0x01,0xa0]
916
917  ush $8, 2
918  # CHECK-BE: sb        $8, 3($zero)            # encoding: [0xa0,0x08,0x00,0x03]
919  # CHECK-BE: srl       $1, $8, 8               # encoding: [0x00,0x08,0x0a,0x02]
920  # CHECK-BE: sb        $1, 2($zero)            # encoding: [0xa0,0x01,0x00,0x02]
921  # CHECK-LE: sb        $8, 2($zero)            # encoding: [0x02,0x00,0x08,0xa0]
922  # CHECK-LE: srl       $1, $8, 8               # encoding: [0x02,0x0a,0x08,0x00]
923  # CHECK-LE: sb        $1, 3($zero)            # encoding: [0x03,0x00,0x01,0xa0]
924
925  # FIXME: Remove the identity moves (move $1, $1) coming from loadImmediate
926  ush $8, 0x8000
927  # CHECK-BE: ori       $1, $zero, 32768        # encoding: [0x34,0x01,0x80,0x00]
928  # CHECK-BE: move      $1, $1                  # encoding: [0x00,0x20,0x08,0x21]
929  # CHECK-BE: sb        $8, 1($1)               # encoding: [0xa0,0x28,0x00,0x01]
930  # CHECK-BE: srl       $8, $8, 8               # encoding: [0x00,0x08,0x42,0x02]
931  # CHECK-BE: sb        $8, 0($1)               # encoding: [0xa0,0x28,0x00,0x00]
932  # CHECK-BE: lbu       $1, 0($1)               # encoding: [0x90,0x21,0x00,0x00]
933  # CHECK-BE: sll       $8, $8, 8               # encoding: [0x00,0x08,0x42,0x00]
934  # CHECK-BE: or        $8, $8, $1              # encoding: [0x01,0x01,0x40,0x25]
935  # CHECK-LE: ori       $1, $zero, 32768        # encoding: [0x00,0x80,0x01,0x34]
936  # CHECK-LE: move      $1, $1                  # encoding: [0x21,0x08,0x20,0x00]
937  # CHECK-LE: sb        $8, 0($1)               # encoding: [0x00,0x00,0x28,0xa0]
938  # CHECK-LE: srl       $8, $8, 8               # encoding: [0x02,0x42,0x08,0x00]
939  # CHECK-LE: sb        $8, 1($1)               # encoding: [0x01,0x00,0x28,0xa0]
940  # CHECK-LE: lbu       $1, 0($1)               # encoding: [0x00,0x00,0x21,0x90]
941  # CHECK-LE: sll       $8, $8, 8               # encoding: [0x00,0x42,0x08,0x00]
942  # CHECK-LE: or        $8, $8, $1              # encoding: [0x25,0x40,0x01,0x01]
943
944  ush $8, -0x8000
945  # CHECK-BE: sb        $8, -32767($zero)       # encoding: [0xa0,0x08,0x80,0x01]
946  # CHECK-BE: srl       $1, $8, 8               # encoding: [0x00,0x08,0x0a,0x02]
947  # CHECK-BE: sb        $1, -32768($zero)       # encoding: [0xa0,0x01,0x80,0x00]
948  # CHECK-LE: sb        $8, -32768($zero)       # encoding: [0x00,0x80,0x08,0xa0]
949  # CHECK-LE: srl       $1, $8, 8               # encoding: [0x02,0x0a,0x08,0x00]
950  # CHECK-LE: sb        $1, -32767($zero)       # encoding: [0x01,0x80,0x01,0xa0]
951
952  # FIXME: Remove the identity moves (move $1, $1) coming from loadImmediate
953  ush $8, 0x10000
954  # CHECK-BE: lui       $1, 1                   # encoding: [0x3c,0x01,0x00,0x01]
955  # CHECK-BE: move      $1, $1                  # encoding: [0x00,0x20,0x08,0x21]
956  # CHECK-BE: sb        $8, 1($1)               # encoding: [0xa0,0x28,0x00,0x01]
957  # CHECK-BE: srl       $8, $8, 8               # encoding: [0x00,0x08,0x42,0x02]
958  # CHECK-BE: sb        $8, 0($1)               # encoding: [0xa0,0x28,0x00,0x00]
959  # CHECK-BE: lbu       $1, 0($1)               # encoding: [0x90,0x21,0x00,0x00]
960  # CHECK-BE: sll       $8, $8, 8               # encoding: [0x00,0x08,0x42,0x00]
961  # CHECK-BE: or        $8, $8, $1              # encoding: [0x01,0x01,0x40,0x25]
962  # CHECK-LE: lui       $1, 1                   # encoding: [0x01,0x00,0x01,0x3c]
963  # CHECK-LE: move      $1, $1                  # encoding: [0x21,0x08,0x20,0x00]
964  # CHECK-LE: sb        $8, 0($1)               # encoding: [0x00,0x00,0x28,0xa0]
965  # CHECK-LE: srl       $8, $8, 8               # encoding: [0x02,0x42,0x08,0x00]
966  # CHECK-LE: sb        $8, 1($1)               # encoding: [0x01,0x00,0x28,0xa0]
967  # CHECK-LE: lbu       $1, 0($1)               # encoding: [0x00,0x00,0x21,0x90]
968  # CHECK-LE: sll       $8, $8, 8               # encoding: [0x00,0x42,0x08,0x00]
969  # CHECK-LE: or        $8, $8, $1              # encoding: [0x25,0x40,0x01,0x01]
970
971  # FIXME: Remove the identity moves (move $1, $1) coming from loadImmediate
972  ush $8, 0x18888
973  # CHECK-BE: lui       $1, 1                   # encoding: [0x3c,0x01,0x00,0x01]
974  # CHECK-BE: ori       $1, $1, 34952           # encoding: [0x34,0x21,0x88,0x88]
975  # CHECK-BE: move      $1, $1                  # encoding: [0x00,0x20,0x08,0x21]
976  # CHECK-BE: sb        $8, 1($1)               # encoding: [0xa0,0x28,0x00,0x01]
977  # CHECK-BE: srl       $8, $8, 8               # encoding: [0x00,0x08,0x42,0x02]
978  # CHECK-BE: sb        $8, 0($1)               # encoding: [0xa0,0x28,0x00,0x00]
979  # CHECK-BE: lbu       $1, 0($1)               # encoding: [0x90,0x21,0x00,0x00]
980  # CHECK-BE: sll       $8, $8, 8               # encoding: [0x00,0x08,0x42,0x00]
981  # CHECK-BE: or        $8, $8, $1              # encoding: [0x01,0x01,0x40,0x25]
982  # CHECK-LE: lui       $1, 1                   # encoding: [0x01,0x00,0x01,0x3c]
983  # CHECK-LE: ori       $1, $1, 34952           # encoding: [0x88,0x88,0x21,0x34]
984  # CHECK-LE: move      $1, $1                  # encoding: [0x21,0x08,0x20,0x00]
985  # CHECK-LE: sb        $8, 0($1)               # encoding: [0x00,0x00,0x28,0xa0]
986  # CHECK-LE: srl       $8, $8, 8               # encoding: [0x02,0x42,0x08,0x00]
987  # CHECK-LE: sb        $8, 1($1)               # encoding: [0x01,0x00,0x28,0xa0]
988  # CHECK-LE: lbu       $1, 0($1)               # encoding: [0x00,0x00,0x21,0x90]
989  # CHECK-LE: sll       $8, $8, 8               # encoding: [0x00,0x42,0x08,0x00]
990  # CHECK-LE: or        $8, $8, $1              # encoding: [0x25,0x40,0x01,0x01]
991
992  # FIXME: Remove the identity moves (move $1, $1) coming from loadImmediate
993  ush $8, -32769
994  # CHECK-BE: lui       $1, 65535               # encoding: [0x3c,0x01,0xff,0xff]
995  # CHECK-BE: ori       $1, $1, 32767           # encoding: [0x34,0x21,0x7f,0xff]
996  # CHECK-BE: move      $1, $1                  # encoding: [0x00,0x20,0x08,0x21]
997  # CHECK-BE: sb        $8, 1($1)               # encoding: [0xa0,0x28,0x00,0x01]
998  # CHECK-BE: srl       $8, $8, 8               # encoding: [0x00,0x08,0x42,0x02]
999  # CHECK-BE: sb        $8, 0($1)               # encoding: [0xa0,0x28,0x00,0x00]
1000  # CHECK-BE: lbu       $1, 0($1)               # encoding: [0x90,0x21,0x00,0x00]
1001  # CHECK-BE: sll       $8, $8, 8               # encoding: [0x00,0x08,0x42,0x00]
1002  # CHECK-BE: or        $8, $8, $1              # encoding: [0x01,0x01,0x40,0x25]
1003  # CHECK-LE: lui       $1, 65535               # encoding: [0xff,0xff,0x01,0x3c]
1004  # CHECK-LE: ori       $1, $1, 32767           # encoding: [0xff,0x7f,0x21,0x34]
1005  # CHECK-LE: move      $1, $1                  # encoding: [0x21,0x08,0x20,0x00]
1006  # CHECK-LE: sb        $8, 0($1)               # encoding: [0x00,0x00,0x28,0xa0]
1007  # CHECK-LE: srl       $8, $8, 8               # encoding: [0x02,0x42,0x08,0x00]
1008  # CHECK-LE: sb        $8, 1($1)               # encoding: [0x01,0x00,0x28,0xa0]
1009  # CHECK-LE: lbu       $1, 0($1)               # encoding: [0x00,0x00,0x21,0x90]
1010  # CHECK-LE: sll       $8, $8, 8               # encoding: [0x00,0x42,0x08,0x00]
1011  # CHECK-LE: or        $8, $8, $1              # encoding: [0x25,0x40,0x01,0x01]
1012
1013  ush $8, 32767
1014  # CHECK-BE: addiu     $1, $zero, 32767        # encoding: [0x24,0x01,0x7f,0xff]
1015  # CHECK-BE: sb        $8, 1($1)               # encoding: [0xa0,0x28,0x00,0x01]
1016  # CHECK-BE: srl       $8, $8, 8               # encoding: [0x00,0x08,0x42,0x02]
1017  # CHECK-BE: sb        $8, 0($1)               # encoding: [0xa0,0x28,0x00,0x00]
1018  # CHECK-BE: lbu       $1, 0($1)               # encoding: [0x90,0x21,0x00,0x00]
1019  # CHECK-BE: sll       $8, $8, 8               # encoding: [0x00,0x08,0x42,0x00]
1020  # CHECK-BE: or        $8, $8, $1              # encoding: [0x01,0x01,0x40,0x25]
1021  # CHECK-LE: addiu     $1, $zero, 32767        # encoding: [0xff,0x7f,0x01,0x24]
1022  # CHECK-LE: sb        $8, 0($1)               # encoding: [0x00,0x00,0x28,0xa0]
1023  # CHECK-LE: srl       $8, $8, 8               # encoding: [0x02,0x42,0x08,0x00]
1024  # CHECK-LE: sb        $8, 1($1)               # encoding: [0x01,0x00,0x28,0xa0]
1025  # CHECK-LE: lbu       $1, 0($1)               # encoding: [0x00,0x00,0x21,0x90]
1026  # CHECK-LE: sll       $8, $8, 8               # encoding: [0x00,0x42,0x08,0x00]
1027  # CHECK-LE: or        $8, $8, $1              # encoding: [0x25,0x40,0x01,0x01]
1028
1029ush_reg: # CHECK-LABEL: ush_reg
1030  ush $8, 0($9)
1031  # CHECK-BE: sb        $8, 1($9)               # encoding: [0xa1,0x28,0x00,0x01]
1032  # CHECK-BE: srl       $1, $8, 8               # encoding: [0x00,0x08,0x0a,0x02]
1033  # CHECK-BE: sb        $1, 0($9)               # encoding: [0xa1,0x21,0x00,0x00]
1034  # CHECK-LE: sb        $8, 0($9)               # encoding: [0x00,0x00,0x28,0xa1]
1035  # CHECK-LE: srl       $1, $8, 8               # encoding: [0x02,0x0a,0x08,0x00]
1036  # CHECK-LE: sb        $1, 1($9)               # encoding: [0x01,0x00,0x21,0xa1]
1037
1038  ush $8, 2($9)
1039  # CHECK-BE: sb        $8, 3($9)               # encoding: [0xa1,0x28,0x00,0x03]
1040  # CHECK-BE: srl       $1, $8, 8               # encoding: [0x00,0x08,0x0a,0x02]
1041  # CHECK-BE: sb        $1, 2($9)               # encoding: [0xa1,0x21,0x00,0x02]
1042  # CHECK-LE: sb        $8, 2($9)               # encoding: [0x02,0x00,0x28,0xa1]
1043  # CHECK-LE: srl       $1, $8, 8               # encoding: [0x02,0x0a,0x08,0x00]
1044  # CHECK-LE: sb        $1, 3($9)               # encoding: [0x03,0x00,0x21,0xa1]
1045
1046  ush $8, 0x8000($9)
1047  # CHECK-BE: ori       $1, $zero, 32768        # encoding: [0x34,0x01,0x80,0x00]
1048  # CHECK-BE: addu      $1, $1, $9              # encoding: [0x00,0x29,0x08,0x21]
1049  # CHECK-BE: sb        $8, 1($1)               # encoding: [0xa0,0x28,0x00,0x01]
1050  # CHECK-BE: srl       $8, $8, 8               # encoding: [0x00,0x08,0x42,0x02]
1051  # CHECK-BE: sb        $8, 0($1)               # encoding: [0xa0,0x28,0x00,0x00]
1052  # CHECK-BE: lbu       $1, 0($1)               # encoding: [0x90,0x21,0x00,0x00]
1053  # CHECK-BE: sll       $8, $8, 8               # encoding: [0x00,0x08,0x42,0x00]
1054  # CHECK-BE: or        $8, $8, $1              # encoding: [0x01,0x01,0x40,0x25]
1055  # CHECK-LE: ori       $1, $zero, 32768        # encoding: [0x00,0x80,0x01,0x34]
1056  # CHECK-LE: addu      $1, $1, $9              # encoding: [0x21,0x08,0x29,0x00]
1057  # CHECK-LE: sb        $8, 0($1)               # encoding: [0x00,0x00,0x28,0xa0]
1058  # CHECK-LE: srl       $8, $8, 8               # encoding: [0x02,0x42,0x08,0x00]
1059  # CHECK-LE: sb        $8, 1($1)               # encoding: [0x01,0x00,0x28,0xa0]
1060  # CHECK-LE: lbu       $1, 0($1)               # encoding: [0x00,0x00,0x21,0x90]
1061  # CHECK-LE: sll       $8, $8, 8               # encoding: [0x00,0x42,0x08,0x00]
1062  # CHECK-LE: or        $8, $8, $1              # encoding: [0x25,0x40,0x01,0x01]
1063
1064  ush $8, -0x8000($9)
1065  # CHECK-BE: sb        $8, -32767($9)          # encoding: [0xa1,0x28,0x80,0x01]
1066  # CHECK-BE: srl       $1, $8, 8               # encoding: [0x00,0x08,0x0a,0x02]
1067  # CHECK-BE: sb        $1, -32768($9)          # encoding: [0xa1,0x21,0x80,0x00]
1068  # CHECK-LE: sb        $8, -32768($9)          # encoding: [0x00,0x80,0x28,0xa1]
1069  # CHECK-LE: srl       $1, $8, 8               # encoding: [0x02,0x0a,0x08,0x00]
1070  # CHECK-LE: sb        $1, -32767($9)          # encoding: [0x01,0x80,0x21,0xa1]
1071
1072  ush $8, 0x10000($9)
1073  # CHECK-BE: lui       $1, 1                   # encoding: [0x3c,0x01,0x00,0x01]
1074  # CHECK-BE: addu      $1, $1, $9              # encoding: [0x00,0x29,0x08,0x21]
1075  # CHECK-BE: sb        $8, 1($1)               # encoding: [0xa0,0x28,0x00,0x01]
1076  # CHECK-BE: srl       $8, $8, 8               # encoding: [0x00,0x08,0x42,0x02]
1077  # CHECK-BE: sb        $8, 0($1)               # encoding: [0xa0,0x28,0x00,0x00]
1078  # CHECK-BE: lbu       $1, 0($1)               # encoding: [0x90,0x21,0x00,0x00]
1079  # CHECK-BE: sll       $8, $8, 8               # encoding: [0x00,0x08,0x42,0x00]
1080  # CHECK-BE: or        $8, $8, $1              # encoding: [0x01,0x01,0x40,0x25]
1081  # CHECK-LE: lui       $1, 1                   # encoding: [0x01,0x00,0x01,0x3c]
1082  # CHECK-LE: addu      $1, $1, $9              # encoding: [0x21,0x08,0x29,0x00]
1083  # CHECK-LE: sb        $8, 0($1)               # encoding: [0x00,0x00,0x28,0xa0]
1084  # CHECK-LE: srl       $8, $8, 8               # encoding: [0x02,0x42,0x08,0x00]
1085  # CHECK-LE: sb        $8, 1($1)               # encoding: [0x01,0x00,0x28,0xa0]
1086  # CHECK-LE: lbu       $1, 0($1)               # encoding: [0x00,0x00,0x21,0x90]
1087  # CHECK-LE: sll       $8, $8, 8               # encoding: [0x00,0x42,0x08,0x00]
1088  # CHECK-LE: or        $8, $8, $1              # encoding: [0x25,0x40,0x01,0x01]
1089
1090  ush $8, 0x18888($9)
1091  # CHECK-BE: lui       $1, 1                   # encoding: [0x3c,0x01,0x00,0x01]
1092  # CHECK-BE: ori       $1, $1, 34952           # encoding: [0x34,0x21,0x88,0x88]
1093  # CHECK-BE: addu      $1, $1, $9              # encoding: [0x00,0x29,0x08,0x21]
1094  # CHECK-BE: sb        $8, 1($1)               # encoding: [0xa0,0x28,0x00,0x01]
1095  # CHECK-BE: srl       $8, $8, 8               # encoding: [0x00,0x08,0x42,0x02]
1096  # CHECK-BE: sb        $8, 0($1)               # encoding: [0xa0,0x28,0x00,0x00]
1097  # CHECK-BE: lbu       $1, 0($1)               # encoding: [0x90,0x21,0x00,0x00]
1098  # CHECK-BE: sll       $8, $8, 8               # encoding: [0x00,0x08,0x42,0x00]
1099  # CHECK-BE: or        $8, $8, $1              # encoding: [0x01,0x01,0x40,0x25]
1100  # CHECK-LE: lui       $1, 1                   # encoding: [0x01,0x00,0x01,0x3c]
1101  # CHECK-LE: ori       $1, $1, 34952           # encoding: [0x88,0x88,0x21,0x34]
1102  # CHECK-LE: addu      $1, $1, $9              # encoding: [0x21,0x08,0x29,0x00]
1103  # CHECK-LE: sb        $8, 0($1)               # encoding: [0x00,0x00,0x28,0xa0]
1104  # CHECK-LE: srl       $8, $8, 8               # encoding: [0x02,0x42,0x08,0x00]
1105  # CHECK-LE: sb        $8, 1($1)               # encoding: [0x01,0x00,0x28,0xa0]
1106  # CHECK-LE: lbu       $1, 0($1)               # encoding: [0x00,0x00,0x21,0x90]
1107  # CHECK-LE: sll       $8, $8, 8               # encoding: [0x00,0x42,0x08,0x00]
1108  # CHECK-LE: or        $8, $8, $1              # encoding: [0x25,0x40,0x01,0x01]
1109
1110  ush $8, -32769($9)
1111  # CHECK-BE: lui       $1, 65535               # encoding: [0x3c,0x01,0xff,0xff]
1112  # CHECK-BE: ori       $1, $1, 32767           # encoding: [0x34,0x21,0x7f,0xff]
1113  # CHECK-BE: addu      $1, $1, $9              # encoding: [0x00,0x29,0x08,0x21]
1114  # CHECK-BE: sb        $8, 1($1)               # encoding: [0xa0,0x28,0x00,0x01]
1115  # CHECK-BE: srl       $8, $8, 8               # encoding: [0x00,0x08,0x42,0x02]
1116  # CHECK-BE: sb        $8, 0($1)               # encoding: [0xa0,0x28,0x00,0x00]
1117  # CHECK-BE: lbu       $1, 0($1)               # encoding: [0x90,0x21,0x00,0x00]
1118  # CHECK-BE: sll       $8, $8, 8               # encoding: [0x00,0x08,0x42,0x00]
1119  # CHECK-BE: or        $8, $8, $1              # encoding: [0x01,0x01,0x40,0x25]
1120  # CHECK-LE: lui       $1, 65535               # encoding: [0xff,0xff,0x01,0x3c]
1121  # CHECK-LE: ori       $1, $1, 32767           # encoding: [0xff,0x7f,0x21,0x34]
1122  # CHECK-LE: addu      $1, $1, $9              # encoding: [0x21,0x08,0x29,0x00]
1123  # CHECK-LE: sb        $8, 0($1)               # encoding: [0x00,0x00,0x28,0xa0]
1124  # CHECK-LE: srl       $8, $8, 8               # encoding: [0x02,0x42,0x08,0x00]
1125  # CHECK-LE: sb        $8, 1($1)               # encoding: [0x01,0x00,0x28,0xa0]
1126  # CHECK-LE: lbu       $1, 0($1)               # encoding: [0x00,0x00,0x21,0x90]
1127  # CHECK-LE: sll       $8, $8, 8               # encoding: [0x00,0x42,0x08,0x00]
1128  # CHECK-LE: or        $8, $8, $1              # encoding: [0x25,0x40,0x01,0x01]
1129
1130  ush $8, 32767($9)
1131  # CHECK-BE: addiu     $1, $9, 32767           # encoding: [0x25,0x21,0x7f,0xff]
1132  # CHECK-BE: sb        $8, 1($1)               # encoding: [0xa0,0x28,0x00,0x01]
1133  # CHECK-BE: srl       $8, $8, 8               # encoding: [0x00,0x08,0x42,0x02]
1134  # CHECK-BE: sb        $8, 0($1)               # encoding: [0xa0,0x28,0x00,0x00]
1135  # CHECK-BE: lbu       $1, 0($1)               # encoding: [0x90,0x21,0x00,0x00]
1136  # CHECK-BE: sll       $8, $8, 8               # encoding: [0x00,0x08,0x42,0x00]
1137  # CHECK-BE: or        $8, $8, $1              # encoding: [0x01,0x01,0x40,0x25]
1138  # CHECK-LE: addiu     $1, $9, 32767           # encoding: [0xff,0x7f,0x21,0x25]
1139  # CHECK-LE: sb        $8, 0($1)               # encoding: [0x00,0x00,0x28,0xa0]
1140  # CHECK-LE: srl       $8, $8, 8               # encoding: [0x02,0x42,0x08,0x00]
1141  # CHECK-LE: sb        $8, 1($1)               # encoding: [0x01,0x00,0x28,0xa0]
1142  # CHECK-LE: lbu       $1, 0($1)               # encoding: [0x00,0x00,0x21,0x90]
1143  # CHECK-LE: sll       $8, $8, 8               # encoding: [0x00,0x42,0x08,0x00]
1144  # CHECK-LE: or        $8, $8, $1              # encoding: [0x25,0x40,0x01,0x01]
1145
1146  ush $8, 0($8)
1147  # CHECK-BE: sb        $8, 1($8)               # encoding: [0xa1,0x08,0x00,0x01]
1148  # CHECK-BE: srl       $1, $8, 8               # encoding: [0x00,0x08,0x0a,0x02]
1149  # CHECK-BE: sb        $1, 0($8)               # encoding: [0xa1,0x01,0x00,0x00]
1150  # CHECK-LE: sb        $8, 0($8)               # encoding: [0x00,0x00,0x08,0xa1]
1151  # CHECK-LE: srl       $1, $8, 8               # encoding: [0x02,0x0a,0x08,0x00]
1152  # CHECK-LE: sb        $1, 1($8)               # encoding: [0x01,0x00,0x01,0xa1]
1153
1154  ush $8, 2($8)
1155  # CHECK-BE: sb        $8, 3($8)               # encoding: [0xa1,0x08,0x00,0x03]
1156  # CHECK-BE: srl       $1, $8, 8               # encoding: [0x00,0x08,0x0a,0x02]
1157  # CHECK-BE: sb        $1, 2($8)               # encoding: [0xa1,0x01,0x00,0x02]
1158  # CHECK-LE: sb        $8, 2($8)               # encoding: [0x02,0x00,0x08,0xa1]
1159  # CHECK-LE: srl       $1, $8, 8               # encoding: [0x02,0x0a,0x08,0x00]
1160  # CHECK-LE: sb        $1, 3($8)               # encoding: [0x03,0x00,0x01,0xa1]
1161
1162  ush $8, 0x8000($8)
1163  # CHECK-BE: ori       $1, $zero, 32768        # encoding: [0x34,0x01,0x80,0x00]
1164  # CHECK-BE: addu      $1, $1, $8              # encoding: [0x00,0x28,0x08,0x21]
1165  # CHECK-BE: sb        $8, 1($1)               # encoding: [0xa0,0x28,0x00,0x01]
1166  # CHECK-BE: srl       $8, $8, 8               # encoding: [0x00,0x08,0x42,0x02]
1167  # CHECK-BE: sb        $8, 0($1)               # encoding: [0xa0,0x28,0x00,0x00]
1168  # CHECK-BE: lbu       $1, 0($1)               # encoding: [0x90,0x21,0x00,0x00]
1169  # CHECK-BE: sll       $8, $8, 8               # encoding: [0x00,0x08,0x42,0x00]
1170  # CHECK-BE: or        $8, $8, $1              # encoding: [0x01,0x01,0x40,0x25]
1171  # CHECK-LE: ori       $1, $zero, 32768        # encoding: [0x00,0x80,0x01,0x34]
1172  # CHECK-LE: addu      $1, $1, $8              # encoding: [0x21,0x08,0x28,0x00]
1173  # CHECK-LE: sb        $8, 0($1)               # encoding: [0x00,0x00,0x28,0xa0]
1174  # CHECK-LE: srl       $8, $8, 8               # encoding: [0x02,0x42,0x08,0x00]
1175  # CHECK-LE: sb        $8, 1($1)               # encoding: [0x01,0x00,0x28,0xa0]
1176  # CHECK-LE: lbu       $1, 0($1)               # encoding: [0x00,0x00,0x21,0x90]
1177  # CHECK-LE: sll       $8, $8, 8               # encoding: [0x00,0x42,0x08,0x00]
1178  # CHECK-LE: or        $8, $8, $1              # encoding: [0x25,0x40,0x01,0x01]
1179
1180  ush $8, -0x8000($8)
1181  # CHECK-BE: sb        $8, -32767($8)          # encoding: [0xa1,0x08,0x80,0x01]
1182  # CHECK-BE: srl       $1, $8, 8               # encoding: [0x00,0x08,0x0a,0x02]
1183  # CHECK-BE: sb        $1, -32768($8)          # encoding: [0xa1,0x01,0x80,0x00]
1184  # CHECK-LE: sb        $8, -32768($8)          # encoding: [0x00,0x80,0x08,0xa1]
1185  # CHECK-LE: srl       $1, $8, 8               # encoding: [0x02,0x0a,0x08,0x00]
1186  # CHECK-LE: sb        $1, -32767($8)          # encoding: [0x01,0x80,0x01,0xa1]
1187
1188  ush $8, 0x10000($8)
1189  # CHECK-BE: lui       $1, 1                   # encoding: [0x3c,0x01,0x00,0x01]
1190  # CHECK-BE: addu      $1, $1, $8              # encoding: [0x00,0x28,0x08,0x21]
1191  # CHECK-BE: sb        $8, 1($1)               # encoding: [0xa0,0x28,0x00,0x01]
1192  # CHECK-BE: srl       $8, $8, 8               # encoding: [0x00,0x08,0x42,0x02]
1193  # CHECK-BE: sb        $8, 0($1)               # encoding: [0xa0,0x28,0x00,0x00]
1194  # CHECK-BE: lbu       $1, 0($1)               # encoding: [0x90,0x21,0x00,0x00]
1195  # CHECK-BE: sll       $8, $8, 8               # encoding: [0x00,0x08,0x42,0x00]
1196  # CHECK-BE: or        $8, $8, $1              # encoding: [0x01,0x01,0x40,0x25]
1197  # CHECK-LE: lui       $1, 1                   # encoding: [0x01,0x00,0x01,0x3c]
1198  # CHECK-LE: addu      $1, $1, $8              # encoding: [0x21,0x08,0x28,0x00]
1199  # CHECK-LE: sb        $8, 0($1)               # encoding: [0x00,0x00,0x28,0xa0]
1200  # CHECK-LE: srl       $8, $8, 8               # encoding: [0x02,0x42,0x08,0x00]
1201  # CHECK-LE: sb        $8, 1($1)               # encoding: [0x01,0x00,0x28,0xa0]
1202  # CHECK-LE: lbu       $1, 0($1)               # encoding: [0x00,0x00,0x21,0x90]
1203  # CHECK-LE: sll       $8, $8, 8               # encoding: [0x00,0x42,0x08,0x00]
1204  # CHECK-LE: or        $8, $8, $1              # encoding: [0x25,0x40,0x01,0x01]
1205
1206  ush $8, 0x18888($8)
1207  # CHECK-BE: lui       $1, 1                   # encoding: [0x3c,0x01,0x00,0x01]
1208  # CHECK-BE: ori       $1, $1, 34952           # encoding: [0x34,0x21,0x88,0x88]
1209  # CHECK-BE: addu      $1, $1, $8              # encoding: [0x00,0x28,0x08,0x21]
1210  # CHECK-BE: sb        $8, 1($1)               # encoding: [0xa0,0x28,0x00,0x01]
1211  # CHECK-BE: srl       $8, $8, 8               # encoding: [0x00,0x08,0x42,0x02]
1212  # CHECK-BE: sb        $8, 0($1)               # encoding: [0xa0,0x28,0x00,0x00]
1213  # CHECK-BE: lbu       $1, 0($1)               # encoding: [0x90,0x21,0x00,0x00]
1214  # CHECK-BE: sll       $8, $8, 8               # encoding: [0x00,0x08,0x42,0x00]
1215  # CHECK-BE: or        $8, $8, $1              # encoding: [0x01,0x01,0x40,0x25]
1216  # CHECK-LE: lui       $1, 1                   # encoding: [0x01,0x00,0x01,0x3c]
1217  # CHECK-LE: ori       $1, $1, 34952           # encoding: [0x88,0x88,0x21,0x34]
1218  # CHECK-LE: addu      $1, $1, $8              # encoding: [0x21,0x08,0x28,0x00]
1219  # CHECK-LE: sb        $8, 0($1)               # encoding: [0x00,0x00,0x28,0xa0]
1220  # CHECK-LE: srl       $8, $8, 8               # encoding: [0x02,0x42,0x08,0x00]
1221  # CHECK-LE: sb        $8, 1($1)               # encoding: [0x01,0x00,0x28,0xa0]
1222  # CHECK-LE: lbu       $1, 0($1)               # encoding: [0x00,0x00,0x21,0x90]
1223  # CHECK-LE: sll       $8, $8, 8               # encoding: [0x00,0x42,0x08,0x00]
1224  # CHECK-LE: or        $8, $8, $1              # encoding: [0x25,0x40,0x01,0x01]
1225
1226  ush $8, -32769($8)
1227  # CHECK-BE: lui       $1, 65535               # encoding: [0x3c,0x01,0xff,0xff]
1228  # CHECK-BE: ori       $1, $1, 32767           # encoding: [0x34,0x21,0x7f,0xff]
1229  # CHECK-BE: addu      $1, $1, $8              # encoding: [0x00,0x28,0x08,0x21]
1230  # CHECK-BE: sb        $8, 1($1)               # encoding: [0xa0,0x28,0x00,0x01]
1231  # CHECK-BE: srl       $8, $8, 8               # encoding: [0x00,0x08,0x42,0x02]
1232  # CHECK-BE: sb        $8, 0($1)               # encoding: [0xa0,0x28,0x00,0x00]
1233  # CHECK-BE: lbu       $1, 0($1)               # encoding: [0x90,0x21,0x00,0x00]
1234  # CHECK-BE: sll       $8, $8, 8               # encoding: [0x00,0x08,0x42,0x00]
1235  # CHECK-BE: or        $8, $8, $1              # encoding: [0x01,0x01,0x40,0x25]
1236  # CHECK-LE: lui       $1, 65535               # encoding: [0xff,0xff,0x01,0x3c]
1237  # CHECK-LE: ori       $1, $1, 32767           # encoding: [0xff,0x7f,0x21,0x34]
1238  # CHECK-LE: addu      $1, $1, $8              # encoding: [0x21,0x08,0x28,0x00]
1239  # CHECK-LE: sb        $8, 0($1)               # encoding: [0x00,0x00,0x28,0xa0]
1240  # CHECK-LE: srl       $8, $8, 8               # encoding: [0x02,0x42,0x08,0x00]
1241  # CHECK-LE: sb        $8, 1($1)               # encoding: [0x01,0x00,0x28,0xa0]
1242  # CHECK-LE: lbu       $1, 0($1)               # encoding: [0x00,0x00,0x21,0x90]
1243  # CHECK-LE: sll       $8, $8, 8               # encoding: [0x00,0x42,0x08,0x00]
1244  # CHECK-LE: or        $8, $8, $1              # encoding: [0x25,0x40,0x01,0x01]
1245
1246  ush $8, 32767($8)
1247  # CHECK-BE: addiu     $1, $8, 32767           # encoding: [0x25,0x01,0x7f,0xff]
1248  # CHECK-BE: sb        $8, 1($1)               # encoding: [0xa0,0x28,0x00,0x01]
1249  # CHECK-BE: srl       $8, $8, 8               # encoding: [0x00,0x08,0x42,0x02]
1250  # CHECK-BE: sb        $8, 0($1)               # encoding: [0xa0,0x28,0x00,0x00]
1251  # CHECK-BE: lbu       $1, 0($1)               # encoding: [0x90,0x21,0x00,0x00]
1252  # CHECK-BE: sll       $8, $8, 8               # encoding: [0x00,0x08,0x42,0x00]
1253  # CHECK-BE: or        $8, $8, $1              # encoding: [0x01,0x01,0x40,0x25]
1254  # CHECK-LE: addiu     $1, $8, 32767           # encoding: [0xff,0x7f,0x01,0x25]
1255  # CHECK-LE: sb        $8, 0($1)               # encoding: [0x00,0x00,0x28,0xa0]
1256  # CHECK-LE: srl       $8, $8, 8               # encoding: [0x02,0x42,0x08,0x00]
1257  # CHECK-LE: sb        $8, 1($1)               # encoding: [0x01,0x00,0x28,0xa0]
1258  # CHECK-LE: lbu       $1, 0($1)               # encoding: [0x00,0x00,0x21,0x90]
1259  # CHECK-LE: sll       $8, $8, 8               # encoding: [0x00,0x42,0x08,0x00]
1260  # CHECK-LE: or        $8, $8, $1              # encoding: [0x25,0x40,0x01,0x01]
1261
1262usw_imm: # CHECK-LABEL: usw_imm:
1263  usw $8, 0
1264  # CHECK-BE:   swl     $8, 0($zero)            # encoding: [0xa8,0x08,0x00,0x00]
1265  # CHECK-BE:   swr     $8, 3($zero)            # encoding: [0xb8,0x08,0x00,0x03]
1266  # CHECK-LE:   swl     $8, 3($zero)            # encoding: [0x03,0x00,0x08,0xa8]
1267  # CHECK-LE:   swr     $8, 0($zero)            # encoding: [0x00,0x00,0x08,0xb8]
1268
1269  usw $8, 2
1270  # CHECK-BE:   swl     $8, 2($zero)            # encoding: [0xa8,0x08,0x00,0x02]
1271  # CHECK-BE:   swr     $8, 5($zero)            # encoding: [0xb8,0x08,0x00,0x05]
1272  # CHECK-LE:   swl     $8, 5($zero)            # encoding: [0x05,0x00,0x08,0xa8]
1273  # CHECK-LE:   swr     $8, 2($zero)            # encoding: [0x02,0x00,0x08,0xb8]
1274
1275  # FIXME: Remove the identity moves (move $1, $1) coming from loadImmediate
1276  usw $8, 0x8000
1277  # CHECK-BE:   ori     $1, $zero, 32768        # encoding: [0x34,0x01,0x80,0x00]
1278  # CHECK-BE:   move     $1, $1                 # encoding: [0x00,0x20,0x08,0x21]
1279  # CHECK-BE:   swl     $8, 0($1)               # encoding: [0xa8,0x28,0x00,0x00]
1280  # CHECK-BE:   swr     $8, 3($1)               # encoding: [0xb8,0x28,0x00,0x03]
1281  # CHECK-LE:   ori     $1, $zero, 32768        # encoding: [0x00,0x80,0x01,0x34]
1282  # CHECK-LE:   move     $1, $1                 # encoding: [0x21,0x08,0x20,0x00]
1283  # CHECK-LE:   swl     $8, 3($1)               # encoding: [0x03,0x00,0x28,0xa8]
1284  # CHECK-LE:   swr     $8, 0($1)               # encoding: [0x00,0x00,0x28,0xb8]
1285
1286  usw $8, -0x8000
1287  # CHECK-BE:   swl     $8, -32768($zero)       # encoding: [0xa8,0x08,0x80,0x00]
1288  # CHECK-BE:   swr     $8, -32765($zero)       # encoding: [0xb8,0x08,0x80,0x03]
1289  # CHECK-LE:   swl     $8, -32765($zero)       # encoding: [0x03,0x80,0x08,0xa8]
1290  # CHECK-LE:   swr     $8, -32768($zero)       # encoding: [0x00,0x80,0x08,0xb8]
1291
1292  # FIXME: Remove the identity moves (move $1, $1) coming from loadImmediate
1293  usw $8, 0x10000
1294  # CHECK-BE:   lui     $1, 1                   # encoding: [0x3c,0x01,0x00,0x01]
1295  # CHECK-BE:   move    $1, $1                  # encoding: [0x00,0x20,0x08,0x21]
1296  # CHECK-BE:   swl     $8, 0($1)               # encoding: [0xa8,0x28,0x00,0x00]
1297  # CHECK-BE:   swr     $8, 3($1)               # encoding: [0xb8,0x28,0x00,0x03]
1298  # CHECK-LE:   lui     $1, 1                   # encoding: [0x01,0x00,0x01,0x3c]
1299  # CHECK-LE:   move    $1, $1                  # encoding: [0x21,0x08,0x20,0x00]
1300  # CHECK-LE:   swl     $8, 3($1)               # encoding: [0x03,0x00,0x28,0xa8]
1301  # CHECK-LE:   swr     $8, 0($1)               # encoding: [0x00,0x00,0x28,0xb8]
1302
1303  # FIXME: Remove the identity moves (move $1, $1) coming from loadImmediate
1304  usw $8, 0x18888
1305  # CHECK-BE:   lui     $1, 1                   # encoding: [0x3c,0x01,0x00,0x01]
1306  # CHECK-BE:   ori     $1, $1, 34952           # encoding: [0x34,0x21,0x88,0x88]
1307  # CHECK-BE:   move    $1, $1                  # encoding: [0x00,0x20,0x08,0x21]
1308  # CHECK-BE:   swl     $8, 0($1)               # encoding: [0xa8,0x28,0x00,0x00]
1309  # CHECK-BE:   swr     $8, 3($1)               # encoding: [0xb8,0x28,0x00,0x03]
1310  # CHECK-LE:   lui     $1, 1                   # encoding: [0x01,0x00,0x01,0x3c]
1311  # CHECK-LE:   ori     $1, $1, 34952           # encoding: [0x88,0x88,0x21,0x34]
1312  # CHECK-LE:   move    $1, $1                  # encoding: [0x21,0x08,0x20,0x00]
1313  # CHECK-LE:   swl     $8, 3($1)               # encoding: [0x03,0x00,0x28,0xa8]
1314  # CHECK-LE:   swr     $8, 0($1)               # encoding: [0x00,0x00,0x28,0xb8]
1315
1316  # FIXME: Remove the identity moves (move $1, $1) coming from loadImmediate
1317  usw $8, -32769
1318  # CHECK-BE:   lui     $1, 65535               # encoding: [0x3c,0x01,0xff,0xff]
1319  # CHECK-BE:   ori     $1, $1, 32767           # encoding: [0x34,0x21,0x7f,0xff]
1320  # CHECK-BE:   move    $1, $1                  # encoding: [0x00,0x20,0x08,0x21]
1321  # CHECK-BE:   swl     $8, 0($1)               # encoding: [0xa8,0x28,0x00,0x00]
1322  # CHECK-BE:   swr     $8, 3($1)               # encoding: [0xb8,0x28,0x00,0x03]
1323  # CHECK-LE:   lui     $1, 65535               # encoding: [0xff,0xff,0x01,0x3c]
1324  # CHECK-LE:   ori     $1, $1, 32767           # encoding: [0xff,0x7f,0x21,0x34]
1325  # CHECK-LE:   move    $1, $1                  # encoding: [0x21,0x08,0x20,0x00]
1326  # CHECK-LE:   swl     $8, 3($1)               # encoding: [0x03,0x00,0x28,0xa8]
1327  # CHECK-LE:   swr     $8, 0($1)               # encoding: [0x00,0x00,0x28,0xb8]
1328
1329  usw $8, 32767
1330  # CHECK-BE:   addiu   $1, $zero, 32767        # encoding: [0x24,0x01,0x7f,0xff]
1331  # CHECK-BE:   swl     $8, 0($1)               # encoding: [0xa8,0x28,0x00,0x00]
1332  # CHECK-BE:   swr     $8, 3($1)               # encoding: [0xb8,0x28,0x00,0x03]
1333  # CHECK-LE:   addiu   $1, $zero, 32767        # encoding: [0xff,0x7f,0x01,0x24]
1334  # CHECK-LE:   swl     $8, 3($1)               # encoding: [0x03,0x00,0x28,0xa8]
1335  # CHECK-LE:   swr     $8, 0($1)               # encoding: [0x00,0x00,0x28,0xb8]
1336
1337usw_reg: # CHECK-LABEL: usw_reg:
1338  usw $8, 0($9)
1339  # CHECK-BE:   swl     $8, 0($9)               # encoding: [0xa9,0x28,0x00,0x00]
1340  # CHECK-BE:   swr     $8, 3($9)               # encoding: [0xb9,0x28,0x00,0x03]
1341  # CHECK-LE:   swl     $8, 3($9)               # encoding: [0x03,0x00,0x28,0xa9]
1342  # CHECK-LE:   swr     $8, 0($9)               # encoding: [0x00,0x00,0x28,0xb9]
1343
1344  usw $8, 2($9)
1345  # CHECK-BE:   swl     $8, 2($9)               # encoding: [0xa9,0x28,0x00,0x02]
1346  # CHECK-BE:   swr     $8, 5($9)               # encoding: [0xb9,0x28,0x00,0x05]
1347  # CHECK-LE:   swl     $8, 5($9)               # encoding: [0x05,0x00,0x28,0xa9]
1348  # CHECK-LE:   swr     $8, 2($9)               # encoding: [0x02,0x00,0x28,0xb9]
1349
1350  usw $8, 0x8000($9)
1351  # CHECK-BE:   ori     $1, $zero, 32768        # encoding: [0x34,0x01,0x80,0x00]
1352  # CHECK-BE:   addu    $1, $1, $9              # encoding: [0x00,0x29,0x08,0x21]
1353  # CHECK-BE:   swl     $8, 0($1)               # encoding: [0xa8,0x28,0x00,0x00]
1354  # CHECK-BE:   swr     $8, 3($1)               # encoding: [0xb8,0x28,0x00,0x03]
1355  # CHECK-LE:   ori     $1, $zero, 32768        # encoding: [0x00,0x80,0x01,0x34]
1356  # CHECK-LE:   addu    $1, $1, $9              # encoding: [0x21,0x08,0x29,0x00]
1357  # CHECK-LE:   swl     $8, 3($1)               # encoding: [0x03,0x00,0x28,0xa8]
1358  # CHECK-LE:   swr     $8, 0($1)               # encoding: [0x00,0x00,0x28,0xb8]
1359
1360  usw $8, -0x8000($9)
1361  # CHECK-BE:   swl     $8, -32768($9)          # encoding: [0xa9,0x28,0x80,0x00]
1362  # CHECK-BE:   swr     $8, -32765($9)          # encoding: [0xb9,0x28,0x80,0x03]
1363  # CHECK-LE:   swl     $8, -32765($9)          # encoding: [0x03,0x80,0x28,0xa9]
1364  # CHECK-LE:   swr     $8, -32768($9)          # encoding: [0x00,0x80,0x28,0xb9]
1365
1366  usw $8, 0x10000($9)
1367  # CHECK-BE:   lui     $1, 1                   # encoding: [0x3c,0x01,0x00,0x01]
1368  # CHECK-BE:   addu    $1, $1, $9              # encoding: [0x00,0x29,0x08,0x21]
1369  # CHECK-BE:   swl     $8, 0($1)               # encoding: [0xa8,0x28,0x00,0x00]
1370  # CHECK-BE:   swr     $8, 3($1)               # encoding: [0xb8,0x28,0x00,0x03]
1371  # CHECK-LE:   lui     $1, 1                   # encoding: [0x01,0x00,0x01,0x3c]
1372  # CHECK-LE:   addu    $1, $1, $9              # encoding: [0x21,0x08,0x29,0x00]
1373  # CHECK-LE:   swl     $8, 3($1)               # encoding: [0x03,0x00,0x28,0xa8]
1374  # CHECK-LE:   swr     $8, 0($1)               # encoding: [0x00,0x00,0x28,0xb8]
1375
1376  usw $8, 0x18888($9)
1377  # CHECK-BE:   lui     $1, 1                   # encoding: [0x3c,0x01,0x00,0x01]
1378  # CHECK-BE:   ori     $1, $1, 34952           # encoding: [0x34,0x21,0x88,0x88]
1379  # CHECK-BE:   addu    $1, $1, $9              # encoding: [0x00,0x29,0x08,0x21]
1380  # CHECK-BE:   swl     $8, 0($1)               # encoding: [0xa8,0x28,0x00,0x00]
1381  # CHECK-BE:   swr     $8, 3($1)               # encoding: [0xb8,0x28,0x00,0x03]
1382  # CHECK-LE:   lui     $1, 1                   # encoding: [0x01,0x00,0x01,0x3c]
1383  # CHECK-LE:   ori     $1, $1, 34952           # encoding: [0x88,0x88,0x21,0x34]
1384  # CHECK-LE:   addu    $1, $1, $9              # encoding: [0x21,0x08,0x29,0x00]
1385  # CHECK-LE:   swl     $8, 3($1)               # encoding: [0x03,0x00,0x28,0xa8]
1386  # CHECK-LE:   swr     $8, 0($1)               # encoding: [0x00,0x00,0x28,0xb8]
1387
1388  usw $8, -32769($9)
1389  # CHECK-BE:   lui     $1, 65535               # encoding: [0x3c,0x01,0xff,0xff]
1390  # CHECK-BE:   ori     $1, $1, 32767           # encoding: [0x34,0x21,0x7f,0xff]
1391  # CHECK-BE:   addu    $1, $1, $9              # encoding: [0x00,0x29,0x08,0x21]
1392  # CHECK-BE:   swl     $8, 0($1)               # encoding: [0xa8,0x28,0x00,0x00]
1393  # CHECK-BE:   swr     $8, 3($1)               # encoding: [0xb8,0x28,0x00,0x03]
1394  # CHECK-LE:   lui     $1, 65535               # encoding: [0xff,0xff,0x01,0x3c]
1395  # CHECK-LE:   ori     $1, $1, 32767           # encoding: [0xff,0x7f,0x21,0x34]
1396  # CHECK-LE:   addu    $1, $1, $9              # encoding: [0x21,0x08,0x29,0x00]
1397  # CHECK-LE:   swl     $8, 3($1)               # encoding: [0x03,0x00,0x28,0xa8]
1398  # CHECK-LE:   swr     $8, 0($1)               # encoding: [0x00,0x00,0x28,0xb8]
1399
1400  usw $8, 32767($9)
1401  # CHECK-BE:   addiu   $1, $9, 32767           # encoding: [0x25,0x21,0x7f,0xff]
1402  # CHECK-BE:   swl     $8, 0($1)               # encoding: [0xa8,0x28,0x00,0x00]
1403  # CHECK-BE:   swr     $8, 3($1)               # encoding: [0xb8,0x28,0x00,0x03]
1404  # CHECK-LE:   addiu   $1, $9, 32767           # encoding: [0xff,0x7f,0x21,0x25]
1405  # CHECK-LE:   swl     $8, 3($1)               # encoding: [0x03,0x00,0x28,0xa8]
1406  # CHECK-LE:   swr     $8, 0($1)               # encoding: [0x00,0x00,0x28,0xb8]
1407
1408  usw $8, 0($8)
1409  # CHECK-BE:   swl     $8, 0($8)               # encoding: [0xa9,0x08,0x00,0x00]
1410  # CHECK-BE:   swr     $8, 3($8)               # encoding: [0xb9,0x08,0x00,0x03]
1411  # CHECK-LE:   swl     $8, 3($8)               # encoding: [0x03,0x00,0x08,0xa9]
1412  # CHECK-LE:   swr     $8, 0($8)               # encoding: [0x00,0x00,0x08,0xb9]
1413
1414  usw $8, 2($8)
1415  # CHECK-BE:   swl     $8, 2($8)               # encoding: [0xa9,0x08,0x00,0x02]
1416  # CHECK-BE:   swr     $8, 5($8)               # encoding: [0xb9,0x08,0x00,0x05]
1417  # CHECK-LE:   swl     $8, 5($8)               # encoding: [0x05,0x00,0x08,0xa9]
1418  # CHECK-LE:   swr     $8, 2($8)               # encoding: [0x02,0x00,0x08,0xb9]
1419
1420  usw $8, 0x8000($8)
1421  # CHECK-BE:   ori     $1, $zero, 32768        # encoding: [0x34,0x01,0x80,0x00]
1422  # CHECK-BE:   addu    $1, $1, $8              # encoding: [0x00,0x28,0x08,0x21]
1423  # CHECK-BE:   swl     $8, 0($1)               # encoding: [0xa8,0x28,0x00,0x00]
1424  # CHECK-BE:   swr     $8, 3($1)               # encoding: [0xb8,0x28,0x00,0x03]
1425  # CHECK-LE:   ori     $1, $zero, 32768        # encoding: [0x00,0x80,0x01,0x34]
1426  # CHECK-LE:   addu    $1, $1, $8              # encoding: [0x21,0x08,0x28,0x00]
1427  # CHECK-LE:   swl     $8, 3($1)               # encoding: [0x03,0x00,0x28,0xa8]
1428  # CHECK-LE:   swr     $8, 0($1)               # encoding: [0x00,0x00,0x28,0xb8]
1429
1430  usw $8, -0x8000($8)
1431  # CHECK-BE:   swl     $8, -32768($8)          # encoding: [0xa9,0x08,0x80,0x00]
1432  # CHECK-BE:   swr     $8, -32765($8)          # encoding: [0xb9,0x08,0x80,0x03]
1433  # CHECK-LE:   swl     $8, -32765($8)          # encoding: [0x03,0x80,0x08,0xa9]
1434  # CHECK-LE:   swr     $8, -32768($8)          # encoding: [0x00,0x80,0x08,0xb9]
1435
1436  usw $8, 0x10000($8)
1437  # CHECK-BE:   lui     $1, 1                   # encoding: [0x3c,0x01,0x00,0x01]
1438  # CHECK-BE:   addu    $1, $1, $8              # encoding: [0x00,0x28,0x08,0x21]
1439  # CHECK-BE:   swl     $8, 0($1)               # encoding: [0xa8,0x28,0x00,0x00]
1440  # CHECK-BE:   swr     $8, 3($1)               # encoding: [0xb8,0x28,0x00,0x03]
1441  # CHECK-LE:   lui     $1, 1                   # encoding: [0x01,0x00,0x01,0x3c]
1442  # CHECK-LE:   addu    $1, $1, $8              # encoding: [0x21,0x08,0x28,0x00]
1443  # CHECK-LE:   swl     $8, 3($1)               # encoding: [0x03,0x00,0x28,0xa8]
1444  # CHECK-LE:   swr     $8, 0($1)               # encoding: [0x00,0x00,0x28,0xb8]
1445
1446  usw $8, 0x18888($8)
1447  # CHECK-BE:   lui     $1, 1                   # encoding: [0x3c,0x01,0x00,0x01]
1448  # CHECK-BE:   ori     $1, $1, 34952           # encoding: [0x34,0x21,0x88,0x88]
1449  # CHECK-BE:   addu    $1, $1, $8              # encoding: [0x00,0x28,0x08,0x21]
1450  # CHECK-BE:   swl     $8, 0($1)               # encoding: [0xa8,0x28,0x00,0x00]
1451  # CHECK-BE:   swr     $8, 3($1)               # encoding: [0xb8,0x28,0x00,0x03]
1452  # CHECK-LE:   lui     $1, 1                   # encoding: [0x01,0x00,0x01,0x3c]
1453  # CHECK-LE:   ori     $1, $1, 34952           # encoding: [0x88,0x88,0x21,0x34]
1454  # CHECK-LE:   addu    $1, $1, $8              # encoding: [0x21,0x08,0x28,0x00]
1455  # CHECK-LE:   swl     $8, 3($1)               # encoding: [0x03,0x00,0x28,0xa8]
1456  # CHECK-LE:   swr     $8, 0($1)               # encoding: [0x00,0x00,0x28,0xb8]
1457
1458  usw $8, -32769($8)
1459  # CHECK-BE:   lui     $1, 65535               # encoding: [0x3c,0x01,0xff,0xff]
1460  # CHECK-BE:   ori     $1, $1, 32767           # encoding: [0x34,0x21,0x7f,0xff]
1461  # CHECK-BE:   addu    $1, $1, $8              # encoding: [0x00,0x28,0x08,0x21]
1462  # CHECK-BE:   swl     $8, 0($1)               # encoding: [0xa8,0x28,0x00,0x00]
1463  # CHECK-BE:   swr     $8, 3($1)               # encoding: [0xb8,0x28,0x00,0x03]
1464  # CHECK-LE:   lui     $1, 65535               # encoding: [0xff,0xff,0x01,0x3c]
1465  # CHECK-LE:   ori     $1, $1, 32767           # encoding: [0xff,0x7f,0x21,0x34]
1466  # CHECK-LE:   addu    $1, $1, $8              # encoding: [0x21,0x08,0x28,0x00]
1467  # CHECK-LE:   swl     $8, 3($1)               # encoding: [0x03,0x00,0x28,0xa8]
1468  # CHECK-LE:   swr     $8, 0($1)               # encoding: [0x00,0x00,0x28,0xb8]
1469
1470  usw $8, 32767($8)
1471  # CHECK-BE:   addiu   $1, $8, 32767           # encoding: [0x25,0x01,0x7f,0xff]
1472  # CHECK-BE:   swl     $8, 0($1)               # encoding: [0xa8,0x28,0x00,0x00]
1473  # CHECK-BE:   swr     $8, 3($1)               # encoding: [0xb8,0x28,0x00,0x03]
1474  # CHECK-LE:   addiu   $1, $8, 32767           # encoding: [0xff,0x7f,0x01,0x25]
1475  # CHECK-LE:   swl     $8, 3($1)               # encoding: [0x03,0x00,0x28,0xa8]
1476  # CHECK-LE:   swr     $8, 0($1)               # encoding: [0x00,0x00,0x28,0xb8]
1477
14781:
1479  add $4, $4, $4
1480