> On 6 Oct 2025, at 16:26, Jennifer Schmitz <[email protected]> wrote:
>
> External email: Use caution opening links or attachments
>
>
>> On 2 Oct 2025, at 23:09, Richard Sandiford <[email protected]>
>> wrote:
>>
>> External email: Use caution opening links or attachments
>>
>>
>> Jennifer Schmitz <[email protected]> writes:
>>> diff --git a/gcc/config/aarch64/aarch64-sve-builtins.cc
>>> b/gcc/config/aarch64/aarch64-sve-builtins.cc
>>> index 22d75197188..5efc5ba3846 100644
>>> --- a/gcc/config/aarch64/aarch64-sve-builtins.cc
>>> +++ b/gcc/config/aarch64/aarch64-sve-builtins.cc
>>> @@ -4356,7 +4356,11 @@ function_expander::use_cond_insn (insn_code icode,
>>> unsigned int merge_argno)
>>> add_input_operand (icode, pred);
>>> for (unsigned int i = 0; i < nops; ++i)
>>> add_input_operand (icode, args[opno + i]);
>>> - add_input_operand (icode, fallback_arg);
>>> + if (insn_operand_matches (icode, opno + nops + 1, fallback_arg)
>>
>> "m_ops.length ()" would be more direct than "opno + nops + 1"
>>
>>> + && fallback_arg == CONST0_RTX (mode))
>>
>> Very minor, sorry, but: IMO it's more natural (and should be cheaper)
>> to test this first and insn_operand_matches second.
>>
>> OK with those changes from my POV, but please leave a day or so for
>> others to comment. As far as backports go: IMO it's good for GCC 15
>> and GCC 14. Not sure whether it's important enough to risk GCC 13,
>> given that the next release in the series will be the last.
> Thanks, I made the changes and pushed it to trunk (9b102d2e1e3..ad2991b2749).
> I also tested the patch on releases/gcc-15 and releases/gcc-14, no regression.
> OK to backport it to GCC15 and GCC14?
> Thanks,
> Jennifer
Gentle ping.
Thanks,
Jennifer
>>
>> Thanks,
>> Richard
>>
>>> + add_fixed_operand (fallback_arg);
>>> + else
>>> + add_input_operand (icode, fallback_arg);
>>> return generate_insn (icode);
>>> }
>>>
>>> diff --git a/gcc/testsuite/gcc.target/aarch64/sve2/pr121599.c
>>> b/gcc/testsuite/gcc.target/aarch64/sve2/pr121599.c
>>> new file mode 100644
>>> index 00000000000..90c5ac97e4f
>>> --- /dev/null
>>> +++ b/gcc/testsuite/gcc.target/aarch64/sve2/pr121599.c
>>> @@ -0,0 +1,31 @@
>>> +/* PR target/121599. */
>>> +/* { dg-do compile } */
>>> +/* { dg-options "-O2" } */
>>> +/* { dg-final { check-function-bodies "**" "" "" } } */
>>> +
>>> +#include <arm_sve.h>
>>> +
>>> +/*
>>> +** foo:
>>> +** movi d([0-9]+), #0
>>> +** movprfx z0\.b, p0/z, z0\.b
>>> +** usqadd z0\.b, p0/m, z0\.b, z\1\.b
>>> +** ret
>>> +*/
>>> +svuint8_t foo (svbool_t pg, svuint8_t op1)
>>> +{
>>> + return svsqadd_u8_z (pg, op1, svdup_s8 (0));
>>> +}
>>> +
>>> +/*
>>> +** bar:
>>> +** movi d([0-9]+), #0
>>> +** movprfx z0\.b, p0/z, z0\.b
>>> +** suqadd z0\.b, p0/m, z0\.b, z\1\.b
>>> +** ret
>>> +*/
>>> +svint8_t bar (svbool_t pg, svint8_t op1)
>>> +{
>>> + return svuqadd_n_s8_z (pg, op1, 0);
>>> +}
>>> +