blob: 3032697b26d89fecbfc731815a359cd4e6235d9e [file] [log] [blame]
David Srbecky1109fb32015-04-07 20:21:06 +01001static 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, 0x00, 0x00,
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, 0x44, 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: lsls r0, r0, #0
32// 0x00000014: .cfi_restore_state
33// 0x00000014: .cfi_def_cfa_offset: 64
34
35static constexpr uint8_t expected_asm_kArm64[] = {
Serban Constantinescu9bd88b02015-04-22 16:24:46 +010036 0xFF, 0x03, 0x01, 0xD1, 0xE8, 0xA7, 0x01, 0x6D, 0xF4, 0xD7, 0x02, 0xA9,
Mathieu Chartiere401d142015-04-22 13:56:20 -070037 0xFE, 0x1F, 0x00, 0xF9, 0xE0, 0x03, 0x00, 0xF9, 0xE8, 0xA7, 0x41, 0x6D,
Serban Constantinescu9bd88b02015-04-22 16:24:46 +010038 0xF4, 0xD7, 0x42, 0xA9, 0xFE, 0x1F, 0x40, 0xF9, 0xFF, 0x03, 0x01, 0x91,
David Srbecky1109fb32015-04-07 20:21:06 +010039 0xC0, 0x03, 0x5F, 0xD6,
40};
41static constexpr uint8_t expected_cfi_kArm64[] = {
Serban Constantinescu9bd88b02015-04-22 16:24:46 +010042 0x44, 0x0E, 0x40, 0x44, 0x05, 0x48, 0x0A, 0x05, 0x49, 0x08, 0x44, 0x94,
43 0x06, 0x95, 0x04, 0x44, 0x9E, 0x02, 0x44, 0x0A, 0x44, 0x06, 0x48, 0x06,
44 0x49, 0x44, 0xD4, 0xD5, 0x44, 0xDE, 0x44, 0x0E, 0x00, 0x44, 0x0B, 0x0E,
David Srbecky1109fb32015-04-07 20:21:06 +010045 0x40,
46};
47// 0x00000000: sub sp, sp, #0x40 (64)
48// 0x00000004: .cfi_def_cfa_offset: 64
49// 0x00000004: stp d8, d9, [sp, #24]
50// 0x00000008: .cfi_offset_extended: r72 at cfa-40
51// 0x00000008: .cfi_offset_extended: r73 at cfa-32
Serban Constantinescu9bd88b02015-04-22 16:24:46 +010052// 0x00000008: stp x20, x21, [sp, #40]
53// 0x0000000c: .cfi_offset: r20 at cfa-24
54// 0x0000000c: .cfi_offset: r21 at cfa-16
David Srbecky1109fb32015-04-07 20:21:06 +010055// 0x0000000c: str lr, [sp, #56]
56// 0x00000010: .cfi_offset: r30 at cfa-8
Mathieu Chartiere401d142015-04-22 13:56:20 -070057// 0x00000010: str x0, [sp]
David Srbecky1109fb32015-04-07 20:21:06 +010058// 0x00000014: .cfi_remember_state
59// 0x00000014: ldp d8, d9, [sp, #24]
60// 0x00000018: .cfi_restore_extended: r72
61// 0x00000018: .cfi_restore_extended: r73
Serban Constantinescu9bd88b02015-04-22 16:24:46 +010062// 0x00000018: ldp x20, x21, [sp, #40]
David Srbecky1109fb32015-04-07 20:21:06 +010063// 0x0000001c: .cfi_restore: r20
Serban Constantinescu9bd88b02015-04-22 16:24:46 +010064// 0x0000001c: .cfi_restore: r21
David Srbecky1109fb32015-04-07 20:21:06 +010065// 0x0000001c: ldr lr, [sp, #56]
66// 0x00000020: .cfi_restore: r30
67// 0x00000020: add sp, sp, #0x40 (64)
68// 0x00000024: .cfi_def_cfa_offset: 0
69// 0x00000024: ret
70// 0x00000028: .cfi_restore_state
71// 0x00000028: .cfi_def_cfa_offset: 64
72
73static constexpr uint8_t expected_asm_kX86[] = {
74 0x83, 0xEC, 0x3C, 0x89, 0x6C, 0x24, 0x34, 0x89, 0x74, 0x24, 0x38, 0x89,
75 0x04, 0x24, 0x8B, 0x6C, 0x24, 0x34, 0x8B, 0x74, 0x24, 0x38, 0x83, 0xC4,
76 0x3C, 0xC3, 0x00, 0x00,
77};
78static constexpr uint8_t expected_cfi_kX86[] = {
79 0x43, 0x0E, 0x40, 0x44, 0x85, 0x03, 0x44, 0x86, 0x02, 0x43, 0x0A, 0x44,
80 0xC5, 0x44, 0xC6, 0x43, 0x0E, 0x04, 0x43, 0x0B, 0x0E, 0x40,
81};
82// 0x00000000: sub esp, 60
83// 0x00000003: .cfi_def_cfa_offset: 64
84// 0x00000003: mov [esp + 52], ebp
85// 0x00000007: .cfi_offset: r5 at cfa-12
86// 0x00000007: mov [esp + 56], esi
87// 0x0000000b: .cfi_offset: r6 at cfa-8
88// 0x0000000b: mov [esp], eax
89// 0x0000000e: .cfi_remember_state
90// 0x0000000e: mov ebp, [esp + 52]
91// 0x00000012: .cfi_restore: r5
92// 0x00000012: mov esi, [esp + 56]
93// 0x00000016: .cfi_restore: r6
94// 0x00000016: add esp, 60
95// 0x00000019: .cfi_def_cfa_offset: 4
96// 0x00000019: ret
97// 0x0000001a: addb [eax], al
98// 0x0000001c: .cfi_restore_state
99// 0x0000001c: .cfi_def_cfa_offset: 64
100
101static constexpr uint8_t expected_asm_kX86_64[] = {
102 0x48, 0x83, 0xEC, 0x38, 0x48, 0x89, 0x5C, 0x24, 0x28, 0x48, 0x89, 0x6C,
103 0x24, 0x30, 0xF2, 0x44, 0x0F, 0x11, 0x64, 0x24, 0x18, 0xF2, 0x44, 0x0F,
Mathieu Chartiere401d142015-04-22 13:56:20 -0700104 0x11, 0x6C, 0x24, 0x20, 0x48, 0x8B, 0xC7, 0x48, 0x89, 0x3C, 0x24, 0x48,
105 0x8B, 0x5C, 0x24, 0x28, 0x48, 0x8B, 0x6C, 0x24, 0x30, 0xF2, 0x44, 0x0F,
106 0x10, 0x64, 0x24, 0x18, 0xF2, 0x44, 0x0F, 0x10, 0x6C, 0x24, 0x20, 0x48,
107 0x83, 0xC4, 0x38, 0xC3,
David Srbecky1109fb32015-04-07 20:21:06 +0100108};
109static constexpr uint8_t expected_cfi_kX86_64[] = {
110 0x44, 0x0E, 0x40, 0x45, 0x83, 0x06, 0x45, 0x86, 0x04, 0x47, 0x9D, 0x0A,
Mathieu Chartiere401d142015-04-22 13:56:20 -0700111 0x47, 0x9E, 0x08, 0x47, 0x0A, 0x45, 0xC3, 0x45, 0xC6, 0x47, 0xDD, 0x47,
112 0xDE, 0x44, 0x0E, 0x08, 0x41, 0x0B, 0x0E, 0x40,
David Srbecky1109fb32015-04-07 20:21:06 +0100113};
114// 0x00000000: subq rsp, 56
115// 0x00000004: .cfi_def_cfa_offset: 64
116// 0x00000004: movq [rsp + 40], rbx
117// 0x00000009: .cfi_offset: r3 at cfa-24
118// 0x00000009: movq [rsp + 48], rbp
119// 0x0000000e: .cfi_offset: r6 at cfa-16
120// 0x0000000e: movsd [rsp + 24], xmm12
121// 0x00000015: .cfi_offset: r29 at cfa-40
122// 0x00000015: movsd [rsp + 32], xmm13
123// 0x0000001c: .cfi_offset: r30 at cfa-32
124// 0x0000001c: movq rax, rdi
Mathieu Chartiere401d142015-04-22 13:56:20 -0700125// 0x0000001f: movq [rsp], rdi
126// 0x00000023: .cfi_remember_state
127// 0x00000023: movq rbx, [rsp + 40]
128// 0x00000028: .cfi_restore: r3
129// 0x00000028: movq rbp, [rsp + 48]
130// 0x0000002d: .cfi_restore: r6
131// 0x0000002d: movsd xmm12, [rsp + 24]
132// 0x00000034: .cfi_restore: r29
133// 0x00000034: movsd xmm13, [rsp + 32]
134// 0x0000003b: .cfi_restore: r30
135// 0x0000003b: addq rsp, 56
136// 0x0000003f: .cfi_def_cfa_offset: 8
137// 0x0000003f: ret
David Srbecky1109fb32015-04-07 20:21:06 +0100138// 0x00000040: .cfi_restore_state
139// 0x00000040: .cfi_def_cfa_offset: 64
140
141static constexpr uint8_t expected_asm_kMips[] = {
142 0xF4, 0xFF, 0xBD, 0x27, 0x08, 0x00, 0xB2, 0xAF, 0x04, 0x00, 0xB3, 0xAF,
143 0x00, 0x00, 0xBF, 0xAF, 0xCC, 0xFF, 0xBD, 0x27, 0x25, 0x10, 0x80, 0x00,
144 0x00, 0x00, 0xA4, 0xAF, 0x3C, 0x00, 0xB2, 0x8F, 0x38, 0x00, 0xB3, 0x8F,
145 0x34, 0x00, 0xBF, 0x8F, 0x40, 0x00, 0xBD, 0x27, 0x09, 0x00, 0xE0, 0x03,
146 0x00, 0x00, 0x00, 0x00,
147};
148static constexpr uint8_t expected_cfi_kMips[] = {
149 0x44, 0x0E, 0x0C, 0x44, 0x92, 0x01, 0x44, 0x93, 0x02, 0x44, 0x9F, 0x03,
150 0x44, 0x0E, 0x40, 0x48, 0x0A, 0x44, 0xD2, 0x44, 0xD3, 0x44, 0xDF, 0x44,
151 0x0E, 0x00, 0x48, 0x0B, 0x0E, 0x40,
152};
153// 0x00000000: addiu r29, r29, -12
154// 0x00000004: .cfi_def_cfa_offset: 12
155// 0x00000004: sw r18, +8(r29)
156// 0x00000008: .cfi_offset: r18 at cfa-4
157// 0x00000008: sw r19, +4(r29)
158// 0x0000000c: .cfi_offset: r19 at cfa-8
159// 0x0000000c: sw r31, +0(r29)
160// 0x00000010: .cfi_offset: r31 at cfa-12
161// 0x00000010: addiu r29, r29, -52
162// 0x00000014: .cfi_def_cfa_offset: 64
163// 0x00000014: or r2, r4, r0
164// 0x00000018: sw r4, +0(r29)
165// 0x0000001c: .cfi_remember_state
166// 0x0000001c: lw r18, +60(r29)
167// 0x00000020: .cfi_restore: r18
168// 0x00000020: lw r19, +56(r29)
169// 0x00000024: .cfi_restore: r19
170// 0x00000024: lw r31, +52(r29)
171// 0x00000028: .cfi_restore: r31
172// 0x00000028: addiu r29, r29, 64
173// 0x0000002c: .cfi_def_cfa_offset: 0
Mathieu Chartiere401d142015-04-22 13:56:20 -0700174// 0x0000002c: jr r31
David Srbecky1109fb32015-04-07 20:21:06 +0100175// 0x00000030: nop
176// 0x00000034: .cfi_restore_state
177// 0x00000034: .cfi_def_cfa_offset: 64
178
179static constexpr uint8_t expected_asm_kMips64[] = {
180 0xE8, 0xFF, 0xBD, 0x67, 0x10, 0x00, 0xB2, 0xFF, 0x08, 0x00, 0xB3, 0xFF,
181 0x00, 0x00, 0xBF, 0xFF, 0xD8, 0xFF, 0xBD, 0x67, 0x25, 0x10, 0x80, 0x00,
Mathieu Chartiere401d142015-04-22 13:56:20 -0700182 0x00, 0x00, 0xA4, 0xFF, 0x38, 0x00, 0xB2, 0xDF, 0x30, 0x00, 0xB3, 0xDF,
David Srbecky1109fb32015-04-07 20:21:06 +0100183 0x28, 0x00, 0xBF, 0xDF, 0x40, 0x00, 0xBD, 0x67, 0x09, 0x00, 0xE0, 0x03,
184 0x00, 0x00, 0x00, 0x00,
185};
186static constexpr uint8_t expected_cfi_kMips64[] = {
187 0x44, 0x0E, 0x18, 0x44, 0x92, 0x02, 0x44, 0x93, 0x04, 0x44, 0x9F, 0x06,
188 0x44, 0x0E, 0x40, 0x48, 0x0A, 0x44, 0xD2, 0x44, 0xD3, 0x44, 0xDF, 0x44,
189 0x0E, 0x00, 0x48, 0x0B, 0x0E, 0x40,
190};
191// 0x00000000: daddiu r29, r29, -24
192// 0x00000004: .cfi_def_cfa_offset: 24
193// 0x00000004: sd r18, +16(r29)
194// 0x00000008: .cfi_offset: r18 at cfa-8
195// 0x00000008: sd r19, +8(r29)
196// 0x0000000c: .cfi_offset: r19 at cfa-16
197// 0x0000000c: sd r31, +0(r29)
198// 0x00000010: .cfi_offset: r31 at cfa-24
199// 0x00000010: daddiu r29, r29, -40
200// 0x00000014: .cfi_def_cfa_offset: 64
201// 0x00000014: or r2, r4, r0
Mathieu Chartiere401d142015-04-22 13:56:20 -0700202// 0x00000018: sd r4, +0(r29)
David Srbecky1109fb32015-04-07 20:21:06 +0100203// 0x0000001c: .cfi_remember_state
204// 0x0000001c: ld r18, +56(r29)
205// 0x00000020: .cfi_restore: r18
206// 0x00000020: ld r19, +48(r29)
207// 0x00000024: .cfi_restore: r19
208// 0x00000024: ld r31, +40(r29)
209// 0x00000028: .cfi_restore: r31
210// 0x00000028: daddiu r29, r29, 64
211// 0x0000002c: .cfi_def_cfa_offset: 0
212// 0x0000002c: jr r31
213// 0x00000030: nop
214// 0x00000034: .cfi_restore_state
215// 0x00000034: .cfi_def_cfa_offset: 64