summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
diff options
context:
space:
mode:
authorMatt Arsenault <Matthew.Arsenault@amd.com>2019-01-30 02:04:31 +0000
committerMatt Arsenault <Matthew.Arsenault@amd.com>2019-01-30 02:04:31 +0000
commit92c5001136099d5b9816098a3b7e8c9c97b632f2 (patch)
tree0aaabe695d9f9cc4659ba029292a8effd90f34a6 /llvm/lib/CodeGen
parenteb6b5ece587cc0f1d8165a852d5ba9db16d74938 (diff)
downloadbcm5719-llvm-92c5001136099d5b9816098a3b7e8c9c97b632f2.tar.gz
bcm5719-llvm-92c5001136099d5b9816098a3b7e8c9c97b632f2.zip
GlobalISel: Handle more cases for widenScalar for G_STORE
llvm-svn: 352585
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r--llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp b/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
index ef5dd76d37e..24c89956190 100644
--- a/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
+++ b/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
@@ -1022,12 +1022,19 @@ LegalizerHelper::widenScalar(MachineInstr &MI, unsigned TypeIdx, LLT WideTy) {
return Legalized;
case TargetOpcode::G_STORE: {
- if (MRI.getType(MI.getOperand(0).getReg()) != LLT::scalar(1) ||
- WideTy != LLT::scalar(8))
+ if (TypeIdx != 0)
+ return UnableToLegalize;
+
+ LLT Ty = MRI.getType(MI.getOperand(0).getReg());
+ if (!isPowerOf2_32(Ty.getSizeInBits()))
return UnableToLegalize;
Observer.changingInstr(MI);
- widenScalarSrc(MI, WideTy, 0, TargetOpcode::G_ZEXT);
+
+ unsigned ExtType = Ty.getScalarSizeInBits() == 1 ?
+ TargetOpcode::G_ZEXT : TargetOpcode::G_ANYEXT;
+ widenScalarSrc(MI, WideTy, 0, ExtType);
+
Observer.changedInstr(MI);
return Legalized;
}
OpenPOWER on IntegriCloud