diff options
author | Jan Beulich <jbeulich@novell.com> | 2012-08-07 16:51:31 +0000 |
---|---|---|
committer | Jan Beulich <jbeulich@novell.com> | 2012-08-07 16:51:31 +0000 |
commit | 6409d6399bc63e29684418dc1eba6b6cb16295f2 (patch) | |
tree | 8db956727b66c29030892c396b64df1f6580a481 /gas/testsuite/gas/i386 | |
parent | 9eae5acd8cbf611e3f2fe496d241d224fd462ecd (diff) | |
download | binutils-redhat-6409d6399bc63e29684418dc1eba6b6cb16295f2.tar.gz |
There were several cases where the registers in the REX encoded range
got treated identically to the ones in the base range, due to not
paying attention to the fact that reg_entry's reg_num field doesn't
fully specify the register number (reg_flags also needs to be checked
for RegRex). This patch introduces and uses a new (inline) function to
obtain the full register number, and uses it to fix all those cases.
It additionally adds the missing operand checks for SVME instructions
(which match the monitor/mwait ones).
gas/
2012-08-07 Jan Beulich <jbeulich@suse.com>
* config/tc-i386.c (register_number): New function.
(build_vex_prefix, process_immext, process_operands,
build_modrm_byte, i386_index_check): Use it.
gas/testsuite/
2012-08-07 Jan Beulich <jbeulich@suse.com>
* gas/i386/x86-64-specific-reg.{s,l}: New.
* gas/i386/i386.exp: Run new test.
opcodes/
2012-08-07 Jan Beulich <jbeulich@suse.com>
* i386-opc.tbl: Remove "FIXME" comments from SVME instructions.
Diffstat (limited to 'gas/testsuite/gas/i386')
-rw-r--r-- | gas/testsuite/gas/i386/i386.exp | 1 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-specific-reg.l | 376 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-specific-reg.s | 90 |
3 files changed, 467 insertions, 0 deletions
diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp index 8ad4ceb569..85e6c4b648 100644 --- a/gas/testsuite/gas/i386/i386.exp +++ b/gas/testsuite/gas/i386/i386.exp @@ -374,6 +374,7 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_64_check]] t run_dump_test "x86-64-disp-intel" run_dump_test "x86-64-disp32" run_dump_test "rexw" + run_list_test "x86-64-specific-reg" run_dump_test "x86-64-fxsave" run_dump_test "x86-64-fxsave-intel" run_dump_test "x86-64-arch-1" diff --git a/gas/testsuite/gas/i386/x86-64-specific-reg.l b/gas/testsuite/gas/i386/x86-64-specific-reg.l new file mode 100644 index 0000000000..ccfbd0e914 --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-specific-reg.l @@ -0,0 +1,376 @@ +.*: Assembler messages: +.*:[0-9]*: Warning: .*rax.*rsi.* +.*:[0-9]*: Warning: .*rax.*rdi.* +.*:[0-9]*: Warning: .*rax.*rdi.* +.*:[0-9]*: Warning: .*rax.*rdi.* +.*:[0-9]*: Warning: .*rax.*rsi.* +.*:[0-9]*: Warning: .*rax.*rbx.* +.*:[0-9]*: Warning: .*rax.*rsi.* +.*:[0-9]*: Warning: .*rax.*rdi.* +.*:[0-9]*: Warning: .*rax.*rdi.* +.*:[0-9]*: Warning: .*rax.*rsi.* +.*:[0-9]*: Error: .*rax.* 2 .*mwait.* +.*:[0-9]*: Error: .*rax.* 2 .*monitor.* +.*:[0-9]*: Error: .*rax.* 3 .*monitor.* +.*:[0-9]*: Error: .*eax.* 2 .*invlpga.* +.*:[0-9]*: Warning: .*rcx.*rsi.* +.*:[0-9]*: Warning: .*rcx.*rdi.* +.*:[0-9]*: Warning: .*rcx.*rdi.* +.*:[0-9]*: Warning: .*rcx.*rdi.* +.*:[0-9]*: Warning: .*rcx.*rsi.* +.*:[0-9]*: Warning: .*rcx.*rbx.* +.*:[0-9]*: Warning: .*rcx.*rsi.* +.*:[0-9]*: Warning: .*rcx.*rdi.* +.*:[0-9]*: Warning: .*rcx.*rdi.* +.*:[0-9]*: Warning: .*rcx.*rsi.* +.*:[0-9]*: Error: .*rcx.* 1 .*mwait.* +.*:[0-9]*: Error: .*rcx.* 1 .*monitor.* +.*:[0-9]*: Error: .*rcx.* 3 .*monitor.* +.*:[0-9]*: Error: .*rcx.* 1 .*vmload.* +.*:[0-9]*: Error: .*rcx.* 1 .*vmrun.* +.*:[0-9]*: Error: .*rcx.* 1 .*vmsave.* +.*:[0-9]*: Error: .*rcx.* 1 .*invlpga.* +.*:[0-9]*: Error: .*ecx.* 1 .*skinit.* +.*:[0-9]*: Warning: .*rdx.*rsi.* +.*:[0-9]*: Warning: .*rdx.*rdi.* +.*:[0-9]*: Warning: .*rdx.*rdi.* +.*:[0-9]*: Warning: .*rdx.*rdi.* +.*:[0-9]*: Warning: .*rdx.*rsi.* +.*:[0-9]*: Warning: .*rdx.*rbx.* +.*:[0-9]*: Warning: .*rdx.*rsi.* +.*:[0-9]*: Warning: .*rdx.*rdi.* +.*:[0-9]*: Warning: .*rdx.*rdi.* +.*:[0-9]*: Warning: .*rdx.*rsi.* +.*:[0-9]*: Error: .*rdx.* 1 .*mwait.* +.*:[0-9]*: Error: .*rdx.* 2 .*mwait.* +.*:[0-9]*: Error: .*rdx.* 1 .*monitor.* +.*:[0-9]*: Error: .*rdx.* 2 .*monitor.* +.*:[0-9]*: Error: .*rdx.* 1 .*vmload.* +.*:[0-9]*: Error: .*rdx.* 1 .*vmrun.* +.*:[0-9]*: Error: .*rdx.* 1 .*vmsave.* +.*:[0-9]*: Error: .*rdx.* 1 .*invlpga.* +.*:[0-9]*: Error: .*edx.* 2 .*invlpga.* +.*:[0-9]*: Error: .*edx.* 1 .*skinit.* +.*:[0-9]*: Warning: .*rbx.*rsi.* +.*:[0-9]*: Warning: .*rbx.*rdi.* +.*:[0-9]*: Warning: .*rbx.*rdi.* +.*:[0-9]*: Warning: .*rbx.*rdi.* +.*:[0-9]*: Warning: .*rbx.*rsi.* +.*:[0-9]*: Warning: .*rbx.*rsi.* +.*:[0-9]*: Warning: .*rbx.*rdi.* +.*:[0-9]*: Warning: .*rbx.*rdi.* +.*:[0-9]*: Warning: .*rbx.*rsi.* +.*:[0-9]*: Error: .*rbx.* 1 .*mwait.* +.*:[0-9]*: Error: .*rbx.* 2 .*mwait.* +.*:[0-9]*: Error: .*rbx.* 1 .*monitor.* +.*:[0-9]*: Error: .*rbx.* 2 .*monitor.* +.*:[0-9]*: Error: .*rbx.* 3 .*monitor.* +.*:[0-9]*: Error: .*rbx.* 1 .*vmload.* +.*:[0-9]*: Error: .*rbx.* 1 .*vmrun.* +.*:[0-9]*: Error: .*rbx.* 1 .*vmsave.* +.*:[0-9]*: Error: .*rbx.* 1 .*invlpga.* +.*:[0-9]*: Error: .*ebx.* 2 .*invlpga.* +.*:[0-9]*: Error: .*ebx.* 1 .*skinit.* +.*:[0-9]*: Warning: .*rsp.*rsi.* +.*:[0-9]*: Warning: .*rsp.*rdi.* +.*:[0-9]*: Warning: .*rsp.*rdi.* +.*:[0-9]*: Warning: .*rsp.*rdi.* +.*:[0-9]*: Warning: .*rsp.*rsi.* +.*:[0-9]*: Warning: .*rsp.*rbx.* +.*:[0-9]*: Warning: .*rsp.*rsi.* +.*:[0-9]*: Warning: .*rsp.*rdi.* +.*:[0-9]*: Warning: .*rsp.*rdi.* +.*:[0-9]*: Warning: .*rsp.*rsi.* +.*:[0-9]*: Error: .*rsp.* 1 .*mwait.* +.*:[0-9]*: Error: .*rsp.* 2 .*mwait.* +.*:[0-9]*: Error: .*rsp.* 1 .*monitor.* +.*:[0-9]*: Error: .*rsp.* 2 .*monitor.* +.*:[0-9]*: Error: .*rsp.* 3 .*monitor.* +.*:[0-9]*: Error: .*rsp.* 1 .*vmload.* +.*:[0-9]*: Error: .*rsp.* 1 .*vmrun.* +.*:[0-9]*: Error: .*rsp.* 1 .*vmsave.* +.*:[0-9]*: Error: .*rsp.* 1 .*invlpga.* +.*:[0-9]*: Error: .*esp.* 2 .*invlpga.* +.*:[0-9]*: Error: .*esp.* 1 .*skinit.* +.*:[0-9]*: Warning: .*rbp.*rsi.* +.*:[0-9]*: Warning: .*rbp.*rdi.* +.*:[0-9]*: Warning: .*rbp.*rdi.* +.*:[0-9]*: Warning: .*rbp.*rdi.* +.*:[0-9]*: Warning: .*rbp.*rsi.* +.*:[0-9]*: Warning: .*rbp.*rbx.* +.*:[0-9]*: Warning: .*rbp.*rsi.* +.*:[0-9]*: Warning: .*rbp.*rdi.* +.*:[0-9]*: Warning: .*rbp.*rdi.* +.*:[0-9]*: Warning: .*rbp.*rsi.* +.*:[0-9]*: Error: .*rbp.* 1 .*mwait.* +.*:[0-9]*: Error: .*rbp.* 2 .*mwait.* +.*:[0-9]*: Error: .*rbp.* 1 .*monitor.* +.*:[0-9]*: Error: .*rbp.* 2 .*monitor.* +.*:[0-9]*: Error: .*rbp.* 3 .*monitor.* +.*:[0-9]*: Error: .*rbp.* 1 .*vmload.* +.*:[0-9]*: Error: .*rbp.* 1 .*vmrun.* +.*:[0-9]*: Error: .*rbp.* 1 .*vmsave.* +.*:[0-9]*: Error: .*rbp.* 1 .*invlpga.* +.*:[0-9]*: Error: .*ebp.* 2 .*invlpga.* +.*:[0-9]*: Error: .*ebp.* 1 .*skinit.* +.*:[0-9]*: Warning: .*rsi.*rdi.* +.*:[0-9]*: Warning: .*rsi.*rdi.* +.*:[0-9]*: Warning: .*rsi.*rdi.* +.*:[0-9]*: Warning: .*rsi.*rbx.* +.*:[0-9]*: Warning: .*rsi.*rdi.* +.*:[0-9]*: Warning: .*rsi.*rdi.* +.*:[0-9]*: Error: .*rsi.* 1 .*mwait.* +.*:[0-9]*: Error: .*rsi.* 2 .*mwait.* +.*:[0-9]*: Error: .*rsi.* 1 .*monitor.* +.*:[0-9]*: Error: .*rsi.* 2 .*monitor.* +.*:[0-9]*: Error: .*rsi.* 3 .*monitor.* +.*:[0-9]*: Error: .*rsi.* 1 .*vmload.* +.*:[0-9]*: Error: .*rsi.* 1 .*vmrun.* +.*:[0-9]*: Error: .*rsi.* 1 .*vmsave.* +.*:[0-9]*: Error: .*rsi.* 1 .*invlpga.* +.*:[0-9]*: Error: .*esi.* 2 .*invlpga.* +.*:[0-9]*: Error: .*esi.* 1 .*skinit.* +.*:[0-9]*: Warning: .*rdi.*rsi.* +.*:[0-9]*: Warning: .*rdi.*rsi.* +.*:[0-9]*: Warning: .*rdi.*rbx.* +.*:[0-9]*: Warning: .*rdi.*rsi.* +.*:[0-9]*: Warning: .*rdi.*rsi.* +.*:[0-9]*: Error: .*rdi.* 1 .*mwait.* +.*:[0-9]*: Error: .*rdi.* 2 .*mwait.* +.*:[0-9]*: Error: .*rdi.* 1 .*monitor.* +.*:[0-9]*: Error: .*rdi.* 2 .*monitor.* +.*:[0-9]*: Error: .*rdi.* 3 .*monitor.* +.*:[0-9]*: Error: .*rdi.* 1 .*vmload.* +.*:[0-9]*: Error: .*rdi.* 1 .*vmrun.* +.*:[0-9]*: Error: .*rdi.* 1 .*vmsave.* +.*:[0-9]*: Error: .*rdi.* 1 .*invlpga.* +.*:[0-9]*: Error: .*edi.* 2 .*invlpga.* +.*:[0-9]*: Error: .*edi.* 1 .*skinit.* +.*:[0-9]*: Warning: .*r8.*rsi.* +.*:[0-9]*: Warning: .*r8.*rdi.* +.*:[0-9]*: Warning: .*r8.*rdi.* +.*:[0-9]*: Warning: .*r8.*rdi.* +.*:[0-9]*: Warning: .*r8.*rsi.* +.*:[0-9]*: Warning: .*r8.*rbx.* +.*:[0-9]*: Warning: .*r8.*rsi.* +.*:[0-9]*: Warning: .*r8.*rdi.* +.*:[0-9]*: Warning: .*r8.*rdi.* +.*:[0-9]*: Warning: .*r8.*rsi.* +.*:[0-9]*: Error: .*r8.* 1 .*mwait.* +.*:[0-9]*: Error: .*r8.* 2 .*mwait.* +.*:[0-9]*: Error: .*r8.* 1 .*monitor.* +.*:[0-9]*: Error: .*r8.* 2 .*monitor.* +.*:[0-9]*: Error: .*r8.* 3 .*monitor.* +.*:[0-9]*: Error: .*r8.* 1 .*vmload.* +.*:[0-9]*: Error: .*r8.* 1 .*vmrun.* +.*:[0-9]*: Error: .*r8.* 1 .*vmsave.* +.*:[0-9]*: Error: .*r8.* 1 .*invlpga.* +.*:[0-9]*: Error: .*r8.* 2 .*invlpga.* +.*:[0-9]*: Error: .*r8.* 1 .*skinit.* +.*:[0-9]*: Warning: .*r9.*rsi.* +.*:[0-9]*: Warning: .*r9.*rdi.* +.*:[0-9]*: Warning: .*r9.*rdi.* +.*:[0-9]*: Warning: .*r9.*rdi.* +.*:[0-9]*: Warning: .*r9.*rsi.* +.*:[0-9]*: Warning: .*r9.*rbx.* +.*:[0-9]*: Warning: .*r9.*rsi.* +.*:[0-9]*: Warning: .*r9.*rdi.* +.*:[0-9]*: Warning: .*r9.*rdi.* +.*:[0-9]*: Warning: .*r9.*rsi.* +.*:[0-9]*: Error: .*r9.* 1 .*mwait.* +.*:[0-9]*: Error: .*r9.* 2 .*mwait.* +.*:[0-9]*: Error: .*r9.* 1 .*monitor.* +.*:[0-9]*: Error: .*r9.* 2 .*monitor.* +.*:[0-9]*: Error: .*r9.* 3 .*monitor.* +.*:[0-9]*: Error: .*r9.* 1 .*vmload.* +.*:[0-9]*: Error: .*r9.* 1 .*vmrun.* +.*:[0-9]*: Error: .*r9.* 1 .*vmsave.* +.*:[0-9]*: Error: .*r9.* 1 .*invlpga.* +.*:[0-9]*: Error: .*r9.* 2 .*invlpga.* +.*:[0-9]*: Error: .*r9.* 1 .*skinit.* +.*:[0-9]*: Warning: .*r10.*rsi.* +.*:[0-9]*: Warning: .*r10.*rdi.* +.*:[0-9]*: Warning: .*r10.*rdi.* +.*:[0-9]*: Warning: .*r10.*rdi.* +.*:[0-9]*: Warning: .*r10.*rsi.* +.*:[0-9]*: Warning: .*r10.*rbx.* +.*:[0-9]*: Warning: .*r10.*rsi.* +.*:[0-9]*: Warning: .*r10.*rdi.* +.*:[0-9]*: Warning: .*r10.*rdi.* +.*:[0-9]*: Warning: .*r10.*rsi.* +.*:[0-9]*: Error: .*r10.* 1 .*mwait.* +.*:[0-9]*: Error: .*r10.* 2 .*mwait.* +.*:[0-9]*: Error: .*r10.* 1 .*monitor.* +.*:[0-9]*: Error: .*r10.* 2 .*monitor.* +.*:[0-9]*: Error: .*r10.* 3 .*monitor.* +.*:[0-9]*: Error: .*r10.* 1 .*vmload.* +.*:[0-9]*: Error: .*r10.* 1 .*vmrun.* +.*:[0-9]*: Error: .*r10.* 1 .*vmsave.* +.*:[0-9]*: Error: .*r10.* 1 .*invlpga.* +.*:[0-9]*: Error: .*r10.* 2 .*invlpga.* +.*:[0-9]*: Error: .*r10.* 1 .*skinit.* +.*:[0-9]*: Warning: .*r11.*rsi.* +.*:[0-9]*: Warning: .*r11.*rdi.* +.*:[0-9]*: Warning: .*r11.*rdi.* +.*:[0-9]*: Warning: .*r11.*rdi.* +.*:[0-9]*: Warning: .*r11.*rsi.* +.*:[0-9]*: Warning: .*r11.*rbx.* +.*:[0-9]*: Warning: .*r11.*rsi.* +.*:[0-9]*: Warning: .*r11.*rdi.* +.*:[0-9]*: Warning: .*r11.*rdi.* +.*:[0-9]*: Warning: .*r11.*rsi.* +.*:[0-9]*: Error: .*r11.* 1 .*mwait.* +.*:[0-9]*: Error: .*r11.* 2 .*mwait.* +.*:[0-9]*: Error: .*r11.* 1 .*monitor.* +.*:[0-9]*: Error: .*r11.* 2 .*monitor.* +.*:[0-9]*: Error: .*r11.* 3 .*monitor.* +.*:[0-9]*: Error: .*r11.* 1 .*vmload.* +.*:[0-9]*: Error: .*r11.* 1 .*vmrun.* +.*:[0-9]*: Error: .*r11.* 1 .*vmsave.* +.*:[0-9]*: Error: .*r11.* 1 .*invlpga.* +.*:[0-9]*: Error: .*r11.* 2 .*invlpga.* +.*:[0-9]*: Error: .*r11.* 1 .*skinit.* +.*:[0-9]*: Warning: .*r12.*rsi.* +.*:[0-9]*: Warning: .*r12.*rdi.* +.*:[0-9]*: Warning: .*r12.*rdi.* +.*:[0-9]*: Warning: .*r12.*rdi.* +.*:[0-9]*: Warning: .*r12.*rsi.* +.*:[0-9]*: Warning: .*r12.*rbx.* +.*:[0-9]*: Warning: .*r12.*rsi.* +.*:[0-9]*: Warning: .*r12.*rdi.* +.*:[0-9]*: Warning: .*r12.*rdi.* +.*:[0-9]*: Warning: .*r12.*rsi.* +.*:[0-9]*: Error: .*r12.* 1 .*mwait.* +.*:[0-9]*: Error: .*r12.* 2 .*mwait.* +.*:[0-9]*: Error: .*r12.* 1 .*monitor.* +.*:[0-9]*: Error: .*r12.* 2 .*monitor.* +.*:[0-9]*: Error: .*r12.* 3 .*monitor.* +.*:[0-9]*: Error: .*r12.* 1 .*vmload.* +.*:[0-9]*: Error: .*r12.* 1 .*vmrun.* +.*:[0-9]*: Error: .*r12.* 1 .*vmsave.* +.*:[0-9]*: Error: .*r12.* 1 .*invlpga.* +.*:[0-9]*: Error: .*r12.* 2 .*invlpga.* +.*:[0-9]*: Error: .*r12.* 1 .*skinit.* +.*:[0-9]*: Warning: .*r13.*rsi.* +.*:[0-9]*: Warning: .*r13.*rdi.* +.*:[0-9]*: Warning: .*r13.*rdi.* +.*:[0-9]*: Warning: .*r13.*rdi.* +.*:[0-9]*: Warning: .*r13.*rsi.* +.*:[0-9]*: Warning: .*r13.*rbx.* +.*:[0-9]*: Warning: .*r13.*rsi.* +.*:[0-9]*: Warning: .*r13.*rdi.* +.*:[0-9]*: Warning: .*r13.*rdi.* +.*:[0-9]*: Warning: .*r13.*rsi.* +.*:[0-9]*: Error: .*r13.* 1 .*mwait.* +.*:[0-9]*: Error: .*r13.* 2 .*mwait.* +.*:[0-9]*: Error: .*r13.* 1 .*monitor.* +.*:[0-9]*: Error: .*r13.* 2 .*monitor.* +.*:[0-9]*: Error: .*r13.* 3 .*monitor.* +.*:[0-9]*: Error: .*r13.* 1 .*vmload.* +.*:[0-9]*: Error: .*r13.* 1 .*vmrun.* +.*:[0-9]*: Error: .*r13.* 1 .*vmsave.* +.*:[0-9]*: Error: .*r13.* 1 .*invlpga.* +.*:[0-9]*: Error: .*r13.* 2 .*invlpga.* +.*:[0-9]*: Error: .*r13.* 1 .*skinit.* +.*:[0-9]*: Warning: .*r14.*rsi.* +.*:[0-9]*: Warning: .*r14.*rdi.* +.*:[0-9]*: Warning: .*r14.*rdi.* +.*:[0-9]*: Warning: .*r14.*rdi.* +.*:[0-9]*: Warning: .*r14.*rsi.* +.*:[0-9]*: Warning: .*r14.*rbx.* +.*:[0-9]*: Warning: .*r14.*rsi.* +.*:[0-9]*: Warning: .*r14.*rdi.* +.*:[0-9]*: Warning: .*r14.*rdi.* +.*:[0-9]*: Warning: .*r14.*rsi.* +.*:[0-9]*: Error: .*r14.* 1 .*mwait.* +.*:[0-9]*: Error: .*r14.* 2 .*mwait.* +.*:[0-9]*: Error: .*r14.* 1 .*monitor.* +.*:[0-9]*: Error: .*r14.* 2 .*monitor.* +.*:[0-9]*: Error: .*r14.* 3 .*monitor.* +.*:[0-9]*: Error: .*r14.* 1 .*vmload.* +.*:[0-9]*: Error: .*r14.* 1 .*vmrun.* +.*:[0-9]*: Error: .*r14.* 1 .*vmsave.* +.*:[0-9]*: Error: .*r14.* 1 .*invlpga.* +.*:[0-9]*: Error: .*r14.* 2 .*invlpga.* +.*:[0-9]*: Error: .*r14.* 1 .*skinit.* +.*:[0-9]*: Warning: .*r15.*rsi.* +.*:[0-9]*: Warning: .*r15.*rdi.* +.*:[0-9]*: Warning: .*r15.*rdi.* +.*:[0-9]*: Warning: .*r15.*rdi.* +.*:[0-9]*: Warning: .*r15.*rsi.* +.*:[0-9]*: Warning: .*r15.*rbx.* +.*:[0-9]*: Warning: .*r15.*rsi.* +.*:[0-9]*: Warning: .*r15.*rdi.* +.*:[0-9]*: Warning: .*r15.*rdi.* +.*:[0-9]*: Warning: .*r15.*rsi.* +.*:[0-9]*: Error: .*r15.* 1 .*mwait.* +.*:[0-9]*: Error: .*r15.* 2 .*mwait.* +.*:[0-9]*: Error: .*r15.* 1 .*monitor.* +.*:[0-9]*: Error: .*r15.* 2 .*monitor.* +.*:[0-9]*: Error: .*r15.* 3 .*monitor.* +.*:[0-9]*: Error: .*r15.* 1 .*vmload.* +.*:[0-9]*: Error: .*r15.* 1 .*vmrun.* +.*:[0-9]*: Error: .*r15.* 1 .*vmsave.* +.*:[0-9]*: Error: .*r15.* 1 .*invlpga.* +.*:[0-9]*: Error: .*r15.* 2 .*invlpga.* +.*:[0-9]*: Error: .*r15.* 1 .*skinit.* +# xmm1 +.*:[0-9]*: Error: .*blendvpd.*xmm0.* +.*:[0-9]*: Error: .*blendvps.*xmm0.* +.*:[0-9]*: Error: .*pblendv.*xmm0.* +# xmm2 +.*:[0-9]*: Error: .*blendvpd.*xmm0.* +.*:[0-9]*: Error: .*blendvps.*xmm0.* +.*:[0-9]*: Error: .*pblendv.*xmm0.* +# xmm3 +.*:[0-9]*: Error: .*blendvpd.*xmm0.* +.*:[0-9]*: Error: .*blendvps.*xmm0.* +.*:[0-9]*: Error: .*pblendv.*xmm0.* +# xmm4 +.*:[0-9]*: Error: .*blendvpd.*xmm0.* +.*:[0-9]*: Error: .*blendvps.*xmm0.* +.*:[0-9]*: Error: .*pblendv.*xmm0.* +# xmm5 +.*:[0-9]*: Error: .*blendvpd.*xmm0.* +.*:[0-9]*: Error: .*blendvps.*xmm0.* +.*:[0-9]*: Error: .*pblendv.*xmm0.* +# xmm6 +.*:[0-9]*: Error: .*blendvpd.*xmm0.* +.*:[0-9]*: Error: .*blendvps.*xmm0.* +.*:[0-9]*: Error: .*pblendv.*xmm0.* +# xmm7 +.*:[0-9]*: Error: .*blendvpd.*xmm0.* +.*:[0-9]*: Error: .*blendvps.*xmm0.* +.*:[0-9]*: Error: .*pblendv.*xmm0.* +# xmm8 +.*:[0-9]*: Error: .*blendvpd.*xmm0.* +.*:[0-9]*: Error: .*blendvps.*xmm0.* +.*:[0-9]*: Error: .*pblendv.*xmm0.* +# xmm9 +.*:[0-9]*: Error: .*blendvpd.*xmm0.* +.*:[0-9]*: Error: .*blendvps.*xmm0.* +.*:[0-9]*: Error: .*pblendv.*xmm0.* +# xmm10 +.*:[0-9]*: Error: .*blendvpd.*xmm0.* +.*:[0-9]*: Error: .*blendvps.*xmm0.* +.*:[0-9]*: Error: .*pblendv.*xmm0.* +# xmm11 +.*:[0-9]*: Error: .*blendvpd.*xmm0.* +.*:[0-9]*: Error: .*blendvps.*xmm0.* +.*:[0-9]*: Error: .*pblendv.*xmm0.* +# xmm12 +.*:[0-9]*: Error: .*blendvpd.*xmm0.* +.*:[0-9]*: Error: .*blendvps.*xmm0.* +.*:[0-9]*: Error: .*pblendv.*xmm0.* +# xmm13 +.*:[0-9]*: Error: .*blendvpd.*xmm0.* +.*:[0-9]*: Error: .*blendvps.*xmm0.* +.*:[0-9]*: Error: .*pblendv.*xmm0.* +# xmm14 +.*:[0-9]*: Error: .*blendvpd.*xmm0.* +.*:[0-9]*: Error: .*blendvps.*xmm0.* +.*:[0-9]*: Error: .*pblendv.*xmm0.* +# xmm15 +.*:[0-9]*: Error: .*blendvpd.*xmm0.* +.*:[0-9]*: Error: .*blendvps.*xmm0.* +.*:[0-9]*: Error: .*pblendv.*xmm0.* diff --git a/gas/testsuite/gas/i386/x86-64-specific-reg.s b/gas/testsuite/gas/i386/x86-64-specific-reg.s new file mode 100644 index 0000000000..e6b780bb3b --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-specific-reg.s @@ -0,0 +1,90 @@ +# 64bit insns with special register requirements + + .text +special: +.irp reg1, ax, cx, dx, bx, sp, bp, si, di + lodsb %ds:(%r\reg1) + + stosb %es:(%r\reg1) + + scasb %es:(%r\reg1) + + insb %dx, %es:(%r\reg1) + + outsb %ds:(%r\reg1), %dx + + xlatb %ds:(%r\reg1) + + movsb %ds:(%r\reg1), %es:(%rdi) + movsb %ds:(%rsi), %es:(%r\reg1) + + cmpsb %es:(%r\reg1), %ds:(%rsi) + cmpsb %es:(%rdi), %ds:(%r\reg1) + + mwait %r\reg1, %rcx + mwait %rax, %r\reg1 + + monitor %r\reg1, %rcx, %rdx + monitor %rax, %r\reg1, %rdx + monitor %rax, %rcx, %r\reg1 + +# FIXME: Need to ensure only "vmload %[re]ax" is accepted. + vmload %r\reg1 + +# FIXME: Need to ensure only "vmrun %[re]ax" is accepted. + vmrun %r\reg1 + +# FIXME: Need to ensure only "vmsave %[re]ax" is accepted. + vmsave %r\reg1 + +# FIXME: Need to ensure only "invlpga %[re]ax,%ecx" is accepted. + invlpga %r\reg1, %ecx + invlpga %rax, %e\reg1 + +# FIXME: Need to ensure only "skinit %eax" is accepted. + skinit %e\reg1 +.endr + +.irp reg1, 8, 9, 10, 11, 12, 13, 14, 15 + lodsb %ds:(%r\reg1) + + stosb %es:(%r\reg1) + + scasb %es:(%r\reg1) + + insb %dx, %es:(%r\reg1) + + outsb %ds:(%r\reg1), %dx + + xlatb %ds:(%r\reg1) + + movsb %ds:(%r\reg1), %es:(%rdi) + movsb %ds:(%rsi), %es:(%r\reg1) + + cmpsb %es:(%r\reg1), %ds:(%rsi) + cmpsb %es:(%rdi), %ds:(%r\reg1) + + mwait %r\reg1, %rcx + mwait %rax, %r\reg1 + + monitor %r\reg1, %rcx, %rdx + monitor %rax, %r\reg1, %rdx + monitor %rax, %rcx, %r\reg1 + + vmload %r\reg1 + + vmrun %r\reg1 + + vmsave %r\reg1 + + invlpga %r\reg1, %ecx + invlpga %rax, %r\reg1\(d) + + skinit %r\reg1\(d) +.endr + +.irp n, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + blendvpd %xmm\n, %xmm\n, %xmm\n + blendvps %xmm\n, %xmm\n, %xmm\n + pblendvb %xmm\n, %xmm\n, %xmm\n +.endr |