1# RUN: llvm-mc -filetype=obj -triple mips64 -mcpu=mips64 %s -o - \
2# RUN:   | llvm-objdump -d -r - | FileCheck %s --check-prefix=MIPS64
3# RUN: llvm-mc -filetype=obj -triple mips64 -mcpu=mips64r6 %s -o - \
4# RUN:   | llvm-objdump -d -r - | FileCheck %s --check-prefix=MIPS64R6
5
6lld $2, 128($sp)
7# MIPS64:         d3 a2 00 80  lld    $2, 128($sp)
8# MIPS64R6:       7f a2 40 37  lld    $2, 128($sp)
9
10lld $2, -128($sp)
11# MIPS64:         d3 a2 ff 80  lld    $2, -128($sp)
12# MIPS64R6:       7f a2 c0 37  lld    $2, -128($sp)
13
14lld $2, 256($sp)
15# MIPS64:         d3 a2 01 00  lld    $2, 256($sp)
16
17# MIPS64R6:       67 a2 01 00  daddiu $2, $sp, 256
18# MIPS64R6-NEXT:  7c 42 00 37  lld    $2, 0($2)
19
20lld $2, -257($sp)
21# MIPS64:         d3 a2 fe ff  lld    $2, -257($sp)
22
23# MIPS64R6:       67 a2 fe ff  daddiu $2, $sp, -257
24# MIPS64R6-NEXT:  7c 42 00 37  lld    $2, 0($2)
25
26lld $2, 32767($sp)
27# MIPS64:         d3 a2 7f ff  lld    $2, 32767($sp)
28
29# MIPS64R6:       67 a2 7f ff  daddiu $2, $sp, 32767
30# MIPS64R6-NEXT:  7c 42 00 37  lld    $2, 0($2)
31
32lld $2, 32768($sp)
33# MIPS64:         3c 02 00 01  lui    $2, 1
34# MIPS64-NEXT:    00 5d 10 2d  daddu  $2, $2, $sp
35# MIPS64-NEXT:    d0 42 80 00  lld    $2, -32768($2)
36
37# MIPS64R6:       34 02 80 00  ori    $2, $zero, 32768
38# MIPS64R6-NEXT:  00 5d 10 2d  daddu  $2, $2, $sp
39# MIPS64R6-NEXT:  7c 42 00 37  lld    $2, 0($2)
40
41lld $2, -32768($sp)
42# MIPS64:         d3 a2 80 00  lld    $2, -32768($sp)
43
44# MIPS64R6:       67 a2 80 00  daddiu $2, $sp, -32768
45# MIPS64R6-NEXT:  7c 42 00 37  lld    $2, 0($2)
46
47lld $2, -32769($sp)
48# MIPS64:         3c 02 ff ff  lui    $2, 65535
49# MIPS64-NEXT:    00 5d 10 2d  daddu  $2, $2, $sp
50# MIPS64-NEXT:    d0 42 7f ff  lld    $2, 32767($2)
51
52# MIPS64R6:       3c 02 ff ff  aui    $2, $zero, 65535
53# MIPS64R6-NEXT:  34 42 7f ff  ori    $2, $2, 32767
54# MIPS64R6-NEXT:  00 5d 10 2d  daddu  $2, $2, $sp
55# MIPS64R6-NEXT:  7c 42 00 37  lld    $2, 0($2)
56
57lld $2, 2147483648($sp)
58# MIPS64:         34 02 80 00  ori    $2, $zero, 32768
59# MIPS64-NEXT:    00 02 14 38  dsll   $2, $2, 16
60# MIPS64-NEXT:    00 5d 10 2d  daddu  $2, $2, $sp
61# MIPS64-NEXT:    d0 42 00 00  lld    $2, 0($2)
62
63# MIPS64R6:       34 02 80 00  ori    $2, $zero, 32768
64# MIPS64R6-NEXT:  00 02 14 38  dsll   $2, $2, 16
65# MIPS64R6-NEXT:  00 5d 10 2d  daddu  $2, $2, $sp
66# MIPS64R6-NEXT:  7c 42 00 37  lld    $2, 0($2)
67
68lld $2, -2147483648($sp)
69# MIPS64:         3c 02 80 00  lui    $2, 32768
70# MIPS64-NEXT:    00 5d 10 2d  daddu  $2, $2, $sp
71# MIPS64-NEXT:    d0 42 00 00  lld    $2, 0($2)
72
73# MIPS64R6:       3c 02 80 00  aui    $2, $zero, 32768
74# MIPS64R6-NEXT:  00 5d 10 2d  daddu  $2, $2, $sp
75# MIPS64R6-NEXT:  7c 42 00 37  lld    $2, 0($2)
76
77lld $2, 9223372036853775808($sp)
78# MIPS64:         3c 02 7f ff  lui    $2, 32767
79# MIPS64-NEXT:    34 42 ff ff  ori    $2, $2, 65535
80# MIPS64-NEXT:    00 02 14 38  dsll   $2, $2, 16
81# MIPS64-NEXT:    34 42 ff f1  ori    $2, $2, 65521
82# MIPS64-NEXT:    00 02 14 38  dsll   $2, $2, 16
83# MIPS64-NEXT:    00 5d 10 2d  daddu  $2, $2, $sp
84# MIPS64-NEXT:    d0 42 bd c0  lld    $2, -16960($2)
85
86# MIPS64R6:       3c 02 7f ff  aui    $2, $zero, 32767
87# MIPS64R6-NEXT:  34 42 ff ff  ori    $2, $2, 65535
88# MIPS64R6-NEXT:  00 02 14 38  dsll   $2, $2, 16
89# MIPS64R6-NEXT:  34 42 ff f0  ori    $2, $2, 65520
90# MIPS64R6-NEXT:  00 02 14 38  dsll   $2, $2, 16
91# MIPS64R6-NEXT:  34 42 bd c0  ori    $2, $2, 48576
92# MIPS64R6-NEXT:  00 5d 10 2d  daddu  $2, $2, $sp
93# MIPS64R6-NEXT:  7c 42 00 37  lld    $2, 0($2)
94
95lld $12, symbol
96# MIPS64:         3c 0c 00 00  lui    $12, 0
97# MIPS64-NEXT:               R_MIPS_HIGHEST/R_MIPS_NONE/R_MIPS_NONE  symbol
98# MIPS64-NEXT:    65 8c 00 00  daddiu $12, $12, 0
99# MIPS64-NEXT:               R_MIPS_HIGHER/R_MIPS_NONE/R_MIPS_NONE  symbol
100# MIPS64-NEXT:    00 0c 64 38  dsll   $12, $12, 16
101# MIPS64-NEXT:    65 8c 00 00  daddiu $12, $12, 0
102# MIPS64-NEXT:               R_MIPS_HI16/R_MIPS_NONE/R_MIPS_NONE  symbol
103# MIPS64-NEXT:    00 0c 64 38  dsll   $12, $12, 16
104# MIPS64-NEXT:    d1 8c 00 00  lld    $12, 0($12)
105# MIPS64-NEXT:               R_MIPS_LO16/R_MIPS_NONE/R_MIPS_NONE  symbol
106
107# MIPS64R6:       3c 0c 00 00  aui    $12, $zero, 0
108# MIPS64R6-NEXT:             R_MIPS_HIGHEST/R_MIPS_NONE/R_MIPS_NONE  symbol
109# MIPS64R6-NEXT:  3c 01 00 00  aui    $1, $zero, 0
110# MIPS64R6-NEXT:             R_MIPS_HI16/R_MIPS_NONE/R_MIPS_NONE  symbol
111# MIPS64R6-NEXT:  65 8c 00 00  daddiu $12, $12, 0
112# MIPS64R6-NEXT:             R_MIPS_HIGHER/R_MIPS_NONE/R_MIPS_NONE  symbol
113# MIPS64R6-NEXT:  64 21 00 00  daddiu $1, $1, 0
114# MIPS64R6-NEXT:             R_MIPS_LO16/R_MIPS_NONE/R_MIPS_NONE  symbol
115# MIPS64R6-NEXT:  00 0c 60 3c  dsll32 $12, $12, 0
116# MIPS64R6-NEXT:  01 81 60 2d  daddu  $12, $12, $1
117# MIPS64R6-NEXT:  7d 8c 00 37  lld    $12, 0($12)
118
119lld $12, symbol($3)
120# MIPS64:         3c 0c 00 00  lui    $12, 0
121# MIPS64-NEXT:               R_MIPS_HIGHEST/R_MIPS_NONE/R_MIPS_NONE  symbol
122# MIPS64-NEXT:    65 8c 00 00  daddiu $12, $12, 0
123# MIPS64-NEXT:               R_MIPS_HIGHER/R_MIPS_NONE/R_MIPS_NONE  symbol
124# MIPS64-NEXT:    00 0c 64 38  dsll   $12, $12, 16
125# MIPS64-NEXT:    65 8c 00 00  daddiu $12, $12, 0
126# MIPS64-NEXT:               R_MIPS_HI16/R_MIPS_NONE/R_MIPS_NONE  symbol
127# MIPS64-NEXT:    00 0c 64 38  dsll   $12, $12, 16
128# MIPS64-NEXT:    01 83 60 2d  daddu  $12, $12, $3
129# MIPS64-NEXT:    d1 8c 00 00  lld    $12, 0($12)
130# MIPS64-NEXT:               R_MIPS_LO16/R_MIPS_NONE/R_MIPS_NONE  symbol
131
132# MIPS64R6-NEXT:  3c 0c 00 00  aui    $12, $zero, 0
133# MIPS64R6-NEXT:             R_MIPS_HIGHEST/R_MIPS_NONE/R_MIPS_NONE  symbol
134# MIPS64R6-NEXT:  3c 01 00 00  aui    $1, $zero, 0
135# MIPS64R6-NEXT:             R_MIPS_HI16/R_MIPS_NONE/R_MIPS_NONE  symbol
136# MIPS64R6-NEXT:  65 8c 00 00  daddiu $12, $12, 0
137# MIPS64R6-NEXT:             R_MIPS_HIGHER/R_MIPS_NONE/R_MIPS_NONE  symbol
138# MIPS64R6-NEXT:  64 21 00 00  daddiu $1, $1, 0
139# MIPS64R6-NEXT:             R_MIPS_LO16/R_MIPS_NONE/R_MIPS_NONE  symbol
140# MIPS64R6-NEXT:  00 0c 60 3c  dsll32 $12, $12, 0
141# MIPS64R6-NEXT:  01 81 60 2d  daddu  $12, $12, $1
142# MIPS64R6-NEXT:  01 83 60 2d  daddu  $12, $12, $3
143# MIPS64R6-NEXT:  7d 8c 00 37  lld    $12, 0($12)
144
145lld $12, symbol+8
146# MIPS64:         3c 0c 00 00  lui    $12, 0
147# MIPS64-NEXT:               R_MIPS_HIGHEST/R_MIPS_NONE/R_MIPS_NONE  symbol+0x8
148# MIPS64-NEXT:    65 8c 00 00  daddiu $12, $12, 0
149# MIPS64-NEXT:               R_MIPS_HIGHER/R_MIPS_NONE/R_MIPS_NONE  symbol+0x8
150# MIPS64-NEXT:    00 0c 64 38  dsll   $12, $12, 16
151# MIPS64-NEXT:    65 8c 00 00  daddiu $12, $12, 0
152# MIPS64-NEXT:               R_MIPS_HI16/R_MIPS_NONE/R_MIPS_NONE  symbol+0x8
153# MIPS64-NEXT:    00 0c 64 38  dsll   $12, $12, 16
154# MIPS64-NEXT:    d1 8c 00 00  lld    $12, 0($12)
155# MIPS64-NEXT:               R_MIPS_LO16/R_MIPS_NONE/R_MIPS_NONE  symbol+0x8
156
157# MIPS64R6-NEXT:  3c 0c 00 00  aui    $12, $zero, 0
158# MIPS64R6-NEXT:             R_MIPS_HIGHEST/R_MIPS_NONE/R_MIPS_NONE  symbol+0x8
159# MIPS64R6-NEXT:  3c 01 00 00  aui    $1, $zero, 0
160# MIPS64R6-NEXT:             R_MIPS_HI16/R_MIPS_NONE/R_MIPS_NONE  symbol+0x8
161# MIPS64R6-NEXT:  65 8c 00 00  daddiu $12, $12, 0
162# MIPS64R6-NEXT:             R_MIPS_HIGHER/R_MIPS_NONE/R_MIPS_NONE  symbol+0x8
163# MIPS64R6-NEXT:  64 21 00 00  daddiu $1, $1, 0
164# MIPS64R6-NEXT:             R_MIPS_LO16/R_MIPS_NONE/R_MIPS_NONE  symbol+0x8
165# MIPS64R6-NEXT:  00 0c 60 3c  dsll32 $12, $12, 0
166# MIPS64R6-NEXT:  01 81 60 2d  daddu  $12, $12, $1
167# MIPS64R6-NEXT:  7d 8c 00 37  lld    $12, 0($12)
168
169.option pic2
170
171lld $12, symbol
172# MIPS64:         df 8c 00 00  ld     $12, 0($gp)
173# MIPS64-NEXT:               R_MIPS_GOT_DISP/R_MIPS_NONE/R_MIPS_NONE symbol
174# MIPS64-NEXT:    d1 8c 00 00  lld    $12, 0($12)
175
176# MIPS64R6:       df 8c 00 00  ld     $12, 0($gp)
177# MIPS64R6-NEXT:             R_MIPS_GOT_DISP/R_MIPS_NONE/R_MIPS_NONE symbol
178# MIPS64R6-NEXT:  7d 8c 00 37  lld    $12, 0($12)
179
180lld $12, symbol+8
181# MIPS64:         df 8c 00 00  ld     $12, 0($gp)
182# MIPS64-NEXT:               R_MIPS_GOT_DISP/R_MIPS_NONE/R_MIPS_NONE symbol
183# MIPS64-NEXT:    d1 8c 00 08  lld    $12, 8($12)
184
185# MIPS64R6:       df 8c 00 00  ld     $12, 0($gp)
186# MIPS64R6-NEXT:             R_MIPS_GOT_DISP/R_MIPS_NONE/R_MIPS_NONE symbol
187# MIPS64R6-NEXT:  65 8c 00 08  daddiu $12, $12, 8
188# MIPS64R6-NEXT:  7d 8c 00 37  lld    $12, 0($12)
189