[x86] Assert on invalid immediates in the instruction printer for cmp.ps/pd/ss/sd...
authorCraig Topper <craig.topper@gmail.com>
Sat, 27 Dec 2014 18:11:00 +0000 (18:11 +0000)
committerCraig Topper <craig.topper@gmail.com>
Sat, 27 Dec 2014 18:11:00 +0000 (18:11 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@224886 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/InstPrinter/X86ATTInstPrinter.cpp
lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp

index 88c0f193941940d783ed4def6ebdbbcac04382e6..db6948518c5a28583e7069653565e3f3e5c4f56c 100644 (file)
@@ -112,13 +112,15 @@ static void printSSEAVXCC(int64_t Imm, raw_ostream &O) {
 
 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);
 }
 
index f5fd9845d9099031ebcbb289b450e3c0621bcf8a..449445df7d27cd944bb16f95d5dd1fd1a2e7dc56 100644 (file)
@@ -90,13 +90,15 @@ static void printSSEAVXCC(int64_t Imm, raw_ostream &O) {
 
 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);
 }