mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-26 04:32:44 +01:00
2439a5a3d2
Recommits r342942, which was reverted in r343189, with a fix for an issue where we would propagate unsafely if we defined only the upper part of a register. Original message: Change the copy tracker to keep a single map of register units instead of 3 maps of registers. This gives a very significant compile time performance improvement to the pass. I measured a 30-40% decrease in time spent in MCP on x86 and AArch64 and much more significant improvements on out of tree targets with more registers. llvm-svn: 344942
52 lines
1.2 KiB
YAML
52 lines
1.2 KiB
YAML
# RUN: llc -march=aarch64 -o - %s -run-pass=machine-cp | FileCheck %s
|
|
|
|
---
|
|
name: dont_propagate_past_lower_subreg_kill
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
; CHECK-LABEL: name: dont_propagate_past_lower_subreg_kill
|
|
; CHECK: HINT 0, implicit-def $q0
|
|
; CHECK: HINT 0, implicit-def $d1
|
|
; CHECK: HINT 0, implicit killed $d1
|
|
; CHECK: $q1 = COPY killed $q0
|
|
; CHECK: $q2 = COPY $q1
|
|
; CHECK: HINT 0, implicit $q2
|
|
HINT 0, implicit-def $q0
|
|
$q1 = COPY killed $q0
|
|
$q0 = COPY killed $q1
|
|
|
|
HINT 0, implicit-def $d1
|
|
HINT 0, implicit killed $d1
|
|
|
|
$q1 = COPY killed $q0
|
|
$q2 = COPY $q1
|
|
HINT 0, implicit $q2
|
|
|
|
...
|
|
|
|
---
|
|
name: dont_propagate_past_upper_subreg_kill
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
; CHECK-LABEL: name: dont_propagate_past_upper_subreg_kill
|
|
; CHECK: HINT 0, implicit-def $z0
|
|
; CHECK: HINT 0, implicit-def $z1_hi
|
|
; CHECK: HINT 0, implicit killed $z1_hi
|
|
; CHECK: $z1 = COPY killed $z0
|
|
; CHECK: $z2 = COPY $z1
|
|
; CHECK: HINT 0, implicit $z2
|
|
HINT 0, implicit-def $z0
|
|
$z1 = COPY killed $z0
|
|
$z0 = COPY killed $z1
|
|
|
|
HINT 0, implicit-def $z1_hi
|
|
HINT 0, implicit killed $z1_hi
|
|
|
|
$z1 = COPY killed $z0
|
|
$z2 = COPY $z1
|
|
HINT 0, implicit $z2
|
|
|
|
...
|