[X86] Prevent accidentally accepting cmpeqsh as a valid mnemonic.
authorCraig Topper <craig.topper@sifive.com>
Sun, 15 Aug 2021 19:00:54 +0000 (12:00 -0700)
committerCraig Topper <craig.topper@sifive.com>
Sun, 15 Aug 2021 19:00:56 +0000 (12:00 -0700)
We should only accept as vcmpeqsh.

Same for all the other 31 comparison values.

llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
llvm/test/MC/X86/avx512-err.s

index 6cd64ad..b9d8c14 100644 (file)
@@ -3184,7 +3184,8 @@ bool X86AsmParser::ParseInstruction(ParseInstructionInfo &Info, StringRef Name,
       .Case("gt_oq",    0x1E)
       .Case("true_us",  0x1F)
       .Default(~0U);
-    if (CC != ~0U && (IsVCMP || CC < 8)) {
+    if (CC != ~0U && (IsVCMP || CC < 8) &&
+        (IsVCMP || PatchedName.back() != 'h')) {
       if (PatchedName.endswith("ss"))
         PatchedName = IsVCMP ? "vcmpss" : "cmpss";
       else if (PatchedName.endswith("sd"))
index 0d353a6..96e8c26 100644 (file)
@@ -20,3 +20,6 @@ vpmuld %xmm1, %xmm2, %xmm3
 
 // ERR: invalid instruction mnemonic 'maskmov'
 maskmov %mm1, %mm2
+
+// ERR: invalid instruction mnemonic 'cmpeqsh'
+cmpeqsh %xmm2, %xmm1, %k0