On 24/10/23 1:10 pm, Ajit Agarwal wrote:
> Hello Vineet:
> 
> On 24/10/23 12:02 am, Vineet Gupta wrote:
>>
>>
>> On 10/22/23 23:46, Ajit Agarwal wrote:
>>> Hello All:
>>>
>>> Addressed below review comments in the version 11 of the patch.
>>> Please review and please let me know if its ok for trunk.
>>>
>>> Thanks & Regards
>>> Ajit
>>
>> Again you are not paying attention to prior comments about fixing your 
>> submission practice and like some of the prior reviewers I'm starting to get 
>> tired, despite potentially good technical content.
>>
> 
> Sorry for the inconvenience caused. I will make sure all the comments from 
> reviewers
> are addressed.
> 
>> 1. The commentary above is NOT part of changelog. Either use a separate 
>> cover letter or add patch version change history between two "---" lines 
>> just before the start of code diff. And keep accumulating those as you post 
>> new versions. See [1]. This is so reviewers knwo what changed over 10 months 
>> and automatically gets dropped when patch is eventually applied/merged into 
>> tree.
>>
> 
> Sure I will do that.

Made changes in version 13 of the patch with changes since v6.

Thanks & Regards
Ajit
>  
>> 2. Acknowledge (even if it is yes) each and every comment of the reviewerw 
>> explicitly inline below. That ensures you don't miss addressing a change 
>> since this forces one to think about each of them.
>>
> 
> Surely I will acknowledge each and every comments inline.
> 
>> I do have some technical comments which I'll follow up with later.
> 
> I look forward to it.
> 
>> Just a short summary that v10 indeed bootstraps risc-v but I don't see any 
>> improvements at all - as in whenever abi interfaces code identifies and 
>> extension (saw missing a definition, the it is not able to eliminate any 
>> extensions despite the patch.
>>
> 
> Thanks for the summary and the check. 
> 
> Thanks & Regards
> Ajit
>  
>> -Vineet
>>
>> [1] https://gcc.gnu.org/pipermail/gcc-patches/2023-October/632180.html
>>
>>>
>>> On 22/10/23 12:56 am, rep.dot....@gmail.com wrote:
>>>> On 21 October 2023 01:56:16 CEST, Vineet Gupta <vine...@rivosinc.com> 
>>>> wrote:
>>>>> On 10/19/23 23:50, Ajit Agarwal wrote:
>>>>>> Hello All:
>>>>>>
>>>>>> This version 9 of the patch uses abi interfaces to remove zero and sign 
>>>>>> extension elimination.
>>>>>> Bootstrapped and regtested on powerpc-linux-gnu.
>>>>>>
>>>>>> In this version (version 9) of the patch following review comments are 
>>>>>> incorporated.
>>>>>>
>>>>>> a) Removal of hard code zero_extend and sign_extend  in abi interfaces.
>>>>>> b) Source and destination with different registers are considered.
>>>>>> c) Further enhancements.
>>>>>> d) Added sign extension elimination using abi interfaces.
>>>>> As has been trend in the past, I don't think all the review comments have 
>>>>> been addressed.
>>>> And apart from that, may I ask if this is just me, or does anybody else 
>>>> think that it might be worthwhile to actually read a patch before 
>>>> (re-)posting?
>>>>
>>>> Seeing e.g. the proposed abi_extension_candidate_p as written in a first 
>>>> POC would deserve some manual CSE, if nothing more then for clarity and 
>>>> conciseness?
>>>>
>>>> Just curious from a meta perspective..
>>>>
>>>> And:
>>>>
>>>>>> ree: Improve ree pass for rs6000 target using defined abi interfaces
>>>> mentioning powerpc like this, and then changing generic code could be 
>>>> interpreted as misleading, IMHO.
>>>>
>>>>>> For rs6000 target we see redundant zero and sign extension and done
>>>>>> to improve ree pass to eliminate such redundant zero and sign extension
>>>>>> using defined ABI interfaces.
>>>> Mentioning powerpc in the body as one of the affected target(s) is of 
>>>> course fine.
>>>>
>>>>
>>>>>>    +/* Return TRUE if target mode is equal to source mode of zero_extend
>>>>>> +   or sign_extend otherwise false.  */
>>>> , false otherwise.
>>>>
>>>> But I'm not a native speaker
>>>>
>>>>
>>>>>> +/* Return TRUE if the candidate insn is zero extend and regno is
>>>>>> +   a return registers.  */
>>>>>> +
>>>>>> +static bool
>>>>>> +abi_extension_candidate_return_reg_p (/*rtx_insn *insn, */int regno)
>>>> Leftover debug comment.
>>>>
>>>>>> +{
>>>>>> +  if (targetm.calls.function_value_regno_p (regno))
>>>>>> +    return true;
>>>>>> +
>>>>>> +  return false;
>>>>>> +}
>>>>>> +
>>>> As said, I don't see why the below was not cleaned up before the V1 
>>>> submission.
>>>> Iff it breaks when manually CSEing, I'm curious why?
>>>>
>>>>>> +/* Return TRUE if reg source operand of zero_extend is argument 
>>>>>> registers
>>>>>> +   and not return registers and source and destination operand are same
>>>>>> +   and mode of source and destination operand are not same.  */
>>>>>> +
>>>>>> +static bool
>>>>>> +abi_extension_candidate_p (rtx_insn *insn)
>>>>>> +{
>>>>>> +  rtx set = single_set (insn);
>>>>>> +  machine_mode dst_mode = GET_MODE (SET_DEST (set));
>>>>>> +  rtx orig_src = XEXP (SET_SRC (set), 0);
>>>>>> +
>>>>>> +  if (!FUNCTION_ARG_REGNO_P (REGNO (orig_src))
>>>>>> +      || abi_extension_candidate_return_reg_p (/*insn,*/ REGNO 
>>>>>> (orig_src)))
>>>> On top, debug leftover.
>>>>
>>>>>> +    return false;
>>>>>> +
>>>>>> +  /* Mode of destination and source should be different.  */
>>>>>> +  if (dst_mode == GET_MODE (orig_src))
>>>>>> +    return false;
>>>>>> +
>>>>>> +  machine_mode mode = GET_MODE (XEXP (SET_SRC (set), 0));
>>>>>> +  bool promote_p = abi_target_promote_function_mode (mode);
>>>>>> +
>>>>>> +  /* REGNO of source and destination should be same if not
>>>>>> +      promoted.  */
>>>>>> +  if (!promote_p && REGNO (SET_DEST (set)) != REGNO (orig_src))
>>>>>> +    return false;
>>>>>> +
>>>>>> +  return true;
>>>>>> +}
>>>>>> +
>>>> As said, please also rephrase the above (and everything else if it 
>>>> obviously looks akin the above).
>>>>
>>>> The rest, mentioned below,  should largely be covered by following the 
>>>> coding convention.
>>>>
>>>>>> +/* Return TRUE if the candidate insn is zero extend and regno is
>>>>>> +   an argument registers.  */
>>>> Singular register.
>>>>
>>>>>> +
>>>>>> +static bool
>>>>>> +abi_extension_candidate_argno_p (/*rtx_code code, */int regno)
>>>> Debug leftover.
>>>> I would probably have inlined this function manually, with a respective 
>>>> comment.
>>>> Did not look how often it is used, admittedly.
>>>>
>>>>>> +{
>>>>>> +  if (FUNCTION_ARG_REGNO_P (regno))
>>>>>> +    return true;
>>>>>> +
>>>>>> +  return false;
>>>>>> +}
>>>> []
>>>>>> +
>>>>>>    /* This function goes through all reaching defs of the source
>>>> s/This function goes/Go/
>>>>
>>>>>>       of the candidate for elimination (CAND) and tries to combine
>>>> (of, ?didn't look) candidate CAND for eliminating
>>>>
>>>>>>       the extension with the definition instruction.  The changes
>>>> defining
>>>>
>>>> Pre-existing, I know.
>>>> But you could fix those in a preparatory patch while you touch surrounding 
>>>> code.
>>>> This is not a requirement, of course, just good habit, IMHO.
>>>>
>>>>>> @@ -770,6 +889,11 @@ combine_reaching_defs (ext_cand *cand, const_rtx 
>>>>>> set_pat, ext_state *state)
>>>>>>        state->defs_list.truncate (0);
>>>>>>      state->copies_list.truncate (0);
>>>>>> +  rtx orig_src = XEXP (SET_SRC (cand->expr),0);
>>>>>> +
>>>>>> +  if (abi_extension_candidate_p (cand->insn)
>>>>>> +      && (!get_defs (cand->insn, orig_src, NULL)))
>>>> Excess braces.
>>>> Hopefully check_gnu_style would have complained.
>>>>
>>>>>> +    return abi_handle_regs (cand->insn);
>>>>>>        outcome = make_defs_and_copies_lists (cand->insn, set_pat, state);
>>>>>>    @@ -1036,6 +1160,15 @@ combine_reaching_defs (ext_cand *cand, 
>>>>>> const_rtx set_pat, ext_state *state)
>>>>>>            }
>>>>>>        }
>>>>>>    +  rtx insn_set = single_set (cand->insn);
>>>>>> +
>>>>>> +  machine_mode mode = (GET_MODE (XEXP (SET_SRC (insn_set), 0)));
>>>> Excess braces.
>>>> Also in a lot of other spots in your patch.
>>>> Please read the coding conventions and the patch, once again, before 
>>>> submission?
>>>> thanks
>>

Reply via email to