aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2023-03-16 20:41:55 +0100
committerUros Bizjak <ubizjak@gmail.com>2023-03-16 20:42:44 +0100
commitacff89c7d7b3af3553a4fb878b2fd767dd27d830 (patch)
treefa59847053d5d252c6244e86d566febf4a3b3631
parent31cdfdef04701e10cffcec4578b2337684f0e4bc (diff)
downloadgcc-acff89c7d7b3af3553a4fb878b2fd767dd27d830.zip
gcc-acff89c7d7b3af3553a4fb878b2fd767dd27d830.tar.gz
gcc-acff89c7d7b3af3553a4fb878b2fd767dd27d830.tar.bz2
i386: Robustify vec perm blend functions for TARGET_MMX_WITH_SSE
8-byte modes should be processed only for TARGET_MMX_WITH_SSE. gcc/ChangeLog: * config/i386/i386-expand.cc (expand_vec_perm_pblendv): Handle 8-byte modes only with TARGET_MMX_WITH_SSE. (expand_vec_perm_2perm_pblendv): Ditto.
-rw-r--r--gcc/config/i386/i386-expand.cc14
1 files changed, 8 insertions, 6 deletions
diff --git a/gcc/config/i386/i386-expand.cc b/gcc/config/i386/i386-expand.cc
index 1545d43..c1300dc 100644
--- a/gcc/config/i386/i386-expand.cc
+++ b/gcc/config/i386/i386-expand.cc
@@ -20288,9 +20288,10 @@ expand_vec_perm_pblendv (struct expand_vec_perm_d *d)
;
else if (TARGET_AVX && (vmode == V4DFmode || vmode == V8SFmode))
;
- else if (TARGET_SSE4_1 && (GET_MODE_SIZE (vmode) == 4
- || GET_MODE_SIZE (vmode) == 8
- || GET_MODE_SIZE (vmode) == 16))
+ else if (TARGET_SSE4_1
+ && (GET_MODE_SIZE (vmode) == 16
+ || (TARGET_MMX_WITH_SSE && GET_MODE_SIZE (vmode) == 8)
+ || GET_MODE_SIZE (vmode) == 4))
;
else
return false;
@@ -21154,9 +21155,10 @@ expand_vec_perm_2perm_pblendv (struct expand_vec_perm_d *d, bool two_insn)
;
else if (TARGET_AVX && (vmode == V4DFmode || vmode == V8SFmode))
;
- else if (TARGET_SSE4_1 && (GET_MODE_SIZE (vmode) == 16
- || GET_MODE_SIZE (vmode) == 8
- || GET_MODE_SIZE (vmode) == 4))
+ else if (TARGET_SSE4_1
+ && (GET_MODE_SIZE (vmode) == 16
+ || (TARGET_MMX_WITH_SSE && GET_MODE_SIZE (vmode) == 8)
+ || GET_MODE_SIZE (vmode) == 4))
;
else
return false;