[PATCH] D74713: [ConstantFold] fold most FP ops with undef operand to undef rather than NaN
Sanjay Patel via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Feb 17 13:07:20 PST 2020
spatel marked an inline comment as done.
spatel added inline comments.
================
Comment at: llvm/test/Transforms/InstSimplify/fp-undef.ll:218-224
define float @fadd_undef_op1_constant(float %x) {
; CHECK-LABEL: @fadd_undef_op1_constant(
-; CHECK-NEXT: ret float 0x7FF8000000000000
+; CHECK-NEXT: ret float undef
;
%r = fadd float 2.0, undef
ret float %r
}
----------------
lebedev.ri wrote:
> This is not correct
> ```
> ----------------------------------------
> define float @fadd_undef_op1_constant(float %x) {
> %0:
> %r = fadd float 2.000000, undef
> ret float %r
> }
> =>
> define float @fadd_undef_op1_constant(float %x) {
> %0:
> %r = fadd float 2.000000, undef
> ret float undef
> }
> Transformation doesn't verify!
> ERROR: Value mismatch
>
> Example:
> float %x = poison
>
> Source:
> float %r = NaN [based on undef value]
>
> Target:
> float %r = NaN [based on undef value]
> Source value: NaN
> Target value: #x84000400 (-0.000000000000?)
>
> Summary:
> 0 correct transformations
> 1 incorrect transformations
> 0 errors
>
> ```
Apologies for not having recent Alive installed anywhere at the moment to test this myself, but how should we interpret this output?
Is it saying that there is no value that we can assign to the undef operand that will produce the exact 0x84000400 output value?
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D74713/new/
https://reviews.llvm.org/D74713
More information about the llvm-commits
mailing list