4
4
define void @test_fadd (ptr %p , ptr %q ) nounwind {
5
5
; CHECK-LIBCALL-LABEL: test_fadd:
6
6
; CHECK-LIBCALL: # %bb.0:
7
- ; CHECK-LIBCALL-NEXT: addiu $sp, $sp, -40
8
- ; CHECK-LIBCALL-NEXT: sdc1 $f20, 32($sp) # 8-byte Folded Spill
9
- ; CHECK-LIBCALL-NEXT: sw $ra, 28($sp) # 4-byte Folded Spill
10
- ; CHECK-LIBCALL-NEXT: sw $17, 24($sp) # 4-byte Folded Spill
11
- ; CHECK-LIBCALL-NEXT: sw $16, 20($sp) # 4-byte Folded Spill
12
- ; CHECK-LIBCALL-NEXT: move $17, $4
13
- ; CHECK-LIBCALL-NEXT: lhu $4, 0($4)
7
+ ; CHECK-LIBCALL-NEXT: addiu $sp, $sp, -32
8
+ ; CHECK-LIBCALL-NEXT: sdc1 $f20, 24($sp) # 8-byte Folded Spill
9
+ ; CHECK-LIBCALL-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill
10
+ ; CHECK-LIBCALL-NEXT: sw $16, 16($sp) # 4-byte Folded Spill
11
+ ; CHECK-LIBCALL-NEXT: move $16, $4
12
+ ; CHECK-LIBCALL-NEXT: lhu $4, 0($5)
14
13
; CHECK-LIBCALL-NEXT: jal __gnu_h2f_ieee
15
- ; CHECK-LIBCALL-NEXT: move $16, $5
14
+ ; CHECK-LIBCALL-NEXT: nop
16
15
; CHECK-LIBCALL-NEXT: lhu $4, 0($16)
17
16
; CHECK-LIBCALL-NEXT: jal __gnu_h2f_ieee
18
17
; CHECK-LIBCALL-NEXT: mov.s $f20, $f0
19
18
; CHECK-LIBCALL-NEXT: jal __gnu_f2h_ieee
20
- ; CHECK-LIBCALL-NEXT: add.s $f12, $f20, $f0
21
- ; CHECK-LIBCALL-NEXT: sh $2, 0($17)
22
- ; CHECK-LIBCALL-NEXT: lw $16, 20($sp) # 4-byte Folded Reload
23
- ; CHECK-LIBCALL-NEXT: lw $17, 24($sp) # 4-byte Folded Reload
24
- ; CHECK-LIBCALL-NEXT: lw $ra, 28($sp) # 4-byte Folded Reload
25
- ; CHECK-LIBCALL-NEXT: ldc1 $f20, 32($sp) # 8-byte Folded Reload
19
+ ; CHECK-LIBCALL-NEXT: add.s $f12, $f0, $f20
20
+ ; CHECK-LIBCALL-NEXT: sh $2, 0($16)
21
+ ; CHECK-LIBCALL-NEXT: lw $16, 16($sp) # 4-byte Folded Reload
22
+ ; CHECK-LIBCALL-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload
23
+ ; CHECK-LIBCALL-NEXT: ldc1 $f20, 24($sp) # 8-byte Folded Reload
26
24
; CHECK-LIBCALL-NEXT: jr $ra
27
- ; CHECK-LIBCALL-NEXT: addiu $sp, $sp, 40
25
+ ; CHECK-LIBCALL-NEXT: addiu $sp, $sp, 32
28
26
%a = load half , ptr %p , align 2
29
27
%b = load half , ptr %q , align 2
30
28
%r = fadd half %a , %b
@@ -263,32 +261,33 @@ define void @test_vec_fptrunc_double(<4 x double> %a, ptr %p) nounwind {
263
261
define half @test_fadd_fadd (half %a , half %b , half %c ) nounwind {
264
262
; CHECK-LIBCALL-LABEL: test_fadd_fadd:
265
263
; CHECK-LIBCALL: # %bb.0:
266
- ; CHECK-LIBCALL-NEXT: addiu $sp, $sp, -32
267
- ; CHECK-LIBCALL-NEXT: sdc1 $f20, 24($sp) # 8-byte Folded Spill
268
- ; CHECK-LIBCALL-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill
269
- ; CHECK-LIBCALL-NEXT: sw $16, 16($sp) # 4-byte Folded Spill
264
+ ; CHECK-LIBCALL-NEXT: addiu $sp, $sp, -40
265
+ ; CHECK-LIBCALL-NEXT: sdc1 $f20, 32($sp) # 8-byte Folded Spill
266
+ ; CHECK-LIBCALL-NEXT: sw $ra, 28($sp) # 4-byte Folded Spill
267
+ ; CHECK-LIBCALL-NEXT: sw $17, 24($sp) # 4-byte Folded Spill
268
+ ; CHECK-LIBCALL-NEXT: sw $16, 20($sp) # 4-byte Folded Spill
270
269
; CHECK-LIBCALL-NEXT: move $16, $6
271
- ; CHECK-LIBCALL-NEXT: mov.s $f20, $f12
272
- ; CHECK-LIBCALL-NEXT: jal __gnu_f2h_ieee
273
- ; CHECK-LIBCALL-NEXT: mov.s $f12, $f14
270
+ ; CHECK-LIBCALL-NEXT: move $17, $4
274
271
; CHECK-LIBCALL-NEXT: jal __gnu_h2f_ieee
275
- ; CHECK-LIBCALL-NEXT: move $4, $2
276
- ; CHECK-LIBCALL-NEXT: mov.s $f21, $f0
277
- ; CHECK-LIBCALL-NEXT: jal __gnu_f2h_ieee
278
- ; CHECK-LIBCALL-NEXT: mov.s $f12, $f20
272
+ ; CHECK-LIBCALL-NEXT: move $4, $5
273
+ ; CHECK-LIBCALL-NEXT: mov.s $f20, $f0
279
274
; CHECK-LIBCALL-NEXT: jal __gnu_h2f_ieee
280
- ; CHECK-LIBCALL-NEXT: move $4, $2
281
- ; CHECK-LIBCALL-NEXT: add.s $f20, $f0, $f21
275
+ ; CHECK-LIBCALL-NEXT: move $4, $17
282
276
; CHECK-LIBCALL-NEXT: jal __gnu_f2h_ieee
283
- ; CHECK-LIBCALL-NEXT: mtc1 $16 , $f12
277
+ ; CHECK-LIBCALL-NEXT: add.s $f12 , $f0, $f20
284
278
; CHECK-LIBCALL-NEXT: jal __gnu_h2f_ieee
285
279
; CHECK-LIBCALL-NEXT: move $4, $2
286
- ; CHECK-LIBCALL-NEXT: add.s $f0, $f20, $f0
287
- ; CHECK-LIBCALL-NEXT: lw $16, 16($sp) # 4-byte Folded Reload
288
- ; CHECK-LIBCALL-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload
289
- ; CHECK-LIBCALL-NEXT: ldc1 $f20, 24($sp) # 8-byte Folded Reload
280
+ ; CHECK-LIBCALL-NEXT: mov.s $f20, $f0
281
+ ; CHECK-LIBCALL-NEXT: jal __gnu_h2f_ieee
282
+ ; CHECK-LIBCALL-NEXT: move $4, $16
283
+ ; CHECK-LIBCALL-NEXT: jal __gnu_f2h_ieee
284
+ ; CHECK-LIBCALL-NEXT: add.s $f12, $f20, $f0
285
+ ; CHECK-LIBCALL-NEXT: lw $16, 20($sp) # 4-byte Folded Reload
286
+ ; CHECK-LIBCALL-NEXT: lw $17, 24($sp) # 4-byte Folded Reload
287
+ ; CHECK-LIBCALL-NEXT: lw $ra, 28($sp) # 4-byte Folded Reload
288
+ ; CHECK-LIBCALL-NEXT: ldc1 $f20, 32($sp) # 8-byte Folded Reload
290
289
; CHECK-LIBCALL-NEXT: jr $ra
291
- ; CHECK-LIBCALL-NEXT: addiu $sp, $sp, 32
290
+ ; CHECK-LIBCALL-NEXT: addiu $sp, $sp, 40
292
291
%d = fadd half %a , %b
293
292
%e = fadd half %d , %c
294
293
ret half %e
@@ -297,28 +296,17 @@ define half @test_fadd_fadd(half %a, half %b, half %c) nounwind {
297
296
define half @to_half (i16 %bits ) nounwind {
298
297
; CHECK-LIBCALL-LABEL: to_half:
299
298
; CHECK-LIBCALL: # %bb.0:
300
- ; CHECK-LIBCALL-NEXT: addiu $sp, $sp, -24
301
- ; CHECK-LIBCALL-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill
302
- ; CHECK-LIBCALL-NEXT: jal __gnu_h2f_ieee
303
- ; CHECK-LIBCALL-NEXT: nop
304
- ; CHECK-LIBCALL-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload
305
299
; CHECK-LIBCALL-NEXT: jr $ra
306
- ; CHECK-LIBCALL-NEXT: addiu $sp , $sp, 24
300
+ ; CHECK-LIBCALL-NEXT: move $2 , $4
307
301
%f = bitcast i16 %bits to half
308
302
ret half %f
309
303
}
310
304
311
305
define i16 @from_half (half %f ) nounwind {
312
306
; CHECK-LIBCALL-LABEL: from_half:
313
307
; CHECK-LIBCALL: # %bb.0:
314
- ; CHECK-LIBCALL-NEXT: addiu $sp, $sp, -24
315
- ; CHECK-LIBCALL-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill
316
- ; CHECK-LIBCALL-NEXT: jal __gnu_f2h_ieee
317
- ; CHECK-LIBCALL-NEXT: nop
318
- ; CHECK-LIBCALL-NEXT: andi $2, $2, 65535
319
- ; CHECK-LIBCALL-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload
320
308
; CHECK-LIBCALL-NEXT: jr $ra
321
- ; CHECK-LIBCALL-NEXT: addiu $sp , $sp, 24
309
+ ; CHECK-LIBCALL-NEXT: move $2 , $4
322
310
%bits = bitcast half %f to i16
323
311
ret i16 %bits
324
312
}
0 commit comments