diff options
author | Jan Beulich <jbeulich@suse.com> | 2021-07-23 08:03:21 +0200 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2021-07-23 08:03:21 +0200 |
commit | 0e4cc77316732e67cff33e493eff2aa7feed4587 (patch) | |
tree | e1e3a9830a91012c0b7a49a4ed6610793e34bcb3 /gas | |
parent | 9234efeee5f47807f0e08769983ac439d5ffefde (diff) | |
download | gdb-0e4cc77316732e67cff33e493eff2aa7feed4587.zip gdb-0e4cc77316732e67cff33e493eff2aa7feed4587.tar.gz gdb-0e4cc77316732e67cff33e493eff2aa7feed4587.tar.bz2 |
x86: express unduly set rounding control bits in disassembly
While EVEX.L'L are indeed ignored when EVEX.b stands for just SAE,
EVEX.b itself is not ignored when an insn permits neither rounding
control nor SAE.
While changing this aspect of EVEX.b handling, also alter unduly set
embedded broadcast: Don't call BadOp(), screwing up subsequent
disassembly, but emit "{bad}" instead.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/testsuite/gas/i386/avx512f-nondef.d | 9 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/avx512f-nondef.s | 12 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/evex.d | 8 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-avx512f-nondef.d | 9 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-avx512f-nondef.s | 12 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-evex.d | 4 |
6 files changed, 28 insertions, 26 deletions
diff --git a/gas/testsuite/gas/i386/avx512f-nondef.d b/gas/testsuite/gas/i386/avx512f-nondef.d index f19edce..07ffe60 100644 --- a/gas/testsuite/gas/i386/avx512f-nondef.d +++ b/gas/testsuite/gas/i386/avx512f-nondef.d @@ -10,12 +10,11 @@ Disassembly of section .text: 0+ <.text>: [ ]*[a-f0-9]+: 62 f3 d5 1f 0b f4 7b vrndscalesd \$0x7b,\{sae\},%xmm4,%xmm5,%xmm6\{%k7\} [ ]*[a-f0-9]+: 62 f3 d5 5f 0b f4 7b vrndscalesd \$0x7b,\{sae\},%xmm4,%xmm5,%xmm6\{%k7\} -[ ]*[a-f0-9]+: 62 f2 55 1f 3b f4 vpminud %zmm4,%zmm5,%zmm6\{%k7\} -[ ]*[a-f0-9]+: 62 c2 55 1f 3b f4 vpminud %zmm4,%zmm5,%zmm6\{%k7\} +[ ]*[a-f0-9]+: 62 f2 55 4f 3b f4 vpminud %zmm4,%zmm5,%zmm6\{%k7\} +[ ]*[a-f0-9]+: 62 c2 55 4f 3b f4 vpminud %zmm4,%zmm5,%zmm6\{%k7\} +[ ]*[a-f0-9]+: 62 f2 55 1f 3b f4 vpminud \{rn-bad\},%zmm4,%zmm5,%zmm6\{%k7\} [ ]*[a-f0-9]+: 62 f2 7e 48 31 72 7f vpmovdb %zmm6,0x7f0\(%edx\) -[ ]*[a-f0-9]+: 62 vpmovdb %zmm6,\(bad\) -[ ]*[a-f0-9]+: f2 7e 58 bnd jle (0x7d|7d <.text\+0x7d>) -[ ]*[a-f0-9]+: 31 72 7f xor %esi,0x7f\(%edx\) +[ ]*[a-f0-9]+: 62 f2 7e 58 31 72 7f vpmovdb %zmm6,0x7f0\(%edx\)\{bad\} [ ]*[a-f0-9]+: 62 f1 7c 88 58 \(bad\) [ ]*[a-f0-9]+: c3 ret * [ ]*[a-f0-9]+: 62 f2 7d 4f 92 01 vgatherdps \(bad\),%zmm0\{%k7\} diff --git a/gas/testsuite/gas/i386/avx512f-nondef.s b/gas/testsuite/gas/i386/avx512f-nondef.s index 676c4e0..96d0466 100644 --- a/gas/testsuite/gas/i386/avx512f-nondef.s +++ b/gas/testsuite/gas/i386/avx512f-nondef.s @@ -5,13 +5,15 @@ .byte 0x62, 0xf3, 0xd5, 0x1f, 0x0b, 0xf4, 0x7b # vrndscalesd {sae}, $123, %xmm4, %xmm5, %xmm6{%k7} # with not-null RC .byte 0x62, 0xf3, 0xd5, 0x5f, 0x0b, 0xf4, 0x7b -# vpminud %zmm4, %zmm5, %zmm6{%k7} # with 111 REX +# vpminud %zmm4, %zmm5, %zmm6{%k7} # with 11 EVEX.{B,R'} +.byte 0x62, 0xf2, 0x55, 0x4f, 0x3b, 0xf4 +# vpminud %zmm4, %zmm5, %zmm6{%k7} # with not-11 EVEX.{B,R'} +.byte 0x62, 0xc2, 0x55, 0x4f, 0x3b, 0xf4 +# vpminud %zmm4, %zmm5, %zmm6{%k7} # with set EVEX.b bit .byte 0x62, 0xf2, 0x55, 0x1f, 0x3b, 0xf4 -# vpminud %zmm4, %zmm5, %zmm6{%k7} # with not-111 REX -.byte 0x62, 0xc2, 0x55, 0x1f, 0x3b, 0xf4 -# vpmovdb %zmm6, 2032(%rdx) # with unset EVEX.B bit +# vpmovdb %zmm6, 2032(%rdx) # with unset EVEX.b bit .byte 0x62, 0xf2, 0x7e, 0x48, 0x31, 0x72, 0x7f -# vpmovdb %zmm6, 2032(%rdx) # with set EVEX.B bit - we should get (bad) operand +# vpmovdb %zmm6, 2032(%rdx) # with set EVEX.b bit - we should get (bad) operand .byte 0x62, 0xf2, 0x7e, 0x58, 0x31, 0x72, 0x7f # vaddps xmm0, xmm0, xmm3 # with EVEX.z set .byte 0x62, 0xf1, 0x7c, 0x88, 0x58, 0xc3 diff --git a/gas/testsuite/gas/i386/evex.d b/gas/testsuite/gas/i386/evex.d index 367b2eb..4afcc6d 100644 --- a/gas/testsuite/gas/i386/evex.d +++ b/gas/testsuite/gas/i386/evex.d @@ -8,14 +8,14 @@ Disassembly of section .text: 0+ <_start>: +[a-f0-9]+: 62 f1 d6 38 2a f0 vcvtsi2ssl %eax,\{rd-sae\},%xmm5,%xmm6 - +[a-f0-9]+: 62 f1 57 38 2a f0 vcvtsi2sdl %eax,\(bad\),%xmm5,%xmm6 - +[a-f0-9]+: 62 f1 d7 38 2a f0 vcvtsi2sdl %eax,\(bad\),%xmm5,%xmm6 + +[a-f0-9]+: 62 f1 57 38 2a f0 vcvtsi2sdl %eax,\{rd-bad\},%xmm5,%xmm6 + +[a-f0-9]+: 62 f1 d7 38 2a f0 vcvtsi2sdl %eax,\{rd-bad\},%xmm5,%xmm6 +[a-f0-9]+: 62 f1 d6 08 7b f0 vcvtusi2ssl %eax,%xmm5,%xmm6 +[a-f0-9]+: 62 f1 57 08 7b f0 vcvtusi2sdl %eax,%xmm5,%xmm6 +[a-f0-9]+: 62 f1 d7 08 7b f0 vcvtusi2sdl %eax,%xmm5,%xmm6 +[a-f0-9]+: 62 f1 d6 38 7b f0 vcvtusi2ssl %eax,\{rd-sae\},%xmm5,%xmm6 - +[a-f0-9]+: 62 f1 57 38 7b f0 vcvtusi2sdl %eax,\(bad\),%xmm5,%xmm6 - +[a-f0-9]+: 62 f1 d7 38 7b f0 vcvtusi2sdl %eax,\(bad\),%xmm5,%xmm6 + +[a-f0-9]+: 62 f1 57 38 7b f0 vcvtusi2sdl %eax,\{rd-bad\},%xmm5,%xmm6 + +[a-f0-9]+: 62 f1 d7 38 7b f0 vcvtusi2sdl %eax,\{rd-bad\},%xmm5,%xmm6 +[a-f0-9]+: 62 e1 7e 08 2d c0 vcvtss2si %xmm0,%eax +[a-f0-9]+: 62 e1 7c 08 c2 c0 00 vcmpeqps %xmm0,%xmm0,%k0 #pass diff --git a/gas/testsuite/gas/i386/x86-64-avx512f-nondef.d b/gas/testsuite/gas/i386/x86-64-avx512f-nondef.d index bce2d80..e8ddfd5 100644 --- a/gas/testsuite/gas/i386/x86-64-avx512f-nondef.d +++ b/gas/testsuite/gas/i386/x86-64-avx512f-nondef.d @@ -10,10 +10,9 @@ Disassembly of section .text: 0+ <.text>: [ ]*[a-f0-9]+: 62 f3 d5 1f 0b f4 7b vrndscalesd \$0x7b,\{sae\},%xmm4,%xmm5,%xmm6\{%k7\} [ ]*[a-f0-9]+: 62 f3 d5 5f 0b f4 7b vrndscalesd \$0x7b,\{sae\},%xmm4,%xmm5,%xmm6\{%k7\} -[ ]*[a-f0-9]+: 62 f2 55 1f 3b f4 vpminud %zmm4,%zmm5,%zmm6\{%k7\} -[ ]*[a-f0-9]+: 62 c2 55 1f 3b f4 vpminud %zmm12,%zmm5,%zmm22\{%k7\} +[ ]*[a-f0-9]+: 62 f2 55 4f 3b f4 vpminud %zmm4,%zmm5,%zmm6\{%k7\} +[ ]*[a-f0-9]+: 62 c2 55 4f 3b f4 vpminud %zmm12,%zmm5,%zmm22\{%k7\} +[ ]*[a-f0-9]+: 62 f2 55 1f 3b f4 vpminud \{rn-bad\},%zmm4,%zmm5,%zmm6\{%k7\} [ ]*[a-f0-9]+: 62 f2 7e 48 31 72 7f vpmovdb %zmm6,0x7f0\(%rdx\) -[ ]*[a-f0-9]+: 62 vpmovdb %zmm6,\(bad\) -[ ]*[a-f0-9]+: f2 7e 58 bnd jle (0x7d|7d <.text\+0x7d>) -[ ]*[a-f0-9]+: 31 72 7f xor %esi,0x7f\(%rdx\) +[ ]*[a-f0-9]+: 62 f2 7e 58 31 72 7f vpmovdb %zmm6,0x7f0\(%rdx\)\{bad\} #pass diff --git a/gas/testsuite/gas/i386/x86-64-avx512f-nondef.s b/gas/testsuite/gas/i386/x86-64-avx512f-nondef.s index 255d2c9..952f2db 100644 --- a/gas/testsuite/gas/i386/x86-64-avx512f-nondef.s +++ b/gas/testsuite/gas/i386/x86-64-avx512f-nondef.s @@ -5,11 +5,13 @@ .byte 0x62, 0xf3, 0xd5, 0x1f, 0x0b, 0xf4, 0x7b # vrndscalesd {sae}, $123, %xmm4, %xmm5, %xmm6{%k7} # with not-null RC .byte 0x62, 0xf3, 0xd5, 0x5f, 0x0b, 0xf4, 0x7b -# vpminud %zmm4, %zmm5, %zmm6{%k7} # with 111 REX +# vpminud %zmm4, %zmm5, %zmm6{%k7} # with 11 EVEX.{B,R'} +.byte 0x62, 0xf2, 0x55, 0x4f, 0x3b, 0xf4 +# vpminud %zmm4, %zmm5, %zmm6{%k7} # with not-11 EVEX.{B,R'} +.byte 0x62, 0xc2, 0x55, 0x4f, 0x3b, 0xf4 +# vpminud %zmm4, %zmm5, %zmm6{%k7} # with set EVEX.b bit .byte 0x62, 0xf2, 0x55, 0x1f, 0x3b, 0xf4 -# vpminud %zmm4, %zmm5, %zmm6{%k7} # with not-111 REX -.byte 0x62, 0xc2, 0x55, 0x1f, 0x3b, 0xf4 -# vpmovdb %zmm6, 2032(%rdx) # with unset EVEX.B bit +# vpmovdb %zmm6, 2032(%rdx) # with unset EVEX.b bit .byte 0x62, 0xf2, 0x7e, 0x48, 0x31, 0x72, 0x7f -# vpmovdb %zmm6, 2032(%rdx) # with set EVEX.B bit - we should get (bad) operand +# vpmovdb %zmm6, 2032(%rdx) # with set EVEX.b bit - we should get (bad) operand .byte 0x62, 0xf2, 0x7e, 0x58, 0x31, 0x72, 0x7f diff --git a/gas/testsuite/gas/i386/x86-64-evex.d b/gas/testsuite/gas/i386/x86-64-evex.d index 3a7b48e..041747d 100644 --- a/gas/testsuite/gas/i386/x86-64-evex.d +++ b/gas/testsuite/gas/i386/x86-64-evex.d @@ -9,13 +9,13 @@ Disassembly of section .text: 0+ <_start>: +[a-f0-9]+: 62 f1 d6 38 2a f0 vcvtsi2ss %rax,\{rd-sae\},%xmm5,%xmm6 - +[a-f0-9]+: 62 f1 57 38 2a f0 vcvtsi2sd %eax,\(bad\),%xmm5,%xmm6 + +[a-f0-9]+: 62 f1 57 38 2a f0 vcvtsi2sd %eax,\{rd-bad\},%xmm5,%xmm6 +[a-f0-9]+: 62 f1 d7 38 2a f0 vcvtsi2sd %rax,\{rd-sae\},%xmm5,%xmm6 +[a-f0-9]+: 62 f1 d6 08 7b f0 vcvtusi2ss %rax,%xmm5,%xmm6 +[a-f0-9]+: 62 f1 57 08 7b f0 vcvtusi2sd %eax,%xmm5,%xmm6 +[a-f0-9]+: 62 f1 d7 08 7b f0 vcvtusi2sd %rax,%xmm5,%xmm6 +[a-f0-9]+: 62 f1 d6 38 7b f0 vcvtusi2ss %rax,\{rd-sae\},%xmm5,%xmm6 - +[a-f0-9]+: 62 f1 57 38 7b f0 vcvtusi2sd %eax,\(bad\),%xmm5,%xmm6 + +[a-f0-9]+: 62 f1 57 38 7b f0 vcvtusi2sd %eax,\{rd-bad\},%xmm5,%xmm6 +[a-f0-9]+: 62 f1 d7 38 7b f0 vcvtusi2sd %rax,\{rd-sae\},%xmm5,%xmm6 +[a-f0-9]+: 62 e1 7e 08 2d c0 vcvtss2si %xmm0,\(bad\) +[a-f0-9]+: 62 e1 7c 08 c2 c0 00 vcmpeqps %xmm0,%xmm0,\(bad\) |