llvm-6502/include/llvm/Target
Evan Cheng 8787c5f24e Add a if-conversion optimization that allows 'true' side of a diamond to be
unpredicated. That is, turn
 subeq  r0, r1, #1
 addne  r0, r1, #1                                                                                                                                                                                                     
into
 sub    r0, r1, #1
 addne  r0, r1, #1

For targets where conditional instructions are always executed, this may be
beneficial. It may remove pseudo anti-dependency in out-of-order execution
CPUs. e.g.
 op    r1, ...
 str   r1, [r10]        ; end-of-life of r1 as div result
 cmp   r0, #65
 movne r1, #44  ; raw dependency on previous r1
 moveq r1, #12

If movne is unpredicated, then
 op    r1, ...
 str   r1, [r10]
 cmp   r0, #65
 mov   r1, #44  ; r1 written unconditionally
 moveq r1, #12

Both mov and moveq are no longer depdendent on the first instruction. This gives
the out-of-order execution engine more freedom to reorder them.

This has passed entire LLVM test suite. But it has not been enabled for any ARM
variant pending more performance evaluation.

rdar://8951196


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146914 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-19 22:01:30 +00:00
..
Mangler.h
Target.td Extend AsmMatcher token literal matching to allow aliasing. 2011-12-06 23:43:54 +00:00
TargetCallingConv.h Minimize #include's and forward-declares in Target. 2011-12-10 22:35:47 +00:00
TargetCallingConv.td
TargetData.h Haven't yet found a nice way to handle TargetData verification in the 2011-10-20 19:24:44 +00:00
TargetELFWriterInfo.h
TargetFrameLowering.h Emit segmented-stack specific code into function prologues for 2011-08-30 19:39:58 +00:00
TargetInstrInfo.h Add a if-conversion optimization that allows 'true' side of a diamond to be 2011-12-19 22:01:30 +00:00
TargetIntrinsicInfo.h
TargetJITInfo.h
TargetLibraryInfo.h Enhance both TargetLibraryInfo and SelectionDAGBuilder so that the latter can use the former to prevent the formation of libm SDNode's when -fno-builtin is passed. 2011-12-08 22:15:21 +00:00
TargetLowering.h Minimize #include's and forward-declares in Target. 2011-12-10 22:35:47 +00:00
TargetLoweringObjectFile.h Goodbye TargetAsmInfo. This eliminate last bit of CodeGen and Target in llvm-mc. 2011-07-20 19:50:42 +00:00
TargetMachine.h Move global variables in TargetMachine into new TargetOptions class. As an API 2011-12-02 22:16:29 +00:00
TargetOpcodes.h First chunk of MachineInstr bundle support. 2011-12-06 22:12:01 +00:00
TargetOptions.h Move global variables in TargetMachine into new TargetOptions class. As an API 2011-12-02 22:16:29 +00:00
TargetRegisterInfo.h Emit a getMatchingSuperRegClass() implementation for every target. 2011-12-19 16:53:34 +00:00
TargetSchedule.td
TargetSelectionDAG.td Initial CodeGen support for CTTZ/CTLZ where a zero input produces an 2011-12-13 01:56:10 +00:00
TargetSelectionDAGInfo.h
TargetSubtargetInfo.h