[PATCH] D156444: [llvm][RISCV][IR] Zext flag in IR for RISC-V
Craig Topper via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Aug 31 14:21:31 PDT 2023
craig.topper added a comment.
In D156444#4632497 <https://reviews.llvm.org/D156444#4632497>, @karouzakisp wrote:
> In D156444#4624088 <https://reviews.llvm.org/D156444#4624088>, @nikic wrote:
>
>> This is still missing LangRef changes.
>>
>> I think you should also drop everything here that is related to supporting zext constant expressions. These will be removed in the near future, and I don't think it makes sense to add nneg support for them just to drop them again.
>
> "
> Semantics:
>
> The zext fills the high order bits of the value with zero bits until it reaches the size of the destination type, ty2.
>
> When zero extending from i1, the result will always be either 0 or 1.
>
> The nneg flag means the value to be zero extended is non negative.
> So we can safely convert the zext to a sext.
> This applies only for the RISC-V target because sext i32 to i64 can be a no op for RV64
> and it is always cheaper than performing a zero extension .
>
> Example:
> %X = zext i32 257 to i64 ; yields i64:257
> %Y = zext i1 true to i32 ; yields i32:1
> %Z = zext <2 x i16> <i16 8, i16 7> to <2 x i32> ; yields <i32 8, i32 7>
> %H = zext nneg 8 i32 to i64 ; yields to i64:8
I don't think we need to mention RISC-V. I've seen cases where the middle end needs this information. This issue https://discourse.llvm.org/t/aggressive-conversion-of-sext-to-zext-blocks-indvarsimplify/61561 was independent of RISC-V.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D156444/new/
https://reviews.llvm.org/D156444
More information about the llvm-commits
mailing list