On 12/7/2025 10:11 PM, Oleg Endo wrote:
On Fri, 2025-12-05 at 22:05 -0700, Jeff Law wrote:
Here's an update that adds a pattern to the SH port to recognize the
slightly different RTL presented for this scenario. Essentially it just
needs to recognize (xor (rotate)) for a count of 1 and flipping the low bit.
OK for the trunk?
Can you please write this ...
+{
+ operands[3] = gen_rtx_GE (SImode, operands[1], const0_rtx);
+ sh_split_treg_set_expr (operands[3], curr_insn);
+ operands[3] = get_t_reg_rtx ();
+})
.. as ...
+{
+ sh_split_treg_set_expr (
+ gen_rtx_GE (SImode, operands[1], const0_rtx), curr_insn);
+ operands[3] = get_t_reg_rtx ();
+})
( or whatever the appropriate line break / formatting would be, but the
point being not mis-using operands[3] as a local tmp var )
We can just create a temporary. That's generally preferable to making
it a call argument, particularly for debugging. So..
rtx t = gen_rtx_GE (...);
sh_split_treg_set_expr (t, curr_insn);
operands[3] = get_t_reg_rtx ();
Or something close to that. Are the SH bits OK in that kind of form?
Thanks,
jeff