]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
x86: Don't allow 2 volatile memory references
authorH.J. Lu <hjl.tools@gmail.com>
Mon, 8 Dec 2025 05:29:59 +0000 (13:29 +0800)
committerH.J. Lu <hjl.tools@gmail.com>
Mon, 8 Dec 2025 07:17:40 +0000 (15:17 +0800)
Don't allow 2 volatile memory references in *<avx512>_cmp<mode>3_dup_op
so that gcc.target/i386/avx2-vpcmpeqq-1.c will generate 2 loads when
-march=cascadelake is used.

PR target/122343
* config/i386/sse.md (*<avx512>_cmp<mode>3_dup_op): Don't allow
2 volatile memory references.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
gcc/config/i386/sse.md

index 0be898c789ededfe5b917381273e2252d4614238..fb79b2e67df3740dd35bf309c6219520b9910009 100644 (file)
           (match_operand:SI 3 "<cmp_imm_predicate>")]
          UNSPEC_PCMP_ITER))]
   "TARGET_AVX512F && ix86_pre_reload_split ()
-   && rtx_equal_p (operands[1], operands[2])"
+   && rtx_equal_p (operands[1], operands[2])
+   && (!MEM_P (operands[1]) || !MEM_VOLATILE_P (operands[1]))"
   "#"
   "&& 1"
   [(set (match_dup 0) (match_dup 4))]