From: H.J. Lu Date: Mon, 1 Apr 2024 17:03:11 +0000 (-0700) Subject: x86-64: Use long NOPs for Intel Core processors X-Git-Tag: gdb-15-branchpoint~435 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bf649e72d3d5bc0784080438f550095d71769904;p=thirdparty%2Fbinutils-gdb.git x86-64: Use long NOPs for Intel Core processors Use long NOPs for Intel Core processors since they are faster than multiple NOPs. Don't use them for 64-bit processors by default since Intel Atom processors can only decode 4 prefixes in 1 cycle. * config/tc-i386.c (alt64_9): New. (alt64_10): Likewise. (alt64_11): Likewise. (alt64_12): Likewise. (alt64_13): Likewise. (alt64_14): Likewise. (alt64_15): Likewise. (alt64_patt): Likewise. (i386_generate_nops): Use alt64_patt for Intel Core processors in 64-bit mode. * testsuite/gas/i386/x86-64-nops-1-core2.d: Expect long NOPs. * testsuite/gas/i386/x86-64-nops-4-core2.d: Likewise. * testsuite/gas/i386/ilp32/x86-64-nops-1-core2.d: Replace ../x86-64-nops-1.d with ../x86-64-nops-1-core2.d. * testsuite/gas/i386/ilp32/x86-64-nops-4-core2.d: Replace ../x86-64-nops-4.d with ../x86-64-nops-4-core2.d. --- diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 8f6337b34af..56b2431b1bc 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -1356,6 +1356,25 @@ static const unsigned char *const alt_patt[] = { f32_1, f32_2, alt_3, alt_4, alt_5, alt_6, alt_7, alt_8, alt_9, alt_10, alt_11 }; +#define alt64_9 (alt64_15 + 6) /* nopq 0L(%rax,%rax,1) */ +#define alt64_10 (alt64_15 + 5) /* cs nopq 0L(%rax,%rax,1) */ +/* data16 cs nopq 0L(%rax,%rax,1) */ +#define alt64_11 (alt64_15 + 4) +/* data16 data16 cs nopq 0L(%rax,%rax,1) */ +#define alt64_12 (alt64_15 + 3) +/* data16 data16 data16 cs nopq 0L(%rax,%rax,1) */ +#define alt64_13 (alt64_15 + 2) +/* data16 data16 data16 data16 cs nopq 0L(%rax,%rax,1) */ +#define alt64_14 (alt64_15 + 1) +/* data16 data16 data16 data16 data16 cs nopq 0L(%rax,%rax,1) */ +static const unsigned char alt64_15[] = + {0x66,0x66,0x66,0x66,0x66,0x2e,0x48, + 0x0f,0x1f,0x84,0x00,0x00,0x00,0x00,0x00}; +/* Long 64-bit NOPs patterns. */ +static const unsigned char *const alt64_patt[] = { + f32_1, f32_2, alt_3, alt_4, alt_5, alt_6, alt_7, alt_8, + alt64_9, alt64_10, alt64_11,alt64_12, alt64_13, alt64_14, alt64_15 +}; /* Genenerate COUNT bytes of NOPs to WHERE from PATT with the maximum size of a single NOP instruction MAX_SINGLE_NOP_SIZE. */ @@ -1466,12 +1485,21 @@ i386_generate_nops (fragS *fragP, char *where, offsetT count, int limit) patt = alt_patt; break; - case PROCESSOR_PENTIUMPRO: - case PROCESSOR_PENTIUM4: - case PROCESSOR_NOCONA: case PROCESSOR_CORE: case PROCESSOR_CORE2: case PROCESSOR_COREI7: + if (fragP->tc_frag_data.cpunop) + { + if (fragP->tc_frag_data.code == CODE_64BIT) + patt = alt64_patt; + else + patt = alt_patt; + } + break; + + case PROCESSOR_PENTIUMPRO: + case PROCESSOR_PENTIUM4: + case PROCESSOR_NOCONA: case PROCESSOR_GENERIC64: case PROCESSOR_K6: case PROCESSOR_ATHLON: @@ -1517,7 +1545,7 @@ i386_generate_nops (fragS *fragP, char *where, offsetT count, int limit) } } - if (patt != alt_patt) + if (patt != alt_patt && patt != alt64_patt) { max_single_nop_size = patt == f32_patt ? ARRAY_SIZE (f32_patt) : ARRAY_SIZE (f64_patt); @@ -1526,7 +1554,9 @@ i386_generate_nops (fragS *fragP, char *where, offsetT count, int limit) } else { - max_single_nop_size = sizeof (alt_patt) / sizeof (alt_patt[0]); + max_single_nop_size = patt == alt_patt + ? ARRAY_SIZE (alt_patt) + : ARRAY_SIZE (alt64_patt); /* Limit number of NOPs to 7 for newer processors. */ max_number_of_nops = 7; } diff --git a/gas/testsuite/gas/i386/ilp32/x86-64-nops-1-core2.d b/gas/testsuite/gas/i386/ilp32/x86-64-nops-1-core2.d index aec0817e292..81aa9dc8353 100644 --- a/gas/testsuite/gas/i386/ilp32/x86-64-nops-1-core2.d +++ b/gas/testsuite/gas/i386/ilp32/x86-64-nops-1-core2.d @@ -2,4 +2,4 @@ #as: -mtune=core2 #objdump: -drw #name: x86-64 (ILP32) -mtune=core2 nops 1 -#dump: ../x86-64-nops-1.d +#dump: ../x86-64-nops-1-core2.d diff --git a/gas/testsuite/gas/i386/ilp32/x86-64-nops-4-core2.d b/gas/testsuite/gas/i386/ilp32/x86-64-nops-4-core2.d index 324267a501e..246c7e8c0b0 100644 --- a/gas/testsuite/gas/i386/ilp32/x86-64-nops-4-core2.d +++ b/gas/testsuite/gas/i386/ilp32/x86-64-nops-4-core2.d @@ -2,4 +2,4 @@ #as: -mtune=core2 #objdump: -drw #name: x86-64 (ILP32) nops -mtune=core2 4 -#dump: ../x86-64-nops-4.d +#dump: ../x86-64-nops-4-core2.d diff --git a/gas/testsuite/gas/i386/x86-64-nops-1-core2.d b/gas/testsuite/gas/i386/x86-64-nops-1-core2.d index ec632b29cf5..3fe7f3f6f31 100644 --- a/gas/testsuite/gas/i386/x86-64-nops-1-core2.d +++ b/gas/testsuite/gas/i386/x86-64-nops-1-core2.d @@ -2,4 +2,156 @@ #source: nops-1.s #objdump: -drw #name: x86-64 -mtune=core2 nops 1 -#dump: x86-64-nops-1.d + +.*: +file format .* + + +Disassembly of section .text: + +0+ : + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 66 66 66 66 66 2e 48 0f 1f 84 00 00 00 00 00 data16 data16 data16 data16 data16 cs nopq (0x)?0\(%rax,%rax,1\) + +0+10 : + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 66 66 66 66 2e 48 0f 1f 84 00 00 00 00 00 data16 data16 data16 data16 cs nopq (0x)?0\(%rax,%rax,1\) + +0+20 : + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 66 66 66 2e 48 0f 1f 84 00 00 00 00 00 data16 data16 data16 cs nopq (0x)?0\(%rax,%rax,1\) + +0+30 : + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 66 66 2e 48 0f 1f 84 00 00 00 00 00 data16 data16 cs nopq (0x)?0\(%rax,%rax,1\) + +0+40 : + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 66 2e 48 0f 1f 84 00 00 00 00 00 data16 cs nopq (0x)?0\(%rax,%rax,1\) + +0+50 : + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 2e 48 0f 1f 84 00 00 00 00 00 cs nopq (0x)?0\(%rax,%rax,1\) + +0+60 : + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 48 0f 1f 84 00 00 00 00 00 nopq (0x)?0\(%rax,%rax,1\) + +0+70 : + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 0f 1f 84 00 00 00 00 00 nopl (0x)?0\(%rax,%rax,1\) + +0+80 : + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 0f 1f 80 00 00 00 00 nopl (0x)?0\(%rax\) + +0+90 : + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 66 0f 1f 44 00 00 nopw (0x)?0\(%rax,%rax,1\) + +0+a0 : + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 0f 1f 44 00 00 nopl (0x)?0\(%rax,%rax,1\) + +0+b0 : + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 0f 1f 40 00 nopl (0x)?0\(%rax\) + +0+c0 : + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 0f 1f 00 nopl \(%rax\) + +0+d0 : + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 66 90 xchg %ax,%ax +#pass diff --git a/gas/testsuite/gas/i386/x86-64-nops-4-core2.d b/gas/testsuite/gas/i386/x86-64-nops-4-core2.d index 010b686db2f..8154ca9eb6b 100644 --- a/gas/testsuite/gas/i386/x86-64-nops-4-core2.d +++ b/gas/testsuite/gas/i386/x86-64-nops-4-core2.d @@ -2,4 +2,210 @@ #source: nops-4.s #objdump: -drw #name: x86-64 nops -mtune=core2 4 -#dump: x86-64-nops-4.d + +.*: +file format .* + + +Disassembly of section .text: + +0+ : + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 66 66 66 66 66 2e 48 0f 1f 84 00 00 00 00 00 data16 data16 data16 data16 data16 cs nopq (0x)?0\(%rax,%rax,1\) + +[a-f0-9]+: 66 66 66 66 66 2e 48 0f 1f 84 00 00 00 00 00 data16 data16 data16 data16 data16 cs nopq (0x)?0\(%rax,%rax,1\) + +[a-f0-9]+: 90 nop + +0+20 : + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 66 66 66 66 66 2e 48 0f 1f 84 00 00 00 00 00 data16 data16 data16 data16 data16 cs nopq (0x)?0\(%rax,%rax,1\) + +[a-f0-9]+: 66 66 66 66 66 2e 48 0f 1f 84 00 00 00 00 00 data16 data16 data16 data16 data16 cs nopq (0x)?0\(%rax,%rax,1\) + +0+40 : + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 66 66 66 66 66 2e 48 0f 1f 84 00 00 00 00 00 data16 data16 data16 data16 data16 cs nopq (0x)?0\(%rax,%rax,1\) + +[a-f0-9]+: 66 66 66 66 2e 48 0f 1f 84 00 00 00 00 00 data16 data16 data16 data16 cs nopq (0x)?0\(%rax,%rax,1\) + +0+60 : + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 66 66 66 66 66 2e 48 0f 1f 84 00 00 00 00 00 data16 data16 data16 data16 data16 cs nopq (0x)?0\(%rax,%rax,1\) + +[a-f0-9]+: 66 66 66 2e 48 0f 1f 84 00 00 00 00 00 data16 data16 data16 cs nopq (0x)?0\(%rax,%rax,1\) + +0+80 : + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 66 66 66 66 66 2e 48 0f 1f 84 00 00 00 00 00 data16 data16 data16 data16 data16 cs nopq (0x)?0\(%rax,%rax,1\) + +[a-f0-9]+: 66 66 2e 48 0f 1f 84 00 00 00 00 00 data16 data16 cs nopq (0x)?0\(%rax,%rax,1\) + +0+a0 : + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 66 66 66 66 66 2e 48 0f 1f 84 00 00 00 00 00 data16 data16 data16 data16 data16 cs nopq (0x)?0\(%rax,%rax,1\) + +[a-f0-9]+: 66 2e 48 0f 1f 84 00 00 00 00 00 data16 cs nopq (0x)?0\(%rax,%rax,1\) + +0+c0 : + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 66 66 66 66 66 2e 48 0f 1f 84 00 00 00 00 00 data16 data16 data16 data16 data16 cs nopq (0x)?0\(%rax,%rax,1\) + +[a-f0-9]+: 2e 48 0f 1f 84 00 00 00 00 00 cs nopq (0x)?0\(%rax,%rax,1\) + +0+e0 : + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 66 66 66 66 66 2e 48 0f 1f 84 00 00 00 00 00 data16 data16 data16 data16 data16 cs nopq (0x)?0\(%rax,%rax,1\) + +[a-f0-9]+: 48 0f 1f 84 00 00 00 00 00 nopq (0x)?0\(%rax,%rax,1\) + +0+100 : + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 66 66 66 66 66 2e 48 0f 1f 84 00 00 00 00 00 data16 data16 data16 data16 data16 cs nopq (0x)?0\(%rax,%rax,1\) + +[a-f0-9]+: 0f 1f 84 00 00 00 00 00 nopl (0x)?0\(%rax,%rax,1\) + +0+120 : + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 66 66 66 66 66 2e 48 0f 1f 84 00 00 00 00 00 data16 data16 data16 data16 data16 cs nopq (0x)?0\(%rax,%rax,1\) + +[a-f0-9]+: 0f 1f 80 00 00 00 00 nopl (0x)?0\(%rax\) + +0+140 : + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 66 66 66 66 66 2e 48 0f 1f 84 00 00 00 00 00 data16 data16 data16 data16 data16 cs nopq (0x)?0\(%rax,%rax,1\) + +[a-f0-9]+: 66 0f 1f 44 00 00 nopw (0x)?0\(%rax,%rax,1\) + +0+160 : + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 66 66 66 66 66 2e 48 0f 1f 84 00 00 00 00 00 data16 data16 data16 data16 data16 cs nopq (0x)?0\(%rax,%rax,1\) + +[a-f0-9]+: 0f 1f 44 00 00 nopl (0x)?0\(%rax,%rax,1\) + +0+180 : + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 66 66 66 66 66 2e 48 0f 1f 84 00 00 00 00 00 data16 data16 data16 data16 data16 cs nopq (0x)?0\(%rax,%rax,1\) + +[a-f0-9]+: 0f 1f 40 00 nopl (0x)?0\(%rax\) + +0+1a0 : + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 66 66 66 66 66 2e 48 0f 1f 84 00 00 00 00 00 data16 data16 data16 data16 data16 cs nopq (0x)?0\(%rax,%rax,1\) + +[a-f0-9]+: 0f 1f 00 nopl \(%rax\) + +0+1c0 : + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 66 66 66 66 66 2e 48 0f 1f 84 00 00 00 00 00 data16 data16 data16 data16 data16 cs nopq (0x)?0\(%rax,%rax,1\) + +[a-f0-9]+: 66 90 xchg %ax,%ax + +0+1e0 : + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 90 nop + +[a-f0-9]+: 66 66 66 66 66 2e 48 0f 1f 84 00 00 00 00 00 data16 data16 data16 data16 data16 cs nopq (0x)?0\(%rax,%rax,1\) + +[a-f0-9]+: 90 nop +#pass