mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-15 14:01:04 +08:00
Mark IFN_COMPLEX_MUL as commutative
gcc/ * internal-fn.c (commutative_binary_fn_p): Handle IFN_COMPLEX_MUL. gcc/testsuite/ * gcc.target/aarch64/sve/complex_mul_1.c: New test.
This commit is contained in:
parent
e9fff24cd2
commit
71207246b0
@ -3831,6 +3831,7 @@ commutative_binary_fn_p (internal_fn fn)
|
||||
case IFN_MULHRS:
|
||||
case IFN_FMIN:
|
||||
case IFN_FMAX:
|
||||
case IFN_COMPLEX_MUL:
|
||||
return true;
|
||||
|
||||
default:
|
||||
|
16
gcc/testsuite/gcc.target/aarch64/sve/complex_mul_1.c
Normal file
16
gcc/testsuite/gcc.target/aarch64/sve/complex_mul_1.c
Normal file
@ -0,0 +1,16 @@
|
||||
/* { dg-options "-O2 -fgimple -fdump-tree-optimized" } */
|
||||
|
||||
void __GIMPLE
|
||||
foo (__SVFloat64_t x, __SVFloat64_t y, __SVFloat64_t *res1,
|
||||
__SVFloat64_t *res2)
|
||||
{
|
||||
__SVFloat64_t a1;
|
||||
__SVFloat64_t a2;
|
||||
|
||||
a1 = .COMPLEX_MUL (x, y);
|
||||
a2 = .COMPLEX_MUL (y, x);
|
||||
__MEM<__SVFloat64_t> (res1) = a1;
|
||||
__MEM<__SVFloat64_t> (res2) = a2;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times {\.COMPLEX_MUL} 1 "optimized" } } */
|
Loading…
x
Reference in New Issue
Block a user