Add more assembly opcodes for SSE compare instructions

llvm-svn: 107823
This commit is contained in:
Bruno Cardoso Lopes 2010-07-07 22:24:03 +00:00
parent a37a95ea2f
commit 6c61451011
3 changed files with 222 additions and 8 deletions

View File

@ -693,14 +693,38 @@ ParseInstruction(const StringRef &Name, SMLoc NameLoc,
unsigned SSECCIdx = IsVCMP ? 4 : 3; unsigned SSECCIdx = IsVCMP ? 4 : 3;
unsigned SSEComparisonCode = StringSwitch<unsigned>( unsigned SSEComparisonCode = StringSwitch<unsigned>(
PatchedName.slice(SSECCIdx, PatchedName.size() - 2)) PatchedName.slice(SSECCIdx, PatchedName.size() - 2))
.Case("eq", 0) .Case("eq", 0)
.Case("lt", 1) .Case("lt", 1)
.Case("le", 2) .Case("le", 2)
.Case("unord", 3) .Case("unord", 3)
.Case("neq", 4) .Case("neq", 4)
.Case("nlt", 5) .Case("nlt", 5)
.Case("nle", 6) .Case("nle", 6)
.Case("ord", 7) .Case("ord", 7)
.Case("eq_uq", 8)
.Case("nge", 9)
.Case("ngt", 0x0A)
.Case("false", 0x0B)
.Case("neq_oq", 0x0C)
.Case("ge", 0x0D)
.Case("gt", 0x0E)
.Case("true", 0x0F)
.Case("eq_os", 0x10)
.Case("lt_oq", 0x11)
.Case("le_oq", 0x12)
.Case("unord_s", 0x13)
.Case("neq_us", 0x14)
.Case("nlt_uq", 0x15)
.Case("nle_uq", 0x16)
.Case("ord_s", 0x17)
.Case("eq_us", 0x18)
.Case("nge_uq", 0x19)
.Case("ngt_uq", 0x1A)
.Case("false_os", 0x1B)
.Case("neq_os", 0x1C)
.Case("ge_oq", 0x1D)
.Case("gt_oq", 0x1E)
.Case("true_us", 0x1F)
.Default(~0U); .Default(~0U);
if (SSEComparisonCode != ~0U) { if (SSEComparisonCode != ~0U) {
ExtraImmOp = MCConstantExpr::Create(SSEComparisonCode, ExtraImmOp = MCConstantExpr::Create(SSEComparisonCode,

View File

@ -12210,3 +12210,98 @@
// CHECK: encoding: [0xc4,0xe3,0x79,0xdf,0x28,0x07] // CHECK: encoding: [0xc4,0xe3,0x79,0xdf,0x28,0x07]
vaeskeygenassist $7, (%eax), %xmm5 vaeskeygenassist $7, (%eax), %xmm5
// CHECK: vcmpps $8, %xmm1, %xmm2, %xmm3
// CHECK: encoding: [0xc5,0xe8,0xc2,0xd9,0x08]
vcmpeq_uqps %xmm1, %xmm2, %xmm3
// CHECK: vcmpps $9, %xmm1, %xmm2, %xmm3
// CHECK: encoding: [0xc5,0xe8,0xc2,0xd9,0x09]
vcmpngeps %xmm1, %xmm2, %xmm3
// CHECK: vcmpps $10, %xmm1, %xmm2, %xmm3
// CHECK: encoding: [0xc5,0xe8,0xc2,0xd9,0x0a]
vcmpngtps %xmm1, %xmm2, %xmm3
// CHECK: vcmpps $11, %xmm1, %xmm2, %xmm3
// CHECK: encoding: [0xc5,0xe8,0xc2,0xd9,0x0b]
vcmpfalseps %xmm1, %xmm2, %xmm3
// CHECK: vcmpps $12, %xmm1, %xmm2, %xmm3
// CHECK: encoding: [0xc5,0xe8,0xc2,0xd9,0x0c]
vcmpneq_oqps %xmm1, %xmm2, %xmm3
// CHECK: vcmpps $13, %xmm1, %xmm2, %xmm3
// CHECK: encoding: [0xc5,0xe8,0xc2,0xd9,0x0d]
vcmpgeps %xmm1, %xmm2, %xmm3
// CHECK: vcmpps $14, %xmm1, %xmm2, %xmm3
// CHECK: encoding: [0xc5,0xe8,0xc2,0xd9,0x0e]
vcmpgtps %xmm1, %xmm2, %xmm3
// CHECK: vcmpps $15, %xmm1, %xmm2, %xmm3
// CHECK: encoding: [0xc5,0xe8,0xc2,0xd9,0x0f]
vcmptrueps %xmm1, %xmm2, %xmm3
// CHECK: vcmpps $16, %xmm1, %xmm2, %xmm3
// CHECK: encoding: [0xc5,0xe8,0xc2,0xd9,0x10]
vcmpeq_osps %xmm1, %xmm2, %xmm3
// CHECK: vcmpps $17, %xmm1, %xmm2, %xmm3
// CHECK: encoding: [0xc5,0xe8,0xc2,0xd9,0x11]
vcmplt_oqps %xmm1, %xmm2, %xmm3
// CHECK: vcmpps $18, %xmm1, %xmm2, %xmm3
// CHECK: encoding: [0xc5,0xe8,0xc2,0xd9,0x12]
vcmple_oqps %xmm1, %xmm2, %xmm3
// CHECK: vcmpps $19, %xmm1, %xmm2, %xmm3
// CHECK: encoding: [0xc5,0xe8,0xc2,0xd9,0x13]
vcmpunord_sps %xmm1, %xmm2, %xmm3
// CHECK: vcmpps $20, %xmm1, %xmm2, %xmm3
// CHECK: encoding: [0xc5,0xe8,0xc2,0xd9,0x14]
vcmpneq_usps %xmm1, %xmm2, %xmm3
// CHECK: vcmpps $21, %xmm1, %xmm2, %xmm3
// CHECK: encoding: [0xc5,0xe8,0xc2,0xd9,0x15]
vcmpnlt_uqps %xmm1, %xmm2, %xmm3
// CHECK: vcmpps $22, %xmm1, %xmm2, %xmm3
// CHECK: encoding: [0xc5,0xe8,0xc2,0xd9,0x16]
vcmpnle_uqps %xmm1, %xmm2, %xmm3
// CHECK: vcmpps $23, %xmm1, %xmm2, %xmm3
// CHECK: encoding: [0xc5,0xe8,0xc2,0xd9,0x17]
vcmpord_sps %xmm1, %xmm2, %xmm3
// CHECK: vcmpps $24, %xmm1, %xmm2, %xmm3
// CHECK: encoding: [0xc5,0xe8,0xc2,0xd9,0x18]
vcmpeq_usps %xmm1, %xmm2, %xmm3
// CHECK: vcmpps $25, %xmm1, %xmm2, %xmm3
// CHECK: encoding: [0xc5,0xe8,0xc2,0xd9,0x19]
vcmpnge_uqps %xmm1, %xmm2, %xmm3
// CHECK: vcmpps $26, %xmm1, %xmm2, %xmm3
// CHECK: encoding: [0xc5,0xe8,0xc2,0xd9,0x1a]
vcmpngt_uqps %xmm1, %xmm2, %xmm3
// CHECK: vcmpps $27, %xmm1, %xmm2, %xmm3
// CHECK: encoding: [0xc5,0xe8,0xc2,0xd9,0x1b]
vcmpfalse_osps %xmm1, %xmm2, %xmm3
// CHECK: vcmpps $28, %xmm1, %xmm2, %xmm3
// CHECK: encoding: [0xc5,0xe8,0xc2,0xd9,0x1c]
vcmpneq_osps %xmm1, %xmm2, %xmm3
// CHECK: vcmpps $29, %xmm1, %xmm2, %xmm3
// CHECK: encoding: [0xc5,0xe8,0xc2,0xd9,0x1d]
vcmpge_oqps %xmm1, %xmm2, %xmm3
// CHECK: vcmpps $30, %xmm1, %xmm2, %xmm3
// CHECK: encoding: [0xc5,0xe8,0xc2,0xd9,0x1e]
vcmpgt_oqps %xmm1, %xmm2, %xmm3
// CHECK: vcmpps $31, %xmm1, %xmm2, %xmm3
// CHECK: encoding: [0xc5,0xe8,0xc2,0xd9,0x1f]
vcmptrue_usps %xmm1, %xmm2, %xmm3

View File

@ -2274,3 +2274,98 @@ pshufb CPI1_0(%rip), %xmm1
// CHECK: encoding: [0xc4,0x63,0x79,0xdf,0x10,0x07] // CHECK: encoding: [0xc4,0x63,0x79,0xdf,0x10,0x07]
vaeskeygenassist $7, (%rax), %xmm10 vaeskeygenassist $7, (%rax), %xmm10
// CHECK: vcmpps $8, %xmm11, %xmm12, %xmm13
// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x08]
vcmpeq_uqps %xmm11, %xmm12, %xmm13
// CHECK: vcmpps $9, %xmm11, %xmm12, %xmm13
// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x09]
vcmpngeps %xmm11, %xmm12, %xmm13
// CHECK: vcmpps $10, %xmm11, %xmm12, %xmm13
// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x0a]
vcmpngtps %xmm11, %xmm12, %xmm13
// CHECK: vcmpps $11, %xmm11, %xmm12, %xmm13
// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x0b]
vcmpfalseps %xmm11, %xmm12, %xmm13
// CHECK: vcmpps $12, %xmm11, %xmm12, %xmm13
// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x0c]
vcmpneq_oqps %xmm11, %xmm12, %xmm13
// CHECK: vcmpps $13, %xmm11, %xmm12, %xmm13
// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x0d]
vcmpgeps %xmm11, %xmm12, %xmm13
// CHECK: vcmpps $14, %xmm11, %xmm12, %xmm13
// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x0e]
vcmpgtps %xmm11, %xmm12, %xmm13
// CHECK: vcmpps $15, %xmm11, %xmm12, %xmm13
// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x0f]
vcmptrueps %xmm11, %xmm12, %xmm13
// CHECK: vcmpps $16, %xmm11, %xmm12, %xmm13
// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x10]
vcmpeq_osps %xmm11, %xmm12, %xmm13
// CHECK: vcmpps $17, %xmm11, %xmm12, %xmm13
// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x11]
vcmplt_oqps %xmm11, %xmm12, %xmm13
// CHECK: vcmpps $18, %xmm11, %xmm12, %xmm13
// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x12]
vcmple_oqps %xmm11, %xmm12, %xmm13
// CHECK: vcmpps $19, %xmm11, %xmm12, %xmm13
// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x13]
vcmpunord_sps %xmm11, %xmm12, %xmm13
// CHECK: vcmpps $20, %xmm11, %xmm12, %xmm13
// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x14]
vcmpneq_usps %xmm11, %xmm12, %xmm13
// CHECK: vcmpps $21, %xmm11, %xmm12, %xmm13
// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x15]
vcmpnlt_uqps %xmm11, %xmm12, %xmm13
// CHECK: vcmpps $22, %xmm11, %xmm12, %xmm13
// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x16]
vcmpnle_uqps %xmm11, %xmm12, %xmm13
// CHECK: vcmpps $23, %xmm11, %xmm12, %xmm13
// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x17]
vcmpord_sps %xmm11, %xmm12, %xmm13
// CHECK: vcmpps $24, %xmm11, %xmm12, %xmm13
// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x18]
vcmpeq_usps %xmm11, %xmm12, %xmm13
// CHECK: vcmpps $25, %xmm11, %xmm12, %xmm13
// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x19]
vcmpnge_uqps %xmm11, %xmm12, %xmm13
// CHECK: vcmpps $26, %xmm11, %xmm12, %xmm13
// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x1a]
vcmpngt_uqps %xmm11, %xmm12, %xmm13
// CHECK: vcmpps $27, %xmm11, %xmm12, %xmm13
// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x1b]
vcmpfalse_osps %xmm11, %xmm12, %xmm13
// CHECK: vcmpps $28, %xmm11, %xmm12, %xmm13
// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x1c]
vcmpneq_osps %xmm11, %xmm12, %xmm13
// CHECK: vcmpps $29, %xmm11, %xmm12, %xmm13
// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x1d]
vcmpge_oqps %xmm11, %xmm12, %xmm13
// CHECK: vcmpps $30, %xmm11, %xmm12, %xmm13
// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x1e]
vcmpgt_oqps %xmm11, %xmm12, %xmm13
// CHECK: vcmpps $31, %xmm11, %xmm12, %xmm13
// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xeb,0x1f]
vcmptrue_usps %xmm11, %xmm12, %xmm13