[llvm-bugs] [Bug 24458] New: Instruction's optimization works wrong with vector code.

via llvm-bugs llvm-bugs at lists.llvm.org
Fri Aug 14 05:40:50 PDT 2015


https://llvm.org/bugs/show_bug.cgi?id=24458

            Bug ID: 24458
           Summary: Instruction's optimization works wrong with vector
                    code.
           Product: tools
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: opt
          Assignee: unassignedbugs at nondot.org
          Reporter: shishpanov2010 at yandex.ru
                CC: llvm-bugs at lists.llvm.org
    Classification: Unclassified

IR code with fail:
define <8 x i32>  @_div__(<8 x float> %n) {
  %notequal_b_load_.i = fcmp une <8 x float> %n, zeroinitializer
  %equal_a_load72_.i = fcmp ueq <8 x float> %n, zeroinitializer
  %notequal_b_load__to_boolvec.i = sext <8 x i1> %notequal_b_load_.i to <8 x
i32>
  %equal_a_load72__to_boolvec.i = sext <8 x i1> %equal_a_load72_.i to <8 x i32>
  %wrong = or <8 x i32> %notequal_b_load__to_boolvec.i,
%equal_a_load72__to_boolvec.i
  ret <8 x i32> %wrong
}
Launch command: opt -instcombine -o /dev/null reduce.ll

I think the mistake is in lib/Transforms/InstCombine/InstCombineAndOrXor.cpp in
Value *getFCmpValue(bool isordered, unsigned code,          Value *LHS, Value
*RHS, InstCombiner::BuilderTy *Builder). This function does not consider the
vector value. It returns i1 true, but I guess it should return vector of i1
true.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20150814/48588f8b/attachment.html>


More information about the llvm-bugs mailing list