From 11a322db5c8bc23009e97af30180d6b14d86dbd3 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Wed, 18 Jul 2018 05:33:36 -0700 Subject: x86: Split vcvtps2{,u}qq and vcvttps2{,u}qq After commit 1b54b8d7e4fc8055f9220a5287e8a94d8a65a88d Author: Jan Beulich Date: Mon Dec 18 09:36:14 2017 +0100 x86: fold RegXMM/RegYMM/RegZMM into RegSIMD ... qualified by their respective sizes, allowing to drop FirstXmm0 at the same time. folded RegXMM, RegYMM and RegZMM into RegSIMD, it's no longer impossible to distinguish if Xmmword can represent a memory reference when operand specification contains SIMD register. For example, template operands specification like these RegXMM|...|Xmmword|... and RegXMM|... The Xmmword bitfield is always set by RegXMM which is represented by "RegSIMD|Xmmword". This patch splits each of vcvtps2qq, vcvtps2uqq, vcvttps2qq and vcvttps2uqq into 2 templates: one template only has RegXMM source operand and the other only has mempry source operand. gas/ PR gas/23418 * testsuite/gas/i386/xmmword.s: Add tests for vcvtps2qq, vcvtps2uqq, vcvttps2qq and vcvttps2uqq. * testsuite/gas/i386/xmmword.l: Updated. opcodes/ PR gas/23418 * i386-opc.h (Byte): Update comments. (Word): Likewise. (Dword): Likewise. (Fword): Likewise. (Qword): Likewise. (Tbyte): Likewise. (Xmmword): Likewise. (Ymmword): Likewise. (Zmmword): Likewise. * i386-opc.tbl: Split vcvtps2qq, vcvtps2uqq, vcvttps2qq and vcvttps2uqq. * i386-tbl.h: Regenerated. --- gas/ChangeLog | 7 +++++++ gas/testsuite/gas/i386/xmmword.l | 4 ++++ gas/testsuite/gas/i386/xmmword.s | 5 +++++ 3 files changed, 16 insertions(+) (limited to 'gas') diff --git a/gas/ChangeLog b/gas/ChangeLog index 7e5f27d..3106096 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,10 @@ +2018-07-18 H.J. Lu + + PR gas/23418 + * testsuite/gas/i386/xmmword.s: Add tests for vcvtps2qq, + vcvtps2uqq, vcvttps2qq and vcvttps2uqq. + * testsuite/gas/i386/xmmword.l: Updated. + 2018-07-16 Jan Beulich * config/tc-i386.c (match_reg_size): Split second parameter diff --git a/gas/testsuite/gas/i386/xmmword.l b/gas/testsuite/gas/i386/xmmword.l index ce3af8d..7d25cb3 100644 --- a/gas/testsuite/gas/i386/xmmword.l +++ b/gas/testsuite/gas/i386/xmmword.l @@ -99,3 +99,7 @@ .*:127: Error: .* `vpmovzxwq' .*:128: Error: .* `vpmovzxwq' .*:129: Error: .* `vpmovzxwq' +.*:131: Error: .* `vcvtps2qq' +.*:132: Error: .* `vcvtps2uqq' +.*:133: Error: .* `vcvttps2qq' +.*:134: Error: .* `vcvttps2uqq' diff --git a/gas/testsuite/gas/i386/xmmword.s b/gas/testsuite/gas/i386/xmmword.s index 47d2d8d..ffe7aca 100644 --- a/gas/testsuite/gas/i386/xmmword.s +++ b/gas/testsuite/gas/i386/xmmword.s @@ -127,3 +127,8 @@ xmmword: vpmovzxwq xmm0{k7}, xmmword ptr [eax] vpmovzxwq ymm0, xmmword ptr [eax] vpmovzxwq ymm0{k7}, xmmword ptr [eax] + + vcvtps2qq xmm0, xmmword ptr [rax] + vcvtps2uqq xmm0, xmmword ptr [rax] + vcvttps2qq xmm0, xmmword ptr [rax] + vcvttps2uqq xmm0, xmmword ptr [rax] -- cgit v1.1