Ping! Please review.
Thanks & Regards Jeevitha On 19/06/24 6:12 pm, jeevitha wrote: > Ping! > > Please review. Are there any more changes required? > > Thanks & Regards > Jeevitha > > On 21/05/24 10:28 am, jeevitha wrote: >> Ping! >> >> please review. >> >> Thanks & Regards >> Jeevitha >> >> >> On 17/04/24 2:44 pm, jeevitha wrote: >>> Ping! >>> >>> I've incorporated all the suggested changes. Please review. >>> >>> Thanks & Regards >>> Jeevitha >>> >>> On 21/03/24 6:21 pm, jeevitha wrote: >>>> Hi All, >>>> >>>> The following patch has been bootstrapped and regtested on >>>> powerpc64le-linux. >>>> >>>> PTImode assists in generating even/odd register pairs on 128 bits. When >>>> the user >>>> specifies PTImode as an attribute, it breaks because there is no internal >>>> type >>>> to handle this mode. To address this, we have created a tree node with >>>> dummy type >>>> to handle PTImode. We are not documenting this dummy type since users are >>>> not >>>> allowed to use this type externally. >>>> >>>> 2024-03-21 Jeevitha Palanisamy <jeevi...@linux.ibm.com> >>>> >>>> gcc/ >>>> PR target/110411 >>>> * config/rs6000/rs6000.h (enum rs6000_builtin_type_index): Add >>>> RS6000_BTI_INTPTI. >>>> * config/rs6000/rs6000-builtin.cc (rs6000_init_builtins): Add node >>>> for PTImode type. >>>> >>>> gcc/testsuite/ >>>> PR target/106895 >>>> * gcc.target/powerpc/pr106895.c: New testcase. >>>> >>>> diff --git a/gcc/config/rs6000/rs6000-builtin.cc >>>> b/gcc/config/rs6000/rs6000-builtin.cc >>>> index 6698274031b..f553c72779e 100644 >>>> --- a/gcc/config/rs6000/rs6000-builtin.cc >>>> +++ b/gcc/config/rs6000/rs6000-builtin.cc >>>> @@ -756,6 +756,15 @@ rs6000_init_builtins (void) >>>> else >>>> ieee128_float_type_node = NULL_TREE; >>>> >>>> + /* PTImode to get even/odd register pairs. */ >>>> + intPTI_type_internal_node = make_node(INTEGER_TYPE); >>>> + TYPE_PRECISION (intPTI_type_internal_node) = GET_MODE_BITSIZE (PTImode); >>>> + layout_type (intPTI_type_internal_node); >>>> + SET_TYPE_MODE (intPTI_type_internal_node, PTImode); >>>> + t = build_qualified_type (intPTI_type_internal_node, TYPE_QUAL_CONST); >>>> + lang_hooks.types.register_builtin_type (intPTI_type_internal_node, >>>> + "__dummypti"); >>>> + >>>> /* Vector pair and vector quad support. */ >>>> vector_pair_type_node = make_node (OPAQUE_TYPE); >>>> SET_TYPE_MODE (vector_pair_type_node, OOmode); >>>> diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h >>>> index 68bc45d65ba..b6078077b20 100644 >>>> --- a/gcc/config/rs6000/rs6000.h >>>> +++ b/gcc/config/rs6000/rs6000.h >>>> @@ -2302,6 +2302,7 @@ enum rs6000_builtin_type_index >>>> RS6000_BTI_ptr_vector_quad, >>>> RS6000_BTI_ptr_long_long, >>>> RS6000_BTI_ptr_long_long_unsigned, >>>> + RS6000_BTI_INTPTI, >>>> RS6000_BTI_MAX >>>> }; >>>> >>>> @@ -2346,6 +2347,7 @@ enum rs6000_builtin_type_index >>>> #define uintDI_type_internal_node >>>> (rs6000_builtin_types[RS6000_BTI_UINTDI]) >>>> #define intTI_type_internal_node >>>> (rs6000_builtin_types[RS6000_BTI_INTTI]) >>>> #define uintTI_type_internal_node >>>> (rs6000_builtin_types[RS6000_BTI_UINTTI]) >>>> +#define intPTI_type_internal_node >>>> (rs6000_builtin_types[RS6000_BTI_INTPTI]) >>>> #define float_type_internal_node >>>> (rs6000_builtin_types[RS6000_BTI_float]) >>>> #define double_type_internal_node >>>> (rs6000_builtin_types[RS6000_BTI_double]) >>>> #define long_double_type_internal_node >>>> (rs6000_builtin_types[RS6000_BTI_long_double]) >>>> diff --git a/gcc/testsuite/gcc.target/powerpc/pr106895.c >>>> b/gcc/testsuite/gcc.target/powerpc/pr106895.c >>>> new file mode 100644 >>>> index 00000000000..56547b7fa9d >>>> --- /dev/null >>>> +++ b/gcc/testsuite/gcc.target/powerpc/pr106895.c >>>> @@ -0,0 +1,15 @@ >>>> +/* PR target/106895 */ >>>> +/* { dg-require-effective-target int128 } */ >>>> +/* { dg-options "-O2" } */ >>>> + >>>> +/* Verify the following generates even/odd register pairs. */ >>>> + >>>> +typedef __int128 pti __attribute__((mode(PTI))); >>>> + >>>> +void >>>> +set128 (pti val, pti *mem) >>>> +{ >>>> + asm("stq %1,%0" : "=m"(*mem) : "r"(val)); >>>> +} >>>> + >>>> +/* { dg-final { scan-assembler "stq \[123\]?\[02468\]" } } */ >>>> >>>>