From: Andi Kleen Date: Wed, 13 May 2026 23:40:16 +0000 (-0700) Subject: PR124316: Fix ptwrite assembler mode X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=33844d9e51258ea3dfe2c24448e5e00ed4d0762e;p=thirdparty%2Fgcc.git PR124316: Fix ptwrite assembler mode Add explicit assembler mode for cases when the argument is not unambigious. This avoids cases where a user specified 64bit ptwrite ends up being 32bit due to an ambigious argument. PR target/124316 gcc/ChangeLog: * config/i386/i386.md (ptwrite): Add explicit mode to instruction. gcc/testsuite/ChangeLog: * gcc.target/i386/pr124316.c: New test. --- diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index a486ea3d79d..fa84da26aa8 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -30303,7 +30303,7 @@ [(unspec_volatile [(match_operand:SWI48 0 "nonimmediate_operand" "rm")] UNSPECV_PTWRITE)] "TARGET_PTWRITE" - "ptwrite\t%0" + "ptwrite\t%0" [(set_attr "type" "other") (set_attr "prefix_0f" "1") (set_attr "prefix_rep" "1")]) diff --git a/gcc/testsuite/gcc.target/i386/pr124316.c b/gcc/testsuite/gcc.target/i386/pr124316.c new file mode 100644 index 00000000000..c1959611a92 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr124316.c @@ -0,0 +1,14 @@ +/* { dg-do compile { target { ! ia32 } } } */ +/* { dg-options "-mptwrite" } */ +#include + +unsigned long long ull; +unsigned u; +void foo() +{ + _ptwrite64(ull); + _ptwrite32(u); +} + +/* { dg-final { scan-assembler-times "ptwritel" 1 } } */ +/* { dg-final { scan-assembler-times "ptwriteq" 1 } } */