mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-09 05:31:37 +00:00
[LV] Avoid computing the register usage for default VF. NFC
These are changes to reduce redundant computations when calculating a feasible vectorization factor: 1. early return when target has no vector registers 2. don't compute register usage for the default VF. Suggested during review for D37702. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313176 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
65bdf0ae4a
commit
fb0da33fc1
@ -6241,6 +6241,7 @@ LoopVectorizationCostModel::computeFeasibleMaxVF(bool OptForSize,
|
||||
if (MaxVectorSize == 0) {
|
||||
DEBUG(dbgs() << "LV: The target has no vector registers.\n");
|
||||
MaxVectorSize = 1;
|
||||
return MaxVectorSize;
|
||||
} else if (ConstTripCount && ConstTripCount < MaxVectorSize &&
|
||||
isPowerOf2_32(ConstTripCount)) {
|
||||
// We need to clamp the VF to be the ConstTripCount. There is no point in
|
||||
@ -6253,10 +6254,11 @@ LoopVectorizationCostModel::computeFeasibleMaxVF(bool OptForSize,
|
||||
|
||||
unsigned MaxVF = MaxVectorSize;
|
||||
if (MaximizeBandwidth && !OptForSize) {
|
||||
// Collect all viable vectorization factors.
|
||||
// Collect all viable vectorization factors larger than the default MaxVF
|
||||
// (i.e. MaxVectorSize).
|
||||
SmallVector<unsigned, 8> VFs;
|
||||
unsigned NewMaxVectorSize = WidestRegister / SmallestType;
|
||||
for (unsigned VS = MaxVectorSize; VS <= NewMaxVectorSize; VS *= 2)
|
||||
for (unsigned VS = MaxVectorSize * 2; VS <= NewMaxVectorSize; VS *= 2)
|
||||
VFs.push_back(VS);
|
||||
|
||||
// For each VF calculate its register usage.
|
||||
|
@ -10,8 +10,6 @@ define i32 @foo() {
|
||||
; register usage doesn't exceed 16.
|
||||
;
|
||||
; CHECK-LABEL: foo
|
||||
; CHECK: LV(REG): VF = 4
|
||||
; CHECK-NEXT: LV(REG): Found max usage: 4
|
||||
; CHECK: LV(REG): VF = 8
|
||||
; CHECK-NEXT: LV(REG): Found max usage: 7
|
||||
; CHECK: LV(REG): VF = 16
|
||||
@ -48,8 +46,6 @@ define i32 @goo() {
|
||||
; it will not have vector version and the vector register usage will not exceed the
|
||||
; available vector register number.
|
||||
; CHECK-LABEL: goo
|
||||
; CHECK: LV(REG): VF = 4
|
||||
; CHECK-NEXT: LV(REG): Found max usage: 4
|
||||
; CHECK: LV(REG): VF = 8
|
||||
; CHECK-NEXT: LV(REG): Found max usage: 7
|
||||
; CHECK: LV(REG): VF = 16
|
||||
|
Loading…
Reference in New Issue
Block a user