xref: /aosp_15_r20/external/llvm/test/CodeGen/Mips/Fast-ISel/callabi.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=mipsel -mcpu=mips32 -O0 -relocation-model=pic \
2*9880d681SAndroid Build Coastguard Worker; RUN:     -fast-isel-abort=1 -verify-machineinstrs < %s | \
3*9880d681SAndroid Build Coastguard Worker; RUN:     FileCheck %s -check-prefixes=ALL,32R1
4*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=mipsel -mcpu=mips32r2 -O0 -relocation-model=pic \
5*9880d681SAndroid Build Coastguard Worker; RUN:     -fast-isel-abort=1 -verify-machineinstrs < %s | \
6*9880d681SAndroid Build Coastguard Worker; RUN:     FileCheck %s -check-prefixes=ALL,32R2
7*9880d681SAndroid Build Coastguard Worker
8*9880d681SAndroid Build Coastguard Workerdeclare void @xb(i8)
9*9880d681SAndroid Build Coastguard Worker
10*9880d681SAndroid Build Coastguard Workerdefine void @cxb() {
11*9880d681SAndroid Build Coastguard Worker  ; ALL-LABEL:    cxb:
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Worker  ; ALL:            addiu   $[[T0:[0-9]+]], $zero, 10
14*9880d681SAndroid Build Coastguard Worker
15*9880d681SAndroid Build Coastguard Worker  ; 32R1:           sll     $[[T1:[0-9]+]], $[[T0]], 24
16*9880d681SAndroid Build Coastguard Worker  ; 32R1:           sra     $4, $[[T1]], 24
17*9880d681SAndroid Build Coastguard Worker
18*9880d681SAndroid Build Coastguard Worker  ; 32R2:           seb     $4, $[[T0]]
19*9880d681SAndroid Build Coastguard Worker  call void @xb(i8 10)
20*9880d681SAndroid Build Coastguard Worker  ret void
21*9880d681SAndroid Build Coastguard Worker}
22*9880d681SAndroid Build Coastguard Worker
23*9880d681SAndroid Build Coastguard Workerdeclare void @xh(i16)
24*9880d681SAndroid Build Coastguard Worker
25*9880d681SAndroid Build Coastguard Workerdefine void @cxh() {
26*9880d681SAndroid Build Coastguard Worker  ; ALL-LABEL:    cxh:
27*9880d681SAndroid Build Coastguard Worker
28*9880d681SAndroid Build Coastguard Worker  ; ALL:            addiu   $[[T0:[0-9]+]], $zero, 10
29*9880d681SAndroid Build Coastguard Worker
30*9880d681SAndroid Build Coastguard Worker  ; 32R1:           sll     $[[T1:[0-9]+]], $[[T0]], 16
31*9880d681SAndroid Build Coastguard Worker  ; 32R1:           sra     $4, $[[T1]], 16
32*9880d681SAndroid Build Coastguard Worker
33*9880d681SAndroid Build Coastguard Worker  ; 32R2:           seh     $4, $[[T0]]
34*9880d681SAndroid Build Coastguard Worker  call void @xh(i16 10)
35*9880d681SAndroid Build Coastguard Worker  ret void
36*9880d681SAndroid Build Coastguard Worker}
37*9880d681SAndroid Build Coastguard Worker
38*9880d681SAndroid Build Coastguard Workerdeclare void @xi(i32)
39*9880d681SAndroid Build Coastguard Worker
40*9880d681SAndroid Build Coastguard Workerdefine void @cxi() {
41*9880d681SAndroid Build Coastguard Worker  ; ALL-LABEL:    cxi:
42*9880d681SAndroid Build Coastguard Worker
43*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $4, $zero, 10
44*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lw      $25, %got(xi)(${{[0-9]+}})
45*9880d681SAndroid Build Coastguard Worker  ; ALL:            jalr    $25
46*9880d681SAndroid Build Coastguard Worker  call void @xi(i32 10)
47*9880d681SAndroid Build Coastguard Worker  ret void
48*9880d681SAndroid Build Coastguard Worker}
49*9880d681SAndroid Build Coastguard Worker
50*9880d681SAndroid Build Coastguard Workerdeclare void @xbb(i8, i8)
51*9880d681SAndroid Build Coastguard Worker
52*9880d681SAndroid Build Coastguard Workerdefine void @cxbb() {
53*9880d681SAndroid Build Coastguard Worker  ; ALL-LABEL:    cxbb:
54*9880d681SAndroid Build Coastguard Worker
55*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $[[T0:[0-9]+]], $zero, 76
56*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $[[T1:[0-9]+]], $zero, 101
57*9880d681SAndroid Build Coastguard Worker
58*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sll     $[[T2:[0-9]+]], $[[T0]], 24
59*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sra     $[[T3:[0-9]+]], $[[T2]], 24
60*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sll     $[[T4:[0-9]+]], $[[T1]], 24
61*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sra     $[[T5:[0-9]+]], $[[T4]], 24
62*9880d681SAndroid Build Coastguard Worker
63*9880d681SAndroid Build Coastguard Worker  ; 32R2-DAG:       seb     $4, $[[T0]]
64*9880d681SAndroid Build Coastguard Worker  ; 32R2-DAG:       seb     $5, $[[T1]]
65*9880d681SAndroid Build Coastguard Worker  call void @xbb(i8 76, i8 101)
66*9880d681SAndroid Build Coastguard Worker  ret void
67*9880d681SAndroid Build Coastguard Worker}
68*9880d681SAndroid Build Coastguard Worker
69*9880d681SAndroid Build Coastguard Workerdeclare void @xhh(i16, i16)
70*9880d681SAndroid Build Coastguard Worker
71*9880d681SAndroid Build Coastguard Workerdefine void @cxhh() {
72*9880d681SAndroid Build Coastguard Worker  ; ALL-LABEL:    cxhh:
73*9880d681SAndroid Build Coastguard Worker
74*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $[[T0:[0-9]+]], $zero, 76
75*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $[[T1:[0-9]+]], $zero, 101
76*9880d681SAndroid Build Coastguard Worker
77*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sll     $[[T2:[0-9]+]], $[[T0]], 16
78*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sra     $[[T3:[0-9]+]], $[[T2]], 16
79*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sll     $[[T4:[0-9]+]], $[[T1]], 16
80*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sra     $[[T5:[0-9]+]], $[[T4]], 16
81*9880d681SAndroid Build Coastguard Worker
82*9880d681SAndroid Build Coastguard Worker  ; 32R2-DAG:       seh     $4, $[[T0]]
83*9880d681SAndroid Build Coastguard Worker  ; 32R2-DAG:       seh     $5, $[[T1]]
84*9880d681SAndroid Build Coastguard Worker  call void @xhh(i16 76, i16 101)
85*9880d681SAndroid Build Coastguard Worker  ret void
86*9880d681SAndroid Build Coastguard Worker}
87*9880d681SAndroid Build Coastguard Worker
88*9880d681SAndroid Build Coastguard Workerdeclare void @xii(i32, i32)
89*9880d681SAndroid Build Coastguard Worker
90*9880d681SAndroid Build Coastguard Workerdefine void @cxii() {
91*9880d681SAndroid Build Coastguard Worker  ; ALL-LABEL:    cxii:
92*9880d681SAndroid Build Coastguard Worker
93*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $4, $zero, 746
94*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $5, $zero, 892
95*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lw      $25, %got(xii)(${{[0-9]+}})
96*9880d681SAndroid Build Coastguard Worker  ; ALL:            jalr    $25
97*9880d681SAndroid Build Coastguard Worker  call void @xii(i32 746, i32 892)
98*9880d681SAndroid Build Coastguard Worker  ret void
99*9880d681SAndroid Build Coastguard Worker}
100*9880d681SAndroid Build Coastguard Worker
101*9880d681SAndroid Build Coastguard Workerdeclare void @xccc(i8, i8, i8)
102*9880d681SAndroid Build Coastguard Worker
103*9880d681SAndroid Build Coastguard Workerdefine void @cxccc() {
104*9880d681SAndroid Build Coastguard Worker  ; ALL-LABEL:    cxccc:
105*9880d681SAndroid Build Coastguard Worker
106*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $[[T0:[0-9]+]], $zero, 88
107*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $[[T1:[0-9]+]], $zero, 44
108*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $[[T2:[0-9]+]], $zero, 11
109*9880d681SAndroid Build Coastguard Worker
110*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sll     $[[T3:[0-9]+]], $[[T0]], 24
111*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sra     $4, $[[T3]], 24
112*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sll     $[[T4:[0-9]+]], $[[T1]], 24
113*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sra     $5, $[[T4]], 24
114*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sll     $[[T5:[0-9]+]], $[[T2]], 24
115*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sra     $6, $[[T5]], 24
116*9880d681SAndroid Build Coastguard Worker
117*9880d681SAndroid Build Coastguard Worker  ; 32R2-DAG:       seb     $4, $[[T0]]
118*9880d681SAndroid Build Coastguard Worker  ; 32R2-DAG:       seb     $5, $[[T1]]
119*9880d681SAndroid Build Coastguard Worker  ; 32R2-DAG:       seb     $6, $[[T2]]
120*9880d681SAndroid Build Coastguard Worker  call void @xccc(i8 88, i8 44, i8 11)
121*9880d681SAndroid Build Coastguard Worker  ret void
122*9880d681SAndroid Build Coastguard Worker}
123*9880d681SAndroid Build Coastguard Worker
124*9880d681SAndroid Build Coastguard Workerdeclare void @xhhh(i16, i16, i16)
125*9880d681SAndroid Build Coastguard Worker
126*9880d681SAndroid Build Coastguard Workerdefine void @cxhhh() {
127*9880d681SAndroid Build Coastguard Worker  ; ALL-LABEL:    cxhhh:
128*9880d681SAndroid Build Coastguard Worker
129*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $[[T0:[0-9]+]], $zero, 88
130*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $[[T1:[0-9]+]], $zero, 44
131*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $[[T2:[0-9]+]], $zero, 11
132*9880d681SAndroid Build Coastguard Worker
133*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sll     $[[T3:[0-9]+]], $[[T0]], 16
134*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sra     $4, $[[T3]], 16
135*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sll     $[[T4:[0-9]+]], $[[T1]], 16
136*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sra     $5, $[[T4]], 16
137*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sll     $[[T5:[0-9]+]], $[[T2]], 16
138*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sra     $6, $[[T5]], 16
139*9880d681SAndroid Build Coastguard Worker
140*9880d681SAndroid Build Coastguard Worker  ; 32R2-DAG:       seh     $4, $[[T0]]
141*9880d681SAndroid Build Coastguard Worker  ; 32R2-DAG:       seh     $5, $[[T1]]
142*9880d681SAndroid Build Coastguard Worker  ; 32R2-DAG:       seh     $6, $[[T2]]
143*9880d681SAndroid Build Coastguard Worker  call void @xhhh(i16 88, i16 44, i16 11)
144*9880d681SAndroid Build Coastguard Worker  ret void
145*9880d681SAndroid Build Coastguard Worker}
146*9880d681SAndroid Build Coastguard Worker
147*9880d681SAndroid Build Coastguard Workerdeclare void @xiii(i32, i32, i32)
148*9880d681SAndroid Build Coastguard Worker
149*9880d681SAndroid Build Coastguard Workerdefine void @cxiii() {
150*9880d681SAndroid Build Coastguard Worker  ; ALL-LABEL:    cxiii:
151*9880d681SAndroid Build Coastguard Worker
152*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $4, $zero, 88
153*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $5, $zero, 44
154*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $6, $zero, 11
155*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lw      $25, %got(xiii)(${{[0-9]+}})
156*9880d681SAndroid Build Coastguard Worker  ; ALL:            jalr    $25
157*9880d681SAndroid Build Coastguard Worker  call void @xiii(i32 88, i32 44, i32 11)
158*9880d681SAndroid Build Coastguard Worker  ret void
159*9880d681SAndroid Build Coastguard Worker}
160*9880d681SAndroid Build Coastguard Worker
161*9880d681SAndroid Build Coastguard Workerdeclare void @xcccc(i8, i8, i8, i8)
162*9880d681SAndroid Build Coastguard Worker
163*9880d681SAndroid Build Coastguard Workerdefine void @cxcccc() {
164*9880d681SAndroid Build Coastguard Worker  ; ALL-LABEL:    cxcccc:
165*9880d681SAndroid Build Coastguard Worker
166*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $[[T0:[0-9]+]], $zero, 88
167*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $[[T1:[0-9]+]], $zero, 44
168*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $[[T2:[0-9]+]], $zero, 11
169*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $[[T3:[0-9]+]], $zero, 33
170*9880d681SAndroid Build Coastguard Worker
171*9880d681SAndroid Build Coastguard Worker  ; FIXME: We should avoid the unnecessary spill/reload here.
172*9880d681SAndroid Build Coastguard Worker
173*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sll     $[[T4:[0-9]+]], $[[T0]], 24
174*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sra     $[[T5:[0-9]+]], $[[T4]], 24
175*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sw      $4, 16($sp)
176*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       move    $4, $[[T5]]
177*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sll     $[[T6:[0-9]+]], $[[T1]], 24
178*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sra     $5, $[[T6]], 24
179*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sll     $[[T7:[0-9]+]], $[[T2]], 24
180*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sra     $6, $[[T7]], 24
181*9880d681SAndroid Build Coastguard Worker  ; 32R1:           lw      $[[T8:[0-9]+]], 16($sp)
182*9880d681SAndroid Build Coastguard Worker  ; 32R1:           sll     $[[T9:[0-9]+]], $[[T8]], 24
183*9880d681SAndroid Build Coastguard Worker  ; 32R1:           sra     $7, $[[T9]], 24
184*9880d681SAndroid Build Coastguard Worker
185*9880d681SAndroid Build Coastguard Worker  ; 32R2-DAG:       seb     $[[T4:[0-9]+]], $[[T0]]
186*9880d681SAndroid Build Coastguard Worker  ; 32R2-DAG:       sw      $4, 16($sp)
187*9880d681SAndroid Build Coastguard Worker  ; 32R2-DAG:       move    $4, $[[T4]]
188*9880d681SAndroid Build Coastguard Worker  ; 32R2-DAG:       seb     $5, $[[T1]]
189*9880d681SAndroid Build Coastguard Worker  ; 32R2-DAG:       seb     $6, $[[T2]]
190*9880d681SAndroid Build Coastguard Worker  ; 32R2-DAG:       lw      $[[T5:[0-9]+]], 16($sp)
191*9880d681SAndroid Build Coastguard Worker  ; 32R2:           seb     $7, $[[T5]]
192*9880d681SAndroid Build Coastguard Worker  call void @xcccc(i8 88, i8 44, i8 11, i8 33)
193*9880d681SAndroid Build Coastguard Worker  ret void
194*9880d681SAndroid Build Coastguard Worker}
195*9880d681SAndroid Build Coastguard Worker
196*9880d681SAndroid Build Coastguard Workerdeclare void @xhhhh(i16, i16, i16, i16)
197*9880d681SAndroid Build Coastguard Worker
198*9880d681SAndroid Build Coastguard Workerdefine void @cxhhhh() {
199*9880d681SAndroid Build Coastguard Worker  ; ALL-LABEL:    cxhhhh:
200*9880d681SAndroid Build Coastguard Worker
201*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $[[T0:[0-9]+]], $zero, 88
202*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $[[T1:[0-9]+]], $zero, 44
203*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $[[T2:[0-9]+]], $zero, 11
204*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $[[T3:[0-9]+]], $zero, 33
205*9880d681SAndroid Build Coastguard Worker
206*9880d681SAndroid Build Coastguard Worker  ; FIXME: We should avoid the unnecessary spill/reload here.
207*9880d681SAndroid Build Coastguard Worker
208*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sll     $[[T4:[0-9]+]], $[[T0]], 16
209*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sra     $[[T5:[0-9]+]], $[[T4]], 16
210*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sw      $4, 16($sp)
211*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       move    $4, $[[T5]]
212*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sll     $[[T6:[0-9]+]], $[[T1]], 16
213*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sra     $5, $[[T6]], 16
214*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sll     $[[T7:[0-9]+]], $[[T2]], 16
215*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sra     $6, $[[T7]], 16
216*9880d681SAndroid Build Coastguard Worker  ; 32R1:           lw      $[[T8:[0-9]+]], 16($sp)
217*9880d681SAndroid Build Coastguard Worker  ; 32R1:           sll     $[[T9:[0-9]+]], $[[T8]], 16
218*9880d681SAndroid Build Coastguard Worker  ; 32R1:           sra     $7, $[[T9]], 16
219*9880d681SAndroid Build Coastguard Worker
220*9880d681SAndroid Build Coastguard Worker  ; 32R2-DAG:       seh     $[[T4:[0-9]+]], $[[T0]]
221*9880d681SAndroid Build Coastguard Worker  ; 32R2-DAG:       sw      $4, 16($sp)
222*9880d681SAndroid Build Coastguard Worker  ; 32R2-DAG:       move    $4, $[[T4]]
223*9880d681SAndroid Build Coastguard Worker  ; 32R2-DAG:       seh     $5, $[[T1]]
224*9880d681SAndroid Build Coastguard Worker  ; 32R2-DAG:       seh     $6, $[[T2]]
225*9880d681SAndroid Build Coastguard Worker  ; 32R2-DAG:       lw      $[[T5:[0-9]+]], 16($sp)
226*9880d681SAndroid Build Coastguard Worker  ; 32R2:           seh     $7, $[[T5]]
227*9880d681SAndroid Build Coastguard Worker  call void @xhhhh(i16 88, i16 44, i16 11, i16 33)
228*9880d681SAndroid Build Coastguard Worker  ret void
229*9880d681SAndroid Build Coastguard Worker}
230*9880d681SAndroid Build Coastguard Worker
231*9880d681SAndroid Build Coastguard Workerdeclare void @xiiii(i32, i32, i32, i32)
232*9880d681SAndroid Build Coastguard Worker
233*9880d681SAndroid Build Coastguard Workerdefine void @cxiiii() {
234*9880d681SAndroid Build Coastguard Worker  ; ALL-LABEL:    cxiiii:
235*9880d681SAndroid Build Coastguard Worker
236*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $4, $zero, 167
237*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $5, $zero, 320
238*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $6, $zero, 97
239*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $7, $zero, 14
240*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lw      $25, %got(xiiii)(${{[0-9]+}})
241*9880d681SAndroid Build Coastguard Worker  ; ALL:            jalr    $25
242*9880d681SAndroid Build Coastguard Worker  call void @xiiii(i32 167, i32 320, i32 97, i32 14)
243*9880d681SAndroid Build Coastguard Worker  ret void
244*9880d681SAndroid Build Coastguard Worker}
245*9880d681SAndroid Build Coastguard Worker
246*9880d681SAndroid Build Coastguard Worker@c1 = global i8 -45, align 1
247*9880d681SAndroid Build Coastguard Worker@uc1 = global i8 27, align 1
248*9880d681SAndroid Build Coastguard Worker@s1 = global i16 -1789, align 2
249*9880d681SAndroid Build Coastguard Worker@us1 = global i16 1256, align 2
250*9880d681SAndroid Build Coastguard Worker
251*9880d681SAndroid Build Coastguard Workerdefine void @cxiiiiconv() {
252*9880d681SAndroid Build Coastguard Worker  ; ALL-LABEL:    cxiiiiconv:
253*9880d681SAndroid Build Coastguard Worker
254*9880d681SAndroid Build Coastguard Worker  ; ALL:            addu    $[[REG_GP:[0-9]+]], ${{[0-9]+}}, ${{[0-9+]}}
255*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lw      $[[REG_C1_ADDR:[0-9]+]], %got(c1)($[[REG_GP]])
256*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lbu     $[[REG_C1:[0-9]+]], 0($[[REG_C1_ADDR]])
257*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sll     $[[REG_C1_1:[0-9]+]], $[[REG_C1]], 24
258*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sra     $4, $[[REG_C1_1]], 24
259*9880d681SAndroid Build Coastguard Worker  ; 32R2-DAG:       seb     $4, $[[REG_C1]]
260*9880d681SAndroid Build Coastguard Worker  ; FIXME: andi is superfulous
261*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lw      $[[REG_UC1_ADDR:[0-9]+]], %got(uc1)($[[REG_GP]])
262*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lbu     $[[REG_UC1:[0-9]+]], 0($[[REG_UC1_ADDR]])
263*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        andi    $5, $[[REG_UC1]], 255
264*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lw      $[[REG_S1_ADDR:[0-9]+]], %got(s1)($[[REG_GP]])
265*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lhu     $[[REG_S1:[0-9]+]], 0($[[REG_S1_ADDR]])
266*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sll     $[[REG_S1_1:[0-9]+]], $[[REG_S1]], 16
267*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       sra     $6, $[[REG_S1_1]], 16
268*9880d681SAndroid Build Coastguard Worker  ; 32R2-DAG:       seh     $6, $[[REG_S1]]
269*9880d681SAndroid Build Coastguard Worker  ; FIXME andi is superfulous
270*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lw      $[[REG_US1_ADDR:[0-9]+]], %got(us1)($[[REG_GP]])
271*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lhu     $[[REG_US1:[0-9]+]], 0($[[REG_US1_ADDR]])
272*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        andi    $7, $[[REG_US1]], 65535
273*9880d681SAndroid Build Coastguard Worker  ; ALL:            jalr    $25
274*9880d681SAndroid Build Coastguard Worker  %1 = load i8, i8* @c1, align 1
275*9880d681SAndroid Build Coastguard Worker  %conv = sext i8 %1 to i32
276*9880d681SAndroid Build Coastguard Worker  %2 = load i8, i8* @uc1, align 1
277*9880d681SAndroid Build Coastguard Worker  %conv1 = zext i8 %2 to i32
278*9880d681SAndroid Build Coastguard Worker  %3 = load i16, i16* @s1, align 2
279*9880d681SAndroid Build Coastguard Worker  %conv2 = sext i16 %3 to i32
280*9880d681SAndroid Build Coastguard Worker  %4 = load i16, i16* @us1, align 2
281*9880d681SAndroid Build Coastguard Worker  %conv3 = zext i16 %4 to i32
282*9880d681SAndroid Build Coastguard Worker  call void @xiiii(i32 %conv, i32 %conv1, i32 %conv2, i32 %conv3)
283*9880d681SAndroid Build Coastguard Worker  ret void
284*9880d681SAndroid Build Coastguard Worker}
285*9880d681SAndroid Build Coastguard Worker
286*9880d681SAndroid Build Coastguard Workerdeclare void @xf(float)
287*9880d681SAndroid Build Coastguard Worker
288*9880d681SAndroid Build Coastguard Workerdefine void @cxf() {
289*9880d681SAndroid Build Coastguard Worker  ; ALL-LABEL:    cxf:
290*9880d681SAndroid Build Coastguard Worker
291*9880d681SAndroid Build Coastguard Worker  ; ALL:            addu    $[[REG_GP:[0-9]+]], ${{[0-9]+}}, ${{[0-9+]}}
292*9880d681SAndroid Build Coastguard Worker  ; ALL:            lui     $[[REG_FPCONST_1:[0-9]+]], 17886
293*9880d681SAndroid Build Coastguard Worker  ; ALL:            ori     $[[REG_FPCONST:[0-9]+]], $[[REG_FPCONST_1]], 17067
294*9880d681SAndroid Build Coastguard Worker  ; ALL:            mtc1    $[[REG_FPCONST]], $f12
295*9880d681SAndroid Build Coastguard Worker  ; ALL:            lw      $25, %got(xf)($[[REG_GP]])
296*9880d681SAndroid Build Coastguard Worker  ; ALL:            jalr    $25
297*9880d681SAndroid Build Coastguard Worker  call void @xf(float 0x40BBC85560000000)
298*9880d681SAndroid Build Coastguard Worker  ret void
299*9880d681SAndroid Build Coastguard Worker}
300*9880d681SAndroid Build Coastguard Worker
301*9880d681SAndroid Build Coastguard Workerdeclare void @xff(float, float)
302*9880d681SAndroid Build Coastguard Worker
303*9880d681SAndroid Build Coastguard Workerdefine void @cxff() {
304*9880d681SAndroid Build Coastguard Worker  ; ALL-LABEL:    cxff:
305*9880d681SAndroid Build Coastguard Worker
306*9880d681SAndroid Build Coastguard Worker  ; ALL:            addu    $[[REG_GP:[0-9]+]], ${{[0-9]+}}, ${{[0-9+]}}
307*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lui     $[[REG_FPCONST_1:[0-9]+]], 16314
308*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        ori     $[[REG_FPCONST:[0-9]+]], $[[REG_FPCONST_1]], 21349
309*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        mtc1    $[[REG_FPCONST]], $f12
310*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lui     $[[REG_FPCONST_2:[0-9]+]], 16593
311*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        ori     $[[REG_FPCONST_3:[0-9]+]], $[[REG_FPCONST_2]], 24642
312*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        mtc1    $[[REG_FPCONST_3]], $f14
313*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lw      $25, %got(xff)($[[REG_GP]])
314*9880d681SAndroid Build Coastguard Worker  ; ALL:            jalr    $25
315*9880d681SAndroid Build Coastguard Worker  call void @xff(float 0x3FF74A6CA0000000, float 0x401A2C0840000000)
316*9880d681SAndroid Build Coastguard Worker  ret void
317*9880d681SAndroid Build Coastguard Worker}
318*9880d681SAndroid Build Coastguard Worker
319*9880d681SAndroid Build Coastguard Workerdeclare void @xfi(float, i32)
320*9880d681SAndroid Build Coastguard Worker
321*9880d681SAndroid Build Coastguard Workerdefine void @cxfi() {
322*9880d681SAndroid Build Coastguard Worker  ; ALL-LABEL:    cxfi:
323*9880d681SAndroid Build Coastguard Worker
324*9880d681SAndroid Build Coastguard Worker  ; ALL:            addu    $[[REG_GP:[0-9]+]], ${{[0-9]+}}, ${{[0-9+]}}
325*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lui     $[[REG_FPCONST_1:[0-9]+]], 16540
326*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        ori     $[[REG_FPCONST:[0-9]+]], $[[REG_FPCONST_1]], 33554
327*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        mtc1    $[[REG_FPCONST]], $f12
328*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $5, $zero, 102
329*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lw      $25, %got(xfi)($[[REG_GP]])
330*9880d681SAndroid Build Coastguard Worker  ; ALL:            jalr    $25
331*9880d681SAndroid Build Coastguard Worker  call void @xfi(float 0x4013906240000000, i32 102)
332*9880d681SAndroid Build Coastguard Worker  ret void
333*9880d681SAndroid Build Coastguard Worker}
334*9880d681SAndroid Build Coastguard Worker
335*9880d681SAndroid Build Coastguard Workerdeclare void @xfii(float, i32, i32)
336*9880d681SAndroid Build Coastguard Worker
337*9880d681SAndroid Build Coastguard Workerdefine void @cxfii() {
338*9880d681SAndroid Build Coastguard Worker  ; ALL-LABEL:    cxfii:
339*9880d681SAndroid Build Coastguard Worker
340*9880d681SAndroid Build Coastguard Worker  ; ALL:            addu    $[[REG_GP:[0-9]+]], ${{[0-9]+}}, ${{[0-9+]}}
341*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lui     $[[REG_FPCONST_1:[0-9]+]], 17142
342*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        ori     $[[REG_FPCONST:[0-9]+]], $[[REG_FPCONST_1]], 16240
343*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        mtc1    $[[REG_FPCONST]], $f12
344*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $5, $zero, 9993
345*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $6, $zero, 10922
346*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lw      $25, %got(xfii)($[[REG_GP]])
347*9880d681SAndroid Build Coastguard Worker  ; ALL:            jalr    $25
348*9880d681SAndroid Build Coastguard Worker  call void @xfii(float 0x405EC7EE00000000, i32 9993, i32 10922)
349*9880d681SAndroid Build Coastguard Worker  ret void
350*9880d681SAndroid Build Coastguard Worker}
351*9880d681SAndroid Build Coastguard Worker
352*9880d681SAndroid Build Coastguard Workerdeclare void @xfiii(float, i32, i32, i32)
353*9880d681SAndroid Build Coastguard Worker
354*9880d681SAndroid Build Coastguard Workerdefine void @cxfiii() {
355*9880d681SAndroid Build Coastguard Worker  ; ALL-LABEL:    cxfiii:
356*9880d681SAndroid Build Coastguard Worker
357*9880d681SAndroid Build Coastguard Worker  ; ALL:            addu    $[[REG_GP:[0-9]+]], ${{[0-9]+}}, ${{[0-9+]}}
358*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lui     $[[REG_FPCONST_1:[0-9]+]], 17120
359*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        ori     $[[REG_FPCONST:[0-9]+]], $[[REG_FPCONST_1]], 14681
360*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        mtc1    $[[REG_FPCONST]], $f12
361*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $5, $zero, 3948
362*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lui     $[[REG_I_1:[0-9]+]], 1
363*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        ori     $6, $[[REG_I_1]], 23475
364*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lui     $[[REG_I_2:[0-9]+]], 1
365*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        ori     $7, $[[REG_I_2]], 45686
366*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lw      $25, %got(xfiii)($[[REG_GP]])
367*9880d681SAndroid Build Coastguard Worker  ; ALL:            jalr    $25
368*9880d681SAndroid Build Coastguard Worker  call void @xfiii(float 0x405C072B20000000, i32 3948, i32 89011, i32 111222)
369*9880d681SAndroid Build Coastguard Worker  ret void
370*9880d681SAndroid Build Coastguard Worker}
371*9880d681SAndroid Build Coastguard Worker
372*9880d681SAndroid Build Coastguard Workerdeclare void @xd(double)
373*9880d681SAndroid Build Coastguard Worker
374*9880d681SAndroid Build Coastguard Workerdefine void @cxd() {
375*9880d681SAndroid Build Coastguard Worker  ; ALL-LABEL:    cxd:
376*9880d681SAndroid Build Coastguard Worker
377*9880d681SAndroid Build Coastguard Worker  ; ALL:            addu    $[[REG_GP:[0-9]+]], ${{[0-9]+}}, ${{[0-9+]}}
378*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lui     $[[REG_FPCONST_1:[0-9]+]], 16514
379*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        ori     $[[REG_FPCONST_2:[0-9]+]], $[[REG_FPCONST_1]], 48037
380*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lui     $[[REG_FPCONST_3:[0-9]+]], 58195
381*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        ori     $[[REG_FPCONST_4:[0-9]+]], $[[REG_FPCONST_3]], 63439
382*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        mtc1    $[[REG_FPCONST_4]], $f12
383*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       mtc1    $[[REG_FPCONST_2]], $f13
384*9880d681SAndroid Build Coastguard Worker  ; 32R2-DAG:       mthc1   $[[REG_FPCONST_2]], $f12
385*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lw      $25, %got(xd)($[[REG_GP]])
386*9880d681SAndroid Build Coastguard Worker  ; ALL:            jalr    $25
387*9880d681SAndroid Build Coastguard Worker  call void @xd(double 5.994560e+02)
388*9880d681SAndroid Build Coastguard Worker  ret void
389*9880d681SAndroid Build Coastguard Worker}
390*9880d681SAndroid Build Coastguard Worker
391*9880d681SAndroid Build Coastguard Workerdeclare void @xdd(double, double)
392*9880d681SAndroid Build Coastguard Worker
393*9880d681SAndroid Build Coastguard Workerdefine void @cxdd() {
394*9880d681SAndroid Build Coastguard Worker  ; ALL-LABEL:    cxdd:
395*9880d681SAndroid Build Coastguard Worker
396*9880d681SAndroid Build Coastguard Worker  ; ALL:            addu    $[[REG_GP:[0-9]+]], ${{[0-9]+}}, ${{[0-9+]}}
397*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lui     $[[REG_FPCONST_1:[0-9]+]], 16531
398*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        ori     $[[REG_FPCONST_2:[0-9]+]], $[[REG_FPCONST_1]], 19435
399*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lui     $[[REG_FPCONST_3:[0-9]+]], 34078
400*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        ori     $[[REG_FPCONST_4:[0-9]+]], $[[REG_FPCONST_3]], 47186
401*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        mtc1    $[[REG_FPCONST_4]], $f12
402*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       mtc1    $[[REG_FPCONST_2]], $f13
403*9880d681SAndroid Build Coastguard Worker  ; 32R2-DAG:       mthc1   $[[REG_FPCONST_2]], $f12
404*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lui     $[[REG_FPCONST_1:[0-9]+]], 16629
405*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        ori     $[[REG_FPCONST_2:[0-9]+]], $[[REG_FPCONST_1]], 45873
406*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lui     $[[REG_FPCONST_3:[0-9]+]], 63438
407*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        ori     $[[REG_FPCONST_4:[0-9]+]], $[[REG_FPCONST_3]], 55575
408*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        mtc1    $[[REG_FPCONST_4]], $f14
409*9880d681SAndroid Build Coastguard Worker  ; 32R1-DAG:       mtc1    $[[REG_FPCONST_2]], $f15
410*9880d681SAndroid Build Coastguard Worker  ; 32R2-DAG:       mthc1   $[[REG_FPCONST_2]], $f14
411*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lw      $25, %got(xdd)($[[REG_GP]])
412*9880d681SAndroid Build Coastguard Worker  ; ALL:            jalr    $25
413*9880d681SAndroid Build Coastguard Worker  call void @xdd(double 1.234980e+03, double 0x40F5B331F7CED917)
414*9880d681SAndroid Build Coastguard Worker  ret void
415*9880d681SAndroid Build Coastguard Worker}
416*9880d681SAndroid Build Coastguard Worker
417*9880d681SAndroid Build Coastguard Workerdeclare void @xif(i32, float)
418*9880d681SAndroid Build Coastguard Worker
419*9880d681SAndroid Build Coastguard Workerdefine void @cxif() {
420*9880d681SAndroid Build Coastguard Worker  ; ALL-LABEL:    cxif:
421*9880d681SAndroid Build Coastguard Worker
422*9880d681SAndroid Build Coastguard Worker  ; ALL:            addu    $[[REG_GP:[0-9]+]], ${{[0-9]+}}, ${{[0-9+]}}
423*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $4, $zero, 345
424*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lui     $[[REGF_1:[0-9]+]], 17374
425*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        ori     $[[REGF_2:[0-9]+]], $[[REGF_1]], 29393
426*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        mtc1    $[[REGF_2]], $f[[REGF_3:[0-9]+]]
427*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        mfc1    $5, $f[[REGF_3]]
428*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lw      $25, %got(xif)($[[REG_GP]])
429*9880d681SAndroid Build Coastguard Worker  ; ALL:            jalr    $25
430*9880d681SAndroid Build Coastguard Worker  call void @xif(i32 345, float 0x407BCE5A20000000)
431*9880d681SAndroid Build Coastguard Worker  ret void
432*9880d681SAndroid Build Coastguard Worker}
433*9880d681SAndroid Build Coastguard Worker
434*9880d681SAndroid Build Coastguard Workerdeclare void @xiff(i32, float, float)
435*9880d681SAndroid Build Coastguard Worker
436*9880d681SAndroid Build Coastguard Workerdefine void @cxiff() {
437*9880d681SAndroid Build Coastguard Worker  ; ALL-LABEL:    cxiff:
438*9880d681SAndroid Build Coastguard Worker
439*9880d681SAndroid Build Coastguard Worker  ; ALL:            addu    $[[REG_GP:[0-9]+]], ${{[0-9]+}}, ${{[0-9+]}}
440*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $4, $zero, 12239
441*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lui     $[[REGF0_1:[0-9]+]], 17526
442*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        ori     $[[REGF0_2:[0-9]+]], $[[REGF0_1]], 55706
443*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        mtc1    $[[REGF0_2]], $f[[REGF0_3:[0-9]+]]
444*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lui     $[[REGF1_1:[0-9]+]], 16543
445*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        ori     $[[REGF1_2:[0-9]+]], $[[REGF1_1]], 65326
446*9880d681SAndroid Build Coastguard Worker  ; ALL:            mtc1    $[[REGF1_2]], $f[[REGF1_3:[0-9]+]]
447*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        mfc1    $5, $f[[REGF0_3]]
448*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        mfc1    $6, $f[[REGF1_3]]
449*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lw      $25, %got(xiff)($[[REG_GP]])
450*9880d681SAndroid Build Coastguard Worker  ; ALL:            jalr    $25
451*9880d681SAndroid Build Coastguard Worker  call void @xiff(i32 12239, float 0x408EDB3340000000, float 0x4013FFE5C0000000)
452*9880d681SAndroid Build Coastguard Worker  ret void
453*9880d681SAndroid Build Coastguard Worker}
454*9880d681SAndroid Build Coastguard Worker
455*9880d681SAndroid Build Coastguard Workerdeclare void @xifi(i32, float, i32)
456*9880d681SAndroid Build Coastguard Worker
457*9880d681SAndroid Build Coastguard Workerdefine void @cxifi() {
458*9880d681SAndroid Build Coastguard Worker  ; ALL-LABEL:    cxifi:
459*9880d681SAndroid Build Coastguard Worker
460*9880d681SAndroid Build Coastguard Worker  ; ALL:            addu    $[[REG_GP:[0-9]+]], ${{[0-9]+}}, ${{[0-9+]}}
461*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $4, $zero, 887
462*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lui     $[[REGF_1:[0-9]+]], 16659
463*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        ori     $[[REGF_2:[0-9]+]], $[[REGF_1]], 48759
464*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        mtc1    $[[REGF_2]], $f[[REGF_3:[0-9]+]]
465*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        mfc1    $5, $f[[REGF_3]]
466*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $6, $zero, 888
467*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lw      $25, %got(xifi)($[[REG_GP]])
468*9880d681SAndroid Build Coastguard Worker  ; ALL:            jalr    $25
469*9880d681SAndroid Build Coastguard Worker  call void @xifi(i32 887, float 0x402277CEE0000000, i32 888)
470*9880d681SAndroid Build Coastguard Worker  ret void
471*9880d681SAndroid Build Coastguard Worker}
472*9880d681SAndroid Build Coastguard Worker
473*9880d681SAndroid Build Coastguard Workerdeclare void @xifif(i32, float, i32, float)
474*9880d681SAndroid Build Coastguard Worker
475*9880d681SAndroid Build Coastguard Workerdefine void @cxifif() {
476*9880d681SAndroid Build Coastguard Worker  ; ALL-LABEL:    cxifif:
477*9880d681SAndroid Build Coastguard Worker
478*9880d681SAndroid Build Coastguard Worker  ; ALL:            addu    $[[REG_GP:[0-9]+]], ${{[0-9]+}}, ${{[0-9+]}}
479*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lui     $[[REGI:[0-9]+]], 1
480*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        ori     $4, $[[REGI]], 2238
481*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lui     $[[REGF0_1:[0-9]+]], 17527
482*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        ori     $[[REGF0_2:[0-9]+]], $[[REGF0_1]], 2015
483*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        mtc1    $[[REGF0_2]], $f[[REGF0_3:[0-9]+]]
484*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $6, $zero, 9991
485*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lui     $[[REGF1_1:[0-9]+]], 17802
486*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        ori     $[[REGF1_2:[0-9]+]], $[[REGF1_1]], 58470
487*9880d681SAndroid Build Coastguard Worker  ; ALL:            mtc1    $[[REGF1_2]], $f[[REGF1_3:[0-9]+]]
488*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        mfc1    $5, $f[[REGF0_3]]
489*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        mfc1    $7, $f[[REGF1_3]]
490*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lw      $25, %got(xifif)($[[REG_GP]])
491*9880d681SAndroid Build Coastguard Worker  ; ALL:            jalr    $25
492*9880d681SAndroid Build Coastguard Worker  call void @xifif(i32 67774, float 0x408EE0FBE0000000,
493*9880d681SAndroid Build Coastguard Worker                   i32 9991, float 0x40B15C8CC0000000)
494*9880d681SAndroid Build Coastguard Worker  ret void
495*9880d681SAndroid Build Coastguard Worker}
496*9880d681SAndroid Build Coastguard Worker
497*9880d681SAndroid Build Coastguard Workerdeclare void @xiffi(i32, float, float, i32)
498*9880d681SAndroid Build Coastguard Worker
499*9880d681SAndroid Build Coastguard Workerdefine void @cxiffi() {
500*9880d681SAndroid Build Coastguard Worker  ; ALL-LABEL:    cxiffi:
501*9880d681SAndroid Build Coastguard Worker
502*9880d681SAndroid Build Coastguard Worker  ; ALL:            addu    $[[REG_GP:[0-9]+]], ${{[0-9]+}}, ${{[0-9+]}}
503*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $4, $zero, 45
504*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lui     $[[REGF0_1:[0-9]+]], 16307
505*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        ori     $[[REGF0_2:[0-9]+]], $[[REGF0_1]], 13107
506*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        mtc1    $[[REGF0_2]], $f[[REGF0_3:[0-9]+]]
507*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lui     $[[REGF1_1:[0-9]+]], 17529
508*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        ori     $[[REGF1_2:[0-9]+]], $[[REGF1_1]], 39322
509*9880d681SAndroid Build Coastguard Worker  ; ALL:            mtc1    $[[REGF1_2]], $f[[REGF1_3:[0-9]+]]
510*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        addiu   $7, $zero, 234
511*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        mfc1    $5, $f[[REGF0_3]]
512*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        mfc1    $6, $f[[REGF1_3]]
513*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:        lw      $25, %got(xiffi)($[[REG_GP]])
514*9880d681SAndroid Build Coastguard Worker  ; ALL:            jalr    $25
515*9880d681SAndroid Build Coastguard Worker  call void @xiffi(i32 45, float 0x3FF6666660000000,
516*9880d681SAndroid Build Coastguard Worker                   float 0x408F333340000000, i32 234)
517*9880d681SAndroid Build Coastguard Worker  ret void
518*9880d681SAndroid Build Coastguard Worker}
519*9880d681SAndroid Build Coastguard Worker
520*9880d681SAndroid Build Coastguard Workerdeclare void @xifii(i32, float, i32, i32)
521*9880d681SAndroid Build Coastguard Worker
522*9880d681SAndroid Build Coastguard Workerdefine void @cxifii() {
523*9880d681SAndroid Build Coastguard Worker  ; ALL-LABEL:    cxifii:
524*9880d681SAndroid Build Coastguard Worker
525*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:    addu    $[[REG_GP:[0-9]+]], ${{[0-9]+}}, ${{[0-9+]}}
526*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:    addiu   $4, $zero, 12239
527*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:    lui     $[[REGF_1:[0-9]+]], 17526
528*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:    ori     $[[REGF_2:[0-9]+]], $[[REGF_1]], 55706
529*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:    mtc1    $[[REGF_2]], $f[[REGF_3:[0-9]+]]
530*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:    mfc1    $5, $f[[REGF_3]]
531*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:    lui     $[[REGI2:[0-9]+]], 15
532*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:    ori     $6, $[[REGI2]], 15837
533*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:    addiu   $7, $zero, 1234
534*9880d681SAndroid Build Coastguard Worker  ; ALL-DAG:    lw      $25, %got(xifii)($[[REG_GP]])
535*9880d681SAndroid Build Coastguard Worker  ; ALL:        jalr    $25
536*9880d681SAndroid Build Coastguard Worker  call void @xifii(i32 12239, float 0x408EDB3340000000, i32 998877, i32 1234)
537*9880d681SAndroid Build Coastguard Worker  ret void
538*9880d681SAndroid Build Coastguard Worker}
539