]> granicus.if.org Git - llvm/commit
[x86, SSE] change patterns for CMPP to float types to allow matching with SSE1 (PR28044)
authorSanjay Patel <spatel@rotateright.com>
Sun, 12 Jun 2016 15:03:25 +0000 (15:03 +0000)
committerSanjay Patel <spatel@rotateright.com>
Sun, 12 Jun 2016 15:03:25 +0000 (15:03 +0000)
commit9a476793c5d0a00c273b7582df09976b68e57baf
treee3fe35bc3f5f21f76d9166d987733815e0adf4b2
parentb2cfb64e72d3d9cfd666fe68574e89cb87997fdc
[x86, SSE] change patterns for CMPP to float types to allow matching with SSE1 (PR28044)

This patch is intended to solve:
https://llvm.org/bugs/show_bug.cgi?id=28044

By changing the definition of X86ISD::CMPP to use float types, we allow it to be created
and pass legalization for an SSE1-only target where v4i32 is not legal.

The motivational trail for this change includes:
https://llvm.org/bugs/show_bug.cgi?id=28001

and eventually makes this trigger:
http://reviews.llvm.org/D21190

Ie, after this step, we should be free to have Clang generate FP compare IR instead of x86
intrinsics for SSE C packed compare intrinsics. (We can auto-upgrade and remove the LLVM
sse.cmp intrinsics as a follow-up step.) Once we're generating vector IR instead of x86
intrinsics, a big pile of generic optimizations can trigger.

Differential Revision: http://reviews.llvm.org/D21235

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272511 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86ISelLowering.cpp
lib/Target/X86/X86InstrFragmentsSIMD.td
lib/Target/X86/X86InstrSSE.td
test/CodeGen/X86/sse1.ll