mirror of
https://github.com/gcc-mirror/gcc.git
synced 2026-05-06 14:59:39 +02:00
i386: Fix operand order for @wrss<mode> and @wruss<mode> [PR124366]
These two insns were using the same operand order for both -masm=att and -masm=intel, which is ok if using the same operand for both, but not when they are different. 2026-03-05 Jakub Jelinek <jakub@redhat.com> PR target/124366 * config/i386/i386.md (@wrss<mode>, @wruss<mode>): Swap operand order for -masm=intel. * gcc.target/i386/cet-pr124366.c: New test.
This commit is contained in:
committed by
Jakub Jelinek
parent
f8152db386
commit
860da84158
@@ -30267,7 +30267,7 @@
|
||||
(match_operand:SWI48 1 "memory_operand" "m")]
|
||||
UNSPECV_WRSS)]
|
||||
"TARGET_SHSTK"
|
||||
"wrss<mskmodesuffix>\t%0, %1"
|
||||
"wrss<mskmodesuffix>\t{%0, %1|%1, %0}"
|
||||
[(set_attr "length" "3")
|
||||
(set_attr "type" "other")])
|
||||
|
||||
@@ -30276,7 +30276,7 @@
|
||||
(match_operand:SWI48 1 "memory_operand" "m")]
|
||||
UNSPECV_WRUSS)]
|
||||
"TARGET_SHSTK"
|
||||
"wruss<mskmodesuffix>\t%0, %1"
|
||||
"wruss<mskmodesuffix>\t{%0, %1|%1, %0}"
|
||||
[(set_attr "length" "4")
|
||||
(set_attr "type" "other")])
|
||||
|
||||
|
||||
31
gcc/testsuite/gcc.target/i386/cet-pr124366.c
Normal file
31
gcc/testsuite/gcc.target/i386/cet-pr124366.c
Normal file
@@ -0,0 +1,31 @@
|
||||
/* PR target/124366 */
|
||||
/* { dg-do assemble { target { cet && masm_intel } } } */
|
||||
/* { dg-options "-O2 -mshstk -masm=intel" } */
|
||||
|
||||
#include <x86intrin.h>
|
||||
|
||||
void
|
||||
wrssd (unsigned int x, void *y)
|
||||
{
|
||||
_wrssd (x, y);
|
||||
}
|
||||
|
||||
void
|
||||
wrussd (unsigned int x, void *y)
|
||||
{
|
||||
_wrussd (x, y);
|
||||
}
|
||||
|
||||
#ifdef __x86_64__
|
||||
void
|
||||
wrssq (unsigned long long x, void *y)
|
||||
{
|
||||
_wrssq (x, y);
|
||||
}
|
||||
|
||||
void
|
||||
wrussq (unsigned long long x, void *y)
|
||||
{
|
||||
_wrussq (x, y);
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user