[llvm] [DAGCombiner][AMDGPU] Track signedness in ByteProviders (PR #65995)
Jay Foad via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 12 07:51:22 PDT 2023
jayfoad wrote:
> ```
> %19 = extractelement <4 x i8> %11, i64 1
> %20 = sext i8 %19 to i16
> %21 = extractelement <4 x i8> %13, i64 1
> %22 = zext i8 %21 to i16
> %23 = mul nsw i16 %22, %20
> ```
>
> I should say this code looks a bit strange, since we are mixing types (signed / unsigned) in the mul operation. In general, I would think the unsigned type "wins" as this is the spirit of the c++ standard, but, since that was causing failures, I have just disabled the combine in such cases.
This is LLVM IR. It has well defined semantics that have nothing to do with "the spirit of the c++ standard". Whatever your DAG combine does, it needs to preserve the semantics.
https://github.com/llvm/llvm-project/pull/65995
More information about the llvm-commits
mailing list