[llvm] r224886 - [x86] Assert on invalid immediates in the instruction printer for cmp.ps/pd/ss/sd instead of truncating the immediate. The assembly parser and instruction selection shouldn't generate invalid immediates.
Craig Topper
craig.topper at gmail.com
Sat Dec 27 10:11:00 PST 2014
Author: ctopper
Date: Sat Dec 27 12:11:00 2014
New Revision: 224886
URL: http://llvm.org/viewvc/llvm-project?rev=224886&view=rev
Log:
[x86] Assert on invalid immediates in the instruction printer for cmp.ps/pd/ss/sd instead of truncating the immediate. The assembly parser and instruction selection shouldn't generate invalid immediates.
Modified:
llvm/trunk/lib/Target/X86/InstPrinter/X86ATTInstPrinter.cpp
llvm/trunk/lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp
Modified: llvm/trunk/lib/Target/X86/InstPrinter/X86ATTInstPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/InstPrinter/X86ATTInstPrinter.cpp?rev=224886&r1=224885&r2=224886&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/InstPrinter/X86ATTInstPrinter.cpp (original)
+++ llvm/trunk/lib/Target/X86/InstPrinter/X86ATTInstPrinter.cpp Sat Dec 27 12:11:00 2014
@@ -112,13 +112,15 @@ static void printSSEAVXCC(int64_t Imm, r
void X86ATTInstPrinter::printSSECC(const MCInst *MI, unsigned Op,
raw_ostream &O) {
- int64_t Imm = MI->getOperand(Op).getImm() & 0x7;
+ int64_t Imm = MI->getOperand(Op).getImm();
+ assert((Imm & 0x7) == Imm); // Ensure valid immediate.
printSSEAVXCC(Imm, O);
}
void X86ATTInstPrinter::printAVXCC(const MCInst *MI, unsigned Op,
raw_ostream &O) {
- int64_t Imm = MI->getOperand(Op).getImm() & 0x1f;
+ int64_t Imm = MI->getOperand(Op).getImm();
+ assert((Imm & 0x1f) == Imm); // Ensure valid immediate.
printSSEAVXCC(Imm, O);
}
Modified: llvm/trunk/lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp?rev=224886&r1=224885&r2=224886&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp (original)
+++ llvm/trunk/lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp Sat Dec 27 12:11:00 2014
@@ -90,13 +90,15 @@ static void printSSEAVXCC(int64_t Imm, r
void X86IntelInstPrinter::printSSECC(const MCInst *MI, unsigned Op,
raw_ostream &O) {
- int64_t Imm = MI->getOperand(Op).getImm() & 0x7;
+ int64_t Imm = MI->getOperand(Op).getImm();
+ assert((Imm & 0x7) == Imm); // Ensure valid immediate.
printSSEAVXCC(Imm, O);
}
void X86IntelInstPrinter::printAVXCC(const MCInst *MI, unsigned Op,
raw_ostream &O) {
- int64_t Imm = MI->getOperand(Op).getImm() & 0x1f;
+ int64_t Imm = MI->getOperand(Op).getImm();
+ assert((Imm & 0x1f) == Imm); // Ensure valid immediate.
printSSEAVXCC(Imm, O);
}
More information about the llvm-commits
mailing list