From e13e338f45e8f5bc81e879a8beee5cfe0417d283 Mon Sep 17 00:00:00 2001 From: Michael Zuckerman Date: Mon, 25 Jan 2016 08:43:26 +0000 Subject: [PATCH] [AVX512] [CMPPS ][ CMPPD ] Adding full Comparison Predicate names X86AsmParser.cpp is missing full comparison predicate names for CMPPD and CMPPS Instructions. X86AsmParser.cpp defines only the short names of the Comparison predicate that you can find in the following pdf: https://software.intel.com/sites/default/files/managed/07/b7/319433-023.pdf Page 5-61 table 5-3 Differential Revision: http://reviews.llvm.org/D16518 llvm-svn: 258671 --- lib/Target/X86/AsmParser/X86AsmParser.cpp | 14 ++ test/MC/X86/avx512-encodings.s | 208 ++++++++++++++++++++++ 2 files changed, 222 insertions(+) diff --git a/lib/Target/X86/AsmParser/X86AsmParser.cpp b/lib/Target/X86/AsmParser/X86AsmParser.cpp index 41835729781..7e0ead408a8 100644 --- a/lib/Target/X86/AsmParser/X86AsmParser.cpp +++ b/lib/Target/X86/AsmParser/X86AsmParser.cpp @@ -2180,22 +2180,36 @@ bool X86AsmParser::ParseInstruction(ParseInstructionInfo &Info, StringRef Name, unsigned ComparisonCode = StringSwitch( PatchedName.slice(CCIdx, PatchedName.size() - 2)) .Case("eq", 0x00) + .Case("eq_oq", 0x00) .Case("lt", 0x01) + .Case("lt_os", 0x01) .Case("le", 0x02) + .Case("le_os", 0x02) .Case("unord", 0x03) + .Case("unord_q", 0x03) .Case("neq", 0x04) + .Case("neq_uq", 0x04) .Case("nlt", 0x05) + .Case("nlt_us", 0x05) .Case("nle", 0x06) + .Case("nle_us", 0x06) .Case("ord", 0x07) + .Case("ord_q", 0x07) /* AVX only from here */ .Case("eq_uq", 0x08) .Case("nge", 0x09) + .Case("nge_us", 0x09) .Case("ngt", 0x0A) + .Case("ngt_us", 0x0A) .Case("false", 0x0B) + .Case("false_oq", 0x0B) .Case("neq_oq", 0x0C) .Case("ge", 0x0D) + .Case("ge_os", 0x0D) .Case("gt", 0x0E) + .Case("gt_os", 0x0E) .Case("true", 0x0F) + .Case("true_uq", 0x0F) .Case("eq_os", 0x10) .Case("lt_oq", 0x11) .Case("le_oq", 0x12) diff --git a/test/MC/X86/avx512-encodings.s b/test/MC/X86/avx512-encodings.s index 7191058692e..21279324124 100644 --- a/test/MC/X86/avx512-encodings.s +++ b/test/MC/X86/avx512-encodings.s @@ -19275,3 +19275,211 @@ vpermilpd $0x23, 0x400(%rbx), %zmm2 // CHECK: vmovss %xmm24, %xmm27, %xmm15 {%k2} {z} // CHECK: encoding: [0x62,0x11,0x26,0x82,0x10,0xf8] vmovss %xmm24, %xmm27, %xmm15 {%k2} {z} + +//CHECK: vcmpeqpd 8128(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x7f,0x00] + vcmpeq_oqpd 8128(%rdx), %zmm30, %k5 + +//CHECK: vcmpeqpd -8192(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x80,0x00] + vcmpeq_oqpd -8192(%rdx), %zmm30, %k5 + +//CHECK: vcmpeqpd 1016(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x7f,0x00] + vcmpeq_oqpd 1016(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpeqpd -1024(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x80,0x00] + vcmpeq_oqpd -1024(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpltpd 8128(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x7f,0x01] + vcmplt_ospd 8128(%rdx), %zmm30, %k5 + +//CHECK: vcmpltpd -8192(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x80,0x01] + vcmplt_ospd -8192(%rdx), %zmm30, %k5 + +//CHECK: vcmpltpd 1016(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x7f,0x01] + vcmplt_ospd 1016(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpltpd -1024(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x80,0x01] + vcmplt_ospd -1024(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmplepd 8128(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x7f,0x02] + vcmple_ospd 8128(%rdx), %zmm30, %k5 + +//CHECK: vcmplepd -8192(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x80,0x02] + vcmple_ospd -8192(%rdx), %zmm30, %k5 + +//CHECK: vcmplepd 1016(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x7f,0x02] + vcmple_ospd 1016(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmplepd -1024(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x80,0x02 + vcmple_ospd -1024(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpunordpd 8128(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x7f,0x03] + vcmpunord_qpd 8128(%rdx), %zmm30, %k5 + +//CHECK: vcmpunordpd -8192(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x80,0x03] + vcmpunord_qpd -8192(%rdx), %zmm30, %k5 + +//CHECK: vcmpunordpd 1016(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x7f,0x03] + vcmpunord_qpd 1016(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpunordpd -1024(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x80,0x03] + vcmpunord_qpd -1024(%rdx){1to8}, %zmm30, %k5 + + //CHECK: vcmpneqpd 8128(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x7f,0x04] + vcmpneq_uqpd 8128(%rdx), %zmm30, %k5 + +//CHECK: vcmpneqpd -8192(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x80,0x04] + vcmpneq_uqpd -8192(%rdx), %zmm30, %k5 + +//CHECK: vcmpneqpd 1016(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x7f,0x04] + vcmpneq_uqpd 1016(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpneqpd -1024(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x80,0x04] + vcmpneq_uqpd -1024(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpnltpd 8128(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x7f,0x05] + vcmpnlt_uspd 8128(%rdx), %zmm30, %k5 + +//CHECK: vcmpnltpd -8192(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x80,0x05] + vcmpnlt_uspd -8192(%rdx), %zmm30, %k5 + +//CHECK: vcmpnltpd 1016(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x7f,0x05] + vcmpnlt_uspd 1016(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpnltpd -1024(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x80,0x05] + vcmpnlt_uspd -1024(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpnlepd 8128(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x7f,0x06] + vcmpnle_uspd 8128(%rdx), %zmm30, %k5 + +//CHECK: vcmpnlepd -8192(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x80,0x06] + vcmpnle_uspd -8192(%rdx), %zmm30, %k5 + +//CHECK: vcmpnlepd 1016(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x7f,0x06] + vcmpnle_uspd 1016(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpnlepd -1024(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x80,0x06] + vcmpnle_uspd -1024(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpordpd 8128(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x7f,0x07] + vcmpord_qpd 8128(%rdx), %zmm30, %k5 + +//CHECK: vcmpordpd -8192(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x80,0x07] + vcmpord_qpd -8192(%rdx), %zmm30, %k5 + +//CHECK: vcmpordpd 1016(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x7f,0x07] + vcmpord_qpd 1016(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpordpd -1024(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x80,0x07] + vcmpord_qpd -1024(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpngepd 8128(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x7f,0x09] + vcmpnge_uspd 8128(%rdx), %zmm30, %k5 + +//CHECK: vcmpngepd -8192(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x80,0x09] + vcmpnge_uspd -8192(%rdx), %zmm30, %k5 + +//CHECK: vcmpngepd 1016(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x7f,0x09] + vcmpnge_uspd 1016(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpngepd -1024(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x80,0x09] + vcmpnge_uspd -1024(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpfalsepd 8128(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x7f,0x0b] + vcmpfalse_oqpd 8128(%rdx), %zmm30, %k5 + +//CHECK: vcmpfalsepd -8192(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x80,0x0b] + vcmpfalse_oqpd -8192(%rdx), %zmm30, %k5 + +//CHECK: vcmpfalsepd 1016(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x7f,0x0b] + vcmpfalse_oqpd 1016(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpfalsepd -1024(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x80,0x0b] + vcmpfalse_oqpd -1024(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpgepd 8128(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x7f,0x0d] + vcmpge_ospd 8128(%rdx), %zmm30, %k5 + +//CHECK: vcmpgepd -8192(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x80,0x0d] + vcmpge_ospd -8192(%rdx), %zmm30, %k5 + +//CHECK: vcmpgepd 1016(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x7f,0x0d] + vcmpge_ospd 1016(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpgepd -1024(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x80,0x0d] + vcmpge_ospd -1024(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpgtpd 8128(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x7f,0x0e] + vcmpgt_ospd 8128(%rdx), %zmm30, %k5 + +//CHECK: vcmpgtpd -8192(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x80,0x0e] + vcmpgt_ospd -8192(%rdx), %zmm30, %k5 + +//CHECK: vcmpgtpd 1016(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x7f,0x0e] + vcmpgt_ospd 1016(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmpgtpd -1024(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x80,0x0e] + vcmpgt_ospd -1024(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmptruepd 8128(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x7f,0x0f] + vcmptrue_uqpd 8128(%rdx), %zmm30, %k5 + +//CHECK: vcmptruepd -8192(%rdx), %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x40,0xc2,0x6a,0x80,0x0f] + vcmptrue_uqpd -8192(%rdx), %zmm30, %k5 + +//CHECK: vcmptruepd 1016(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x7f,0x0f] + vcmptrue_uqpd 1016(%rdx){1to8}, %zmm30, %k5 + +//CHECK: vcmptruepd -1024(%rdx){1to8}, %zmm30, %k5 +//CHECK: encoding: [0x62,0xf1,0x8d,0x50,0xc2,0x6a,0x80,0x0f] + vcmptrue_uqpd -1024(%rdx){1to8}, %zmm30, %k5