[LLVMbugs] [Bug 20927] New: [ARM64] Inefficient range check sequence

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Fri Sep 12 14:30:50 PDT 2014


http://llvm.org/bugs/show_bug.cgi?id=20927

            Bug ID: 20927
           Summary: [ARM64] Inefficient range check sequence
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: Backend: AArch64
          Assignee: unassignedbugs at nondot.org
          Reporter: grosbach at apple.com
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified

Consider:
long foo(long a, long b, long v1, long v2) {
  if (a >= v1 && a < v2)
    return b;
  return 0;
}

We generate:
    cmp    x0, x2
    csinc    w8, wzr, wzr, lt
    cmp    x0, x3
    csinc    w9, wzr, wzr, ge
    and    w8, w8, w9
    cmp    w8, #0
    csel    x0, x1, xzr, ne
    ret

This seems like it should have generated something like:
  mov x4, #0
  cmp x0, x2
  ccmp x0, x3, #imm, lt
  csel x0, x1, x4, ge
  ret

-- 
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/20140912/f555d283/attachment.html>


More information about the llvm-bugs mailing list