|
7 | 7 | ; CHECK-NEXT: .byte 0 |
8 | 8 | ; CHECK-NEXT: .half 0 |
9 | 9 | ; Num Functions |
10 | | -; CHECK-NEXT: .word 12 |
| 10 | +; CHECK-NEXT: .word 13 |
11 | 11 | ; Num LargeConstants |
12 | | -; CHECK-NEXT: .word 2 |
| 12 | +; CHECK-NEXT: .word 3 |
13 | 13 | ; Num Callsites |
14 | | -; CHECK-NEXT: .word 16 |
| 14 | +; CHECK-NEXT: .word 17 |
15 | 15 |
|
16 | 16 | ; Functions and stack size |
17 | 17 | ; CHECK-NEXT: .quad constantargs |
|
50 | 50 | ; CHECK-NEXT: .quad needsStackRealignment |
51 | 51 | ; CHECK-NEXT: .quad -1 |
52 | 52 | ; CHECK-NEXT: .quad 1 |
| 53 | +; CHECK-NEXT: .quad floats |
| 54 | +; CHECK-NEXT: .quad 32 |
| 55 | +; CHECK-NEXT: .quad 1 |
53 | 56 |
|
54 | 57 | ; Num LargeConstants |
55 | 58 | ; CHECK-NEXT: .quad 4294967295 |
56 | 59 | ; CHECK-NEXT: .quad 4294967296 |
| 60 | +; CHECK-NEXT: .quad 4609434218613702656 |
57 | 61 |
|
58 | 62 | ; Constant arguments |
59 | 63 | ; |
@@ -379,6 +383,104 @@ define void @needsStackRealignment() { |
379 | 383 | } |
380 | 384 | declare void @escape_values(...) |
381 | 385 |
|
| 386 | +; CHECK-LABEL: .word .L{{.*}}-floats |
| 387 | +; CHECK-NEXT: .half 0 |
| 388 | +; Num Locations |
| 389 | +; CHECK-NEXT: .half 12 |
| 390 | +; Loc 0: constant float as constant integer |
| 391 | +; CHECK-NEXT: .byte 4 |
| 392 | +; CHECK-NEXT: .byte 0 |
| 393 | +; CHECK-NEXT: .half 8 |
| 394 | +; CHECK-NEXT: .half 0 |
| 395 | +; CHECK-NEXT: .half 0 |
| 396 | +; CHECK-NEXT: .word |
| 397 | +; Loc 1: constant double as large constant integer |
| 398 | +; CHECK-NEXT: .byte 5 |
| 399 | +; CHECK-NEXT: .byte 0 |
| 400 | +; CHECK-NEXT: .half 8 |
| 401 | +; CHECK-NEXT: .half 0 |
| 402 | +; CHECK-NEXT: .half 0 |
| 403 | +; CHECK-NEXT: .word |
| 404 | +; Loc 2: constant half as constant integer |
| 405 | +; CHECK-NEXT: .byte 4 |
| 406 | +; CHECK-NEXT: .byte 0 |
| 407 | +; CHECK-NEXT: .half 8 |
| 408 | +; CHECK-NEXT: .half 0 |
| 409 | +; CHECK-NEXT: .half 0 |
| 410 | +; CHECK-NEXT: .word |
| 411 | +; Loc 3: constant bfloat as constant integer |
| 412 | +; CHECK-NEXT: .byte 4 |
| 413 | +; CHECK-NEXT: .byte 0 |
| 414 | +; CHECK-NEXT: .half 8 |
| 415 | +; CHECK-NEXT: .half 0 |
| 416 | +; CHECK-NEXT: .half 0 |
| 417 | +; CHECK-NEXT: .word |
| 418 | +; Loc 4: float value in X register |
| 419 | +; CHECK-NEXT: .byte 1 |
| 420 | +; CHECK-NEXT: .byte 0 |
| 421 | +; CHECK-NEXT: .half 8 |
| 422 | +; CHECK-NEXT: .half 10 |
| 423 | +; CHECK-NEXT: .half 0 |
| 424 | +; CHECK-NEXT: .word |
| 425 | +; Loc 5: double value in X register |
| 426 | +; CHECK-NEXT: .byte 1 |
| 427 | +; CHECK-NEXT: .byte 0 |
| 428 | +; CHECK-NEXT: .half 8 |
| 429 | +; CHECK-NEXT: .half 11 |
| 430 | +; CHECK-NEXT: .half 0 |
| 431 | +; CHECK-NEXT: .word |
| 432 | +; Loc 6: half value in X register |
| 433 | +; CHECK-NEXT: .byte 1 |
| 434 | +; CHECK-NEXT: .byte 0 |
| 435 | +; CHECK-NEXT: .half 8 |
| 436 | +; CHECK-NEXT: .half 12 |
| 437 | +; CHECK-NEXT: .half 0 |
| 438 | +; CHECK-NEXT: .word |
| 439 | +; Loc 7: bfloat value in X register |
| 440 | +; CHECK-NEXT: .byte 1 |
| 441 | +; CHECK-NEXT: .byte 0 |
| 442 | +; CHECK-NEXT: .half 8 |
| 443 | +; CHECK-NEXT: .half 13 |
| 444 | +; CHECK-NEXT: .half 0 |
| 445 | +; CHECK-NEXT: .word |
| 446 | +; Loc 8: float on stack |
| 447 | +; CHECK-NEXT: .byte 2 |
| 448 | +; CHECK-NEXT: .byte 0 |
| 449 | +; CHECK-NEXT: .half 8 |
| 450 | +; CHECK-NEXT: .half 2 |
| 451 | +; CHECK-NEXT: .half 0 |
| 452 | +; CHECK-NEXT: .word |
| 453 | +; Loc 9: double on stack |
| 454 | +; CHECK-NEXT: .byte 2 |
| 455 | +; CHECK-NEXT: .byte 0 |
| 456 | +; CHECK-NEXT: .half 8 |
| 457 | +; CHECK-NEXT: .half 2 |
| 458 | +; CHECK-NEXT: .half 0 |
| 459 | +; CHECK-NEXT: .word |
| 460 | +; Loc 10: half on stack |
| 461 | +; CHECK-NEXT: .byte 2 |
| 462 | +; CHECK-NEXT: .byte 0 |
| 463 | +; CHECK-NEXT: .half 8 |
| 464 | +; CHECK-NEXT: .half 2 |
| 465 | +; CHECK-NEXT: .half 0 |
| 466 | +; CHECK-NEXT: .word |
| 467 | +; Loc 11: bfloat on stack |
| 468 | +; CHECK-NEXT: .byte 2 |
| 469 | +; CHECK-NEXT: .byte 0 |
| 470 | +; CHECK-NEXT: .half 8 |
| 471 | +; CHECK-NEXT: .half 2 |
| 472 | +; CHECK-NEXT: .half 0 |
| 473 | +; CHECK-NEXT: .word |
| 474 | +define void @floats(float %f, double %g, half %h, bfloat %i) { |
| 475 | + %ff = alloca float |
| 476 | + %gg = alloca double |
| 477 | + %hh = alloca half |
| 478 | + %ii = alloca bfloat |
| 479 | + call void (i64, i32, ...) @llvm.experimental.stackmap(i64 888, i32 0, float 1.25, |
| 480 | + double 1.5, half 1.5, bfloat 1.5, float %f, double %g, half %h, bfloat %i, ptr %ff, ptr %gg, ptr %hh, ptr %ii) |
| 481 | + ret void |
| 482 | +} |
| 483 | + |
382 | 484 | declare void @llvm.experimental.stackmap(i64, i32, ...) |
383 | 485 | declare void @llvm.experimental.patchpoint.void(i64, i32, ptr, i32, ...) |
384 | 486 | declare i64 @llvm.experimental.patchpoint.i64(i64, i32, ptr, i32, ...) |
0 commit comments