summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/SystemZ/int-cmp-48.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/SystemZ/int-cmp-48.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/SystemZ/int-cmp-48.ll')
-rw-r--r--llvm/test/CodeGen/SystemZ/int-cmp-48.ll5
1 files changed, 2 insertions, 3 deletions
diff --git a/llvm/test/CodeGen/SystemZ/int-cmp-48.ll b/llvm/test/CodeGen/SystemZ/int-cmp-48.ll
index 821283d19d0..c68a6735764 100644
--- a/llvm/test/CodeGen/SystemZ/int-cmp-48.ll
+++ b/llvm/test/CodeGen/SystemZ/int-cmp-48.ll
@@ -28,9 +28,8 @@ exit:
; Check that we do not fold across an aliasing store.
define void @f2(i8 *%src) {
; CHECK-LABEL: f2:
-; CHECK: llc [[REG:%r[0-5]]], 0(%r2)
-; CHECK-DAG: mvi 0(%r2), 0
-; CHECK-DAG: tmll [[REG]], 1
+; CHECK: tm 0(%r2), 1
+; CHECK: mvi 0(%r2), 0
; CHECK: ber %r14
; CHECK: br %r14
entry:
OpenPOWER on IntegriCloud