Hi!
Before r13-1355 PR106095 fix, this pattern used to be
{
if (GET_MODE_SIZE (GET_MODE_INNER (<MODE>mode)) == 4)
return "vpmov<trunsuffix><pmov_suff_4>\t{%1, %0%{%2%}|%0%{%2%}, %t1}";
return "vpmov<trunsuffix><pmov_suff_4>\t{%1, %0%{%2%}|%0%{%2%}, %g1}";
}
so depending on the iterator it used t vs. g override in -masm=intel.
That was incorrect and since then both branches are the same, so there
is no point to test anything, we can just use the same pattern
unconditionally.
Bootstrapped/regtested on x86_64-linux and i686-linux, committed to
trunk as obvious.
2026-06-30 Jakub Jelinek <[email protected]>
PR target/126030
* config/i386/sse.md (avx512vl_<code><mode>v4hi2_mask_store_1):
Use a single output pattern instead of conditionally returning
the same string based on a condition.
--- gcc/config/i386/sse.md.jj 2026-06-25 10:03:50.784436810 +0200
+++ gcc/config/i386/sse.md 2026-06-29 18:23:47.017042067 +0200
@@ -16204,11 +16204,7 @@ (define_insn "avx512vl_<code><mode>v4hi2
(match_dup 0)
(match_operand:QI 2 "register_operand" "Yk")))]
"TARGET_AVX512VL"
-{
- if (GET_MODE_SIZE (GET_MODE_INNER (<MODE>mode)) == 4)
- return "vpmov<trunsuffix><pmov_suff_4>\t{%1, %0%{%2%}|%0%{%2%}, %1}";
- return "vpmov<trunsuffix><pmov_suff_4>\t{%1, %0%{%2%}|%0%{%2%}, %1}";
-}
+ "vpmov<trunsuffix><pmov_suff_4>\t{%1, %0%{%2%}|%0%{%2%}, %1}"
[(set_attr "type" "ssemov")
(set_attr "memory" "store")
(set_attr "prefix" "evex")
Jakub