mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-18 18:42:46 +02:00
Process BUNDLE in tail duplication
When tail duplication estimates a size of tail it uses instruction count. Account for a number of instrictions in a bundle too. Differential Revision: https://reviews.llvm.org/D72783
This commit is contained in:
parent
e7370b6a19
commit
33946d17b3
@ -625,7 +625,9 @@ bool TailDuplicator::shouldTailDuplicate(bool IsSimple,
|
||||
if (PreRegAlloc && MI.isCall())
|
||||
return false;
|
||||
|
||||
if (!MI.isPHI() && !MI.isMetaInstruction())
|
||||
if (MI.isBundle())
|
||||
InstrCount += MI.getBundleSize();
|
||||
else if (!MI.isPHI() && !MI.isMetaInstruction())
|
||||
InstrCount += 1;
|
||||
|
||||
if (InstrCount > MaxDuplicateCount)
|
||||
|
38
test/CodeGen/AMDGPU/tail-dup-bundle.mir
Normal file
38
test/CodeGen/AMDGPU/tail-dup-bundle.mir
Normal file
@ -0,0 +1,38 @@
|
||||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -march=amdgcn -run-pass=block-placement -tail-dup-placement-threshold=2 -verify-machineinstrs -o - %s | FileCheck -check-prefix=GCN %s
|
||||
|
||||
# Check that tail duplication correctly counts instructions in a bundle.
|
||||
# The bundle below shall not be duplicated.
|
||||
|
||||
---
|
||||
name: tail_dup_bundle
|
||||
body: |
|
||||
; GCN-LABEL: name: tail_dup_bundle
|
||||
; GCN: bb.0:
|
||||
; GCN: successors: %bb.2(0x80000000)
|
||||
; GCN: bb.2:
|
||||
; GCN: BUNDLE {
|
||||
; GCN: S_NOP 0
|
||||
; GCN: S_NOP 0
|
||||
; GCN: }
|
||||
; GCN: S_ENDPGM 0
|
||||
; GCN: bb.1:
|
||||
; GCN: successors: %bb.2(0x80000000)
|
||||
; GCN: S_BRANCH %bb.2
|
||||
bb.0:
|
||||
successors: %bb.2(0x80000000)
|
||||
|
||||
S_BRANCH %bb.2
|
||||
|
||||
bb.1:
|
||||
successors: %bb.2(0x80000000)
|
||||
|
||||
bb.2:
|
||||
|
||||
BUNDLE {
|
||||
S_NOP 0
|
||||
S_NOP 0
|
||||
}
|
||||
S_ENDPGM 0
|
||||
|
||||
...
|
Loading…
Reference in New Issue
Block a user