[PATCH] Add CX16 flag to asm
Michael Zolotukhin
michael.v.zolotukhin@gmail.com
Thu Sep 20 17:06:00 GMT 2012
Great, thanks, HJ!
Michael
On 20 September 2012 18:45, H.J. Lu <hjl.tools@gmail.com> wrote:
> On Wed, Sep 19, 2012 at 2:46 PM, Michael Zolotukhin
> <michael.v.zolotukhin@gmail.com> wrote:
>> Here is a patch with the tests - I didn't add new tests to arch-10.s,
>> as CMPXCHG16B is available only on 64 bits.
>>
>> Changelogs:
>> gas/Changelog:
>> 2012-09-19 Michael Zolotukhin <michael.v.zolotukhin@intel.com>
>>
>> * config/tc-i386.c: Add CX16 flag.
>> * doc/c-i386.texi: Document the new flag.
>>
>> opcodes/Changelog:
>> 2012-09-19 Michael Zolotukhin <michael.v.zolotukhin@intel.com>
>>
>> * i386-gen.c (cpu_flag_init): Add CpuCX16 and add the flag to
>> CPU_NOCONA_FLAGS, CPU_CORE_FLAGS, CPU_CORE2_FLAGS, CPU_COREI7_FLAGS,
>> CPU_BDVER1_FLAGS, CPU_BDVER2_FLAGS, CPU_BTVER1_FLAGS,
>> CPU_BTVER2_FLAGS.
>> (cpu_flags): Add CpuCX16.
>> * i386-opc.h: Add CpuCX16.
>> * i386-opc.tbl: Use new flag in CMPXCHG16B.
>> * i386-tbl.h: Regenerate.
>> * i386-init.h: Likewise.
>>
>> gas/testsuite/Changelog:
>> 2012-09-19 Michael Zolotukhin <michael.v.zolotukhin@intel.com>
>>
>> * gas/i386/x86-64-arch-2.s: Add test for CMPXCHG16B.
>> * gas/i386/x86-64-arch-2.d: Update correspondingly.
>> * gas/i386/x86-64-arch-2-bdver2.d: Likewise.
>> * gas/i386/x86-64-arch-2-btver1.d: Likewise.
>> * gas/i386/x86-64-arch-2-btver2.d: Likewise.
>> * gas/i386/x86-64-arch-2-lzcnt.d: Likewise.
>> * gas/i386/x86-64-arch-2-prefetchw.d: Likewise.
>> * gas/i386/ilp32/x86-64-arch-2.d: Likewise.
>>
>
> I checked in this patch to add 2 new tests.
>
>
> --
> H.J.
> --
> diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
> index 07c73e0..47baaff 100644
> --- a/gas/testsuite/ChangeLog
> +++ b/gas/testsuite/ChangeLog
> @@ -1,3 +1,12 @@
> +2012-09-20 H.J. Lu <hongjiu.lu@intel.com>
> +
> + * gas/i386/i386.exp: Run x86-64-arch-2-1 and x86-64-arch-2-2.
> +
> + * gas/i386/x86-64-arch-2-1.l: New file.
> + * gas/i386/x86-64-arch-2-1.s: Likewise.
> + * gas/i386/x86-64-arch-2-2.l: Likewise.
> + * gas/i386/x86-64-arch-2-2.s: Likewise.
> +
> 2012-09-20 Michael Zolotukhin <michael.v.zolotukhin@intel.com>
>
> * gas/i386/x86-64-arch-2.s: Add test for cmpxchg16b.
> diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp
> index 2cfe8ec..76eef34 100644
> --- a/gas/testsuite/gas/i386/i386.exp
> +++ b/gas/testsuite/gas/i386/i386.exp
> @@ -399,6 +399,8 @@ if [expr ([istarget "i*86-*-*"] || [istarget
> "x86_64-*-*"]) && [gas_64_check]] t
> run_dump_test "x86-64-arch-2-bdver2"
> run_dump_test "x86-64-arch-2-btver1"
> run_dump_test "x86-64-arch-2-btver2"
> + run_list_test "x86-64-arch-2-1" "-march=generic64 -I${srcdir}/$subdir -al"
> + run_list_test "x86-64-arch-2-2" "-march=generic64+cx16
> -I${srcdir}/$subdir -al"
> run_dump_test "x86-64-xsave"
> run_dump_test "x86-64-xsave-intel"
> run_dump_test "x86-64-aes"
> diff --git a/gas/testsuite/gas/i386/x86-64-arch-2-1.l
> b/gas/testsuite/gas/i386/x86-64-arch-2-1.l
> new file mode 100644
> index 0000000..355b91c
> --- /dev/null
> +++ b/gas/testsuite/gas/i386/x86-64-arch-2-1.l
> @@ -0,0 +1,97 @@
> +.*: Assembler messages:
> +.*:16: Error: .*
> +.*:18: Error: .*
> +.*:20: Error: .*
> +.*:22: Error: .*
> +.*:24: Error: .*
> +.*:26: Error: .*
> +.*:28: Error: .*
> +.*:30: Error: .*
> +.*:32: Error: .*
> +.*:34: Error: .*
> +.*:36: Error: .*
> +.*:38: Error: .*
> +.*:40: Error: .*
> +.*:42: Error: .*
> +.*:44: Error: .*
> +.*:46: Error: .*
> +.*:48: Error: .*
> +.*:50: Error: .*
> +.*:52: Error: .*
> +.*:54: Error: .*
> +.*:56: Error: .*
> +.*:58: Error: .*
> +.*:60: Error: .*
> +.*:62: Error: .*
> +.*:64: Error: .*
> +GAS LISTING .*
> +
> +
> +[ ]*1[ ]+\.include "x86-64-arch-2\.s"
> +[ ]*1[ ]+\# Test -march=
> +[ ]*2[ ]+\.text
> +[ ]*3[ ]+\# cmov feature
> +[ ]*4[ ]+\?\?\?\? 0F44D8 cmove %eax,%ebx
> +[ ]*5[ ]+\# clflush
> +[ ]*6[ ]+\?\?\?\? 0FAE38 clflush \(%rax\)
> +[ ]*7[ ]+\# SYSCALL
> +[ ]*8[ ]+\?\?\?\? 0F05 syscall
> +[ ]*9[ ]+\# MMX
> +[ ]*10[ ]+\?\?\?\? 0FFCDC paddb %mm4,%mm3
> +[ ]*11[ ]+\# SSE
> +[ ]*12[ ]+\?\?\?\? F30F58DC addss %xmm4,%xmm3
> +[ ]*13[ ]+\# SSE2
> +[ ]*14[ ]+\?\?\?\? F20F58DC addsd %xmm4,%xmm3
> +[ ]*15[ ]+\# SSE3
> +[ ]*16[ ]+addsubpd %xmm4,%xmm3
> +[ ]*17[ ]+\# SSSE3
> +[ ]*18[ ]+phaddw %xmm4,%xmm3
> +[ ]*19[ ]+\# SSE4\.1
> +[ ]*20[ ]+phminposuw %xmm1,%xmm3
> +[ ]*21[ ]+\# SSE4\.2
> +[ ]*22[ ]+crc32 %ecx,%ebx
> +[ ]*23[ ]+\# AVX
> +[ ]*24[ ]+vzeroall
> +[ ]*25[ ]+\# VMX
> +[ ]*26[ ]+vmxoff
> +[ ]*27[ ]+\# SMX
> +[ ]*28[ ]+getsec
> +[ ]*29[ ]+\# Xsave
> +[ ]*30[ ]+xgetbv
> +[ ]*31[ ]+\# Xsaveopt
> +[ ]*32[ ]+xsaveopt \(%rcx\)
> +[ ]*33[ ]+\# AES
> +[ ]*34[ ]+aesenc \(%rcx\),%xmm0
> +[ ]*35[ ]+\# PCLMUL
> +[ ]*36[ ]+pclmulqdq \$8,%xmm1,%xmm0
> +[ ]*37[ ]+\# AES \+ AVX
> +[ ]*38[ ]+vaesenc \(%rcx\),%xmm0,%xmm2
> +[ ]*39[ ]+\# PCLMUL \+ AVX
> +[ ]*40[ ]+vpclmulqdq \$8,%xmm4,%xmm6,%xmm2
> +[ ]*41[ ]+\# FMA
> +[ ]*42[ ]+vfmadd132pd %xmm4,%xmm6,%xmm2
> +[ ]*43[ ]+\# MOVBE
> +[ ]*44[ ]+movbe \(%rcx\),%ebx
> +[ ]*45[ ]+\# CX16
> +[ ]*46[ ]+cmpxchg16b \(%rsi\)
> +[ ]*47[ ]+\# EPT
> +[ ]*48[ ]+invept \(%rcx\),%rbx
> +[ ]*49[ ]+\# RDTSCP
> +[ ]*50[ ]+rdtscp
> +[ ]*51[ ]+\# 3DNow or PRFCHW
> +[ ]*52[ ]+prefetchw 0x1000\(,%rsi,2\)
> +[ ]*53[ ]+\# SSE4a
> +[ ]*54[ ]+insertq %xmm2,%xmm1
> +[ ]*55[ ]+\# SVME
> +[ ]*56[ ]+vmload
> +
> GAS LISTING .*
> +
> +
> +[ ]*57[ ]+\# ABM/LZCNT
> +[ ]*58[ ]+lzcnt %ecx,%ebx
> +[ ]*59[ ]+\# PadLock
> +[ ]*60[ ]+xstorerng
> +[ ]*61[ ]+\# BMI
> +[ ]*62[ ]+blsr %ecx,%ebx
> +[ ]*63[ ]+\# TBM
> +[ ]*64[ ]+blcfill %ecx,%ebx
> diff --git a/gas/testsuite/gas/i386/x86-64-arch-2-1.s
> b/gas/testsuite/gas/i386/x86-64-arch-2-1.s
> new file mode 100644
> index 0000000..63544a1
> --- /dev/null
> +++ b/gas/testsuite/gas/i386/x86-64-arch-2-1.s
> @@ -0,0 +1 @@
> +.include "x86-64-arch-2.s"
> diff --git a/gas/testsuite/gas/i386/x86-64-arch-2-2.l
> b/gas/testsuite/gas/i386/x86-64-arch-2-2.l
> new file mode 100644
> index 0000000..2f8bf56
> --- /dev/null
> +++ b/gas/testsuite/gas/i386/x86-64-arch-2-2.l
> @@ -0,0 +1,96 @@
> +.*: Assembler messages:
> +.*:16: Error: .*
> +.*:18: Error: .*
> +.*:20: Error: .*
> +.*:22: Error: .*
> +.*:24: Error: .*
> +.*:26: Error: .*
> +.*:28: Error: .*
> +.*:30: Error: .*
> +.*:32: Error: .*
> +.*:34: Error: .*
> +.*:36: Error: .*
> +.*:38: Error: .*
> +.*:40: Error: .*
> +.*:42: Error: .*
> +.*:44: Error: .*
> +.*:48: Error: .*
> +.*:50: Error: .*
> +.*:52: Error: .*
> +.*:54: Error: .*
> +.*:56: Error: .*
> +.*:58: Error: .*
> +.*:60: Error: .*
> +.*:62: Error: .*
> +.*:64: Error: .*
> +GAS LISTING .*
> +
> +
> +[ ]*1[ ]+\.include "x86-64-arch-2\.s"
> +[ ]*1[ ]+\# Test -march=
> +[ ]*2[ ]+\.text
> +[ ]*3[ ]+\# cmov feature
> +[ ]*4[ ]+\?\?\?\? 0F44D8 cmove %eax,%ebx
> +[ ]*5[ ]+\# clflush
> +[ ]*6[ ]+\?\?\?\? 0FAE38 clflush \(%rax\)
> +[ ]*7[ ]+\# SYSCALL
> +[ ]*8[ ]+\?\?\?\? 0F05 syscall
> +[ ]*9[ ]+\# MMX
> +[ ]*10[ ]+\?\?\?\? 0FFCDC paddb %mm4,%mm3
> +[ ]*11[ ]+\# SSE
> +[ ]*12[ ]+\?\?\?\? F30F58DC addss %xmm4,%xmm3
> +[ ]*13[ ]+\# SSE2
> +[ ]*14[ ]+\?\?\?\? F20F58DC addsd %xmm4,%xmm3
> +[ ]*15[ ]+\# SSE3
> +[ ]*16[ ]+addsubpd %xmm4,%xmm3
> +[ ]*17[ ]+\# SSSE3
> +[ ]*18[ ]+phaddw %xmm4,%xmm3
> +[ ]*19[ ]+\# SSE4\.1
> +[ ]*20[ ]+phminposuw %xmm1,%xmm3
> +[ ]*21[ ]+\# SSE4\.2
> +[ ]*22[ ]+crc32 %ecx,%ebx
> +[ ]*23[ ]+\# AVX
> +[ ]*24[ ]+vzeroall
> +[ ]*25[ ]+\# VMX
> +[ ]*26[ ]+vmxoff
> +[ ]*27[ ]+\# SMX
> +[ ]*28[ ]+getsec
> +[ ]*29[ ]+\# Xsave
> +[ ]*30[ ]+xgetbv
> +[ ]*31[ ]+\# Xsaveopt
> +[ ]*32[ ]+xsaveopt \(%rcx\)
> +[ ]*33[ ]+\# AES
> +[ ]*34[ ]+aesenc \(%rcx\),%xmm0
> +[ ]*35[ ]+\# PCLMUL
> +[ ]*36[ ]+pclmulqdq \$8,%xmm1,%xmm0
> +[ ]*37[ ]+\# AES \+ AVX
> +[ ]*38[ ]+vaesenc \(%rcx\),%xmm0,%xmm2
> +[ ]*39[ ]+\# PCLMUL \+ AVX
> +[ ]*40[ ]+vpclmulqdq \$8,%xmm4,%xmm6,%xmm2
> +[ ]*41[ ]+\# FMA
> +[ ]*42[ ]+vfmadd132pd %xmm4,%xmm6,%xmm2
> +[ ]*43[ ]+\# MOVBE
> +[ ]*44[ ]+movbe \(%rcx\),%ebx
> +[ ]*45[ ]+\# CX16
> +[ ]*46[ ]+\?\?\?\? 480FC70E cmpxchg16b \(%rsi\)
> +[ ]*47[ ]+\# EPT
> +[ ]*48[ ]+invept \(%rcx\),%rbx
> +[ ]*49[ ]+\# RDTSCP
> +[ ]*50[ ]+rdtscp
> +[ ]*51[ ]+\# 3DNow or PRFCHW
> +[ ]*52[ ]+prefetchw 0x1000\(,%rsi,2\)
> +[ ]*53[ ]+\# SSE4a
> +[ ]*54[ ]+insertq %xmm2,%xmm1
> +[ ]*55[ ]+\# SVME
> +[ ]*56[ ]+vmload
> +
> GAS LISTING .*
> +
> +
> +[ ]*57[ ]+\# ABM/LZCNT
> +[ ]*58[ ]+lzcnt %ecx,%ebx
> +[ ]*59[ ]+\# PadLock
> +[ ]*60[ ]+xstorerng
> +[ ]*61[ ]+\# BMI
> +[ ]*62[ ]+blsr %ecx,%ebx
> +[ ]*63[ ]+\# TBM
> +[ ]*64[ ]+blcfill %ecx,%ebx
> diff --git a/gas/testsuite/gas/i386/x86-64-arch-2-2.s
> b/gas/testsuite/gas/i386/x86-64-arch-2-2.s
> new file mode 100644
> index 0000000..63544a1
> --- /dev/null
> +++ b/gas/testsuite/gas/i386/x86-64-arch-2-2.s
> @@ -0,0 +1 @@
> +.include "x86-64-arch-2.s"
--
---
Best regards,
Michael V. Zolotukhin,
Software Engineer
Intel Corporation.
More information about the Binutils
mailing list