Commit d463cf4
authored
winch(aarch64): ABI integration (#10312)
* winch(aarch64): ABI integration
This commit finalizes the ABI integration between Winch and Cranelift,
notably:
* Updates the Cranelift ABI to ensure that all the Winch register
clobbers are taken into account.
* Updates the Winch ABI to treat x28 as callee-saved, since it's used as
the shadow stack pointer.
The alternative to treating x28 as callee-saved is to treat it as
caller-saved and save it when required e.g., at call-sites, even though
this approach works, it's probably more efficient to perform a store/pop
once per function, to minimize the number of move instructions required.
There are still some changes needed in order to fully enable running
spec tests for aarch64, however, this change is one step further. If
interested, you can run the call.wast test via:
cargo run -- wast -Ccompiler=winch tests/spec_testsuite/call_indirect.wast
* Update disas tests1 parent 1136192 commit d463cf4
File tree
474 files changed
+1592
-497
lines changed- cranelift/codegen/src/isa/aarch64
- tests/disas/winch/aarch64
- br_if
- br_table
- br
- call_indirect
- call
- f32_abs
- f32_add
- f32_ceil
- f32_convert_i32_s
- f32_convert_i32_u
- f32_convert_i64_s
- f32_convert_i64_u
- f32_copysign
- f32_demote_f64
- f32_div
- f32_eq
- f32_floor
- f32_ge
- f32_gt
- f32_le
- f32_lt
- f32_max
- f32_min
- f32_mul
- f32_nearest
- f32_neg
- f32_ne
- f32_reinterpret_i32
- f32_sqrt
- f32_sub
- f32_trunc
- f64_abs
- f64_add
- f64_ceil
- f64_convert_i32_s
- f64_convert_i32_u
- f64_convert_i64_s
- f64_convert_i64_u
- f64_copysign
- f64_div
- f64_eq
- f64_floor
- f64_ge
- f64_gt
- f64_le
- f64_lt
- f64_max
- f64_min
- f64_mul
- f64_nearest
- f64_neg
- f64_ne
- f64_promote_f32
- f64_reinterpret_i64
- f64_sqrt
- f64_sub
- f64_trunc
- i32_add
- i32_and
- i32_clz
- i32_ctz
- i32_divs
- i32_divu
- i32_eq
- i32_extend_16_s
- i32_extend_8_s
- i32_ge_s
- i32_ge_u
- i32_gt_s
- i32_gt_u
- i32_le_s
- i32_le_u
- i32_lt_s
- i32_lt_u
- i32_mul
- i32_ne
- i32_or
- i32_popcnt
- i32_reinterpret_f32
- i32_rems
- i32_remu
- i32_rotl
- i32_rotr
- i32_shl
- i32_shr_s
- i32_shr_u
- i32_sub
- i32_trunc_f32_s
- i32_trunc_f32_u
- i32_trunc_f64_s
- i32_trunc_f64_u
- i32_wrap_i64
- i32_xor
- i64_add
- i64_and
- i64_clz
- i64_ctz
- i64_divs
- i64_divu
- i64_eq
- i64_extend_16_s
- i64_extend_32_s
- i64_extend_8_s
- i64_extend_i32_s
- i64_extend_i32_u
- i64_ge_s
- i64_ge_u
- i64_gt_s
- i64_gt_u
- i64_le_s
- i64_le_u
- i64_lt_s
- i64_lt_u
- i64_mul
- i64_ne
- i64_or
- i64_popcnt
- i64_reinterpret_f64
- i64_rems
- i64_remu
- i64_rotl
- i64_rotr
- i64_shl
- i64_shr_s
- i64_shr_u
- i64_sub
- i64_trunc_f32_s
- i64_trunc_f32_u
- i64_trunc_f64_s
- i64_trunc_f64_u
- i64_xor
- load
- nop
- params
- store
- winch/codegen/src
- abi
- isa
- aarch64
- x64
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
474 files changed
+1592
-497
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1123 | 1123 | | |
1124 | 1124 | | |
1125 | 1125 | | |
1126 | | - | |
1127 | | - | |
| 1126 | + | |
| 1127 | + | |
| 1128 | + | |
| 1129 | + | |
| 1130 | + | |
1128 | 1131 | | |
1129 | 1132 | | |
1130 | 1133 | | |
| |||
1438 | 1441 | | |
1439 | 1442 | | |
1440 | 1443 | | |
| 1444 | + | |
| 1445 | + | |
| 1446 | + | |
| 1447 | + | |
| 1448 | + | |
| 1449 | + | |
| 1450 | + | |
| 1451 | + | |
| 1452 | + | |
| 1453 | + | |
| 1454 | + | |
| 1455 | + | |
| 1456 | + | |
| 1457 | + | |
| 1458 | + | |
| 1459 | + | |
| 1460 | + | |
| 1461 | + | |
| 1462 | + | |
| 1463 | + | |
| 1464 | + | |
| 1465 | + | |
| 1466 | + | |
| 1467 | + | |
| 1468 | + | |
| 1469 | + | |
| 1470 | + | |
| 1471 | + | |
| 1472 | + | |
| 1473 | + | |
| 1474 | + | |
| 1475 | + | |
| 1476 | + | |
| 1477 | + | |
| 1478 | + | |
| 1479 | + | |
| 1480 | + | |
| 1481 | + | |
| 1482 | + | |
| 1483 | + | |
| 1484 | + | |
| 1485 | + | |
| 1486 | + | |
| 1487 | + | |
| 1488 | + | |
| 1489 | + | |
| 1490 | + | |
| 1491 | + | |
| 1492 | + | |
| 1493 | + | |
| 1494 | + | |
| 1495 | + | |
| 1496 | + | |
| 1497 | + | |
| 1498 | + | |
| 1499 | + | |
| 1500 | + | |
| 1501 | + | |
| 1502 | + | |
| 1503 | + | |
| 1504 | + | |
| 1505 | + | |
| 1506 | + | |
| 1507 | + | |
| 1508 | + | |
| 1509 | + | |
| 1510 | + | |
| 1511 | + | |
| 1512 | + | |
| 1513 | + | |
1441 | 1514 | | |
| 1515 | + | |
1442 | 1516 | | |
1443 | 1517 | | |
1444 | 1518 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| 11 | + | |
11 | 12 | | |
12 | 13 | | |
13 | 14 | | |
| |||
17 | 18 | | |
18 | 19 | | |
19 | 20 | | |
| 21 | + | |
20 | 22 | | |
21 | 23 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| 11 | + | |
11 | 12 | | |
12 | 13 | | |
13 | 14 | | |
| |||
19 | 20 | | |
20 | 21 | | |
21 | 22 | | |
| 23 | + | |
22 | 24 | | |
23 | 25 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
| 16 | + | |
16 | 17 | | |
17 | 18 | | |
18 | 19 | | |
| |||
24 | 25 | | |
25 | 26 | | |
26 | 27 | | |
| 28 | + | |
27 | 29 | | |
28 | 30 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
| 16 | + | |
16 | 17 | | |
17 | 18 | | |
18 | 19 | | |
| |||
23 | 24 | | |
24 | 25 | | |
25 | 26 | | |
26 | | - | |
27 | | - | |
28 | | - | |
29 | | - | |
30 | | - | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
31 | 32 | | |
32 | 33 | | |
33 | 34 | | |
34 | 35 | | |
| 36 | + | |
35 | 37 | | |
36 | 38 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
| 16 | + | |
16 | 17 | | |
17 | 18 | | |
18 | 19 | | |
| |||
23 | 24 | | |
24 | 25 | | |
25 | 26 | | |
26 | | - | |
27 | | - | |
28 | | - | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
29 | 30 | | |
30 | | - | |
31 | | - | |
| 31 | + | |
| 32 | + | |
32 | 33 | | |
33 | 34 | | |
34 | 35 | | |
| 36 | + | |
35 | 37 | | |
36 | 38 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| 12 | + | |
12 | 13 | | |
13 | 14 | | |
14 | 15 | | |
| |||
20 | 21 | | |
21 | 22 | | |
22 | 23 | | |
| 24 | + | |
23 | 25 | | |
24 | 26 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
| 19 | + | |
19 | 20 | | |
20 | 21 | | |
21 | 22 | | |
| |||
34 | 35 | | |
35 | 36 | | |
36 | 37 | | |
37 | | - | |
38 | | - | |
| 38 | + | |
| 39 | + | |
39 | 40 | | |
40 | 41 | | |
| 42 | + | |
41 | 43 | | |
42 | 44 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| 11 | + | |
11 | 12 | | |
12 | 13 | | |
13 | 14 | | |
| |||
17 | 18 | | |
18 | 19 | | |
19 | 20 | | |
20 | | - | |
21 | | - | |
22 | | - | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
23 | 24 | | |
24 | 25 | | |
25 | | - | |
26 | | - | |
27 | | - | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
28 | 29 | | |
29 | 30 | | |
| 31 | + | |
30 | 32 | | |
31 | 33 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| 11 | + | |
11 | 12 | | |
12 | 13 | | |
13 | 14 | | |
| |||
19 | 20 | | |
20 | 21 | | |
21 | 22 | | |
22 | | - | |
23 | | - | |
24 | | - | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
25 | 26 | | |
26 | 27 | | |
| 28 | + | |
27 | 29 | | |
28 | 30 | | |
0 commit comments