|
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
|
@@ -260,3 +258,44 @@ define void @test_vec_fptrunc_double(<4 x double> %a, ptr %p) nounwind {
|
260 | 258 | ret void
|
261 | 259 | }
|
262 | 260 |
|
| 261 | +define half @test_fadd_fadd(half %a, half %b, half %c) { |
| 262 | +; CHECK-LIBCALL-LABEL: test_fadd_fadd: |
| 263 | +; CHECK-LIBCALL: # %bb.0: |
| 264 | +; CHECK-LIBCALL-NEXT: addiu $sp, $sp, -40 |
| 265 | +; CHECK-LIBCALL-NEXT: .cfi_def_cfa_offset 40 |
| 266 | +; CHECK-LIBCALL-NEXT: sdc1 $f20, 32($sp) # 8-byte Folded Spill |
| 267 | +; CHECK-LIBCALL-NEXT: sw $ra, 28($sp) # 4-byte Folded Spill |
| 268 | +; CHECK-LIBCALL-NEXT: sw $17, 24($sp) # 4-byte Folded Spill |
| 269 | +; CHECK-LIBCALL-NEXT: sw $16, 20($sp) # 4-byte Folded Spill |
| 270 | +; CHECK-LIBCALL-NEXT: .cfi_offset 52, -8 |
| 271 | +; CHECK-LIBCALL-NEXT: .cfi_offset 53, -4 |
| 272 | +; CHECK-LIBCALL-NEXT: .cfi_offset 31, -12 |
| 273 | +; CHECK-LIBCALL-NEXT: .cfi_offset 17, -16 |
| 274 | +; CHECK-LIBCALL-NEXT: .cfi_offset 16, -20 |
| 275 | +; CHECK-LIBCALL-NEXT: move $16, $6 |
| 276 | +; CHECK-LIBCALL-NEXT: move $17, $4 |
| 277 | +; CHECK-LIBCALL-NEXT: jal __gnu_h2f_ieee |
| 278 | +; CHECK-LIBCALL-NEXT: move $4, $5 |
| 279 | +; CHECK-LIBCALL-NEXT: mov.s $f20, $f0 |
| 280 | +; CHECK-LIBCALL-NEXT: jal __gnu_h2f_ieee |
| 281 | +; CHECK-LIBCALL-NEXT: move $4, $17 |
| 282 | +; CHECK-LIBCALL-NEXT: jal __gnu_f2h_ieee |
| 283 | +; CHECK-LIBCALL-NEXT: add.s $f12, $f0, $f20 |
| 284 | +; CHECK-LIBCALL-NEXT: jal __gnu_h2f_ieee |
| 285 | +; CHECK-LIBCALL-NEXT: move $4, $2 |
| 286 | +; CHECK-LIBCALL-NEXT: mov.s $f20, $f0 |
| 287 | +; CHECK-LIBCALL-NEXT: jal __gnu_h2f_ieee |
| 288 | +; CHECK-LIBCALL-NEXT: move $4, $16 |
| 289 | +; CHECK-LIBCALL-NEXT: jal __gnu_f2h_ieee |
| 290 | +; CHECK-LIBCALL-NEXT: add.s $f12, $f20, $f0 |
| 291 | +; CHECK-LIBCALL-NEXT: lw $16, 20($sp) # 4-byte Folded Reload |
| 292 | +; CHECK-LIBCALL-NEXT: lw $17, 24($sp) # 4-byte Folded Reload |
| 293 | +; CHECK-LIBCALL-NEXT: lw $ra, 28($sp) # 4-byte Folded Reload |
| 294 | +; CHECK-LIBCALL-NEXT: ldc1 $f20, 32($sp) # 8-byte Folded Reload |
| 295 | +; CHECK-LIBCALL-NEXT: jr $ra |
| 296 | +; CHECK-LIBCALL-NEXT: addiu $sp, $sp, 40 |
| 297 | + %d = fadd half %a, %b |
| 298 | + %e = fadd half %d, %c |
| 299 | + ret half %e |
| 300 | +} |
| 301 | + |
0 commit comments