1static constexpr uint8_t expected_asm_kThumb2[] = { 2 0x60, 0xB5, 0x2D, 0xED, 0x02, 0x8A, 0x8B, 0xB0, 0x00, 0x90, 0x0B, 0xB0, 3 0xBD, 0xEC, 0x02, 0x8A, 0x60, 0xBD, 4}; 5static constexpr uint8_t expected_cfi_kThumb2[] = { 6 0x42, 0x0E, 0x0C, 0x85, 0x03, 0x86, 0x02, 0x8E, 0x01, 0x44, 0x0E, 0x14, 7 0x05, 0x50, 0x05, 0x05, 0x51, 0x04, 0x42, 0x0E, 0x40, 0x42, 0x0A, 0x42, 8 0x0E, 0x14, 0x44, 0x0E, 0x0C, 0x06, 0x50, 0x06, 0x51, 0x42, 0x0B, 0x0E, 9 0x40, 10}; 11// 0x00000000: push {r5, r6, lr} 12// 0x00000002: .cfi_def_cfa_offset: 12 13// 0x00000002: .cfi_offset: r5 at cfa-12 14// 0x00000002: .cfi_offset: r6 at cfa-8 15// 0x00000002: .cfi_offset: r14 at cfa-4 16// 0x00000002: vpush.f32 {s16-s17} 17// 0x00000006: .cfi_def_cfa_offset: 20 18// 0x00000006: .cfi_offset_extended: r80 at cfa-20 19// 0x00000006: .cfi_offset_extended: r81 at cfa-16 20// 0x00000006: sub sp, sp, #44 21// 0x00000008: .cfi_def_cfa_offset: 64 22// 0x00000008: str r0, [sp, #0] 23// 0x0000000a: .cfi_remember_state 24// 0x0000000a: add sp, sp, #44 25// 0x0000000c: .cfi_def_cfa_offset: 20 26// 0x0000000c: vpop.f32 {s16-s17} 27// 0x00000010: .cfi_def_cfa_offset: 12 28// 0x00000010: .cfi_restore_extended: r80 29// 0x00000010: .cfi_restore_extended: r81 30// 0x00000010: pop {r5, r6, pc} 31// 0x00000012: .cfi_restore_state 32// 0x00000012: .cfi_def_cfa_offset: 64 33 34static constexpr uint8_t expected_asm_kArm64[] = { 35 0xE0, 0x0F, 0x1C, 0xF8, 0xF3, 0xD3, 0x02, 0xA9, 0xFE, 0x1F, 0x00, 0xF9, 36 0xE8, 0xA7, 0x01, 0x6D, 0xE8, 0xA7, 0x41, 0x6D, 0xF3, 0xD3, 0x42, 0xA9, 37 0xFE, 0x1F, 0x40, 0xF9, 0xFF, 0x03, 0x01, 0x91, 0xC0, 0x03, 0x5F, 0xD6, 38}; 39static constexpr uint8_t expected_cfi_kArm64[] = { 40 0x44, 0x0E, 0x40, 0x44, 0x93, 0x06, 0x94, 0x04, 0x44, 0x9E, 0x02, 0x44, 41 0x05, 0x48, 0x0A, 0x05, 0x49, 0x08, 0x0A, 0x44, 0x06, 0x48, 0x06, 0x49, 42 0x44, 0xD3, 0xD4, 0x44, 0xDE, 0x44, 0x0E, 0x00, 0x44, 0x0B, 0x0E, 0x40, 43}; 44// 0x00000000: str x0, [sp, #-64]! 45// 0x00000004: .cfi_def_cfa_offset: 64 46// 0x00000004: stp x19, x20, [sp, #40] 47// 0x00000008: .cfi_offset: r19 at cfa-24 48// 0x00000008: .cfi_offset: r20 at cfa-16 49// 0x00000008: str lr, [sp, #56] 50// 0x0000000c: .cfi_offset: r30 at cfa-8 51// 0x0000000c: stp d8, d9, [sp, #24] 52// 0x00000010: .cfi_offset_extended: r72 at cfa-40 53// 0x00000010: .cfi_offset_extended: r73 at cfa-32 54// 0x00000010: .cfi_remember_state 55// 0x00000010: ldp d8, d9, [sp, #24] 56// 0x00000014: .cfi_restore_extended: r72 57// 0x00000014: .cfi_restore_extended: r73 58// 0x00000014: ldp x19, x20, [sp, #40] 59// 0x00000018: .cfi_restore: r19 60// 0x00000018: .cfi_restore: r20 61// 0x00000018: ldr lr, [sp, #56] 62// 0x0000001c: .cfi_restore: r30 63// 0x0000001c: add sp, sp, #0x40 (64) 64// 0x00000020: .cfi_def_cfa_offset: 0 65// 0x00000020: ret 66// 0x00000024: .cfi_restore_state 67// 0x00000024: .cfi_def_cfa_offset: 64 68 69static constexpr uint8_t expected_asm_kX86[] = { 70 0x56, 0x55, 0x83, 0xEC, 0x34, 0x89, 0x04, 0x24, 0x83, 0xC4, 0x34, 0x5D, 71 0x5E, 0xC3, 72}; 73static constexpr uint8_t expected_cfi_kX86[] = { 74 0x41, 0x0E, 0x08, 0x86, 0x02, 0x41, 0x0E, 0x0C, 0x85, 0x03, 0x43, 0x0E, 75 0x40, 0x43, 0x0A, 0x43, 0x0E, 0x0C, 0x41, 0x0E, 0x08, 0xC5, 0x41, 0x0E, 76 0x04, 0xC6, 0x41, 0x0B, 0x0E, 0x40, 77}; 78// 0x00000000: push esi 79// 0x00000001: .cfi_def_cfa_offset: 8 80// 0x00000001: .cfi_offset: r6 at cfa-8 81// 0x00000001: push ebp 82// 0x00000002: .cfi_def_cfa_offset: 12 83// 0x00000002: .cfi_offset: r5 at cfa-12 84// 0x00000002: sub esp, 52 85// 0x00000005: .cfi_def_cfa_offset: 64 86// 0x00000005: mov [esp], eax 87// 0x00000008: .cfi_remember_state 88// 0x00000008: add esp, 52 89// 0x0000000b: .cfi_def_cfa_offset: 12 90// 0x0000000b: pop ebp 91// 0x0000000c: .cfi_def_cfa_offset: 8 92// 0x0000000c: .cfi_restore: r5 93// 0x0000000c: pop esi 94// 0x0000000d: .cfi_def_cfa_offset: 4 95// 0x0000000d: .cfi_restore: r6 96// 0x0000000d: ret 97// 0x0000000e: .cfi_restore_state 98// 0x0000000e: .cfi_def_cfa_offset: 64 99 100static constexpr uint8_t expected_asm_kX86_64[] = { 101 0x55, 0x53, 0x48, 0x83, 0xEC, 0x28, 0xF2, 0x44, 0x0F, 0x11, 0x6C, 0x24, 102 0x20, 0xF2, 0x44, 0x0F, 0x11, 0x64, 0x24, 0x18, 0x48, 0x89, 0x3C, 0x24, 103 0xF2, 0x44, 0x0F, 0x10, 0x64, 0x24, 0x18, 0xF2, 0x44, 0x0F, 0x10, 0x6C, 104 0x24, 0x20, 0x48, 0x83, 0xC4, 0x28, 0x5B, 0x5D, 0xC3, 105}; 106static constexpr uint8_t expected_cfi_kX86_64[] = { 107 0x41, 0x0E, 0x10, 0x86, 0x04, 0x41, 0x0E, 0x18, 0x83, 0x06, 0x44, 0x0E, 108 0x40, 0x47, 0x9E, 0x08, 0x47, 0x9D, 0x0A, 0x44, 0x0A, 0x47, 0xDD, 0x47, 109 0xDE, 0x44, 0x0E, 0x18, 0x41, 0x0E, 0x10, 0xC3, 0x41, 0x0E, 0x08, 0xC6, 110 0x41, 0x0B, 0x0E, 0x40, 111}; 112// 0x00000000: push rbp 113// 0x00000001: .cfi_def_cfa_offset: 16 114// 0x00000001: .cfi_offset: r6 at cfa-16 115// 0x00000001: push rbx 116// 0x00000002: .cfi_def_cfa_offset: 24 117// 0x00000002: .cfi_offset: r3 at cfa-24 118// 0x00000002: subq rsp, 40 119// 0x00000006: .cfi_def_cfa_offset: 64 120// 0x00000006: movsd [rsp + 32], xmm13 121// 0x0000000d: .cfi_offset: r30 at cfa-32 122// 0x0000000d: movsd [rsp + 24], xmm12 123// 0x00000014: .cfi_offset: r29 at cfa-40 124// 0x00000014: movq [rsp], rdi 125// 0x00000018: .cfi_remember_state 126// 0x00000018: movsd xmm12, [rsp + 24] 127// 0x0000001f: .cfi_restore: r29 128// 0x0000001f: movsd xmm13, [rsp + 32] 129// 0x00000026: .cfi_restore: r30 130// 0x00000026: addq rsp, 40 131// 0x0000002a: .cfi_def_cfa_offset: 24 132// 0x0000002a: pop rbx 133// 0x0000002b: .cfi_def_cfa_offset: 16 134// 0x0000002b: .cfi_restore: r3 135// 0x0000002b: pop rbp 136// 0x0000002c: .cfi_def_cfa_offset: 8 137// 0x0000002c: .cfi_restore: r6 138// 0x0000002c: ret 139// 0x0000002d: .cfi_restore_state 140// 0x0000002d: .cfi_def_cfa_offset: 64 141