diff options
author | Craig Topper <craig.topper@intel.com> | 2018-10-22 16:59:24 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@intel.com> | 2018-10-22 16:59:24 +0000 |
commit | 8d8dcfe690e64608f89af071038851f1c4925ee4 (patch) | |
tree | 1ecdb3e5dcf10c2ff4923ca303bf0171d0da67ef /llvm/lib/Target/X86/X86MCInstLower.cpp | |
parent | ba88ad35ecc38011066084c5ca76d4793c5eb89b (diff) | |
download | bcm5719-llvm-8d8dcfe690e64608f89af071038851f1c4925ee4.tar.gz bcm5719-llvm-8d8dcfe690e64608f89af071038851f1c4925ee4.zip |
Revert r344877 "[X86] Stop promoting integer loads to vXi64"
Sam McCall reported miscompiles in some tensorflow code. Reverting while I try to figure out.
llvm-svn: 344921
Diffstat (limited to 'llvm/lib/Target/X86/X86MCInstLower.cpp')
-rw-r--r-- | llvm/lib/Target/X86/X86MCInstLower.cpp | 26 |
1 files changed, 5 insertions, 21 deletions
diff --git a/llvm/lib/Target/X86/X86MCInstLower.cpp b/llvm/lib/Target/X86/X86MCInstLower.cpp index b5fd9f4a785..58b1c505944 100644 --- a/llvm/lib/Target/X86/X86MCInstLower.cpp +++ b/llvm/lib/Target/X86/X86MCInstLower.cpp @@ -1391,7 +1391,7 @@ static const Constant *getConstantFromPool(const MachineInstr &MI, if (ConstantEntry.isMachineConstantPoolEntry()) return nullptr; - const Constant *C = ConstantEntry.Val.ConstVal; + auto *C = dyn_cast<Constant>(ConstantEntry.Val.ConstVal); assert((!C || ConstantEntry.getType() == C->getType()) && "Expected a constant of the same type!"); return C; @@ -1594,18 +1594,6 @@ void X86AsmPrinter::EmitSEHInstruction(const MachineInstr *MI) { } } -static unsigned getRegisterWidth(const MCOperandInfo &Info) { - if (Info.RegClass == X86::VR128RegClassID || - Info.RegClass == X86::VR128XRegClassID) - return 128; - if (Info.RegClass == X86::VR256RegClassID || - Info.RegClass == X86::VR256XRegClassID) - return 256; - if (Info.RegClass == X86::VR512RegClassID) - return 512; - llvm_unreachable("Unknown register class!"); -} - void X86AsmPrinter::EmitInstruction(const MachineInstr *MI) { X86MCInstLower MCInstLowering(*MF, *this); const X86RegisterInfo *RI = @@ -1891,9 +1879,8 @@ void X86AsmPrinter::EmitInstruction(const MachineInstr *MI) { const MachineOperand &MaskOp = MI->getOperand(MaskIdx); if (auto *C = getConstantFromPool(*MI, MaskOp)) { - unsigned Width = getRegisterWidth(MI->getDesc().OpInfo[0]); SmallVector<int, 64> Mask; - DecodePSHUFBMask(C, Width, Mask); + DecodePSHUFBMask(C, Mask); if (!Mask.empty()) OutStreamer->AddComment(getShuffleComment(MI, SrcIdx, SrcIdx, Mask), !EnablePrintSchedInfo); @@ -1964,9 +1951,8 @@ void X86AsmPrinter::EmitInstruction(const MachineInstr *MI) { const MachineOperand &MaskOp = MI->getOperand(MaskIdx); if (auto *C = getConstantFromPool(*MI, MaskOp)) { - unsigned Width = getRegisterWidth(MI->getDesc().OpInfo[0]); SmallVector<int, 16> Mask; - DecodeVPERMILPMask(C, ElSize, Width, Mask); + DecodeVPERMILPMask(C, ElSize, Mask); if (!Mask.empty()) OutStreamer->AddComment(getShuffleComment(MI, SrcIdx, SrcIdx, Mask), !EnablePrintSchedInfo); @@ -1996,9 +1982,8 @@ void X86AsmPrinter::EmitInstruction(const MachineInstr *MI) { const MachineOperand &MaskOp = MI->getOperand(6); if (auto *C = getConstantFromPool(*MI, MaskOp)) { - unsigned Width = getRegisterWidth(MI->getDesc().OpInfo[0]); SmallVector<int, 16> Mask; - DecodeVPERMIL2PMask(C, (unsigned)CtrlOp.getImm(), ElSize, Width, Mask); + DecodeVPERMIL2PMask(C, (unsigned)CtrlOp.getImm(), ElSize, Mask); if (!Mask.empty()) OutStreamer->AddComment(getShuffleComment(MI, 1, 2, Mask), !EnablePrintSchedInfo); @@ -2014,9 +1999,8 @@ void X86AsmPrinter::EmitInstruction(const MachineInstr *MI) { const MachineOperand &MaskOp = MI->getOperand(6); if (auto *C = getConstantFromPool(*MI, MaskOp)) { - unsigned Width = getRegisterWidth(MI->getDesc().OpInfo[0]); SmallVector<int, 16> Mask; - DecodeVPPERMMask(C, Width, Mask); + DecodeVPPERMMask(C, Mask); if (!Mask.empty()) OutStreamer->AddComment(getShuffleComment(MI, 1, 2, Mask), !EnablePrintSchedInfo); |