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