[llvm-bugs] [Bug 27734] New: [InstSimplify] missing vector icmp with constant edge case patterns

via llvm-bugs llvm-bugs at lists.llvm.org
Fri May 13 09:54:09 PDT 2016


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

            Bug ID: 27734
           Summary: [InstSimplify] missing vector icmp with constant edge
                    case patterns
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: Scalar Optimizations
          Assignee: unassignedbugs at nondot.org
          Reporter: spatel+llvm at rotateright.com
                CC: llvm-bugs at lists.llvm.org
    Classification: Unclassified

This was noted in http://reviews.llvm.org/D17859 where we semi-canonicalized
vector integer LE/GE comparisons: we're missing 3 out 4 of the vector
transforms when doing an icmp against an edge case constant:

define i1 @scalar_uge_true(i4 %x) {
  %cmp = icmp uge i4 %x, 0
  ret i1 %cmp
}

define i1 @scalar_ule_true(i4 %x) {
  %cmp = icmp ule i4 %x, 15
  ret i1 %cmp
}

define i1 @scalar_sge_true(i4 %x) {
  %cmp = icmp sge i4 %x, -8
  ret i1 %cmp
}

define i1 @scalar_sle_true(i4 %x) {
  %cmp = icmp sle i4 %x, 7
  ret i1 %cmp
}

define <4 x i1> @vector_uge_true(<4 x i4> %x) {
  %cmp = icmp uge <4 x i4> %x, zeroinitializer
  ret <4 x i1> %cmp
}

define <4 x i1> @vector_ule_true(<4 x i4> %x) {
  %cmp = icmp ule <4 x i4> %x, <i4 15, i4 15, i4 15, i4 15>
  ret <4 x i1> %cmp
}

define <4 x i1> @vector_sge_true(<4 x i4> %x) {
  %cmp = icmp sge <4 x i4> %x, <i4 -8, i4 -8, i4 -8, i4 -8>
  ret <4 x i1> %cmp
}

define <4 x i1> @vector_sle_true(<4 x i4> %x) {
  %cmp = icmp sle <4 x i4> %x, <i4 7, i4 7, i4 7, i4 7>
  ret <4 x i1> %cmp
}

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

$ ./opt -instsimplify vec_icmp.ll -S
...

define i1 @scalar_uge_true(i4 %x) {
  ret i1 true
}

define i1 @scalar_ule_true(i4 %x) {
  ret i1 true
}

define i1 @scalar_sge_true(i4 %x) {
  ret i1 true
}

define i1 @scalar_sle_true(i4 %x) {
  ret i1 true
}

define <4 x i1> @vector_uge_true(<4 x i4> %x) {
  ret <4 x i1> <i1 true, i1 true, i1 true, i1 true>
}

define <4 x i1> @vector_ule_true(<4 x i4> %x) {
  %cmp = icmp ule <4 x i4> %x, <i4 -1, i4 -1, i4 -1, i4 -1>
  ret <4 x i1> %cmp
}

define <4 x i1> @vector_sge_true(<4 x i4> %x) {
  %cmp = icmp sge <4 x i4> %x, <i4 -8, i4 -8, i4 -8, i4 -8>
  ret <4 x i1> %cmp
}

define <4 x i1> @vector_sle_true(<4 x i4> %x) {
  %cmp = icmp sle <4 x i4> %x, <i4 7, i4 7, i4 7, i4 7>
  ret <4 x i1> %cmp
}

-- 
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/20160513/507603bf/attachment-0001.html>


More information about the llvm-bugs mailing list