@@ -299,13 +299,19 @@ The unwind codes are encoded according to the table below. All unwind codes are
299299| ` save_fregp_x ` | 1101101x'xxzzzzzz: save pair ` d(8+#X) ` at ` [sp-(#Z+1)*8]! ` , pre-indexed offset >= -512 |
300300| ` save_freg ` | 1101110x'xxzzzzzz: save reg ` d(8+#X) ` at ` [sp+#Z*8] ` , offset \< = 504 |
301301| ` save_freg_x ` | 11011110'xxxzzzzz: save reg ` d(8+#X) ` at ` [sp-(#Z+1)*8]! ` , pre-indexed offset >= -256 |
302+ | ` alloc_z ` | 11011111'zzzzzzzz: allocate stack with size ` z * SVE-VL ` |
302303| ` alloc_l ` | 11100000'xxxxxxxx'xxxxxxxx'xxxxxxxx: allocate large stack with size \< 256M (2^24 * 16) |
303304| ` set_fp ` | 11100001: set up ` x29 ` with ` mov x29,sp ` |
304305| ` add_fp ` | 11100010'xxxxxxxx: set up ` x29 ` with ` add x29,sp,#x*8 ` |
305306| ` nop ` | 11100011: no unwind operation is required. |
306307| ` end ` | 11100100: end of unwind code. Implies ` ret ` in epilog. |
307308| ` end_c ` | 11100101: end of unwind code in current chained scope. |
308309| ` save_next ` | 11100110: save next non-volatile Int or FP register pair. |
310+ | ` save_any_xreg ` | 11100111'0pxrrrrr'00oooooo: ` p ` = 0/1 => single/pair, ` x ` = 0/1 => positive / negative pre-indexed, offset = ` o ` * 16 for x=1 or p=1 / else offset * 8 |
311+ | ` save_any_dreg ` | 11100111'0pxrrrrr'01oooooo: ` p ` = 0/1 => single/pair, ` x ` = 0/1 => positive / negative pre-indexed, offset = ` o ` * 16 for x=1 or p=1 / else offset * 8 |
312+ | ` save_any_qreg ` | 11100111'0pxrrrrr'10oooooo: ` p ` = 0/1 => single/pair, ` x ` = 0/1 => positive / negative pre-indexed, offset = ` o ` * 16 |
313+ | ` save_zreg ` | 11100111'0oo0rrrr'11oooooo
314+ | ` save_preg ` | 11100111'0oo1rrrr'11oooooo
309315| | 11100111: reserved |
310316| | 11101xxx: reserved for custom stack cases below only generated for asm routines |
311317| | 11101000: Custom stack for ` MSFT_OP_TRAP_FRAME ` |
0 commit comments