diff options
author | Uros Bizjak <ubizjak@gmail.com> | 2023-03-16 20:41:55 +0100 |
---|---|---|
committer | Uros Bizjak <ubizjak@gmail.com> | 2023-03-16 20:42:44 +0100 |
commit | acff89c7d7b3af3553a4fb878b2fd767dd27d830 (patch) | |
tree | fa59847053d5d252c6244e86d566febf4a3b3631 | |
parent | 31cdfdef04701e10cffcec4578b2337684f0e4bc (diff) | |
download | gcc-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.cc | 14 |
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; |