diff --git a/travis/apx-ccmpscc/apx-ccmpscc.asm b/travis/apx-ccmpscc/apx-ccmpscc.asm index 2314b6451..be1852146 100644 --- a/travis/apx-ccmpscc/apx-ccmpscc.asm +++ b/travis/apx-ccmpscc/apx-ccmpscc.asm @@ -1004,3 +1004,6 @@ testcase {0x62, 0xDC, 0x7D, 0x04, 0x83, 0x3A, 0x05}, {ccmpz{dfv=cf,zf,sf,of} wor testcase {0x62, 0xDC, 0x7C, 0x04, 0x83, 0x3A, 0x05}, {ccmpz{dfv=cf,zf,sf,of} dword [r26], byte 0x05} testcase {0x62, 0xDC, 0xFC, 0x04, 0x83, 0x3A, 0x05}, {ccmpz{dfv=cf,zf,sf,of} qword [r26], byte 0x05} + +; Unsized memory operand with explicit byte immediate (issue #316) +testcase {0x62, 0xF4, 0x04, 0x02, 0x80, 0x3C, 0x24, 0x0A}, {ccmpb {dfv=} [rsp], byte 10} diff --git a/travis/apx-ccmpscc/apx-ccmpscc.bin.t b/travis/apx-ccmpscc/apx-ccmpscc.bin.t index b3ae6f523..d66171fb4 100644 Binary files a/travis/apx-ccmpscc/apx-ccmpscc.bin.t and b/travis/apx-ccmpscc/apx-ccmpscc.bin.t differ diff --git a/travis/apx-ctestscc/apx-ctestscc.asm b/travis/apx-ctestscc/apx-ctestscc.asm index a987578bc..f47dbc3ad 100644 --- a/travis/apx-ctestscc/apx-ctestscc.asm +++ b/travis/apx-ctestscc/apx-ctestscc.asm @@ -555,3 +555,6 @@ testcase {0x62, 0xDC, 0x7C, 0x04, 0xF6, 0x02, 0x05}, {ctestz{dfv=cf,zf,sf,of} by testcase {0x62, 0xDC, 0x7D, 0x04, 0xF7, 0x02, 0x05, 0x00}, {ctestz{dfv=cf,zf,sf,of} word [r26], word 0x05} testcase {0x62, 0xDC, 0x7C, 0x04, 0xF7, 0x02, 0x05, 0x00, 0x00, 0x00}, {ctestz{dfv=cf,zf,sf,of} dword [r26], dword 0x05} testcase {0x62, 0xDC, 0xFC, 0x04, 0xF7, 0x02, 0x05, 0x00, 0x00, 0x00}, {ctestz{dfv=cf,zf,sf,of} qword [r26], dword 0x05} + +; Register-memory operand order symmetry (canonical 84 /r encoding) +testcase {0x62, 0xF4, 0x04, 0x02, 0x84, 0x0A}, {ctestb {dfv=} cl, [rdx]} diff --git a/travis/apx-ctestscc/apx-ctestscc.bin.t b/travis/apx-ctestscc/apx-ctestscc.bin.t index 2a04e6550..825da2679 100644 Binary files a/travis/apx-ctestscc/apx-ctestscc.bin.t and b/travis/apx-ctestscc/apx-ctestscc.bin.t differ diff --git a/x86/insns.dat b/x86/insns.dat index 29a0d810d..84370df26 100644 --- a/x86/insns.dat +++ b/x86/insns.dat @@ -962,10 +962,12 @@ XLAT void [ d7] 8086,ND $bwdq CCMPscc spec4,rm#,reg# [wmr: evex.scc.dfv.l0.m4.o# 38# /r ] APX,SM1-2 $bwdq CCMPscc spec4,reg#,rm# [wrm: evex.scc.dfv.l0.m4.o# 3a# /r ] APX,SM1-2 + CCMPscc spec4,rm8,imm8 [wmi: evex.scc.dfv.l0.m4.o8 80 /7 ib ] APX,SM1-2 $wdq CCMPscc spec4,rm#,sbyte# [wmi: evex.scc.dfv.l0.m4.o# 83 /7 ib,s ] APX,SM1-2 -$bwdq CCMPscc spec4,rm#,imm# [wmi: evex.scc.dfv.l0.m4.o# 80# /7 i# ] APX,SM1-2 +$wdq CCMPscc spec4,rm#,imm# [wmi: evex.scc.dfv.l0.m4.o# 81 /7 i# ] APX,SM1-2 $bwdq CTESTscc spec4,rm#,reg# [wmr: evex.scc.dfv.l0.m4.o# 84# /r ] APX,SM1-2 +$bwdq CTESTscc spec4,reg#,mem# [wrm: evex.scc.dfv.l0.m4.o# 84# /r ] APX,SM1-2,ND $bwdq CTESTscc spec4,rm#,imm# [wmi: evex.scc.dfv.l0.m4.o# f6# /0 i# ] APX,SM1-2 $bwdq CTESTscc spec4,rm#,imm# [wmi: evex.scc.dfv.l0.m4.o# f6# /1 i# ] APX,SM1-2