mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-11-26 21:33:59 +08:00
rs6000: Use standard name {add,sub}v1ti3 for altivec_v{add,sub}uqm
This patch is to adjust define_insn altivec_v{add,sub}uqm with standard names, as the associated test case shows, w/o this patch, it ends up with scalar {add,subf}c/{add,subf}e, the standard names help to exploit v{add,sub}uqm. gcc/ChangeLog: * config/rs6000/altivec.md (altivec_vadduqm): Rename to ... (addv1ti3): ... this. (altivec_vsubuqm): Rename to ... (subv1ti3): ... this. * config/rs6000/rs6000-builtins.def (__builtin_altivec_vadduqm): Replace bif expander altivec_vadduqm with addv1ti3. (__builtin_altivec_vsubuqm): Replace bif expander altivec_vsubuqm with subv1ti3. gcc/testsuite/ChangeLog: * gcc.target/powerpc/p8vector-int128-3.c: New test.
This commit is contained in:
parent
ca96c1d1bc
commit
baf536754f
@ -4426,7 +4426,7 @@
|
||||
;; ISA 2.07 128-bit binary support to target the VMX/altivec registers without
|
||||
;; having to worry about the register allocator deciding GPRs are better.
|
||||
|
||||
(define_insn "altivec_vadduqm"
|
||||
(define_insn "addv1ti3"
|
||||
[(set (match_operand:V1TI 0 "register_operand" "=v")
|
||||
(plus:V1TI (match_operand:V1TI 1 "register_operand" "v")
|
||||
(match_operand:V1TI 2 "register_operand" "v")))]
|
||||
@ -4443,7 +4443,7 @@
|
||||
"vaddcuq %0,%1,%2"
|
||||
[(set_attr "type" "vecsimple")])
|
||||
|
||||
(define_insn "altivec_vsubuqm"
|
||||
(define_insn "subv1ti3"
|
||||
[(set (match_operand:V1TI 0 "register_operand" "=v")
|
||||
(minus:V1TI (match_operand:V1TI 1 "register_operand" "v")
|
||||
(match_operand:V1TI 2 "register_operand" "v")))]
|
||||
|
@ -2012,7 +2012,7 @@
|
||||
VADDUDM addv2di3 {}
|
||||
|
||||
const vsq __builtin_altivec_vadduqm (vsq, vsq);
|
||||
VADDUQM altivec_vadduqm {}
|
||||
VADDUQM addv1ti3 {}
|
||||
|
||||
const vsll __builtin_altivec_vbpermq (vsc, vsc);
|
||||
VBPERMQ altivec_vbpermq {}
|
||||
@ -2150,7 +2150,7 @@
|
||||
VSUBUDM subv2di3 {}
|
||||
|
||||
const vsq __builtin_altivec_vsubuqm (vsq, vsq);
|
||||
VSUBUQM altivec_vsubuqm {}
|
||||
VSUBUQM subv1ti3 {}
|
||||
|
||||
const vsll __builtin_altivec_vupkhsw (vsi);
|
||||
VUPKHSW altivec_vupkhsw {}
|
||||
|
23
gcc/testsuite/gcc.target/powerpc/p8vector-int128-3.c
Normal file
23
gcc/testsuite/gcc.target/powerpc/p8vector-int128-3.c
Normal file
@ -0,0 +1,23 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-mdejagnu-cpu=power8 -mvsx -O2" } */
|
||||
/* { dg-require-effective-target powerpc_vsx } */
|
||||
/* { dg-require-effective-target int128 } */
|
||||
|
||||
#ifndef TYPE
|
||||
#define TYPE vector __int128_t
|
||||
#endif
|
||||
|
||||
TYPE
|
||||
do_adduqm (TYPE p, TYPE q)
|
||||
{
|
||||
return p + q;
|
||||
}
|
||||
|
||||
TYPE
|
||||
do_subuqm (TYPE p, TYPE q)
|
||||
{
|
||||
return p - q;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler-times "vadduqm" 1 } } */
|
||||
/* { dg-final { scan-assembler-times "vsubuqm" 1 } } */
|
Loading…
Reference in New Issue
Block a user