mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 11:42:57 +01:00
f980fa1767
Arm specific codegen prepare is implemented to perform type promotion on icmp operands, which can enable the removal of uxtb and uxth (unsigned extend) instructions. This is possible because performing type promotion before ISel alleviates this duty from the DAG builder which has to perform legalisation, but has a limited view on data ranges. The pass visits any instruction operand of an icmp and creates a worklist to traverse the use-def tree to determine whether the values can simply be promoted. Our concern is values in the registers overflowing the narrow (i8, i16) data range, so instructions marked with nuw can be promoted easily. For add and sub instructions, we are able to use the parallel dsp instructions to operate on scalar data types and avoid overflowing bits. Underflowing adds and subs are also permitted when the result is only used by an unsigned icmp. Differential Revision: https://reviews.llvm.org/D48832 llvm-svn: 337687
67 lines
1.9 KiB
CMake
67 lines
1.9 KiB
CMake
set(LLVM_TARGET_DEFINITIONS ARM.td)
|
|
|
|
tablegen(LLVM ARMGenAsmMatcher.inc -gen-asm-matcher)
|
|
tablegen(LLVM ARMGenAsmWriter.inc -gen-asm-writer)
|
|
tablegen(LLVM ARMGenCallingConv.inc -gen-callingconv)
|
|
tablegen(LLVM ARMGenDAGISel.inc -gen-dag-isel)
|
|
tablegen(LLVM ARMGenDisassemblerTables.inc -gen-disassembler)
|
|
tablegen(LLVM ARMGenFastISel.inc -gen-fast-isel)
|
|
tablegen(LLVM ARMGenGlobalISel.inc -gen-global-isel)
|
|
tablegen(LLVM ARMGenInstrInfo.inc -gen-instr-info)
|
|
tablegen(LLVM ARMGenMCCodeEmitter.inc -gen-emitter)
|
|
tablegen(LLVM ARMGenMCPseudoLowering.inc -gen-pseudo-lowering)
|
|
tablegen(LLVM ARMGenRegisterBank.inc -gen-register-bank)
|
|
tablegen(LLVM ARMGenRegisterInfo.inc -gen-register-info)
|
|
tablegen(LLVM ARMGenSubtargetInfo.inc -gen-subtarget)
|
|
tablegen(LLVM ARMGenSystemRegister.inc -gen-searchable-tables)
|
|
|
|
add_public_tablegen_target(ARMCommonTableGen)
|
|
|
|
add_llvm_target(ARMCodeGen
|
|
A15SDOptimizer.cpp
|
|
ARMAsmPrinter.cpp
|
|
ARMBaseInstrInfo.cpp
|
|
ARMBaseRegisterInfo.cpp
|
|
ARMCallLowering.cpp
|
|
ARMCodeGenPrepare.cpp
|
|
ARMConstantIslandPass.cpp
|
|
ARMConstantPoolValue.cpp
|
|
ARMExpandPseudoInsts.cpp
|
|
ARMFastISel.cpp
|
|
ARMFrameLowering.cpp
|
|
ARMHazardRecognizer.cpp
|
|
ARMInstructionSelector.cpp
|
|
ARMISelDAGToDAG.cpp
|
|
ARMISelLowering.cpp
|
|
ARMInstrInfo.cpp
|
|
ARMLegalizerInfo.cpp
|
|
ARMParallelDSP.cpp
|
|
ARMLoadStoreOptimizer.cpp
|
|
ARMMCInstLower.cpp
|
|
ARMMachineFunctionInfo.cpp
|
|
ARMMacroFusion.cpp
|
|
ARMRegisterInfo.cpp
|
|
ARMOptimizeBarriersPass.cpp
|
|
ARMRegisterBankInfo.cpp
|
|
ARMSelectionDAGInfo.cpp
|
|
ARMSubtarget.cpp
|
|
ARMTargetMachine.cpp
|
|
ARMTargetObjectFile.cpp
|
|
ARMTargetTransformInfo.cpp
|
|
MLxExpansionPass.cpp
|
|
Thumb1FrameLowering.cpp
|
|
Thumb1InstrInfo.cpp
|
|
ThumbRegisterInfo.cpp
|
|
Thumb2ITBlockPass.cpp
|
|
Thumb2InstrInfo.cpp
|
|
Thumb2SizeReduction.cpp
|
|
ARMComputeBlockSize.cpp
|
|
)
|
|
|
|
add_subdirectory(AsmParser)
|
|
add_subdirectory(Disassembler)
|
|
add_subdirectory(InstPrinter)
|
|
add_subdirectory(MCTargetDesc)
|
|
add_subdirectory(TargetInfo)
|
|
add_subdirectory(Utils)
|