i386: Fix up vpternlogq last operand of *andnot<mode>3 for -masm=intel [PR124367]

The immediate operand 0x44 in this insn was incorrectly emitted as
$0x44 even in -masm=intel syntax.

Fixed thusly, bootstrapped/regtested on x86_64-linux and i686-linux,
approved by Uros in the PR, committed to trunk.

2026-03-05  Jakub Jelinek  <jakub@redhat.com>

	PR target/124367
	* config/i386/sse.md (*andnot<mode>3): Use 0x44 rather than $0x44
	for -masm=intel.

	* gcc.target/i386/avx512vl-pr124367.c: New test.
This commit is contained in:
Jakub Jelinek
2026-03-05 09:39:36 +01:00
committed by Jakub Jelinek
parent 860da84158
commit d828a370db
2 changed files with 16 additions and 2 deletions
+2 -2
View File
@@ -18897,9 +18897,9 @@
tmp = "pternlog";
ssesuffix = "<ternlogsuffix>";
if (which_alternative != 4 || TARGET_AVX512VL)
ops = "v%s%s\t{$0x44, %%1, %%2, %%0|%%0, %%2, %%1, $0x44}";
ops = "v%s%s\t{$0x44, %%1, %%2, %%0|%%0, %%2, %%1, 0x44}";
else
ops = "v%s%s\t{$0x44, %%g1, %%g2, %%g0|%%g0, %%g2, %%g1, $0x44}";
ops = "v%s%s\t{$0x44, %%g1, %%g2, %%g0|%%g0, %%g2, %%g1, 0x44}";
break;
default:
gcc_unreachable ();
@@ -0,0 +1,14 @@
/* PR target/124367 */
/* { dg-do assemble { target { { int128 && avx512vl } && masm_intel } } } */
/* { dg-options "-O -mavx512vl -masm=intel" } */
union {
__int128 a;
__attribute__((__vector_size__(sizeof (__int128)))) long long b;
} u;
void
foo ()
{
u.b ^= 0 > u.a | u.b;
}