[PATCH] D50714: [InstCombine] Fold Select with binary op - FP opcodes

Dávid Bolvanský via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sun Aug 19 08:54:48 PDT 2018


xbolva00 added a comment.

Or maybe not..

xbolva00 at xbolva00:~/LLVMPokusy/alive-nj$ ./run.py 
[Reading from terminal...]
%A = fcmp oeq float %x, -0.0
%B = fadd float %x, %z
%C = select i1 %A, float %B, float %y

>
=

%C = select i1 %A, float %z, float %y
-------------------------------------

  %A = fcmp oeq float %x, -0.0
  %B = fadd float %x, %z
  %C = select %A, float %B, float %y

>
=

  %C = select %A, float %z, float %y

ERROR: Mismatch in values for float %C

Example:
float %x = +0.0

  i1 %A = 0x1 (1, -1)

float %z = -0.0
float %B = +0.0
float %y = +0.0
source: +0.0
target: -0.0

-----------------------------------------------

xbolva00 at xbolva00:~/LLVMPokusy/alive-nj$ ./run.py 
[Reading from terminal...]
%A = fcmp ueq float %x, -0.0
%B = fadd float %x, %z
%C = select i1 %A, float %B, float %y

>
=

%C = select i1 %A, float %z, float %y
-------------------------------------

  %A = fcmp ueq float %x, -0.0
  %B = fadd float %x, %z
  %C = select %A, float %B, float %y

>
=

  %C = select %A, float %z, float %y

ERROR: Mismatch in values for float %C

Example:
float %x = NaN

  i1 %A = 0x1 (1, -1)

float %z = 1.00000011920928955078125*(2**64)
float %B = NaN
float %y = +0.0
source: NaN
target: 1.00000011920928955078125*(2**64)


https://reviews.llvm.org/D50714





More information about the llvm-commits mailing list