44define void @test_fadd (ptr %p , ptr %q ) nounwind {
55; CHECK-LIBCALL-LABEL: test_fadd:
66; 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)
1413; CHECK-LIBCALL-NEXT: jal __gnu_h2f_ieee
15- ; CHECK-LIBCALL-NEXT: move $16, $5
14+ ; CHECK-LIBCALL-NEXT: nop
1615; CHECK-LIBCALL-NEXT: lhu $4, 0($16)
1716; CHECK-LIBCALL-NEXT: jal __gnu_h2f_ieee
1817; CHECK-LIBCALL-NEXT: mov.s $f20, $f0
1918; 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
2624; CHECK-LIBCALL-NEXT: jr $ra
27- ; CHECK-LIBCALL-NEXT: addiu $sp, $sp, 40
25+ ; CHECK-LIBCALL-NEXT: addiu $sp, $sp, 32
2826 %a = load half , ptr %p , align 2
2927 %b = load half , ptr %q , align 2
3028 %r = fadd half %a , %b
@@ -263,32 +261,33 @@ define void @test_vec_fptrunc_double(<4 x double> %a, ptr %p) nounwind {
263261define half @test_fadd_fadd (half %a , half %b , half %c ) nounwind {
264262; CHECK-LIBCALL-LABEL: test_fadd_fadd:
265263; 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
270269; 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
274271; 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
279274; 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
282276; CHECK-LIBCALL-NEXT: jal __gnu_f2h_ieee
283- ; CHECK-LIBCALL-NEXT: mtc1 $16 , $f12
277+ ; CHECK-LIBCALL-NEXT: add.s $f12 , $f0, $f20
284278; CHECK-LIBCALL-NEXT: jal __gnu_h2f_ieee
285279; 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
290289; CHECK-LIBCALL-NEXT: jr $ra
291- ; CHECK-LIBCALL-NEXT: addiu $sp, $sp, 32
290+ ; CHECK-LIBCALL-NEXT: addiu $sp, $sp, 40
292291 %d = fadd half %a , %b
293292 %e = fadd half %d , %c
294293 ret half %e
@@ -297,28 +296,17 @@ define half @test_fadd_fadd(half %a, half %b, half %c) nounwind {
297296define half @to_half (i16 %bits ) nounwind {
298297; CHECK-LIBCALL-LABEL: to_half:
299298; 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
305299; CHECK-LIBCALL-NEXT: jr $ra
306- ; CHECK-LIBCALL-NEXT: addiu $sp , $sp, 24
300+ ; CHECK-LIBCALL-NEXT: move $2 , $4
307301 %f = bitcast i16 %bits to half
308302 ret half %f
309303}
310304
311305define i16 @from_half (half %f ) nounwind {
312306; CHECK-LIBCALL-LABEL: from_half:
313307; 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
320308; CHECK-LIBCALL-NEXT: jr $ra
321- ; CHECK-LIBCALL-NEXT: addiu $sp , $sp, 24
309+ ; CHECK-LIBCALL-NEXT: move $2 , $4
322310 %bits = bitcast half %f to i16
323311 ret i16 %bits
324312}
0 commit comments