aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorCui, Lili <lili.cui@intel.com>2024-07-05 09:55:41 +0800
committerCui, Lili <lili.cui@intel.com>2024-07-05 09:55:41 +0800
commitf95476cc5e51923b206d4c9c9a1bb1c309808431 (patch)
tree9e8c7437b260061096329f1385b253527e0534f0 /gas
parentdb7f6be8ef92a73db487c8c5af2bcd4fb6394648 (diff)
downloadbinutils-f95476cc5e51923b206d4c9c9a1bb1c309808431.zip
binutils-f95476cc5e51923b206d4c9c9a1bb1c309808431.tar.gz
binutils-f95476cc5e51923b206d4c9c9a1bb1c309808431.tar.bz2
x86: Add {load}/{store} tests for apx instructions.
gas/ChangeLog: * testsuite/gas/i386/x86-64.exp: Add {load}/{store} tests for apx instructions. * testsuite/gas/i386/x86-64-pseudos-apx.d: New test. * testsuite/gas/i386/x86-64-pseudos-apx.s: Ditto.
Diffstat (limited to 'gas')
-rw-r--r--gas/testsuite/gas/i386/x86-64-pseudos-apx.d158
-rw-r--r--gas/testsuite/gas/i386/x86-64-pseudos-apx.s45
-rw-r--r--gas/testsuite/gas/i386/x86-64.exp1
3 files changed, 204 insertions, 0 deletions
diff --git a/gas/testsuite/gas/i386/x86-64-pseudos-apx.d b/gas/testsuite/gas/i386/x86-64-pseudos-apx.d
new file mode 100644
index 0000000..c3b2eca
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-pseudos-apx.d
@@ -0,0 +1,158 @@
+#as:
+#objdump: -dw -Msuffix
+#name: APX x86-64 pseudo prefixes
+
+.*: +file format .*
+
+Disassembly of section \.text:
+
+0+ <_start>:
+[ ]*[a-f0-9]+:[ ]*d5 11 89 cf[ ]+movl %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*d5 44 8b f9[ ]+movl.s %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*d5 11 89 cf[ ]+movl %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*67 d5 44 8b 39[ ]+movl \(%ecx\),%r31d
+[ ]*[a-f0-9]+:[ ]*67 d5 44 89 39[ ]+movl %r31d,\(%ecx\)
+[ ]*[a-f0-9]+:[ ]*d5 11 11 cf[ ]+adcl %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*d5 44 13 f9[ ]+adcl.s %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*d5 11 11 cf[ ]+adcl %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*67 d5 44 13 39[ ]+adcl \(%ecx\),%r31d
+[ ]*[a-f0-9]+:[ ]*67 d5 44 11 39[ ]+adcl %r31d,\(%ecx\)
+[ ]*[a-f0-9]+:[ ]*d5 11 01 cf[ ]+addl %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*d5 44 03 f9[ ]+addl.s %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*d5 11 01 cf[ ]+addl %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*67 d5 44 03 39[ ]+addl \(%ecx\),%r31d
+[ ]*[a-f0-9]+:[ ]*67 d5 44 01 39[ ]+addl %r31d,\(%ecx\)
+[ ]*[a-f0-9]+:[ ]*d5 11 21 cf[ ]+andl %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*d5 44 23 f9[ ]+andl.s %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*d5 11 21 cf[ ]+andl %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*67 d5 44 23 39[ ]+andl \(%ecx\),%r31d
+[ ]*[a-f0-9]+:[ ]*67 d5 44 21 39[ ]+andl %r31d,\(%ecx\)
+[ ]*[a-f0-9]+:[ ]*d5 11 39 cf[ ]+cmpl %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*d5 44 3b f9[ ]+cmpl.s %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*d5 11 39 cf[ ]+cmpl %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*67 d5 44 3b 39[ ]+cmpl \(%ecx\),%r31d
+[ ]*[a-f0-9]+:[ ]*67 d5 44 39 39[ ]+cmpl %r31d,\(%ecx\)
+[ ]*[a-f0-9]+:[ ]*d5 11 09 cf[ ]+orl %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*d5 44 0b f9[ ]+orl.s %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*d5 11 09 cf[ ]+orl %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*67 d5 44 0b 39[ ]+orl \(%ecx\),%r31d
+[ ]*[a-f0-9]+:[ ]*67 d5 44 09 39[ ]+orl %r31d,\(%ecx\)
+[ ]*[a-f0-9]+:[ ]*d5 11 19 cf[ ]+sbbl %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*d5 44 1b f9[ ]+sbbl.s %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*d5 11 19 cf[ ]+sbbl %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*67 d5 44 1b 39[ ]+sbbl \(%ecx\),%r31d
+[ ]*[a-f0-9]+:[ ]*67 d5 44 19 39[ ]+sbbl %r31d,\(%ecx\)
+[ ]*[a-f0-9]+:[ ]*d5 11 29 cf[ ]+subl %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*d5 44 2b f9[ ]+subl.s %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*d5 11 29 cf[ ]+subl %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*67 d5 44 2b 39[ ]+subl \(%ecx\),%r31d
+[ ]*[a-f0-9]+:[ ]*67 d5 44 29 39[ ]+subl %r31d,\(%ecx\)
+[ ]*[a-f0-9]+:[ ]*d5 11 85 cf[ ]+testl %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*d5 44 85 f9[ ]+testl %r31d,%ecx
+[ ]*[a-f0-9]+:[ ]*d5 11 85 cf[ ]+testl %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*67 d5 44 85 39[ ]+testl %r31d,\(%ecx\)
+[ ]*[a-f0-9]+:[ ]*67 d5 44 85 39[ ]+testl %r31d,\(%ecx\)
+[ ]*[a-f0-9]+:[ ]*d5 11 31 cf[ ]+xorl %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*d5 44 33 f9[ ]+xorl.s %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*d5 11 31 cf[ ]+xorl %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*67 d5 44 33 39[ ]+xorl \(%ecx\),%r31d
+[ ]*[a-f0-9]+:[ ]*67 d5 44 31 39[ ]+xorl %r31d,\(%ecx\)
+[ ]*[a-f0-9]+:[ ]*d5 11 87 cf[ ]+xchgl %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*d5 44 87 f9[ ]+xchgl %r31d,%ecx
+[ ]*[a-f0-9]+:[ ]*d5 11 87 cf[ ]+xchgl %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*67 d5 44 87 39[ ]+xchgl %r31d,\(%ecx\)
+[ ]*[a-f0-9]+:[ ]*67 d5 44 87 39[ ]+xchgl %r31d,\(%ecx\)
+[ ]*[a-f0-9]+:[ ]*d5 91 28 17[ ]+movaps \(%r31\),%xmm2
+[ ]*[a-f0-9]+:[ ]*d5 91 28 17[ ]+movaps \(%r31\),%xmm2
+[ ]*[a-f0-9]+:[ ]*d5 91 29 17[ ]+movaps %xmm2,\(%r31\)
+[ ]*[a-f0-9]+:[ ]*62 dc 7c 08 11 cf[ ]+adcl %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*62 64 7c 08 13 f9[ ]+adcl.s %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*62 dc 7c 08 11 cf[ ]+adcl %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*67 62 64 7c 08 13 39[ ]+adcl \(%ecx\),%r31d
+[ ]*[a-f0-9]+:[ ]*67 62 64 7c 08 11 39[ ]+adcl %r31d,\(%ecx\)
+[ ]*[a-f0-9]+:[ ]*62 dc 7c 08 01 cf[ ]+addl %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*62 64 7c 08 03 f9[ ]+addl.s %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*62 dc 7c 08 01 cf[ ]+addl %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*67 62 64 7c 08 03 39[ ]+addl \(%ecx\),%r31d
+[ ]*[a-f0-9]+:[ ]*67 62 64 7c 08 01 39[ ]+addl %r31d,\(%ecx\)
+[ ]*[a-f0-9]+:[ ]*62 dc 7c 08 21 cf[ ]+andl %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*62 64 7c 08 23 f9[ ]+andl.s %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*62 dc 7c 08 21 cf[ ]+andl %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*67 62 64 7c 08 23 39[ ]+andl \(%ecx\),%r31d
+[ ]*[a-f0-9]+:[ ]*67 62 64 7c 08 21 39[ ]+andl %r31d,\(%ecx\)
+[ ]*[a-f0-9]+:[ ]*62 dc 7c 08 09 cf[ ]+orl %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*62 64 7c 08 0b f9[ ]+orl.s %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*62 dc 7c 08 09 cf[ ]+orl %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*67 62 64 7c 08 0b 39[ ]+orl \(%ecx\),%r31d
+[ ]*[a-f0-9]+:[ ]*67 62 64 7c 08 09 39[ ]+orl %r31d,\(%ecx\)
+[ ]*[a-f0-9]+:[ ]*62 dc 7c 08 19 cf[ ]+sbbl %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*62 64 7c 08 1b f9[ ]+sbbl.s %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*62 dc 7c 08 19 cf[ ]+sbbl %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*67 62 64 7c 08 1b 39[ ]+sbbl \(%ecx\),%r31d
+[ ]*[a-f0-9]+:[ ]*67 62 64 7c 08 19 39[ ]+sbbl %r31d,\(%ecx\)
+[ ]*[a-f0-9]+:[ ]*62 dc 7c 08 29 cf[ ]+subl %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*62 64 7c 08 2b f9[ ]+subl.s %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*62 dc 7c 08 29 cf[ ]+subl %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*67 62 64 7c 08 2b 39[ ]+subl \(%ecx\),%r31d
+[ ]*[a-f0-9]+:[ ]*67 62 64 7c 08 29 39[ ]+subl %r31d,\(%ecx\)
+[ ]*[a-f0-9]+:[ ]*62 dc 7c 08 31 cf[ ]+xorl %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*62 64 7c 08 33 f9[ ]+xorl.s %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*62 dc 7c 08 31 cf[ ]+xorl %ecx,%r31d
+[ ]*[a-f0-9]+:[ ]*67 62 64 7c 08 33 39[ ]+xorl \(%ecx\),%r31d
+[ ]*[a-f0-9]+:[ ]*67 62 64 7c 08 31 39[ ]+xorl %r31d,\(%ecx\)
+[ ]*[a-f0-9]+:[ ]*62 dc 7c 18 11 cf[ ]+adcl %ecx,%r31d,%eax
+[ ]*[a-f0-9]+:[ ]*62 64 7c 18 13 f9[ ]+adcl.s %ecx,%r31d,%eax
+[ ]*[a-f0-9]+:[ ]*62 dc 7c 18 11 cf[ ]+adcl %ecx,%r31d,%eax
+[ ]*[a-f0-9]+:[ ]*62 44 fc 10 11 38[ ]+adcq %r31,\(%r8\),%r16
+[ ]*[a-f0-9]+:[ ]*62 44 fc 10 13 38[ ]+adcq \(%r8\),%r31,%r16
+[ ]*[a-f0-9]+:[ ]*62 44 fc 10 11 38[ ]+adcq %r31,\(%r8\),%r16
+[ ]*[a-f0-9]+:[ ]*62 44 fc 10 13 38[ ]+adcq \(%r8\),%r31,%r16
+[ ]*[a-f0-9]+:[ ]*62 dc 7c 18 01 cf[ ]+addl %ecx,%r31d,%eax
+[ ]*[a-f0-9]+:[ ]*62 64 7c 18 03 f9[ ]+addl.s %ecx,%r31d,%eax
+[ ]*[a-f0-9]+:[ ]*62 dc 7c 18 01 cf[ ]+addl %ecx,%r31d,%eax
+[ ]*[a-f0-9]+:[ ]*62 44 fc 10 01 38[ ]+addq %r31,\(%r8\),%r16
+[ ]*[a-f0-9]+:[ ]*62 44 fc 10 03 38[ ]+addq \(%r8\),%r31,%r16
+[ ]*[a-f0-9]+:[ ]*62 44 fc 10 01 38[ ]+addq %r31,\(%r8\),%r16
+[ ]*[a-f0-9]+:[ ]*62 44 fc 10 03 38[ ]+addq \(%r8\),%r31,%r16
+[ ]*[a-f0-9]+:[ ]*62 dc 7c 18 21 cf[ ]+andl %ecx,%r31d,%eax
+[ ]*[a-f0-9]+:[ ]*62 64 7c 18 23 f9[ ]+andl.s %ecx,%r31d,%eax
+[ ]*[a-f0-9]+:[ ]*62 dc 7c 18 21 cf[ ]+andl %ecx,%r31d,%eax
+[ ]*[a-f0-9]+:[ ]*62 44 fc 10 21 38[ ]+andq %r31,\(%r8\),%r16
+[ ]*[a-f0-9]+:[ ]*62 44 fc 10 23 38[ ]+andq \(%r8\),%r31,%r16
+[ ]*[a-f0-9]+:[ ]*62 44 fc 10 21 38[ ]+andq %r31,\(%r8\),%r16
+[ ]*[a-f0-9]+:[ ]*62 44 fc 10 23 38[ ]+andq \(%r8\),%r31,%r16
+[ ]*[a-f0-9]+:[ ]*62 dc 7c 18 09 cf[ ]+orl %ecx,%r31d,%eax
+[ ]*[a-f0-9]+:[ ]*62 64 7c 18 0b f9[ ]+orl.s %ecx,%r31d,%eax
+[ ]*[a-f0-9]+:[ ]*62 dc 7c 18 09 cf[ ]+orl %ecx,%r31d,%eax
+[ ]*[a-f0-9]+:[ ]*62 44 fc 10 09 38[ ]+orq %r31,\(%r8\),%r16
+[ ]*[a-f0-9]+:[ ]*62 44 fc 10 0b 38[ ]+orq \(%r8\),%r31,%r16
+[ ]*[a-f0-9]+:[ ]*62 44 fc 10 09 38[ ]+orq %r31,\(%r8\),%r16
+[ ]*[a-f0-9]+:[ ]*62 44 fc 10 0b 38[ ]+orq \(%r8\),%r31,%r16
+[ ]*[a-f0-9]+:[ ]*62 dc 7c 18 19 cf[ ]+sbbl %ecx,%r31d,%eax
+[ ]*[a-f0-9]+:[ ]*62 64 7c 18 1b f9[ ]+sbbl.s %ecx,%r31d,%eax
+[ ]*[a-f0-9]+:[ ]*62 dc 7c 18 19 cf[ ]+sbbl %ecx,%r31d,%eax
+[ ]*[a-f0-9]+:[ ]*62 44 fc 10 19 38[ ]+sbbq %r31,\(%r8\),%r16
+[ ]*[a-f0-9]+:[ ]*62 44 fc 10 1b 38[ ]+sbbq \(%r8\),%r31,%r16
+[ ]*[a-f0-9]+:[ ]*62 44 fc 10 19 38[ ]+sbbq %r31,\(%r8\),%r16
+[ ]*[a-f0-9]+:[ ]*62 44 fc 10 1b 38[ ]+sbbq \(%r8\),%r31,%r16
+[ ]*[a-f0-9]+:[ ]*62 dc 7c 18 29 cf[ ]+subl %ecx,%r31d,%eax
+[ ]*[a-f0-9]+:[ ]*62 64 7c 18 2b f9[ ]+subl.s %ecx,%r31d,%eax
+[ ]*[a-f0-9]+:[ ]*62 dc 7c 18 29 cf[ ]+subl %ecx,%r31d,%eax
+[ ]*[a-f0-9]+:[ ]*62 44 fc 10 29 38[ ]+subq %r31,\(%r8\),%r16
+[ ]*[a-f0-9]+:[ ]*62 44 fc 10 2b 38[ ]+subq \(%r8\),%r31,%r16
+[ ]*[a-f0-9]+:[ ]*62 44 fc 10 29 38[ ]+subq %r31,\(%r8\),%r16
+[ ]*[a-f0-9]+:[ ]*62 44 fc 10 2b 38[ ]+subq \(%r8\),%r31,%r16
+[ ]*[a-f0-9]+:[ ]*62 dc 7c 18 31 cf[ ]+xorl %ecx,%r31d,%eax
+[ ]*[a-f0-9]+:[ ]*62 64 7c 18 33 f9[ ]+xorl.s %ecx,%r31d,%eax
+[ ]*[a-f0-9]+:[ ]*62 dc 7c 18 31 cf[ ]+xorl %ecx,%r31d,%eax
+[ ]*[a-f0-9]+:[ ]*62 44 fc 10 31 38[ ]+xorq %r31,\(%r8\),%r16
+[ ]*[a-f0-9]+:[ ]*62 44 fc 10 33 38[ ]+xorq \(%r8\),%r31,%r16
+[ ]*[a-f0-9]+:[ ]*62 44 fc 10 31 38[ ]+xorq %r31,\(%r8\),%r16
+[ ]*[a-f0-9]+:[ ]*62 44 fc 10 33 38[ ]+xorq \(%r8\),%r31,%r16
+[ ]*[a-f0-9]+:[ ]*62 f4 7c 08 42 c2[ ]+cfcmovbl %edx,%eax
+[ ]*[a-f0-9]+:[ ]*62 f4 7c 08 42 c2[ ]+cfcmovbl %edx,%eax
+[ ]*[a-f0-9]+:[ ]*62 f4 7c 0c 42 d0[ ]+cfcmovbl.s %edx,%eax
+[ ]*[a-f0-9]+:[ ]*67 62 f4 7c 08 42 02[ ]+cfcmovbl \(%edx\),%eax
+[ ]*[a-f0-9]+:[ ]*67 62 f4 7c 0c 42 02[ ]+cfcmovbl %eax,\(%edx\)
+
+#pass
diff --git a/gas/testsuite/gas/i386/x86-64-pseudos-apx.s b/gas/testsuite/gas/i386/x86-64-pseudos-apx.s
new file mode 100644
index 0000000..a78bb1d
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-pseudos-apx.s
@@ -0,0 +1,45 @@
+# Check 64bit APX instructions with pseudo prefixes for encoding
+
+.text
+_start:
+ #APX REX2
+ .irp m, mov, adc, add, and, cmp, or, sbb, sub, test, xor, xchg
+ \m %ecx, %r31d
+ {load} \m %ecx, %r31d
+ {store} \m %ecx, %r31d
+ {load} \m (%ecx), %r31d
+ {store} \m %r31d, (%ecx)
+ .endr
+
+ movaps (%r31),%xmm2
+ {load} movaps (%r31),%xmm2
+ {store} movaps %xmm2, (%r31)
+
+ #APX EVEX promoted from legacy
+ .irp m, adc, add, and, or, sbb, sub, xor
+ {evex} \m %ecx, %r31d
+ {evex} {load} \m %ecx, %r31d
+ {evex} {store} \m %ecx, %r31d
+ {evex} {load} \m (%ecx), %r31d
+ {evex} {store} \m %r31d, (%ecx)
+ .endr
+
+ #APX NDD
+ .irp m, adc, add, and, or, sbb, sub, xor
+ \m %ecx, %r31d, %eax
+ {load} \m %ecx, %r31d, %eax
+ {store} \m %ecx, %r31d, %eax
+ {load} \m %r31,(%r8),%r16
+ {load} \m (%r8),%r31,%r16
+ {store} \m %r31,(%r8),%r16
+ {store} \m (%r8),%r31,%r16
+ .endr
+
+ #APX News.
+ .irp m, cfcmovb
+ \m %edx, %eax
+ {load} \m %edx, %eax
+ {store} \m %edx, %eax
+ {load} \m (%edx), %eax
+ {store} \m %eax, (%edx)
+ .endr
diff --git a/gas/testsuite/gas/i386/x86-64.exp b/gas/testsuite/gas/i386/x86-64.exp
index bd1aa54..7562291 100644
--- a/gas/testsuite/gas/i386/x86-64.exp
+++ b/gas/testsuite/gas/i386/x86-64.exp
@@ -559,6 +559,7 @@ run_dump_test "x86-64-cet-intel"
run_list_test "x86-64-cet-ibt-inval"
run_list_test "x86-64-cet-shstk-inval"
run_dump_test "x86-64-pseudos"
+run_dump_test "x86-64-pseudos-apx"
run_list_test "x86-64-pseudos-bad"
run_list_test "x86-64-inval-pseudo" "-al"
run_dump_test "x86-64-notrack"