OSDN Git Service

Do not legalize large add with addc/adde, introduce addcarry and do it with uaddo...
authorAmaury Sechet <deadalnix@gmail.com>
Sun, 30 Apr 2017 19:24:09 +0000 (19:24 +0000)
committerAmaury Sechet <deadalnix@gmail.com>
Sun, 30 Apr 2017 19:24:09 +0000 (19:24 +0000)
commitbcb9816097e0a0f4f9cb01d027fe65c85c7236cb
tree3f907859bd3186551bc09f94568c4ec35c43ae5a
parent07255f2be8a791c8d8982400b41cb36a5594bd6d
Do not legalize large add with addc/adde, introduce addcarry and do it with uaddo/addcarry

Summary: As per discution on how to get better codegen an large int legalization, it became clear that using a glue for the carry was preventing several desirable optimizations. Passing the carry down as a value allow for more flexibility.

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

Subscribers: igorb, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301775 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/SelectionDAG.cpp
lib/CodeGen/SelectionDAG/SelectionDAGDumper.cpp
lib/CodeGen/TargetLoweringBase.cpp
lib/Target/X86/X86ISelDAGToDAG.cpp
lib/Target/X86/X86ISelLowering.cpp
test/CodeGen/X86/known-bits.ll