diff options
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 19 | ||||
-rw-r--r-- | gas/config/tc-i386.c | 59 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/notrack-intel.d | 58 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/notrack.d | 58 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/notrack.s | 38 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/notrackbad.l | 24 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/notrackbad.s | 6 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-notrack-intel.d | 76 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-notrack.d | 76 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-notrack.s | 50 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-notrackbad.l | 24 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-notrackbad.s | 6 |
12 files changed, 266 insertions, 228 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 5dc06f5..1bbd8b8 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,22 @@ +2017-09-09 H.J. Lu <hongjiu.lu@intel.com> + + * config/tc-i386.c (NOTRACK_PREFIX): Removed. + (REX_PREFIX): Updated. + (MAX_PREFIXES): Likewise. + (parse_insn): Remove restriction on NOTRACK prefix position. + * testsuite/gas/i386/notrack.s: Add tests with NOTRACK prefix + before other prefixes. + * testsuite/gas/i386/x86-64-notrack.s: Likewise. + * testsuite/gas/i386/notrackbad.s: Remove tests with NOTRACK + prefix before other prefixes. + * testsuite/gas/i386/x86-64-notrackbad.s: Likewise. + * testsuite/gas/i386/notrack-intel.d: Updated. + * testsuite/gas/i386/notrack.d: Likewise. + * testsuite/gas/i386/notrackbad.l: Likewise. + * testsuite/gas/i386/x86-64-notrack-intel.d: Likewise. + * testsuite/gas/i386/x86-64-notrack.d: Likewise. + * testsuite/gas/i386/x86-64-notrackbad.l: Likewise. + 2017-09-07 Palmer Dabbelt <palmer@dabbelt.com> * config/tc-riscv.c (riscv_frag_align_code): Emit the entire diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 456be9e..fdff301 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -66,11 +66,8 @@ #define HLE_PREFIX REP_PREFIX #define BND_PREFIX REP_PREFIX #define LOCK_PREFIX 5 -/* Only one of NOTRACK_PREFIX and SEG_PREFIX can be used at the same - time. */ -#define NOTRACK_PREFIX 6 -#define REX_PREFIX 7 /* must come last. */ -#define MAX_PREFIXES 8 /* max prefixes per opcode */ +#define REX_PREFIX 6 /* must come last. */ +#define MAX_PREFIXES 7 /* max prefixes per opcode */ /* we define the syntax here (modulo base,index,scale syntax) */ #define REGISTER_PREFIX '%' @@ -3978,42 +3975,24 @@ parse_insn (char *line, char *mnemonic) else { /* Add prefix, checking for repeated prefixes. */ - enum PREFIX_GROUP p - = add_prefix (current_templates->start->base_opcode); - if (p == PREFIX_DS - && current_templates->start->cpu_flags.bitfield.cpucet) + switch (add_prefix (current_templates->start->base_opcode)) { - i.notrack_prefix = current_templates->start->name; - /* Move NOTRACK_PREFIX_OPCODE to NOTRACK_PREFIX slot so - that it is placed before others. */ - i.prefix[SEG_PREFIX] = 0; - i.prefix[NOTRACK_PREFIX] = NOTRACK_PREFIX_OPCODE; - } - else - { - switch (p) - { - case PREFIX_EXIST: - return NULL; - case PREFIX_REP: - if (current_templates->start->cpu_flags.bitfield.cpuhle) - i.hle_prefix = current_templates->start->name; - else if (current_templates->start->cpu_flags.bitfield.cpumpx) - i.bnd_prefix = current_templates->start->name; - else - i.rep_prefix = current_templates->start->name; - break; - default: - break; - } - - if (i.notrack_prefix != NULL) - { - /* There must be no other prefixes after NOTRACK - prefix. */ - as_bad (_("expecting no other prefixes after `notrack'")); - return NULL; - } + case PREFIX_EXIST: + return NULL; + case PREFIX_DS: + if (current_templates->start->cpu_flags.bitfield.cpucet) + i.notrack_prefix = current_templates->start->name; + break; + case PREFIX_REP: + if (current_templates->start->cpu_flags.bitfield.cpuhle) + i.hle_prefix = current_templates->start->name; + else if (current_templates->start->cpu_flags.bitfield.cpumpx) + i.bnd_prefix = current_templates->start->name; + else + i.rep_prefix = current_templates->start->name; + break; + default: + break; } } /* Skip past PREFIX_SEPARATOR and reset token_start. */ diff --git a/gas/testsuite/gas/i386/notrack-intel.d b/gas/testsuite/gas/i386/notrack-intel.d index 2ab6a8a..7b72a39 100644 --- a/gas/testsuite/gas/i386/notrack-intel.d +++ b/gas/testsuite/gas/i386/notrack-intel.d @@ -9,37 +9,45 @@ Disassembly of section .text: 0+ <_start>: [ ]*[a-f0-9]+: 3e ff d0 notrack call eax -[ ]*[a-f0-9]+: 66 3e ff d0 notrack call ax +[ ]*[a-f0-9]+: 3e 66 ff d0 notrack call ax [ ]*[a-f0-9]+: 3e ff e0 notrack jmp eax -[ ]*[a-f0-9]+: 66 3e ff e0 notrack jmp ax +[ ]*[a-f0-9]+: 3e 66 ff e0 notrack jmp ax [ ]*[a-f0-9]+: 3e ff 10 notrack call DWORD PTR \[eax\] -[ ]*[a-f0-9]+: 66 3e ff 10 notrack call WORD PTR \[eax\] +[ ]*[a-f0-9]+: 3e 66 ff 10 notrack call WORD PTR \[eax\] [ ]*[a-f0-9]+: 3e ff 20 notrack jmp DWORD PTR \[eax\] -[ ]*[a-f0-9]+: 66 3e ff 20 notrack jmp WORD PTR \[eax\] -[ ]*[a-f0-9]+: f2 3e ff d0 bnd notrack call eax -[ ]*[a-f0-9]+: 66 f2 3e ff d0 bnd notrack call ax -[ ]*[a-f0-9]+: f2 3e ff e0 bnd notrack jmp eax -[ ]*[a-f0-9]+: 66 f2 3e ff e0 bnd notrack jmp ax -[ ]*[a-f0-9]+: f2 3e ff 10 bnd notrack call DWORD PTR \[eax\] -[ ]*[a-f0-9]+: 66 f2 3e ff 10 bnd notrack call WORD PTR \[eax\] -[ ]*[a-f0-9]+: f2 3e ff 20 bnd notrack jmp DWORD PTR \[eax\] -[ ]*[a-f0-9]+: 66 f2 3e ff 20 bnd notrack jmp WORD PTR \[eax\] +[ ]*[a-f0-9]+: 3e 66 ff 20 notrack jmp WORD PTR \[eax\] +[ ]*[a-f0-9]+: 3e f2 ff d0 notrack bnd call eax +[ ]*[a-f0-9]+: 3e 66 f2 ff d0 notrack bnd call ax +[ ]*[a-f0-9]+: 3e f2 ff e0 notrack bnd jmp eax +[ ]*[a-f0-9]+: 3e 66 f2 ff e0 notrack bnd jmp ax +[ ]*[a-f0-9]+: 3e f2 ff 10 notrack bnd call DWORD PTR \[eax\] +[ ]*[a-f0-9]+: 3e 66 f2 ff 10 notrack bnd call WORD PTR \[eax\] +[ ]*[a-f0-9]+: 3e f2 ff 20 notrack bnd jmp DWORD PTR \[eax\] +[ ]*[a-f0-9]+: 3e 66 f2 ff 20 notrack bnd jmp WORD PTR \[eax\] +[ ]*[a-f0-9]+: 3e f2 ff d0 notrack bnd call eax +[ ]*[a-f0-9]+: 3e 66 f2 ff d0 notrack bnd call ax +[ ]*[a-f0-9]+: 3e f2 ff 10 notrack bnd call DWORD PTR \[eax\] +[ ]*[a-f0-9]+: 3e 66 f2 ff 10 notrack bnd call WORD PTR \[eax\] [ ]*[a-f0-9]+: 3e ff d0 notrack call eax -[ ]*[a-f0-9]+: 66 3e ff d0 notrack call ax +[ ]*[a-f0-9]+: 3e 66 ff d0 notrack call ax [ ]*[a-f0-9]+: 3e ff e0 notrack jmp eax -[ ]*[a-f0-9]+: 66 3e ff e0 notrack jmp ax +[ ]*[a-f0-9]+: 3e 66 ff e0 notrack jmp ax [ ]*[a-f0-9]+: 3e ff 10 notrack call DWORD PTR \[eax\] -[ ]*[a-f0-9]+: 66 3e ff 10 notrack call WORD PTR \[eax\] +[ ]*[a-f0-9]+: 3e 66 ff 10 notrack call WORD PTR \[eax\] [ ]*[a-f0-9]+: 3e ff 20 notrack jmp DWORD PTR \[eax\] -[ ]*[a-f0-9]+: 66 3e ff 20 notrack jmp WORD PTR \[eax\] +[ ]*[a-f0-9]+: 3e 66 ff 20 notrack jmp WORD PTR \[eax\] +[ ]*[a-f0-9]+: 3e f2 ff d0 notrack bnd call eax +[ ]*[a-f0-9]+: 3e 66 f2 ff d0 notrack bnd call ax +[ ]*[a-f0-9]+: 3e f2 ff e0 notrack bnd jmp eax +[ ]*[a-f0-9]+: 3e 66 f2 ff e0 notrack bnd jmp ax +[ ]*[a-f0-9]+: 3e f2 ff 10 notrack bnd call DWORD PTR \[eax\] +[ ]*[a-f0-9]+: 3e 66 f2 ff 10 notrack bnd call WORD PTR \[eax\] +[ ]*[a-f0-9]+: 3e f2 ff 20 notrack bnd jmp DWORD PTR \[eax\] +[ ]*[a-f0-9]+: 3e 66 f2 ff 20 notrack bnd jmp WORD PTR \[eax\] +[ ]*[a-f0-9]+: 3e f2 ff d0 notrack bnd call eax +[ ]*[a-f0-9]+: 3e 66 f2 ff d0 notrack bnd call ax +[ ]*[a-f0-9]+: 3e f2 ff 10 notrack bnd call DWORD PTR \[eax\] +[ ]*[a-f0-9]+: 3e 66 f2 ff 10 notrack bnd call WORD PTR \[eax\] [ ]*[a-f0-9]+: f2 3e ff d0 bnd notrack call eax -[ ]*[a-f0-9]+: 66 f2 3e ff d0 bnd notrack call ax -[ ]*[a-f0-9]+: f2 3e ff e0 bnd notrack jmp eax -[ ]*[a-f0-9]+: 66 f2 3e ff e0 bnd notrack jmp ax -[ ]*[a-f0-9]+: f2 3e ff 10 bnd notrack call DWORD PTR \[eax\] -[ ]*[a-f0-9]+: 66 f2 3e ff 10 bnd notrack call WORD PTR \[eax\] -[ ]*[a-f0-9]+: f2 3e ff 20 bnd notrack jmp DWORD PTR \[eax\] -[ ]*[a-f0-9]+: 66 f2 3e ff 20 bnd notrack jmp WORD PTR \[eax\] -[ ]*[a-f0-9]+: 3e f2 ff d0 ds bnd call eax -[ ]*[a-f0-9]+: 3e 66 ff d0 ds call ax +[ ]*[a-f0-9]+: 66 3e ff d0 notrack call ax #pass diff --git a/gas/testsuite/gas/i386/notrack.d b/gas/testsuite/gas/i386/notrack.d index 11d0ce9..44fd110 100644 --- a/gas/testsuite/gas/i386/notrack.d +++ b/gas/testsuite/gas/i386/notrack.d @@ -8,37 +8,45 @@ Disassembly of section .text: 0+ <_start>: [ ]*[a-f0-9]+: 3e ff d0 notrack call \*%eax -[ ]*[a-f0-9]+: 66 3e ff d0 notrack callw \*%ax +[ ]*[a-f0-9]+: 3e 66 ff d0 notrack callw \*%ax [ ]*[a-f0-9]+: 3e ff e0 notrack jmp \*%eax -[ ]*[a-f0-9]+: 66 3e ff e0 notrack jmpw \*%ax +[ ]*[a-f0-9]+: 3e 66 ff e0 notrack jmpw \*%ax [ ]*[a-f0-9]+: 3e ff 10 notrack call \*\(%eax\) -[ ]*[a-f0-9]+: 66 3e ff 10 notrack callw \*\(%eax\) +[ ]*[a-f0-9]+: 3e 66 ff 10 notrack callw \*\(%eax\) [ ]*[a-f0-9]+: 3e ff 20 notrack jmp \*\(%eax\) -[ ]*[a-f0-9]+: 66 3e ff 20 notrack jmpw \*\(%eax\) -[ ]*[a-f0-9]+: f2 3e ff d0 bnd notrack call \*%eax -[ ]*[a-f0-9]+: 66 f2 3e ff d0 bnd notrack callw \*%ax -[ ]*[a-f0-9]+: f2 3e ff e0 bnd notrack jmp \*%eax -[ ]*[a-f0-9]+: 66 f2 3e ff e0 bnd notrack jmpw \*%ax -[ ]*[a-f0-9]+: f2 3e ff 10 bnd notrack call \*\(%eax\) -[ ]*[a-f0-9]+: 66 f2 3e ff 10 bnd notrack callw \*\(%eax\) -[ ]*[a-f0-9]+: f2 3e ff 20 bnd notrack jmp \*\(%eax\) -[ ]*[a-f0-9]+: 66 f2 3e ff 20 bnd notrack jmpw \*\(%eax\) +[ ]*[a-f0-9]+: 3e 66 ff 20 notrack jmpw \*\(%eax\) +[ ]*[a-f0-9]+: 3e f2 ff d0 notrack bnd call \*%eax +[ ]*[a-f0-9]+: 3e 66 f2 ff d0 notrack bnd callw \*%ax +[ ]*[a-f0-9]+: 3e f2 ff e0 notrack bnd jmp \*%eax +[ ]*[a-f0-9]+: 3e 66 f2 ff e0 notrack bnd jmpw \*%ax +[ ]*[a-f0-9]+: 3e f2 ff 10 notrack bnd call \*\(%eax\) +[ ]*[a-f0-9]+: 3e 66 f2 ff 10 notrack bnd callw \*\(%eax\) +[ ]*[a-f0-9]+: 3e f2 ff 20 notrack bnd jmp \*\(%eax\) +[ ]*[a-f0-9]+: 3e 66 f2 ff 20 notrack bnd jmpw \*\(%eax\) +[ ]*[a-f0-9]+: 3e f2 ff d0 notrack bnd call \*%eax +[ ]*[a-f0-9]+: 3e 66 f2 ff d0 notrack bnd callw \*%ax +[ ]*[a-f0-9]+: 3e f2 ff 10 notrack bnd call \*\(%eax\) +[ ]*[a-f0-9]+: 3e 66 f2 ff 10 notrack bnd callw \*\(%eax\) [ ]*[a-f0-9]+: 3e ff d0 notrack call \*%eax -[ ]*[a-f0-9]+: 66 3e ff d0 notrack callw \*%ax +[ ]*[a-f0-9]+: 3e 66 ff d0 notrack callw \*%ax [ ]*[a-f0-9]+: 3e ff e0 notrack jmp \*%eax -[ ]*[a-f0-9]+: 66 3e ff e0 notrack jmpw \*%ax +[ ]*[a-f0-9]+: 3e 66 ff e0 notrack jmpw \*%ax [ ]*[a-f0-9]+: 3e ff 10 notrack call \*\(%eax\) -[ ]*[a-f0-9]+: 66 3e ff 10 notrack callw \*\(%eax\) +[ ]*[a-f0-9]+: 3e 66 ff 10 notrack callw \*\(%eax\) [ ]*[a-f0-9]+: 3e ff 20 notrack jmp \*\(%eax\) -[ ]*[a-f0-9]+: 66 3e ff 20 notrack jmpw \*\(%eax\) +[ ]*[a-f0-9]+: 3e 66 ff 20 notrack jmpw \*\(%eax\) +[ ]*[a-f0-9]+: 3e f2 ff d0 notrack bnd call \*%eax +[ ]*[a-f0-9]+: 3e 66 f2 ff d0 notrack bnd callw \*%ax +[ ]*[a-f0-9]+: 3e f2 ff e0 notrack bnd jmp \*%eax +[ ]*[a-f0-9]+: 3e 66 f2 ff e0 notrack bnd jmpw \*%ax +[ ]*[a-f0-9]+: 3e f2 ff 10 notrack bnd call \*\(%eax\) +[ ]*[a-f0-9]+: 3e 66 f2 ff 10 notrack bnd callw \*\(%eax\) +[ ]*[a-f0-9]+: 3e f2 ff 20 notrack bnd jmp \*\(%eax\) +[ ]*[a-f0-9]+: 3e 66 f2 ff 20 notrack bnd jmpw \*\(%eax\) +[ ]*[a-f0-9]+: 3e f2 ff d0 notrack bnd call \*%eax +[ ]*[a-f0-9]+: 3e 66 f2 ff d0 notrack bnd callw \*%ax +[ ]*[a-f0-9]+: 3e f2 ff 10 notrack bnd call \*\(%eax\) +[ ]*[a-f0-9]+: 3e 66 f2 ff 10 notrack bnd callw \*\(%eax\) [ ]*[a-f0-9]+: f2 3e ff d0 bnd notrack call \*%eax -[ ]*[a-f0-9]+: 66 f2 3e ff d0 bnd notrack callw \*%ax -[ ]*[a-f0-9]+: f2 3e ff e0 bnd notrack jmp \*%eax -[ ]*[a-f0-9]+: 66 f2 3e ff e0 bnd notrack jmpw \*%ax -[ ]*[a-f0-9]+: f2 3e ff 10 bnd notrack call \*\(%eax\) -[ ]*[a-f0-9]+: 66 f2 3e ff 10 bnd notrack callw \*\(%eax\) -[ ]*[a-f0-9]+: f2 3e ff 20 bnd notrack jmp \*\(%eax\) -[ ]*[a-f0-9]+: 66 f2 3e ff 20 bnd notrack jmpw \*\(%eax\) -[ ]*[a-f0-9]+: 3e f2 ff d0 ds bnd call \*%eax -[ ]*[a-f0-9]+: 3e 66 ff d0 ds callw \*%ax +[ ]*[a-f0-9]+: 66 3e ff d0 notrack callw \*%ax #pass diff --git a/gas/testsuite/gas/i386/notrack.s b/gas/testsuite/gas/i386/notrack.s index 8383645..e6db928 100644 --- a/gas/testsuite/gas/i386/notrack.s +++ b/gas/testsuite/gas/i386/notrack.s @@ -13,15 +13,20 @@ _start: notrack jmp *(%eax) notrack jmpw *(%eax) + notrack bnd call *%eax + notrack bnd call *%ax + notrack bnd jmp *%eax + notrack bnd jmp *%ax + + notrack bnd call *(%eax) + notrack bnd callw *(%eax) + notrack bnd jmp *(%eax) + notrack bnd jmpw *(%eax) + bnd notrack call *%eax bnd notrack call *%ax - bnd notrack jmp *%eax - bnd notrack jmp *%ax - bnd notrack call *(%eax) bnd notrack callw *(%eax) - bnd notrack jmp *(%eax) - bnd notrack jmpw *(%eax) .intel_syntax noprefix notrack call eax @@ -34,24 +39,29 @@ _start: notrack jmp DWORD PTR [eax] notrack jmp WORD PTR [eax] + notrack bnd call eax + notrack bnd call ax + notrack bnd jmp eax + notrack bnd jmp ax + + notrack bnd call DWORD PTR [eax] + notrack bnd call WORD PTR [eax] + notrack bnd jmp DWORD PTR [eax] + notrack bnd jmp WORD PTR [eax] + bnd notrack call eax bnd notrack call ax - bnd notrack jmp eax - bnd notrack jmp ax - bnd notrack call DWORD PTR [eax] bnd notrack call WORD PTR [eax] - bnd notrack jmp DWORD PTR [eax] - bnd notrack jmp WORD PTR [eax] - # ds bnd call *%eax - .byte 0x3e + # bnd notrack call *%eax .byte 0xf2 + .byte 0x3e .byte 0xff .byte 0xd0 - # ds callw *%ax - .byte 0x3e + # notrack callw *%ax .byte 0x66 + .byte 0x3e .byte 0xff .byte 0xd0 diff --git a/gas/testsuite/gas/i386/notrackbad.l b/gas/testsuite/gas/i386/notrackbad.l index 48ee69f..2271a92 100644 --- a/gas/testsuite/gas/i386/notrackbad.l +++ b/gas/testsuite/gas/i386/notrackbad.l @@ -2,15 +2,10 @@ .*:6: Error: expecting indirect branch instruction after `notrack' .*:6: Warning: skipping prefixes on this instruction .*:7: Error: expecting indirect branch instruction after `notrack' -.*:7: Warning: skipping prefixes on this instruction .*:9: Error: same type of prefix used twice -.*:10: Error: expecting no other prefixes after `notrack' -.*:11: Error: expecting no other prefixes after `notrack' -.*:12: Error: expecting no other prefixes after `notrack' -.*:15: Error: same type of prefix used twice -.*:16: Error: expecting no other prefixes after `notrack' -.*:17: Error: expecting no other prefixes after `notrack' -.*:18: Error: expecting no other prefixes after `notrack' +.*:10: Error: same type of prefix used twice +.*:13: Error: same type of prefix used twice +.*:14: Error: same type of prefix used twice GAS LISTING .* @@ -25,17 +20,12 @@ GAS LISTING .* [ ]*6[ ]+[0-9A-F]* [ ]*7[ ]+\?\?\?\? [0-9A-F]* notrack jmp foo \*\*\*\* Error: expecting indirect branch instruction after `notrack' -\*\*\*\* Warning: skipping prefixes on this instruction [ ]*7[ ]+[0-9A-F]* [ ]*8[ ]+ [ ]*9[ ]+fs notrack call \*%eax [ ]*10[ ]+notrack fs call \*%eax -[ ]*11[ ]+notrack bnd call \*%eax -[ ]*12[ ]+notrack data16 call \*%eax -[ ]*13[ ]+ -[ ]*14[ ]+\.intel_syntax noprefix -[ ]*15[ ]+fs notrack call eax -[ ]*16[ ]+notrack fs call eax -[ ]*17[ ]+notrack bnd call eax -[ ]*18[ ]+[\? 0-9A-F]*[ ]+notrack data16 call eax +[ ]*11[ ]+ +[ ]*12[ ]+\.intel_syntax noprefix +[ ]*13[ ]+fs notrack call eax +[ ]*14[ ]+notrack fs call eax #pass diff --git a/gas/testsuite/gas/i386/notrackbad.s b/gas/testsuite/gas/i386/notrackbad.s index 3f57ef0..535ec56 100644 --- a/gas/testsuite/gas/i386/notrackbad.s +++ b/gas/testsuite/gas/i386/notrackbad.s @@ -8,11 +8,9 @@ _start: fs notrack call *%eax notrack fs call *%eax - notrack bnd call *%eax - notrack data16 call *%eax .intel_syntax noprefix fs notrack call eax notrack fs call eax - notrack bnd call eax - notrack data16 call eax + + .p2align 4,0 diff --git a/gas/testsuite/gas/i386/x86-64-notrack-intel.d b/gas/testsuite/gas/i386/x86-64-notrack-intel.d index 0170a82..b996790 100644 --- a/gas/testsuite/gas/i386/x86-64-notrack-intel.d +++ b/gas/testsuite/gas/i386/x86-64-notrack-intel.d @@ -16,22 +16,28 @@ Disassembly of section .text: [ ]*[a-f0-9]+: 3e 41 ff 10 notrack call QWORD PTR \[r8\] [ ]*[a-f0-9]+: 3e ff 20 notrack jmp QWORD PTR \[rax\] [ ]*[a-f0-9]+: 3e 41 ff 20 notrack jmp QWORD PTR \[r8\] -[ ]*[a-f0-9]+: 67 3e ff 10 notrack call QWORD PTR \[eax\] -[ ]*[a-f0-9]+: 67 3e 41 ff 10 notrack call QWORD PTR \[r8d\] -[ ]*[a-f0-9]+: 67 3e ff 20 notrack jmp QWORD PTR \[eax\] -[ ]*[a-f0-9]+: 67 3e 41 ff 20 notrack jmp QWORD PTR \[r8d\] -[ ]*[a-f0-9]+: f2 3e ff d0 bnd notrack call rax -[ ]*[a-f0-9]+: f2 3e 41 ff d0 bnd notrack call r8 -[ ]*[a-f0-9]+: f2 3e ff e0 bnd notrack jmp rax -[ ]*[a-f0-9]+: f2 3e 41 ff e0 bnd notrack jmp r8 -[ ]*[a-f0-9]+: f2 3e ff 10 bnd notrack call QWORD PTR \[rax\] -[ ]*[a-f0-9]+: f2 3e 41 ff 10 bnd notrack call QWORD PTR \[r8\] -[ ]*[a-f0-9]+: f2 3e ff 20 bnd notrack jmp QWORD PTR \[rax\] -[ ]*[a-f0-9]+: f2 3e 41 ff 20 bnd notrack jmp QWORD PTR \[r8\] -[ ]*[a-f0-9]+: 67 f2 3e ff 10 bnd notrack call QWORD PTR \[eax\] -[ ]*[a-f0-9]+: 67 f2 3e 41 ff 10 bnd notrack call QWORD PTR \[r8d\] -[ ]*[a-f0-9]+: 67 f2 3e ff 20 bnd notrack jmp QWORD PTR \[eax\] -[ ]*[a-f0-9]+: 67 f2 3e 41 ff 20 bnd notrack jmp QWORD PTR \[r8d\] +[ ]*[a-f0-9]+: 3e 67 ff 10 notrack call QWORD PTR \[eax\] +[ ]*[a-f0-9]+: 3e 67 41 ff 10 notrack call QWORD PTR \[r8d\] +[ ]*[a-f0-9]+: 3e 67 ff 20 notrack jmp QWORD PTR \[eax\] +[ ]*[a-f0-9]+: 3e 67 41 ff 20 notrack jmp QWORD PTR \[r8d\] +[ ]*[a-f0-9]+: 3e f2 ff d0 notrack bnd call rax +[ ]*[a-f0-9]+: 3e f2 41 ff d0 notrack bnd call r8 +[ ]*[a-f0-9]+: 3e f2 ff e0 notrack bnd jmp rax +[ ]*[a-f0-9]+: 3e f2 41 ff e0 notrack bnd jmp r8 +[ ]*[a-f0-9]+: 3e f2 ff 10 notrack bnd call QWORD PTR \[rax\] +[ ]*[a-f0-9]+: 3e f2 41 ff 10 notrack bnd call QWORD PTR \[r8\] +[ ]*[a-f0-9]+: 3e f2 ff 20 notrack bnd jmp QWORD PTR \[rax\] +[ ]*[a-f0-9]+: 3e f2 41 ff 20 notrack bnd jmp QWORD PTR \[r8\] +[ ]*[a-f0-9]+: 3e 67 f2 ff 10 notrack bnd call QWORD PTR \[eax\] +[ ]*[a-f0-9]+: 3e 67 f2 41 ff 10 notrack bnd call QWORD PTR \[r8d\] +[ ]*[a-f0-9]+: 3e 67 f2 ff 20 notrack bnd jmp QWORD PTR \[eax\] +[ ]*[a-f0-9]+: 3e 67 f2 41 ff 20 notrack bnd jmp QWORD PTR \[r8d\] +[ ]*[a-f0-9]+: 3e f2 ff d0 notrack bnd call rax +[ ]*[a-f0-9]+: 3e f2 41 ff d0 notrack bnd call r8 +[ ]*[a-f0-9]+: 3e f2 ff 10 notrack bnd call QWORD PTR \[rax\] +[ ]*[a-f0-9]+: 3e f2 41 ff 10 notrack bnd call QWORD PTR \[r8\] +[ ]*[a-f0-9]+: 3e 67 f2 ff 10 notrack bnd call QWORD PTR \[eax\] +[ ]*[a-f0-9]+: 3e 67 f2 41 ff 10 notrack bnd call QWORD PTR \[r8d\] [ ]*[a-f0-9]+: 3e ff d0 notrack call rax [ ]*[a-f0-9]+: 3e 41 ff d0 notrack call r8 [ ]*[a-f0-9]+: 3e ff e0 notrack jmp rax @@ -40,23 +46,29 @@ Disassembly of section .text: [ ]*[a-f0-9]+: 3e 41 ff 10 notrack call QWORD PTR \[r8\] [ ]*[a-f0-9]+: 3e ff 20 notrack jmp QWORD PTR \[rax\] [ ]*[a-f0-9]+: 3e 41 ff 20 notrack jmp QWORD PTR \[r8\] -[ ]*[a-f0-9]+: 67 3e ff 10 notrack call QWORD PTR \[eax\] -[ ]*[a-f0-9]+: 67 3e 41 ff 10 notrack call QWORD PTR \[r8d\] -[ ]*[a-f0-9]+: 67 3e ff 20 notrack jmp QWORD PTR \[eax\] -[ ]*[a-f0-9]+: 67 3e 41 ff 20 notrack jmp QWORD PTR \[r8d\] +[ ]*[a-f0-9]+: 3e 67 ff 10 notrack call QWORD PTR \[eax\] +[ ]*[a-f0-9]+: 3e 67 41 ff 10 notrack call QWORD PTR \[r8d\] +[ ]*[a-f0-9]+: 3e 67 ff 20 notrack jmp QWORD PTR \[eax\] +[ ]*[a-f0-9]+: 3e 67 41 ff 20 notrack jmp QWORD PTR \[r8d\] +[ ]*[a-f0-9]+: 3e f2 ff d0 notrack bnd call rax +[ ]*[a-f0-9]+: 3e f2 41 ff d0 notrack bnd call r8 +[ ]*[a-f0-9]+: 3e f2 ff e0 notrack bnd jmp rax +[ ]*[a-f0-9]+: 3e f2 41 ff e0 notrack bnd jmp r8 +[ ]*[a-f0-9]+: 3e f2 ff 10 notrack bnd call QWORD PTR \[rax\] +[ ]*[a-f0-9]+: 3e f2 41 ff 10 notrack bnd call QWORD PTR \[r8\] +[ ]*[a-f0-9]+: 3e f2 ff 20 notrack bnd jmp QWORD PTR \[rax\] +[ ]*[a-f0-9]+: 3e f2 41 ff 20 notrack bnd jmp QWORD PTR \[r8\] +[ ]*[a-f0-9]+: 3e 67 f2 ff 10 notrack bnd call QWORD PTR \[eax\] +[ ]*[a-f0-9]+: 3e 67 f2 41 ff 10 notrack bnd call QWORD PTR \[r8d\] +[ ]*[a-f0-9]+: 3e 67 f2 ff 20 notrack bnd jmp QWORD PTR \[eax\] +[ ]*[a-f0-9]+: 3e 67 f2 41 ff 20 notrack bnd jmp QWORD PTR \[r8d\] +[ ]*[a-f0-9]+: 3e f2 ff d0 notrack bnd call rax +[ ]*[a-f0-9]+: 3e f2 41 ff d0 notrack bnd call r8 +[ ]*[a-f0-9]+: 3e f2 ff 10 notrack bnd call QWORD PTR \[rax\] +[ ]*[a-f0-9]+: 3e f2 41 ff 10 notrack bnd call QWORD PTR \[r8\] +[ ]*[a-f0-9]+: 3e 67 f2 ff 10 notrack bnd call QWORD PTR \[eax\] +[ ]*[a-f0-9]+: 3e 67 f2 41 ff 10 notrack bnd call QWORD PTR \[r8d\] [ ]*[a-f0-9]+: f2 3e ff d0 bnd notrack call rax -[ ]*[a-f0-9]+: f2 3e 41 ff d0 bnd notrack call r8 -[ ]*[a-f0-9]+: f2 3e ff e0 bnd notrack jmp rax -[ ]*[a-f0-9]+: f2 3e 41 ff e0 bnd notrack jmp r8 -[ ]*[a-f0-9]+: f2 3e ff 10 bnd notrack call QWORD PTR \[rax\] -[ ]*[a-f0-9]+: f2 3e 41 ff 10 bnd notrack call QWORD PTR \[r8\] -[ ]*[a-f0-9]+: f2 3e ff 20 bnd notrack jmp QWORD PTR \[rax\] -[ ]*[a-f0-9]+: f2 3e 41 ff 20 bnd notrack jmp QWORD PTR \[r8\] -[ ]*[a-f0-9]+: 67 f2 3e ff 10 bnd notrack call QWORD PTR \[eax\] -[ ]*[a-f0-9]+: 67 f2 3e 41 ff 10 bnd notrack call QWORD PTR \[r8d\] -[ ]*[a-f0-9]+: 67 f2 3e ff 20 bnd notrack jmp QWORD PTR \[eax\] -[ ]*[a-f0-9]+: 67 f2 3e 41 ff 20 bnd notrack jmp QWORD PTR \[r8d\] -[ ]*[a-f0-9]+: 3e f2 ff d0 ds bnd call rax [ ]*[a-f0-9]+: 3e 66 ff d0 ds call ax [ ]*[a-f0-9]+: 66 3e ff d0 ds call ax #pass diff --git a/gas/testsuite/gas/i386/x86-64-notrack.d b/gas/testsuite/gas/i386/x86-64-notrack.d index cf725d4..e525f43 100644 --- a/gas/testsuite/gas/i386/x86-64-notrack.d +++ b/gas/testsuite/gas/i386/x86-64-notrack.d @@ -15,22 +15,28 @@ Disassembly of section .text: [ ]*[a-f0-9]+: 3e 41 ff 10 notrack callq \*\(%r8\) [ ]*[a-f0-9]+: 3e ff 20 notrack jmpq \*\(%rax\) [ ]*[a-f0-9]+: 3e 41 ff 20 notrack jmpq \*\(%r8\) -[ ]*[a-f0-9]+: 67 3e ff 10 notrack callq \*\(%eax\) -[ ]*[a-f0-9]+: 67 3e 41 ff 10 notrack callq \*\(%r8d\) -[ ]*[a-f0-9]+: 67 3e ff 20 notrack jmpq \*\(%eax\) -[ ]*[a-f0-9]+: 67 3e 41 ff 20 notrack jmpq \*\(%r8d\) -[ ]*[a-f0-9]+: f2 3e ff d0 bnd notrack callq \*%rax -[ ]*[a-f0-9]+: f2 3e 41 ff d0 bnd notrack callq \*%r8 -[ ]*[a-f0-9]+: f2 3e ff e0 bnd notrack jmpq \*%rax -[ ]*[a-f0-9]+: f2 3e 41 ff e0 bnd notrack jmpq \*%r8 -[ ]*[a-f0-9]+: f2 3e ff 10 bnd notrack callq \*\(%rax\) -[ ]*[a-f0-9]+: f2 3e 41 ff 10 bnd notrack callq \*\(%r8\) -[ ]*[a-f0-9]+: f2 3e ff 20 bnd notrack jmpq \*\(%rax\) -[ ]*[a-f0-9]+: f2 3e 41 ff 20 bnd notrack jmpq \*\(%r8\) -[ ]*[a-f0-9]+: 67 f2 3e ff 10 bnd notrack callq \*\(%eax\) -[ ]*[a-f0-9]+: 67 f2 3e 41 ff 10 bnd notrack callq \*\(%r8d\) -[ ]*[a-f0-9]+: 67 f2 3e ff 20 bnd notrack jmpq \*\(%eax\) -[ ]*[a-f0-9]+: 67 f2 3e 41 ff 20 bnd notrack jmpq \*\(%r8d\) +[ ]*[a-f0-9]+: 3e 67 ff 10 notrack callq \*\(%eax\) +[ ]*[a-f0-9]+: 3e 67 41 ff 10 notrack callq \*\(%r8d\) +[ ]*[a-f0-9]+: 3e 67 ff 20 notrack jmpq \*\(%eax\) +[ ]*[a-f0-9]+: 3e 67 41 ff 20 notrack jmpq \*\(%r8d\) +[ ]*[a-f0-9]+: 3e f2 ff d0 notrack bnd callq \*%rax +[ ]*[a-f0-9]+: 3e f2 41 ff d0 notrack bnd callq \*%r8 +[ ]*[a-f0-9]+: 3e f2 ff e0 notrack bnd jmpq \*%rax +[ ]*[a-f0-9]+: 3e f2 41 ff e0 notrack bnd jmpq \*%r8 +[ ]*[a-f0-9]+: 3e f2 ff 10 notrack bnd callq \*\(%rax\) +[ ]*[a-f0-9]+: 3e f2 41 ff 10 notrack bnd callq \*\(%r8\) +[ ]*[a-f0-9]+: 3e f2 ff 20 notrack bnd jmpq \*\(%rax\) +[ ]*[a-f0-9]+: 3e f2 41 ff 20 notrack bnd jmpq \*\(%r8\) +[ ]*[a-f0-9]+: 3e 67 f2 ff 10 notrack bnd callq \*\(%eax\) +[ ]*[a-f0-9]+: 3e 67 f2 41 ff 10 notrack bnd callq \*\(%r8d\) +[ ]*[a-f0-9]+: 3e 67 f2 ff 20 notrack bnd jmpq \*\(%eax\) +[ ]*[a-f0-9]+: 3e 67 f2 41 ff 20 notrack bnd jmpq \*\(%r8d\) +[ ]*[a-f0-9]+: 3e f2 ff d0 notrack bnd callq \*%rax +[ ]*[a-f0-9]+: 3e f2 41 ff d0 notrack bnd callq \*%r8 +[ ]*[a-f0-9]+: 3e f2 ff 10 notrack bnd callq \*\(%rax\) +[ ]*[a-f0-9]+: 3e f2 41 ff 10 notrack bnd callq \*\(%r8\) +[ ]*[a-f0-9]+: 3e 67 f2 ff 10 notrack bnd callq \*\(%eax\) +[ ]*[a-f0-9]+: 3e 67 f2 41 ff 10 notrack bnd callq \*\(%r8d\) [ ]*[a-f0-9]+: 3e ff d0 notrack callq \*%rax [ ]*[a-f0-9]+: 3e 41 ff d0 notrack callq \*%r8 [ ]*[a-f0-9]+: 3e ff e0 notrack jmpq \*%rax @@ -39,23 +45,29 @@ Disassembly of section .text: [ ]*[a-f0-9]+: 3e 41 ff 10 notrack callq \*\(%r8\) [ ]*[a-f0-9]+: 3e ff 20 notrack jmpq \*\(%rax\) [ ]*[a-f0-9]+: 3e 41 ff 20 notrack jmpq \*\(%r8\) -[ ]*[a-f0-9]+: 67 3e ff 10 notrack callq \*\(%eax\) -[ ]*[a-f0-9]+: 67 3e 41 ff 10 notrack callq \*\(%r8d\) -[ ]*[a-f0-9]+: 67 3e ff 20 notrack jmpq \*\(%eax\) -[ ]*[a-f0-9]+: 67 3e 41 ff 20 notrack jmpq \*\(%r8d\) +[ ]*[a-f0-9]+: 3e 67 ff 10 notrack callq \*\(%eax\) +[ ]*[a-f0-9]+: 3e 67 41 ff 10 notrack callq \*\(%r8d\) +[ ]*[a-f0-9]+: 3e 67 ff 20 notrack jmpq \*\(%eax\) +[ ]*[a-f0-9]+: 3e 67 41 ff 20 notrack jmpq \*\(%r8d\) +[ ]*[a-f0-9]+: 3e f2 ff d0 notrack bnd callq \*%rax +[ ]*[a-f0-9]+: 3e f2 41 ff d0 notrack bnd callq \*%r8 +[ ]*[a-f0-9]+: 3e f2 ff e0 notrack bnd jmpq \*%rax +[ ]*[a-f0-9]+: 3e f2 41 ff e0 notrack bnd jmpq \*%r8 +[ ]*[a-f0-9]+: 3e f2 ff 10 notrack bnd callq \*\(%rax\) +[ ]*[a-f0-9]+: 3e f2 41 ff 10 notrack bnd callq \*\(%r8\) +[ ]*[a-f0-9]+: 3e f2 ff 20 notrack bnd jmpq \*\(%rax\) +[ ]*[a-f0-9]+: 3e f2 41 ff 20 notrack bnd jmpq \*\(%r8\) +[ ]*[a-f0-9]+: 3e 67 f2 ff 10 notrack bnd callq \*\(%eax\) +[ ]*[a-f0-9]+: 3e 67 f2 41 ff 10 notrack bnd callq \*\(%r8d\) +[ ]*[a-f0-9]+: 3e 67 f2 ff 20 notrack bnd jmpq \*\(%eax\) +[ ]*[a-f0-9]+: 3e 67 f2 41 ff 20 notrack bnd jmpq \*\(%r8d\) +[ ]*[a-f0-9]+: 3e f2 ff d0 notrack bnd callq \*%rax +[ ]*[a-f0-9]+: 3e f2 41 ff d0 notrack bnd callq \*%r8 +[ ]*[a-f0-9]+: 3e f2 ff 10 notrack bnd callq \*\(%rax\) +[ ]*[a-f0-9]+: 3e f2 41 ff 10 notrack bnd callq \*\(%r8\) +[ ]*[a-f0-9]+: 3e 67 f2 ff 10 notrack bnd callq \*\(%eax\) +[ ]*[a-f0-9]+: 3e 67 f2 41 ff 10 notrack bnd callq \*\(%r8d\) [ ]*[a-f0-9]+: f2 3e ff d0 bnd notrack callq \*%rax -[ ]*[a-f0-9]+: f2 3e 41 ff d0 bnd notrack callq \*%r8 -[ ]*[a-f0-9]+: f2 3e ff e0 bnd notrack jmpq \*%rax -[ ]*[a-f0-9]+: f2 3e 41 ff e0 bnd notrack jmpq \*%r8 -[ ]*[a-f0-9]+: f2 3e ff 10 bnd notrack callq \*\(%rax\) -[ ]*[a-f0-9]+: f2 3e 41 ff 10 bnd notrack callq \*\(%r8\) -[ ]*[a-f0-9]+: f2 3e ff 20 bnd notrack jmpq \*\(%rax\) -[ ]*[a-f0-9]+: f2 3e 41 ff 20 bnd notrack jmpq \*\(%r8\) -[ ]*[a-f0-9]+: 67 f2 3e ff 10 bnd notrack callq \*\(%eax\) -[ ]*[a-f0-9]+: 67 f2 3e 41 ff 10 bnd notrack callq \*\(%r8d\) -[ ]*[a-f0-9]+: 67 f2 3e ff 20 bnd notrack jmpq \*\(%eax\) -[ ]*[a-f0-9]+: 67 f2 3e 41 ff 20 bnd notrack jmpq \*\(%r8d\) -[ ]*[a-f0-9]+: 3e f2 ff d0 ds bnd callq \*%rax [ ]*[a-f0-9]+: 3e 66 ff d0 ds callw \*%ax [ ]*[a-f0-9]+: 66 3e ff d0 ds callw \*%ax #pass diff --git a/gas/testsuite/gas/i386/x86-64-notrack.s b/gas/testsuite/gas/i386/x86-64-notrack.s index 7db0812..aeebd11 100644 --- a/gas/testsuite/gas/i386/x86-64-notrack.s +++ b/gas/testsuite/gas/i386/x86-64-notrack.s @@ -18,20 +18,27 @@ _start: notrack jmp *(%eax) notrack jmp *(%r8d) + notrack bnd call *%rax + notrack bnd call *%r8 + notrack bnd jmp *%rax + notrack bnd jmp *%r8 + + notrack bnd call *(%rax) + notrack bnd call *(%r8) + notrack bnd jmp *(%rax) + notrack bnd jmp *(%r8) + + notrack bnd call *(%eax) + notrack bnd call *(%r8d) + notrack bnd jmp *(%eax) + notrack bnd jmp *(%r8d) + bnd notrack call *%rax bnd notrack call *%r8 - bnd notrack jmp *%rax - bnd notrack jmp *%r8 - bnd notrack call *(%rax) bnd notrack call *(%r8) - bnd notrack jmp *(%rax) - bnd notrack jmp *(%r8) - bnd notrack call *(%eax) bnd notrack call *(%r8d) - bnd notrack jmp *(%eax) - bnd notrack jmp *(%r8d) .intel_syntax noprefix notrack call rax @@ -49,24 +56,31 @@ _start: notrack jmp QWORD PTR [eax] notrack jmp QWORD PTR [r8d] + notrack bnd call rax + notrack bnd call r8 + notrack bnd jmp rax + notrack bnd jmp r8 + + notrack bnd call QWORD PTR [rax] + notrack bnd call QWORD PTR [r8] + notrack bnd jmp QWORD PTR [rax] + notrack bnd jmp QWORD PTR [r8] + + notrack bnd call QWORD PTR [eax] + notrack bnd call QWORD PTR [r8d] + notrack bnd jmp QWORD PTR [eax] + notrack bnd jmp QWORD PTR [r8d] + bnd notrack call rax bnd notrack call r8 - bnd notrack jmp rax - bnd notrack jmp r8 - bnd notrack call QWORD PTR [rax] bnd notrack call QWORD PTR [r8] - bnd notrack jmp QWORD PTR [rax] - bnd notrack jmp QWORD PTR [r8] - bnd notrack call QWORD PTR [eax] bnd notrack call QWORD PTR [r8d] - bnd notrack jmp QWORD PTR [eax] - bnd notrack jmp QWORD PTR [r8d] - # ds bnd callq *%rax - .byte 0x3e + # bnd notrack callq *%rax .byte 0xf2 + .byte 0x3e .byte 0xff .byte 0xd0 diff --git a/gas/testsuite/gas/i386/x86-64-notrackbad.l b/gas/testsuite/gas/i386/x86-64-notrackbad.l index cd51682..95a0f91 100644 --- a/gas/testsuite/gas/i386/x86-64-notrackbad.l +++ b/gas/testsuite/gas/i386/x86-64-notrackbad.l @@ -2,15 +2,10 @@ .*:6: Error: expecting indirect branch instruction after `notrack' .*:6: Warning: skipping prefixes on this instruction .*:7: Error: expecting indirect branch instruction after `notrack' -.*:7: Warning: skipping prefixes on this instruction .*:9: Error: same type of prefix used twice -.*:10: Error: expecting no other prefixes after `notrack' -.*:11: Error: expecting no other prefixes after `notrack' -.*:12: Error: expecting no other prefixes after `notrack' -.*:15: Error: same type of prefix used twice -.*:16: Error: expecting no other prefixes after `notrack' -.*:17: Error: expecting no other prefixes after `notrack' -.*:18: Error: expecting no other prefixes after `notrack' +.*:10: Error: same type of prefix used twice +.*:13: Error: same type of prefix used twice +.*:14: Error: same type of prefix used twice GAS LISTING .* @@ -25,17 +20,12 @@ GAS LISTING .* [ ]*6[ ]+[0-9A-F]* [ ]*7[ ]+\?\?\?\? [0-9A-F]* notrack jmp foo \*\*\*\* Error: expecting indirect branch instruction after `notrack' -\*\*\*\* Warning: skipping prefixes on this instruction [ ]*7[ ]+[0-9A-F]* [ ]*8[ ]+ [ ]*9[ ]+fs notrack call \*%rax [ ]*10[ ]+notrack fs call \*%rax -[ ]*11[ ]+notrack bnd call \*%rax -[ ]*12[ ]+notrack data16 call \*%rax -[ ]*13[ ]+ -[ ]*14[ ]+\.intel_syntax noprefix -[ ]*15[ ]+fs notrack call rax -[ ]*16[ ]+notrack fs call rax -[ ]*17[ ]+notrack bnd call rax -[ ]*18[ ]+[\? 0-9A-F]*[ ]+notrack data16 call rax +[ ]*11[ ]+ +[ ]*12[ ]+\.intel_syntax noprefix +[ ]*13[ ]+fs notrack call rax +[ ]*14[ ]+notrack fs call rax #pass diff --git a/gas/testsuite/gas/i386/x86-64-notrackbad.s b/gas/testsuite/gas/i386/x86-64-notrackbad.s index f859a9f..4f49328 100644 --- a/gas/testsuite/gas/i386/x86-64-notrackbad.s +++ b/gas/testsuite/gas/i386/x86-64-notrackbad.s @@ -8,11 +8,9 @@ _start: fs notrack call *%rax notrack fs call *%rax - notrack bnd call *%rax - notrack data16 call *%rax .intel_syntax noprefix fs notrack call rax notrack fs call rax - notrack bnd call rax - notrack data16 call rax + + .p2align 4,0 |