Teach if-converter to be more careful with predicating instructions that would
authorEvan Cheng <evan.cheng@apple.com>
Fri, 10 Sep 2010 01:29:16 +0000 (01:29 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Fri, 10 Sep 2010 01:29:16 +0000 (01:29 +0000)
commit3ef1c8759a20167457eb7fd82ebcaffe7ccaa1d1
treeffcb01b1621bcedb427d701cfaee9ea9a19b0a2c
parent920a2089d9b737820631bc6de4c4fb9fa9ad1e07
Teach if-converter to be more careful with predicating instructions that would
take multiple cycles to decode.
For the current if-converter clients (actually only ARM), the instructions that
are predicated on false are not nops. They would still take machine cycles to
decode. Micro-coded instructions such as LDM / STM can potentially take multiple
cycles to decode. If-converter should take treat them as non-micro-coded
simple instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113570 91177308-0d34-0410-b5e6-96231b3b80d8
28 files changed:
include/llvm/CodeGen/PostRAHazardRecognizer.h
include/llvm/Target/TargetInstrInfo.h
include/llvm/Target/TargetInstrItineraries.h
include/llvm/Target/TargetMachine.h
lib/CodeGen/IfConversion.cpp
lib/CodeGen/PostRAHazardRecognizer.cpp
lib/CodeGen/PostRASchedulerList.cpp
lib/CodeGen/ScheduleDAGInstrs.cpp
lib/CodeGen/ScheduleDAGInstrs.h
lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp
lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.h
lib/CodeGen/TargetInstrInfoImpl.cpp
lib/Target/ARM/ARM.td
lib/Target/ARM/ARMBaseInstrInfo.cpp
lib/Target/ARM/ARMBaseInstrInfo.h
lib/Target/ARM/ARMISelLowering.cpp
lib/Target/ARM/ARMISelLowering.h
lib/Target/ARM/ARMSubtarget.cpp
lib/Target/ARM/ARMSubtarget.h
lib/Target/ARM/ARMTargetMachine.h
lib/Target/ARM/Thumb2HazardRecognizer.h
lib/Target/ARM/Thumb2InstrInfo.cpp
lib/Target/ARM/Thumb2InstrInfo.h
lib/Target/CellSPU/SPUTargetMachine.h
lib/Target/PowerPC/PPCTargetMachine.h
lib/Target/TargetInstrInfo.cpp
test/CodeGen/ARM/ifcvt10.ll [new file with mode: 0644]
test/CodeGen/Thumb2/2010-06-21-TailMergeBug.ll