aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2020-04-14 06:00:21 -0700
committerH.J. Lu <hjl.tools@gmail.com>2020-04-14 06:00:32 -0700
commit438ffa2a8fac925b1bee8862fa15bc5380c0dffd (patch)
tree1045934f0c762478b0854b55a8dc7cb6010c3fbc /gcc/config
parentefd5bd4dfe0fa53858769c0195bb7d9352ad5a95 (diff)
downloadgcc-438ffa2a8fac925b1bee8862fa15bc5380c0dffd.zip
gcc-438ffa2a8fac925b1bee8862fa15bc5380c0dffd.tar.gz
gcc-438ffa2a8fac925b1bee8862fa15bc5380c0dffd.tar.bz2
i386: Remove mode size check in ix86_get_ssemov
Even though ix86_hard_regno_mode_ok doesn't allow xmm16-xmm31 nor ymm16-ymm31 in 128/256 bit modes when AVX512VL is disabled, LRA can still generate reg to reg moves with xmm16-xmm31 and ymm16-ymm31 in 128/256 bit modes. Remove mode size check in ix86_get_ssemov. gcc/ PR target/94561 * config/i386/i386.c (ix86_get_ssemov): Remove mode size check. gcc/testsuite/ PR target/94561 * gcc.target/i386/pr94561.c: New test.
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/i386/i386.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 5e87cd4..1a9823e 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -4969,12 +4969,12 @@ ix86_get_ssemov (rtx *operands, unsigned size,
&& !TARGET_AVX512VL
&& GET_MODE_SIZE (mode) < 64)
{
- /* NB: Since ix86_hard_regno_mode_ok only allows xmm16-xmm31 or
- ymm16-ymm31 in 128/256 bit modes when AVX512VL is enabled,
- we get here only for xmm16-xmm31 or ymm16-ymm31 in 32/64 bit
+ /* NB: Even though ix86_hard_regno_mode_ok doesn't allow
+ xmm16-xmm31 nor ymm16-ymm31 in 128/256 bit modes when
+ AVX512VL is disabled, LRA can still generate reg to
+ reg moves with xmm16-xmm31 and ymm16-ymm31 in 128/256 bit
modes. */
- if (GET_MODE_SIZE (mode) >= 16
- || memory_operand (operands[0], mode)
+ if (memory_operand (operands[0], mode)
|| memory_operand (operands[1], mode))
gcc_unreachable ();
size = 64;