mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +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=hexagon -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: A2_nop implicit-def $d0
|
|
; CHECK: A2_nop implicit-def $r2
|
|
; CHECK: A2_nop implicit killed $r2
|
|
; CHECK: $d1 = COPY killed $d0
|
|
; CHECK: $d2 = COPY $d1
|
|
; CHECK: A2_nop implicit $d2
|
|
A2_nop implicit-def $d0
|
|
$d1 = COPY killed $d0
|
|
$d0 = COPY killed $d1
|
|
|
|
A2_nop implicit-def $r2
|
|
A2_nop implicit killed $r2
|
|
|
|
$d1 = COPY killed $d0
|
|
$d2 = COPY $d1
|
|
A2_nop implicit $d2
|
|
|
|
...
|
|
|
|
---
|
|
name: dont_propagate_past_upper_subreg_kill
|
|
tracksRegLiveness: true
|
|
body: |
|
|
bb.0:
|
|
; CHECK-LABEL: name: dont_propagate_past_upper_subreg_kill
|
|
; CHECK: A2_nop implicit-def $d0
|
|
; CHECK: A2_nop implicit-def $r3
|
|
; CHECK: A2_nop implicit killed $r3
|
|
; CHECK: $d1 = COPY killed $d0
|
|
; CHECK: $d2 = COPY $d1
|
|
; CHECK: A2_nop implicit $d2
|
|
A2_nop implicit-def $d0
|
|
$d1 = COPY killed $d0
|
|
$d0 = COPY killed $d1
|
|
|
|
A2_nop implicit-def $r3
|
|
A2_nop implicit killed $r3
|
|
|
|
$d1 = COPY killed $d0
|
|
$d2 = COPY $d1
|
|
A2_nop implicit $d2
|
|
|
|
...
|