[PATCH] D58466: [AArch64][GlobalISel] Implement partial support for G_SHUFFLE_VECTOR
Jessica Paquette via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Feb 20 11:59:43 PST 2019
paquette added inline comments.
================
Comment at: llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp:1935
+ // Find the constant indices.
+ for (unsigned i = 1; i < MaskDef->getNumOperands(); ++i) {
+ MachineInstr *ScalarDef = MRI.getVRegDef(MaskDef->getOperand(i).getReg());
----------------
`unsigned i = 1, e = MaskDef->getNumOperands(); i < e; ++i`?
================
Comment at: llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp:1939-1941
+ while (ScalarDef->getOpcode() == TargetOpcode::COPY) {
+ ScalarDef = MRI.getVRegDef(ScalarDef->getOperand(1).getReg());
+ }
----------------
don't need braces
================
Comment at: llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp:1940
+ while (ScalarDef->getOpcode() == TargetOpcode::COPY) {
+ ScalarDef = MRI.getVRegDef(ScalarDef->getOperand(1).getReg());
+ }
----------------
`MRI.getVRegDef` isn't guaranteed to return a value. Could this possibly be null here?
================
Comment at: llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp:1995-1996
+ // G_SHUFFLE_VECTOR is weird in that the source operands can be scalars, if
+ // it's originated from a <1 x T> type. Those should have been custom
+ // legalized into something else before we get here.
+ if (!Src1Ty.isVector() || !Src2Ty.isVector())
----------------
Should we die here then? Or add some debug output to make it easier to grep logs for if it happens?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D58466/new/
https://reviews.llvm.org/D58466
More information about the llvm-commits
mailing list