Browse Source
2008-12-23 H.J. Lu <hongjiu.lu@intel.com> * config/tc-i386.c (match_template): Changed to return const template *. Handle i.swap_operand for 3 operands. (build_vex_prefix): Take const template *. Swap operand for 2-byte VEX prefix if possible. (md_assemble): Updated. (build_modrm_byte): Handle RegMem bit for SSE2AVX. gas/testsuite/ 2008-12-23 H.J. Lu <hongjiu.lu@intel.com> * gas/i386/i386.exp: Run x86-64-avx-swap and x86-64-avx-swap-intel. * gas/i386/opts.s: Add tests for movsd, movss, vmovsd and vmovss. * gas/i386/x86-64-opts.s: Likewise. * gas/i386/opts.d: Updated. * gas/i386/opts-intel.d: Likewise. * gas/i386/sse2avx-opts.d: Likewise. * gas/i386/sse2avx-opts-intel.d: Likewise. * gas/i386/x86-64-opts.d: Likewise. * gas/i386/x86-64-opts-intel.d: Likewise. * gas/i386/x86-64-sse2avx-opts.d: Likewise. * gas/i386/x86-64-sse2avx-opts-intel.d: Likewise. * gas/i386/x86-64-avx-swap.d: New. * gas/i386/x86-64-avx-swap.s: Likewise. * gas/i386/x86-64-avx-swap-intel.d: Likewise. opcodes/ 2008-12-23 H.J. Lu <hongjiu.lu@intel.com> * i386-dis.c (EXdS): New. (EXdVexS): Likewise. (EXqVexS): Likewise. (d_swap_mode): Likewise. (q_mode): Updated. (prefix_table): Use EXdS on movss and EXqS on movsd. (vex_len_table): Use EXdVexS on vmovss and EXqVexS on vmovsd. (intel_operand_size): Handle d_swap_mode. (OP_EX): Likewise. * i386-opc.h (S): Update comments. * i386-opc.tbl: Add S to movss, movsd, vmovss and vmovsd. * i386-tbl.h: Regenerated.cgen-1_1-branch
22 changed files with 616 additions and 111 deletions
@ -0,0 +1,60 @@ |
|||
#as: -msse2avx |
|||
#objdump: -drwMintel |
|||
#name: x86-64 AVX swap (Intel mode) |
|||
#source: x86-64-avx-swap.s |
|||
|
|||
.*: +file format .* |
|||
|
|||
|
|||
Disassembly of section .text: |
|||
|
|||
0+ <_start>: |
|||
[ ]*[a-f0-9]+: c5 7d 29 c6 vmovapd ymm6,ymm8 |
|||
[ ]*[a-f0-9]+: c5 7c 29 c6 vmovaps ymm6,ymm8 |
|||
[ ]*[a-f0-9]+: c5 7d 7f c6 vmovdqa ymm6,ymm8 |
|||
[ ]*[a-f0-9]+: c5 7e 7f c6 vmovdqu ymm6,ymm8 |
|||
[ ]*[a-f0-9]+: c5 7d 11 c6 vmovupd ymm6,ymm8 |
|||
[ ]*[a-f0-9]+: c5 7c 11 c6 vmovups ymm6,ymm8 |
|||
[ ]*[a-f0-9]+: c5 79 29 c6 vmovapd xmm6,xmm8 |
|||
[ ]*[a-f0-9]+: c5 78 29 c6 vmovaps xmm6,xmm8 |
|||
[ ]*[a-f0-9]+: c5 79 7f c6 vmovdqa xmm6,xmm8 |
|||
[ ]*[a-f0-9]+: c5 7a 7f c6 vmovdqu xmm6,xmm8 |
|||
[ ]*[a-f0-9]+: c5 79 d6 c6 vmovq xmm6,xmm8 |
|||
[ ]*[a-f0-9]+: c5 4b 11 c6 vmovsd xmm6,xmm6,xmm8 |
|||
[ ]*[a-f0-9]+: c5 4a 11 c6 vmovss xmm6,xmm6,xmm8 |
|||
[ ]*[a-f0-9]+: c5 79 11 c6 vmovupd xmm6,xmm8 |
|||
[ ]*[a-f0-9]+: c5 78 11 c6 vmovups xmm6,xmm8 |
|||
[ ]*[a-f0-9]+: c5 79 29 c6 vmovapd xmm6,xmm8 |
|||
[ ]*[a-f0-9]+: c5 78 29 c6 vmovaps xmm6,xmm8 |
|||
[ ]*[a-f0-9]+: c5 79 7f c6 vmovdqa xmm6,xmm8 |
|||
[ ]*[a-f0-9]+: c5 7a 7f c6 vmovdqu xmm6,xmm8 |
|||
[ ]*[a-f0-9]+: c5 79 d6 c6 vmovq xmm6,xmm8 |
|||
[ ]*[a-f0-9]+: c5 79 11 c6 vmovupd xmm6,xmm8 |
|||
[ ]*[a-f0-9]+: c5 78 11 c6 vmovups xmm6,xmm8 |
|||
[ ]*[a-f0-9]+: c5 4b 11 c2 vmovsd xmm2,xmm6,xmm8 |
|||
[ ]*[a-f0-9]+: c5 4a 11 c2 vmovss xmm2,xmm6,xmm8 |
|||
[ ]*[a-f0-9]+: c5 7d 29 c6 vmovapd ymm6,ymm8 |
|||
[ ]*[a-f0-9]+: c5 7c 29 c6 vmovaps ymm6,ymm8 |
|||
[ ]*[a-f0-9]+: c5 7d 7f c6 vmovdqa ymm6,ymm8 |
|||
[ ]*[a-f0-9]+: c5 7e 7f c6 vmovdqu ymm6,ymm8 |
|||
[ ]*[a-f0-9]+: c5 7d 11 c6 vmovupd ymm6,ymm8 |
|||
[ ]*[a-f0-9]+: c5 7c 11 c6 vmovups ymm6,ymm8 |
|||
[ ]*[a-f0-9]+: c5 79 29 c6 vmovapd xmm6,xmm8 |
|||
[ ]*[a-f0-9]+: c5 78 29 c6 vmovaps xmm6,xmm8 |
|||
[ ]*[a-f0-9]+: c5 79 7f c6 vmovdqa xmm6,xmm8 |
|||
[ ]*[a-f0-9]+: c5 7a 7f c6 vmovdqu xmm6,xmm8 |
|||
[ ]*[a-f0-9]+: c5 79 d6 c6 vmovq xmm6,xmm8 |
|||
[ ]*[a-f0-9]+: c5 4b 11 c6 vmovsd xmm6,xmm6,xmm8 |
|||
[ ]*[a-f0-9]+: c5 4a 11 c6 vmovss xmm6,xmm6,xmm8 |
|||
[ ]*[a-f0-9]+: c5 79 11 c6 vmovupd xmm6,xmm8 |
|||
[ ]*[a-f0-9]+: c5 78 11 c6 vmovups xmm6,xmm8 |
|||
[ ]*[a-f0-9]+: c5 79 29 c6 vmovapd xmm6,xmm8 |
|||
[ ]*[a-f0-9]+: c5 78 29 c6 vmovaps xmm6,xmm8 |
|||
[ ]*[a-f0-9]+: c5 79 7f c6 vmovdqa xmm6,xmm8 |
|||
[ ]*[a-f0-9]+: c5 7a 7f c6 vmovdqu xmm6,xmm8 |
|||
[ ]*[a-f0-9]+: c5 79 d6 c6 vmovq xmm6,xmm8 |
|||
[ ]*[a-f0-9]+: c5 79 11 c6 vmovupd xmm6,xmm8 |
|||
[ ]*[a-f0-9]+: c5 78 11 c6 vmovups xmm6,xmm8 |
|||
[ ]*[a-f0-9]+: c5 4b 11 c2 vmovsd xmm2,xmm6,xmm8 |
|||
[ ]*[a-f0-9]+: c5 4a 11 c2 vmovss xmm2,xmm6,xmm8 |
|||
#pass |
|||
@ -0,0 +1,59 @@ |
|||
#as: -msse2avx |
|||
#objdump: -drw |
|||
#name: x86-64 AVX swap |
|||
|
|||
.*: +file format .* |
|||
|
|||
|
|||
Disassembly of section .text: |
|||
|
|||
0+ <_start>: |
|||
[ ]*[a-f0-9]+: c5 7d 29 c6 vmovapd %ymm8,%ymm6 |
|||
[ ]*[a-f0-9]+: c5 7c 29 c6 vmovaps %ymm8,%ymm6 |
|||
[ ]*[a-f0-9]+: c5 7d 7f c6 vmovdqa %ymm8,%ymm6 |
|||
[ ]*[a-f0-9]+: c5 7e 7f c6 vmovdqu %ymm8,%ymm6 |
|||
[ ]*[a-f0-9]+: c5 7d 11 c6 vmovupd %ymm8,%ymm6 |
|||
[ ]*[a-f0-9]+: c5 7c 11 c6 vmovups %ymm8,%ymm6 |
|||
[ ]*[a-f0-9]+: c5 79 29 c6 vmovapd %xmm8,%xmm6 |
|||
[ ]*[a-f0-9]+: c5 78 29 c6 vmovaps %xmm8,%xmm6 |
|||
[ ]*[a-f0-9]+: c5 79 7f c6 vmovdqa %xmm8,%xmm6 |
|||
[ ]*[a-f0-9]+: c5 7a 7f c6 vmovdqu %xmm8,%xmm6 |
|||
[ ]*[a-f0-9]+: c5 79 d6 c6 vmovq %xmm8,%xmm6 |
|||
[ ]*[a-f0-9]+: c5 4b 11 c6 vmovsd %xmm8,%xmm6,%xmm6 |
|||
[ ]*[a-f0-9]+: c5 4a 11 c6 vmovss %xmm8,%xmm6,%xmm6 |
|||
[ ]*[a-f0-9]+: c5 79 11 c6 vmovupd %xmm8,%xmm6 |
|||
[ ]*[a-f0-9]+: c5 78 11 c6 vmovups %xmm8,%xmm6 |
|||
[ ]*[a-f0-9]+: c5 79 29 c6 vmovapd %xmm8,%xmm6 |
|||
[ ]*[a-f0-9]+: c5 78 29 c6 vmovaps %xmm8,%xmm6 |
|||
[ ]*[a-f0-9]+: c5 79 7f c6 vmovdqa %xmm8,%xmm6 |
|||
[ ]*[a-f0-9]+: c5 7a 7f c6 vmovdqu %xmm8,%xmm6 |
|||
[ ]*[a-f0-9]+: c5 79 d6 c6 vmovq %xmm8,%xmm6 |
|||
[ ]*[a-f0-9]+: c5 79 11 c6 vmovupd %xmm8,%xmm6 |
|||
[ ]*[a-f0-9]+: c5 78 11 c6 vmovups %xmm8,%xmm6 |
|||
[ ]*[a-f0-9]+: c5 4b 11 c2 vmovsd %xmm8,%xmm6,%xmm2 |
|||
[ ]*[a-f0-9]+: c5 4a 11 c2 vmovss %xmm8,%xmm6,%xmm2 |
|||
[ ]*[a-f0-9]+: c5 7d 29 c6 vmovapd %ymm8,%ymm6 |
|||
[ ]*[a-f0-9]+: c5 7c 29 c6 vmovaps %ymm8,%ymm6 |
|||
[ ]*[a-f0-9]+: c5 7d 7f c6 vmovdqa %ymm8,%ymm6 |
|||
[ ]*[a-f0-9]+: c5 7e 7f c6 vmovdqu %ymm8,%ymm6 |
|||
[ ]*[a-f0-9]+: c5 7d 11 c6 vmovupd %ymm8,%ymm6 |
|||
[ ]*[a-f0-9]+: c5 7c 11 c6 vmovups %ymm8,%ymm6 |
|||
[ ]*[a-f0-9]+: c5 79 29 c6 vmovapd %xmm8,%xmm6 |
|||
[ ]*[a-f0-9]+: c5 78 29 c6 vmovaps %xmm8,%xmm6 |
|||
[ ]*[a-f0-9]+: c5 79 7f c6 vmovdqa %xmm8,%xmm6 |
|||
[ ]*[a-f0-9]+: c5 7a 7f c6 vmovdqu %xmm8,%xmm6 |
|||
[ ]*[a-f0-9]+: c5 79 d6 c6 vmovq %xmm8,%xmm6 |
|||
[ ]*[a-f0-9]+: c5 4b 11 c6 vmovsd %xmm8,%xmm6,%xmm6 |
|||
[ ]*[a-f0-9]+: c5 4a 11 c6 vmovss %xmm8,%xmm6,%xmm6 |
|||
[ ]*[a-f0-9]+: c5 79 11 c6 vmovupd %xmm8,%xmm6 |
|||
[ ]*[a-f0-9]+: c5 78 11 c6 vmovups %xmm8,%xmm6 |
|||
[ ]*[a-f0-9]+: c5 79 29 c6 vmovapd %xmm8,%xmm6 |
|||
[ ]*[a-f0-9]+: c5 78 29 c6 vmovaps %xmm8,%xmm6 |
|||
[ ]*[a-f0-9]+: c5 79 7f c6 vmovdqa %xmm8,%xmm6 |
|||
[ ]*[a-f0-9]+: c5 7a 7f c6 vmovdqu %xmm8,%xmm6 |
|||
[ ]*[a-f0-9]+: c5 79 d6 c6 vmovq %xmm8,%xmm6 |
|||
[ ]*[a-f0-9]+: c5 79 11 c6 vmovupd %xmm8,%xmm6 |
|||
[ ]*[a-f0-9]+: c5 78 11 c6 vmovups %xmm8,%xmm6 |
|||
[ ]*[a-f0-9]+: c5 4b 11 c2 vmovsd %xmm8,%xmm6,%xmm2 |
|||
[ ]*[a-f0-9]+: c5 4a 11 c2 vmovss %xmm8,%xmm6,%xmm2 |
|||
#pass |
|||
@ -0,0 +1,67 @@ |
|||
# Check 64bit instructions with encoding options |
|||
|
|||
.allow_index_reg |
|||
.text |
|||
_start: |
|||
|
|||
# Tests for op ymm, ymm |
|||
vmovapd %ymm8,%ymm6 |
|||
vmovaps %ymm8,%ymm6 |
|||
vmovdqa %ymm8,%ymm6 |
|||
vmovdqu %ymm8,%ymm6 |
|||
vmovupd %ymm8,%ymm6 |
|||
vmovups %ymm8,%ymm6 |
|||
|
|||
# Tests for op xmm, xmm |
|||
movapd %xmm8,%xmm6 |
|||
movaps %xmm8,%xmm6 |
|||
movdqa %xmm8,%xmm6 |
|||
movdqu %xmm8,%xmm6 |
|||
movq %xmm8,%xmm6 |
|||
movsd %xmm8,%xmm6 |
|||
movss %xmm8,%xmm6 |
|||
movupd %xmm8,%xmm6 |
|||
movups %xmm8,%xmm6 |
|||
vmovapd %xmm8,%xmm6 |
|||
vmovaps %xmm8,%xmm6 |
|||
vmovdqa %xmm8,%xmm6 |
|||
vmovdqu %xmm8,%xmm6 |
|||
vmovq %xmm8,%xmm6 |
|||
vmovupd %xmm8,%xmm6 |
|||
vmovups %xmm8,%xmm6 |
|||
|
|||
# Tests for op xmm, xmm, xmm |
|||
vmovsd %xmm8,%xmm6,%xmm2 |
|||
vmovss %xmm8,%xmm6,%xmm2 |
|||
|
|||
.intel_syntax noprefix |
|||
|
|||
# Tests for op ymm, ymm |
|||
vmovapd ymm6,ymm8 |
|||
vmovaps ymm6,ymm8 |
|||
vmovdqa ymm6,ymm8 |
|||
vmovdqu ymm6,ymm8 |
|||
vmovupd ymm6,ymm8 |
|||
vmovups ymm6,ymm8 |
|||
|
|||
# Tests for op xmm, xmm |
|||
movapd xmm6,xmm8 |
|||
movaps xmm6,xmm8 |
|||
movdqa xmm6,xmm8 |
|||
movdqu xmm6,xmm8 |
|||
movq xmm6,xmm8 |
|||
movsd xmm6,xmm8 |
|||
movss xmm6,xmm8 |
|||
movupd xmm6,xmm8 |
|||
movups xmm6,xmm8 |
|||
vmovapd xmm6,xmm8 |
|||
vmovaps xmm6,xmm8 |
|||
vmovdqa xmm6,xmm8 |
|||
vmovdqu xmm6,xmm8 |
|||
vmovq xmm6,xmm8 |
|||
vmovupd xmm6,xmm8 |
|||
vmovups xmm6,xmm8 |
|||
|
|||
# Tests for op xmm, xmm, xmm |
|||
vmovsd xmm2,xmm6,xmm8 |
|||
vmovss xmm2,xmm6,xmm8 |
|||
Loading…
Reference in new issue