OSDN Git Service

Do not legalize large setcc with setcce, introduce setcccarry and do it with usubo...
authorAmaury Sechet <deadalnix@gmail.com>
Thu, 1 Jun 2017 11:14:17 +0000 (11:14 +0000)
committerAmaury Sechet <deadalnix@gmail.com>
Thu, 1 Jun 2017 11:14:17 +0000 (11:14 +0000)
commit0247f749b825544abec1da16f7357daf82f709d6
tree107e49e7173bcd4d423a886197a8e9cb21c13dd8
parentb8a22cca7288306e6621530df0d13ebe80f4fe7a
Do not legalize large setcc with setcce, introduce setcccarry and do it with usubo/setcccarry.

Summary:
This is a continuation of the work started in D29872 . Passing the carry down as a value rather than as a glue allows for further optimizations. Introducing setcccarry makes the use of addc/subc unecessary and we can start the removal process.

This patch only introduce the optimization strictly required to get the same level of optimization as was available before nothing more.

Reviewers: jyknight, nemanjai, mkuper, spatel, RKSimon, zvi, bkramer

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D33374

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304404 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/CodeGen/ISDOpcodes.h
lib/CodeGen/SelectionDAG/DAGCombiner.cpp
lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
lib/CodeGen/SelectionDAG/LegalizeTypes.h
lib/CodeGen/SelectionDAG/SelectionDAGDumper.cpp
lib/CodeGen/TargetLoweringBase.cpp
lib/Target/X86/X86ISelLowering.cpp
lib/Target/X86/X86ISelLowering.h