1# RUN: llvm-mc %s -triple=mips64-unknown-linux -show-encoding -mcpu=mips64r2 | \
2# RUN:   FileCheck %s --check-prefix=CHECK-NOTRAP
3# RUN: llvm-mc %s -triple=mips64-unknown-linux -show-encoding -mcpu=mips64r2 \
4# RUN:  -mattr=+use-tcc-in-div | FileCheck %s --check-prefix=CHECK-TRAP
5
6  ddiv $25,$11
7# CHECK-NOTRAP: bne $11, $zero, .Ltmp0    # encoding: [0x15,0x60,A,A]
8# CHECK-NOTRAP:                           # fixup A - offset: 0, value: .Ltmp0-4, kind: fixup_Mips_PC16
9# CHECK-NOTRAP: ddiv $zero, $25, $11      # encoding: [0x03,0x2b,0x00,0x1e]
10# CHECK-NOTRAP: break 7                   # encoding: [0x00,0x07,0x00,0x0d]
11# CHECK-NOTRAP: .Ltmp0
12# CHECK-NOTRAP: addiu $1, $zero, -1       # encoding: [0x24,0x01,0xff,0xff]
13# CHECK-NOTRAP: bne $11, $1, .Ltmp1       # encoding: [0x15,0x61,A,A]
14# CHECK-NOTRAP:                           # fixup A - offset: 0, value: .Ltmp1-4, kind: fixup_Mips_PC16
15# CHECK-NOTRAP: addiu $1, $zero, 1        # encoding: [0x24,0x01,0x00,0x01]
16# CHECK-NOTRAP: dsll32 $1, $1, 31         # encoding: [0x00,0x01,0x0f,0xfc]
17# CHECK-NOTRAP: bne $25, $1, .Ltmp1       # encoding: [0x17,0x21,A,A]
18# CHECK-NOTRAP:                           # fixup A - offset: 0, value: .Ltmp1-4, kind: fixup_Mips_PC16
19# CHECK-NOTRAP: nop                       # encoding: [0x00,0x00,0x00,0x00]
20# CHECK-NOTRAP: break 6                   # encoding: [0x00,0x06,0x00,0x0d]
21# CHECK-NOTRAP: .Ltmp1
22# CHECK-NOTRAP: mflo $25                  # encoding: [0x00,0x00,0xc8,0x12]
23
24# CHECK-TRAP: teq $11, $zero, 7           # encoding: [0x01,0x60,0x01,0xf4]
25# CHECK-TRAP: ddiv $zero, $25, $11        # encoding: [0x03,0x2b,0x00,0x1e]
26# CHECK-TRAP: addiu $1, $zero, -1         # encoding: [0x24,0x01,0xff,0xff]
27# CHECK-TRAP: bne $11, $1, .Ltmp0         # encoding: [0x15,0x61,A,A]
28# CHECK-TRAP:                             # fixup A - offset: 0, value: .Ltmp0-4, kind: fixup_Mips_PC16
29# CHECK-TRAP: addiu $1, $zero, 1          # encoding: [0x24,0x01,0x00,0x01]
30# CHECK-TRAP: dsll32 $1, $1, 31           # encoding: [0x00,0x01,0x0f,0xfc]
31# CHECK-TRAP: teq $25, $1, 6              # encoding: [0x03,0x21,0x01,0xb4]
32# CHECK-TRAP: .Ltmp0:
33# CHECK-TRAP: mflo $25                    # encoding: [0x00,0x00,0xc8,0x12]
34
35  ddiv $24,$12
36# CHECK-NOTRAP: bne $12, $zero, .Ltmp2    # encoding: [0x15,0x80,A,A]
37# CHECK-NOTRAP:                           # fixup A - offset: 0, value: .Ltmp2-4, kind: fixup_Mips_PC16
38# CHECK-NOTRAP: ddiv $zero, $24, $12      # encoding: [0x03,0x0c,0x00,0x1e]
39# CHECK-NOTRAP: break 7                   # encoding: [0x00,0x07,0x00,0x0d]
40# CHECK-NOTRAP: .Ltmp2:
41# CHECK-NOTRAP: addiu $1, $zero, -1       # encoding: [0x24,0x01,0xff,0xff]
42# CHECK-NOTRAP: bne $12, $1, .Ltmp3       # encoding: [0x15,0x81,A,A]
43# CHECK-NOTRAP:                           # fixup A - offset: 0, value: .Ltmp3-4, kind: fixup_Mips_PC16
44# CHECK-NOTRAP: addiu $1, $zero, 1        # encoding: [0x24,0x01,0x00,0x01]
45# CHECK-NOTRAP: dsll32 $1, $1, 31         # encoding: [0x00,0x01,0x0f,0xfc]
46# CHECK-NOTRAP: bne $24, $1, .Ltmp3       # encoding: [0x17,0x01,A,A]
47# CHECK-NOTRAP:                           # fixup A - offset: 0, value: .Ltmp3-4, kind: fixup_Mips_PC16
48# CHECK-NOTRAP: nop                       # encoding: [0x00,0x00,0x00,0x00]
49# CHECK-NOTRAP: break 6                   # encoding: [0x00,0x06,0x00,0x0d]
50# CHECK-NOTRAP: .Ltmp3
51# CHECK-NOTRAP: mflo $24                  # encoding: [0x00,0x00,0xc0,0x12]
52
53# CHECK-TRAP: teq $12, $zero, 7           # encoding: [0x01,0x80,0x01,0xf4]
54# CHECK-TRAP: ddiv $zero, $24, $12        # encoding: [0x03,0x0c,0x00,0x1e]
55# CHECK-TRAP: addiu $1, $zero, -1         # encoding: [0x24,0x01,0xff,0xff]
56# CHECK-TRAP: bne $12, $1, .Ltmp1         # encoding: [0x15,0x81,A,A]
57# CHECK-TRAP:                             # fixup A - offset: 0, value: .Ltmp1-4, kind: fixup_Mips_PC16
58# CHECK-TRAP: addiu $1, $zero, 1          # encoding: [0x24,0x01,0x00,0x01]
59# CHECK-TRAP: dsll32 $1, $1, 31           # encoding: [0x00,0x01,0x0f,0xfc]
60# CHECK-TRAP: teq $24, $1, 6              # encoding: [0x03,0x01,0x01,0xb4]
61# CHECK-TRAP: .Ltmp1:
62# CHECK-TRAP: mflo $24                    # encoding: [0x00,0x00,0xc0,0x12]
63
64  ddiv $25,$0
65# CHECK-NOTRAP: break 7                   # encoding: [0x00,0x07,0x00,0x0d]
66# CHECK-TRAP: teq $zero, $zero, 7         # encoding: [0x00,0x00,0x01,0xf4]
67
68  ddiv $0,$9
69# CHECK-NOTRAP: ddiv $zero, $zero, $9     # encoding: [0x00,0x09,0x00,0x1e]
70
71# CHECK-TRAP: teq $9, $zero, 7            # encoding: [0x01,0x20,0x01,0xf4]
72# CHECK-TRAP: ddiv $zero, $zero, $9       # encoding: [0x00,0x09,0x00,0x1e]
73# CHECK-TRAP: addiu $1, $zero, -1         # encoding: [0x24,0x01,0xff,0xff]
74# CHECK-TRAP: bne $9, $1, .Ltmp2          # encoding: [0x15,0x21,A,A]
75# CHECK-TRAP:                             # fixup A - offset: 0, value: .Ltmp2-4, kind: fixup_Mips_PC16
76# CHECK-TRAP: addiu $1, $zero, 1          # encoding: [0x24,0x01,0x00,0x01]
77# CHECK-TRAP: dsll32 $1, $1, 31           # encoding: [0x00,0x01,0x0f,0xfc]
78# CHECK-TRAP: teq $zero, $1, 6            # encoding: [0x00,0x01,0x01,0xb4]
79# CHECH-TRAP: .Ltmp2:
80# CHECK-TRAP: mflo $zero                  # encoding: [0x00,0x00,0x00,0x12]
81
82  ddiv $0,$0
83# CHECK-NOTRAP: break 7                   # encoding: [0x00,0x07,0x00,0x0d]
84# CHECK-TRAP: teq $zero, $zero, 7         # encoding: [0x00,0x00,0x01,0xf4]
85
86  ddiv $4,0
87# CHECK-NOTRAP: break 7                   # encoding: [0x00,0x07,0x00,0x0d]
88# CHECK-TRAP: teq $zero, $zero, 7         # encoding: [0x00,0x00,0x01,0xf4]
89
90  ddiv $0,0
91# CHECK-NOTRAP: break 7                   # encoding: [0x00,0x07,0x00,0x0d]
92# CHECK-TRAP: teq $zero, $zero, 7         # encoding: [0x00,0x00,0x01,0xf4]
93
94  ddiv $4,1
95# CHECK-NOTRAP: move $4, $4               # encoding: [0x00,0x80,0x20,0x25]
96# CHECK-TRAP: move $4, $4                 # encoding: [0x00,0x80,0x20,0x25]
97
98  ddiv $4,-1
99# CHECK-NOTRAP: dneg $4, $4               # encoding: [0x00,0x04,0x20,0x2e]
100# CHECK-TRAP: dneg $4, $4                 # encoding: [0x00,0x04,0x20,0x2e]
101
102  ddiv $4,2
103# CHECK-NOTRAP: addiu $1, $zero, 2        # encoding: [0x24,0x01,0x00,0x02]
104# CHECK-NOTRAP: ddiv $zero, $4, $1        # encoding: [0x00,0x81,0x00,0x1e]
105# CHECK-NOTRAP: mflo $4                   # encoding: [0x00,0x00,0x20,0x12]
106# CHECK-TRAP: addiu $1, $zero, 2          # encoding: [0x24,0x01,0x00,0x02]
107# CHECK-TRAP: ddiv $zero, $4, $1          # encoding: [0x00,0x81,0x00,0x1e]
108# CHECK-TRAP: mflo $4                     # encoding: [0x00,0x00,0x20,0x12]
109
110  ddiv $4,0x8000
111# CHECK-NOTRAP: ori $1, $zero, 32768      # encoding: [0x34,0x01,0x80,0x00]
112# CHECK-NOTRAP: ddiv $zero, $4, $1        # encoding: [0x00,0x81,0x00,0x1e]
113# CHECK-NOTRAP: mflo $4                   # encoding: [0x00,0x00,0x20,0x12]
114# CHECK-TRAP: ori $1, $zero, 32768        # encoding: [0x34,0x01,0x80,0x00]
115# CHECK-TRAP: ddiv $zero, $4, $1          # encoding: [0x00,0x81,0x00,0x1e]
116# CHECK-TRAP: mflo $4                     # encoding: [0x00,0x00,0x20,0x12]
117
118  ddiv $4,-0x8000
119# CHECK-NOTRAP: addiu $1, $zero, -32768   # encoding: [0x24,0x01,0x80,0x00]
120# CHECK-NOTRAP: ddiv $zero, $4, $1        # encoding: [0x00,0x81,0x00,0x1e]
121# CHECK-NOTRAP: mflo $4                   # encoding: [0x00,0x00,0x20,0x12]
122# CHECK-TRAP: addiu $1, $zero, -32768     # encoding: [0x24,0x01,0x80,0x00]
123# CHECK-TRAP: ddiv $zero, $4, $1          # encoding: [0x00,0x81,0x00,0x1e]
124# CHECK-TRAP: mflo $4                     # encoding: [0x00,0x00,0x20,0x12]
125
126  ddiv $4,0x10000
127# CHECK-NOTRAP: lui $1, 1                 # encoding: [0x3c,0x01,0x00,0x01]
128# CHECK-NOTRAP: ddiv $zero, $4, $1        # encoding: [0x00,0x81,0x00,0x1e]
129# CHECK-NOTRAP: mflo $4                   # encoding: [0x00,0x00,0x20,0x12]
130# CHECK-TRAP: lui $1, 1                   # encoding: [0x3c,0x01,0x00,0x01]
131# CHECK-TRAP: ddiv $zero, $4, $1          # encoding: [0x00,0x81,0x00,0x1e]
132# CHECK-TRAP: mflo $4                     # encoding: [0x00,0x00,0x20,0x12]
133
134  ddiv $4,0x1a5a5
135# CHECK-NOTRAP: lui $1, 1                 # encoding: [0x3c,0x01,0x00,0x01]
136# CHECK-NOTRAP: ori $1, $1, 42405         # encoding: [0x34,0x21,0xa5,0xa5]
137# CHECK-NOTRAP: ddiv $zero, $4, $1        # encoding: [0x00,0x81,0x00,0x1e]
138# CHECK-NOTRAP: mflo $4                   # encoding: [0x00,0x00,0x20,0x12]
139# CHECK-TRAP: lui $1, 1                   # encoding: [0x3c,0x01,0x00,0x01]
140# CHECK-TRAP: ori $1, $1, 42405           # encoding: [0x34,0x21,0xa5,0xa5]
141# CHECK-TRAP: ddiv $zero, $4, $1          # encoding: [0x00,0x81,0x00,0x1e]
142# CHECK-TRAP: mflo $4                     # encoding: [0x00,0x00,0x20,0x12]
143
144  ddiv $4,0xfffffff
145# CHECK-NOTRAP: lui $1, 4095              # encoding: [0x3c,0x01,0x0f,0xff]
146# CHECK-NOTRAP: ori $1, $1, 65535         # encoding: [0x34,0x21,0xff,0xff]
147# CHECK-NOTRAP: ddiv $zero, $4, $1        # encoding: [0x00,0x81,0x00,0x1e]
148# CHECK-NOTRAP: mflo $4                   # encoding: [0x00,0x00,0x20,0x12]
149# CHECK-TRAP: lui $1, 4095                # encoding: [0x3c,0x01,0x0f,0xff]
150# CHECK-TRAP: ori $1, $1, 65535           # encoding: [0x34,0x21,0xff,0xff]
151# CHECK-TRAP: ddiv $zero, $4, $1          # encoding: [0x00,0x81,0x00,0x1e]
152# CHECK-TRAP: mflo $4                     # encoding: [0x00,0x00,0x20,0x12]
153
154  ddiv $4,0x10000000
155# CHECK-NOTRAP: lui $1, 4096              # encoding: [0x3c,0x01,0x10,0x00]
156# CHECK-NOTRAP: ddiv $zero, $4, $1        # encoding: [0x00,0x81,0x00,0x1e]
157# CHECK-NOTRAP: mflo $4                   # encoding: [0x00,0x00,0x20,0x12]
158# CHECK-TRAP: lui $1, 4096                # encoding: [0x3c,0x01,0x10,0x00]
159# CHECK-TRAP: ddiv $zero, $4, $1          # encoding: [0x00,0x81,0x00,0x1e]
160# CHECK-TRAP: mflo $4                     # encoding: [0x00,0x00,0x20,0x12]
161
162  ddiv $4,0xfffffffe
163# CHECK-NOTRAP: ori $1, $zero, 65535      # encoding: [0x34,0x01,0xff,0xff]
164# CHECK-NOTRAP: dsll $1, $1, 16           # encoding: [0x00,0x01,0x0c,0x38]
165# CHECK-NOTRAP: ori $1, $1, 65534         # encoding: [0x34,0x21,0xff,0xfe]
166# CHECK-NOTRAP: ddiv $zero, $4, $1        # encoding: [0x00,0x81,0x00,0x1e]
167# CHECK-NOTRAP: mflo $4                   # encoding: [0x00,0x00,0x20,0x12]
168# CHECK-TRAP: ori $1, $zero, 65535        # encoding: [0x34,0x01,0xff,0xff]
169# CHECK-TRAP: dsll $1, $1, 16             # encoding: [0x00,0x01,0x0c,0x38]
170# CHECK-TRAP: ori $1, $1, 65534           # encoding: [0x34,0x21,0xff,0xfe]
171# CHECK-TRAP: ddiv $zero, $4, $1          # encoding: [0x00,0x81,0x00,0x1e]
172# CHECK-TRAP: mflo $4                     # encoding: [0x00,0x00,0x20,0x12]
173
174
175  ddiv $4,0xffffffff
176# CHECK-NOTRAP: lui $1, 65535             # encoding: [0x3c,0x01,0xff,0xff]
177# CHECK-NOTRAP: dsrl32 $1, $1, 0          # encoding: [0x00,0x01,0x08,0x3e]
178# CHECK-NOTRAP: ddiv $zero, $4, $1        # encoding: [0x00,0x81,0x00,0x1e]
179# CHECK-NOTRAP: mflo $4                   # encoding: [0x00,0x00,0x20,0x12]
180# CHECK-TRAP: lui $1, 65535               # encoding: [0x3c,0x01,0xff,0xff]
181# CHECK-TRAP: dsrl32 $1, $1, 0            # encoding: [0x00,0x01,0x08,0x3e]
182# CHECK-TRAP: ddiv $zero, $4, $1          # encoding: [0x00,0x81,0x00,0x1e]
183# CHECK-TRAP: mflo $4                     # encoding: [0x00,0x00,0x20,0x12]
184
185  ddiv $4,0xfffffffff
186# CHECK-NOTRAP: addiu  $1, $zero, 15      # encoding: [0x24,0x01,0x00,0x0f]
187# CHECK-NOTRAP: dsll $1, $1, 16           # encoding: [0x00,0x01,0x0c,0x38]
188# CHECK-NOTRAP: ori $1, $1, 65535         # encoding: [0x34,0x21,0xff,0xff]
189# CHECK-NOTRAP: dsll $1, $1, 16           # encoding: [0x00,0x01,0x0c,0x38]
190# CHECK-NOTRAP: ori $1, $1, 65535         # encoding: [0x34,0x21,0xff,0xff]
191# CHECK-NOTRAP: ddiv $zero, $4, $1        # encoding: [0x00,0x81,0x00,0x1e]
192# CHECK-NOTRAP: mflo $4                   # encoding: [0x00,0x00,0x20,0x12]
193# CHECK-TRAP: addiu  $1, $zero, 15        # encoding: [0x24,0x01,0x00,0x0f]
194# CHECK-TRAP: dsll $1, $1, 16             # encoding: [0x00,0x01,0x0c,0x38]
195# CHECK-TRAP: ori $1, $1, 65535           # encoding: [0x34,0x21,0xff,0xff]
196# CHECK-TRAP: dsll $1, $1, 16             # encoding: [0x00,0x01,0x0c,0x38]
197# CHECK-TRAP: ori $1, $1, 65535           # encoding: [0x34,0x21,0xff,0xff]
198# CHECK-TRAP: ddiv $zero, $4, $1          # encoding: [0x00,0x81,0x00,0x1e]
199# CHECK-TRAP: mflo $4                     # encoding: [0x00,0x00,0x20,0x12]
200
201  ddiv $4,$5,$6
202# CHECK-NOTRAP: bne $6, $zero, .Ltmp6     # encoding: [0x14,0xc0,A,A]
203# CHECK-NOTRAP:                           # fixup A - offset: 0, value: .Ltmp6-4, kind: fixup_Mips_PC16
204# CHECK-NOTRAP: ddiv $zero, $5, $6        # encoding: [0x00,0xa6,0x00,0x1e]
205# CHECK-NOTRAP: break  7                  # encoding: [0x00,0x07,0x00,0x0d]
206# CHECK-NOTRAP: .Ltmp6:
207# CHECK-NOTRAP: addiu $1, $zero, -1       # encoding: [0x24,0x01,0xff,0xff]
208# CHECK-NOTRAP: bne $6, $1, .Ltmp7        # encoding: [0x14,0xc1,A,A]
209# CHECK-NOTRAP:                           # fixup A - offset: 0, value: .Ltmp7-4, kind: fixup_Mips_PC16
210# CHECK-NOTRAP: addiu $1, $zero, 1        # encoding: [0x24,0x01,0x00,0x01]
211# CHECK-NOTRAP: dsll32 $1, $1, 31         # encoding: [0x00,0x01,0x0f,0xfc]
212# CHECK-NOTRAP: bne $5, $1, .Ltmp7        # encoding: [0x14,0xa1,A,A]
213# CHECK-NOTRAP:                           # fixup A - offset: 0, value: .Ltmp7-4, kind: fixup_Mips_PC16
214# CHECK-NOTRAP: nop                       # encoding: [0x00,0x00,0x00,0x00]
215# CHECK-NOTRAP: break  6                  # encoding: [0x00,0x06,0x00,0x0d]
216# CHECK-NOTRAP: .Ltmp7:
217# CHECK-NOTRAP: mflo $4                   # encoding: [0x00,0x00,0x20,0x12]
218
219# CHECK-TRAP: teq $6, $zero, 7            # encoding: [0x00,0xc0,0x01,0xf4]
220# CHECK-TRAP: ddiv $zero, $5, $6          # encoding: [0x00,0xa6,0x00,0x1e]
221# CHECK-TRAP: addiu $1, $zero, -1         # encoding: [0x24,0x01,0xff,0xff]
222# CHECK-TRAP: bne $6, $1, .Ltmp3          # encoding: [0x14,0xc1,A,A]
223# CHECK-TRAP:                             # fixup A - offset: 0, value: .Ltmp3-4, kind: fixup_Mips_PC16
224# CHECK-TRAP: addiu $1, $zero, 1          # encoding: [0x24,0x01,0x00,0x01]
225# CHECK-TRAP: dsll32 $1, $1, 31           # encoding: [0x00,0x01,0x0f,0xfc]
226# CHECK-TRAP: teq $5, $1, 6               # encoding: [0x00,0xa1,0x01,0xb4]
227# CHECK-TRAP: .Ltmp3:
228# CHECK-TRAP: mflo $4                     # encoding: [0x00,0x00,0x20,0x12]
229
230  ddiv $4,$5,$0
231# CHECK-NOTRAP: break 7                   # encoding: [0x00,0x07,0x00,0x0d]
232# CHECK-TRAP: teq $zero, $zero, 7         # encoding: [0x00,0x00,0x01,0xf4]
233
234  ddiv $4,$0,$0
235# CHECK-NOTRAP: break 7                   # encoding: [0x00,0x07,0x00,0x0d]
236# CHECK-TRAP: teq $zero, $zero, 7         # encoding: [0x00,0x00,0x01,0xf4]
237
238  ddiv $0,$4,$5
239# CHECK-NOTRAP: ddiv $zero, $4, $5        # encoding: [0x00,0x85,0x00,0x1e]
240# CHECK-TRAP: ddiv $zero, $4, $5          # encoding: [0x00,0x85,0x00,0x1e]
241
242  ddiv $4,$0,0
243# CHECK-NOTRAP: break 7                   # encoding: [0x00,0x07,0x00,0x0d]
244# CHECK-TRAP: teq $zero, $zero, 7         # encoding: [0x00,0x00,0x01,0xf4]
245
246  ddiv $4,$5,0
247# CHECK-NOTRAP: break 7                   # encoding: [0x00,0x07,0x00,0x0d]
248# CHECK-TRAP: teq $zero, $zero, 7         # encoding: [0x00,0x00,0x01,0xf4]
249
250  ddiv $4,$5,1
251# CHECK-NOTRAP: move $4, $5               # encoding: [0x00,0xa0,0x20,0x25]
252# CHECK-TRAP: move     $4, $5             # encoding: [0x00,0xa0,0x20,0x25]
253
254  ddiv $4,$5,-1
255# CHECK-NOTRAP: dneg $4, $5               # encoding: [0x00,0x05,0x20,0x2e]
256# CHECK-TRAP: dneg    $4, $5              # encoding: [0x00,0x05,0x20,0x2e]
257
258  ddiv $4,$5,2
259# CHECK-NOTRAP: addiu $1, $zero, 2        # encoding: [0x24,0x01,0x00,0x02]
260# CHECK-NOTRAP: ddiv $zero, $5, $1        # encoding: [0x00,0xa1,0x00,0x1e]
261# CHECK-NOTRAP: mflo $4                   # encoding: [0x00,0x00,0x20,0x12]
262# CHECK-TRAP: addiu $1, $zero, 2          # encoding: [0x24,0x01,0x00,0x02]
263# CHECK-TRAP: ddiv $zero, $5, $1          # encoding: [0x00,0xa1,0x00,0x1e]
264# CHECK-TRAP: mflo $4                     # encoding: [0x00,0x00,0x20,0x12]
265
266  ddiv $4,$5,0x8000
267# CHECK-NOTRAP: ori $1, $zero, 32768      # encoding: [0x34,0x01,0x80,0x00]
268# CHECK-NOTRAP: ddiv $zero, $5, $1        # encoding: [0x00,0xa1,0x00,0x1e]
269# CHECK-NOTRAP: mflo $4                   # encoding: [0x00,0x00,0x20,0x12]
270# CHECK-TRAP: ori $1, $zero, 32768        # encoding: [0x34,0x01,0x80,0x00]
271# CHECK-TRAP: ddiv $zero, $5, $1          # encoding: [0x00,0xa1,0x00,0x1e]
272# CHECK-TRAP: mflo $4                     # encoding: [0x00,0x00,0x20,0x12]
273
274  ddiv $4,$5,-0x8000
275# CHECK-NOTRAP: addiu $1, $zero, -32768   # encoding: [0x24,0x01,0x80,0x00]
276# CHECK-NOTRAP: ddiv $zero, $5, $1        # encoding: [0x00,0xa1,0x00,0x1e]
277# CHECK-NOTRAP: mflo $4                   # encoding: [0x00,0x00,0x20,0x12]
278# CHECK-TRAP: addiu $1, $zero, -32768     # encoding: [0x24,0x01,0x80,0x00]
279# CHECK-TRAP: ddiv $zero, $5, $1          # encoding: [0x00,0xa1,0x00,0x1e]
280# CHECK-TRAP: mflo $4                     # encoding: [0x00,0x00,0x20,0x12]
281
282  ddiv $4,$5,0x10000
283# CHECK-NOTRAP: lui $1, 1                 # encoding: [0x3c,0x01,0x00,0x01]
284# CHECK-NOTRAP: ddiv $zero, $5, $1        # encoding: [0x00,0xa1,0x00,0x1e]
285# CHECK-NOTRAP: mflo $4                   # encoding: [0x00,0x00,0x20,0x12]
286# CHECK-TRAP: lui $1, 1                   # encoding: [0x3c,0x01,0x00,0x01]
287# CHECK-TRAP: ddiv $zero, $5, $1          # encoding: [0x00,0xa1,0x00,0x1e]
288# CHECK-TRAP: mflo $4                     # encoding: [0x00,0x00,0x20,0x12]
289
290  ddiv $4,$5,0x1a5a5
291# CHECK-NOTRAP: lui $1, 1                 # encoding: [0x3c,0x01,0x00,0x01]
292# CHECK-NOTRAP: ori $1, $1, 42405         # encoding: [0x34,0x21,0xa5,0xa5]
293# CHECK-NOTRAP: ddiv $zero, $5, $1        # encoding: [0x00,0xa1,0x00,0x1e]
294# CHECK-NOTRAP: mflo $4                   # encoding: [0x00,0x00,0x20,0x12]
295# CHECK-TRAP: lui $1, 1                   # encoding: [0x3c,0x01,0x00,0x01]
296# CHECK-TRAP: ori $1, $1, 42405           # encoding: [0x34,0x21,0xa5,0xa5]
297# CHECK-TRAP: ddiv $zero, $5, $1          # encoding: [0x00,0xa1,0x00,0x1e]
298# CHECK-TRAP: mflo $4                     # encoding: [0x00,0x00,0x20,0x12]
299
300  ddiv $4,$5,0xfffffff
301# CHECK-NOTRAP: lui $1, 4095              # encoding: [0x3c,0x01,0x0f,0xff]
302# CHECK-NOTRAP: ori $1, $1, 65535         # encoding: [0x34,0x21,0xff,0xff]
303# CHECK-NOTRAP: ddiv $zero, $5, $1        # encoding: [0x00,0xa1,0x00,0x1e]
304# CHECK-NOTRAP: mflo $4                   # encoding: [0x00,0x00,0x20,0x12]
305# CHECK-TRAP: lui $1, 4095                # encoding: [0x3c,0x01,0x0f,0xff]
306# CHECK-TRAP: ori $1, $1, 65535           # encoding: [0x34,0x21,0xff,0xff]
307# CHECK-TRAP: ddiv $zero, $5, $1          # encoding: [0x00,0xa1,0x00,0x1e]
308# CHECK-TRAP: mflo $4                     # encoding: [0x00,0x00,0x20,0x12]
309
310  ddiv $4,$5,0x10000000
311# CHECK-NOTRAP: lui $1, 4096              # encoding: [0x3c,0x01,0x10,0x00]
312# CHECK-NOTRAP: ddiv $zero, $5, $1        # encoding: [0x00,0xa1,0x00,0x1e]
313# CHECK-NOTRAP: mflo $4                   # encoding: [0x00,0x00,0x20,0x12]
314# CHECK-TRAP: lui $1, 4096                # encoding: [0x3c,0x01,0x10,0x00]
315# CHECK-TRAP: ddiv $zero, $5, $1          # encoding: [0x00,0xa1,0x00,0x1e]
316# CHECK-TRAP: mflo $4                     # encoding: [0x00,0x00,0x20,0x12]
317
318  ddiv $4,$5,0xfffffffe
319# CHECK-NOTRAP: ori $1, $zero, 65535      # encoding: [0x34,0x01,0xff,0xff]
320# CHECK-NOTRAP: dsll $1, $1, 16           # encoding: [0x00,0x01,0x0c,0x38]
321# CHECK-NOTRAP: ori $1, $1, 65534         # encoding: [0x34,0x21,0xff,0xfe]
322# CHECK-NOTRAP: ddiv $zero, $5, $1        # encoding: [0x00,0xa1,0x00,0x1e]
323# CHECK-NOTRAP: mflo $4                   # encoding: [0x00,0x00,0x20,0x12]
324# CHECK-TRAP: ori $1, $zero, 65535        # encoding: [0x34,0x01,0xff,0xff]
325# CHECK-TRAP: dsll $1, $1, 16             # encoding: [0x00,0x01,0x0c,0x38]
326# CHECK-TRAP: ori $1, $1, 65534           # encoding: [0x34,0x21,0xff,0xfe]
327# CHECK-TRAP: ddiv $zero, $5, $1          # encoding: [0x00,0xa1,0x00,0x1e]
328# CHECK-TRAP: mflo $4                     # encoding: [0x00,0x00,0x20,0x12]
329
330  ddiv $4,$5,0xffffffff
331# CHECK-NOTRAP: lui $1, 65535             # encoding: [0x3c,0x01,0xff,0xff]
332# CHECK-NOTRAP: dsrl32 $1, $1, 0          # encoding: [0x00,0x01,0x08,0x3e]
333# CHECK-NOTRAP: ddiv $zero, $5, $1        # encoding: [0x00,0xa1,0x00,0x1e]
334# CHECK-NOTRAP: mflo $4                   # encoding: [0x00,0x00,0x20,0x12]
335# CHECK-TRAP: lui $1, 65535               # encoding: [0x3c,0x01,0xff,0xff]
336# CHECK-TRAP: dsrl32 $1, $1, 0            # encoding: [0x00,0x01,0x08,0x3e]
337# CHECK-TRAP: ddiv $zero, $5, $1          # encoding: [0x00,0xa1,0x00,0x1e]
338# CHECK-TRAP: mflo $4                     # encoding: [0x00,0x00,0x20,0x12]
339
340  ddiv $4,$5,0xfffffffff
341# CHECK-NOTRAP: addiu $1, $zero, 15       # encoding: [0x24,0x01,0x00,0x0f]
342# CHECK-NOTRAP: dsll $1, $1, 16           # encoding: [0x00,0x01,0x0c,0x38]
343# CHECK-NOTRAP: ori $1, $1, 65535         # encoding: [0x34,0x21,0xff,0xff]
344# CHECK-NOTRAP: dsll $1, $1, 16           # encoding: [0x00,0x01,0x0c,0x38]
345# CHECK-NOTRAP: ori $1, $1, 65535         # encoding: [0x34,0x21,0xff,0xff]
346# CHECK-NOTRAP: ddiv $zero, $5, $1        # encoding: [0x00,0xa1,0x00,0x1e]
347# CHECK-NOTRAP: mflo $4                   # encoding: [0x00,0x00,0x20,0x12]
348# CHECK-TRAP: addiu $1, $zero, 15         # encoding: [0x24,0x01,0x00,0x0f]
349# CHECK-TRAP: dsll $1, $1, 16             # encoding: [0x00,0x01,0x0c,0x38]
350# CHECK-TRAP: ori $1, $1, 65535           # encoding: [0x34,0x21,0xff,0xff]
351# CHECK-TRAP: dsll $1, $1, 16             # encoding: [0x00,0x01,0x0c,0x38]
352# CHECK-TRAP: ori $1, $1, 65535           # encoding: [0x34,0x21,0xff,0xff]
353# CHECK-TRAP: ddiv $zero, $5, $1          # encoding: [0x00,0xa1,0x00,0x1e]
354# CHECK-TRAP: mflo $4                     # encoding: [0x00,0x00,0x20,0x12]
355