[PATCH] D71946: [PowerPC][LoopVectorize] Extend getRegisterClassForType to consider double and other floating point type
Jinsong Ji via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Dec 27 12:47:20 PST 2019
jsji created this revision.
jsji added reviewers: PowerPC, hfinkel.
Herald added subscribers: llvm-commits, shchenz, kbarton, hiraditya, nemanjai.
Herald added a project: LLVM.
In https://reviews.llvm.org/D67148, we use isFloatTy to test floating
point type, otherwise we return GPRRC.
So 'double' will be classified as GPRRC, which is not accurate.
This patch use isFloatingPointTy instead to cover other floating point types.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D71946
Files:
llvm/lib/Target/PowerPC/PPCTargetTransformInfo.cpp
llvm/test/Transforms/LoopVectorize/PowerPC/reg-usage.ll
Index: llvm/test/Transforms/LoopVectorize/PowerPC/reg-usage.ll
===================================================================
--- llvm/test/Transforms/LoopVectorize/PowerPC/reg-usage.ll
+++ llvm/test/Transforms/LoopVectorize/PowerPC/reg-usage.ll
@@ -178,8 +178,9 @@
;CHECK-PWR8-NEXT: LV(REG): RegisterClass: PPC::VSXRC, 1 registers
;CHECK-PWR9: LV(REG): VF = 1
-;CHECK-PWR9: LV(REG): Found max usage: 1 item
-;CHECK-PWR9-NEXT: LV(REG): RegisterClass: PPC::GPRRC, 7 registers
+;CHECK-PWR9: LV(REG): Found max usage: 2 item
+;CHECK-PWR9-NEXT: LV(REG): RegisterClass: PPC::GPRRC, 2 registers
+;CHECK-PWR9-NEXT: LV(REG): RegisterClass: PPC::VSXRC, 5 registers
;CHECK-PWR9: LV(REG): Found invariant usage: 1 item
;CHECK-PWR9-NEXT: LV(REG): RegisterClass: PPC::GPRRC, 1 registers
Index: llvm/lib/Target/PowerPC/PPCTargetTransformInfo.cpp
===================================================================
--- llvm/lib/Target/PowerPC/PPCTargetTransformInfo.cpp
+++ llvm/lib/Target/PowerPC/PPCTargetTransformInfo.cpp
@@ -594,7 +594,7 @@
unsigned PPCTTIImpl::getRegisterClassForType(bool Vector, Type *Ty) const {
if (Vector)
return ST->hasVSX() ? VSXRC : VRRC;
- else if (Ty && Ty->getScalarType()->isFloatTy())
+ else if (Ty && Ty->getScalarType()->isFloatingPointTy())
return ST->hasVSX() ? VSXRC : FPRRC;
else
return GPRRC;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D71946.235444.patch
Type: text/x-patch
Size: 1357 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20191227/59baa137/attachment.bin>
More information about the llvm-commits
mailing list