summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/Hexagon/struct-const.ll
diff options
context:
space:
mode:
authorUlrich Weigand <ulrich.weigand@de.ibm.com>2018-04-30 17:52:32 +0000
committerUlrich Weigand <ulrich.weigand@de.ibm.com>2018-04-30 17:52:32 +0000
commitb32f3656d2bc376d223b5cf38c5067e3942d1471 (patch)
treed05a04aa65dc0d6c00d96074e9d7f11a517b40db /llvm/test/CodeGen/Hexagon/struct-const.ll
parent2de9d4ad5dade13f9f21337fc20af21fd84715f3 (diff)
downloadbcm5719-llvm-b32f3656d2bc376d223b5cf38c5067e3942d1471.tar.gz
bcm5719-llvm-b32f3656d2bc376d223b5cf38c5067e3942d1471.zip
[SystemZ] Do not use glue to represent condition code dependencies
Currently, an instruction setting the condition code is linked to the instruction using the condition code via a "glue" link in the SelectionDAG. This has a number of drawbacks; in particular, it means the same CC cannot be used by multiple users. It also makes it more difficult to efficiently implement SADDO et. al. This patch changes the back-end to represent CC dependencies as normal values during SelectionDAG matching, along the lines of how this is handled in the X86 back-end already. In addition to the core mechanics of updating all relevant patterns, this requires a number of additional changes: - We now need to be able to spill/restore a CC value into a GPR if necessary. This means providing a copyPhysReg implementation for moves involving CC, and defining getCrossCopyRegClass. - Since we still prefer to avoid such spills, we provide an override for IsProfitableToFold to avoid creating a merged LOAD / ICMP if this would result in multiple users of the CC. - combineCCMask no longer requires a single CC user, and no longer need to be careful about preventing invalid glue/chain cycles. - emitSelect needs to be more careful in marking CC live-in to the basic block it generates. Also, we can now optimize the case of multiple subsequent selects with the same condition just like X86 does. llvm-svn: 331202
Diffstat (limited to 'llvm/test/CodeGen/Hexagon/struct-const.ll')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud