On 03/05/2023 12:55, Richard Biener wrote:
On Fri, 28 Apr 2023, Andre Vieira (lists) wrote:

Hi,

I'm posting the patches separately now with ChangeLogs.

I made the suggested changes and tried to simplify the code a bit further.
Where internal to tree-vect-stmts I changed most functions to use code_helper
to avoid having to check at places we didn't need to. I was trying to simplify
things further by also modifying supportable_half_widening_operation and
supportable_convert_operation but the result of that was that I ended up
moving the code to cast to tree code inside them rather than at the call site
and it didn't look simpler, so I left those. Though if we did make those
changes we'd no longer need to keep around the tc1 variable in
vectorizable_conversion... Let me know what you think.

I see that

-  else if (CONVERT_EXPR_CODE_P (code)
+  else if (CONVERT_EXPR_CODE_P (code.safe_as_tree_code ())

is convenient (as much as I dislike safe_as_tree_code).  Isn't
the following

-  if (!CONVERT_EXPR_CODE_P (code))
+  if (!CONVERT_EXPR_CODE_P ((tree_code) code))
      return false;
For some reason I thought the code could only reach here if code was a tree code, but I guess if we have an ifn and the modes aren't the same as the wide_vectype it would fall to this, which for an ifn this would fail. I am wondering whether it needs to though, the multi-step widening should also work for ifn's no? We'd need to adapt it, to not use c1, c2 but hi, lo in case of ifn I guess.. and then use a different optab look up too?

Though I'm thinking, maybe this should be a follow-up and just not have that 'feature' for now. The feature being, supporting multi-step conversion for new widening IFN's.

Reply via email to