[PATCH] D25438: [mips] Fix Mips MSA instrinsics
Vasileios Kalintiris via llvm-commits
llvm-commits at lists.llvm.org
Wed Oct 19 04:40:16 PDT 2016
vkalintiris added a comment.
Why shouldn't we "crash" when we pass invalid/bad constant immediates to our intrinsics? Do you have a case in mind that causes us problems if we do so?
Comment at: lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1108
EltVT = TLI->getTypeToTransformTo(*getContext(), EltVT);
- APInt NewVal = Elt->getValue().zext(EltVT.getSizeInBits());
+ APInt NewVal = Elt->getValue().zextOrTrunc(EltVT.getSizeInBits());
Elt = ConstantInt::get(*getContext(), NewVal);
I don't think that we need this because the type will be always promoted based on the check above. Do you have any example/test case that hits this?
Comment at: lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1134
EltParts.push_back(getConstant(NewVal.lshr(i * ViaEltSizeInBits)
- .trunc(ViaEltSizeInBits), DL,
+ .zextOrTrunc(ViaEltSizeInBits), DL,
ViaEltVT, isT, isO));
Similarly, given that the element type has been expanded, I don't think that we need to cover zero-extensions.
More information about the llvm-commits