From a88994c1378c5762a9eee75e683d19e65689bfd1 Mon Sep 17 00:00:00 2001 From: Rob Pike Date: Tue, 28 Apr 2015 12:35:06 -0700 Subject: [PATCH] cmd/asm: add comments back for aliases on jumps for x86 These were lost in the transition from 8a/6a to asm. Also, in the process, discover more aliases. I'm betting the missing ones were a casualty of the recent merge of 386 and amd64. Update #10385. Change-Id: I1681034b25af3ffc103f75e5fc57baca5feb3fcd Reviewed-on: https://go-review.googlesource.com/9431 Reviewed-by: Russ Cox --- src/cmd/asm/internal/arch/arch.go | 74 +++++++++++++++++++------------ 1 file changed, 45 insertions(+), 29 deletions(-) diff --git a/src/cmd/asm/internal/arch/arch.go b/src/cmd/asm/internal/arch/arch.go index 1f176dd966..9f2d3472c0 100644 --- a/src/cmd/asm/internal/arch/arch.go +++ b/src/cmd/asm/internal/arch/arch.go @@ -103,35 +103,51 @@ func archX86(linkArch *obj.LinkArch) *Arch { } } // Annoying aliases. - instructions["JA"] = x86.AJHI - instructions["JAE"] = x86.AJCC - instructions["JB"] = x86.AJCS - instructions["JBE"] = x86.AJLS - instructions["JC"] = x86.AJCS - instructions["JE"] = x86.AJEQ - instructions["JG"] = x86.AJGT - instructions["JHS"] = x86.AJCC - instructions["JL"] = x86.AJLT - instructions["JLO"] = x86.AJCS - instructions["JNA"] = x86.AJLS - instructions["JNAE"] = x86.AJCS - instructions["JNB"] = x86.AJCC - instructions["JNBE"] = x86.AJHI - instructions["JNC"] = x86.AJCC - instructions["JNG"] = x86.AJLE - instructions["JNGE"] = x86.AJLT - instructions["JNL"] = x86.AJGE - instructions["JNLE"] = x86.AJGT - instructions["JNO"] = x86.AJOC - instructions["JNP"] = x86.AJPC - instructions["JNS"] = x86.AJPL - instructions["JNZ"] = x86.AJNE - instructions["JO"] = x86.AJOS - instructions["JP"] = x86.AJPS - instructions["JPE"] = x86.AJPS - instructions["JPO"] = x86.AJPC - instructions["JS"] = x86.AJMI - instructions["JZ"] = x86.AJEQ + instructions["JA"] = x86.AJHI /* alternate */ + instructions["JAE"] = x86.AJCC /* alternate */ + instructions["JB"] = x86.AJCS /* alternate */ + instructions["JBE"] = x86.AJLS /* alternate */ + instructions["JC"] = x86.AJCS /* alternate */ + instructions["JCC"] = x86.AJCC /* carry clear (CF = 0) */ + instructions["JCS"] = x86.AJCS /* carry set (CF = 1) */ + instructions["JE"] = x86.AJEQ /* alternate */ + instructions["JEQ"] = x86.AJEQ /* equal (ZF = 1) */ + instructions["JG"] = x86.AJGT /* alternate */ + instructions["JGE"] = x86.AJGE /* greater than or equal (signed) (SF = OF) */ + instructions["JGT"] = x86.AJGT /* greater than (signed) (ZF = 0 && SF = OF) */ + instructions["JHI"] = x86.AJHI /* higher (unsigned) (CF = 0 && ZF = 0) */ + instructions["JHS"] = x86.AJCC /* alternate */ + instructions["JL"] = x86.AJLT /* alternate */ + instructions["JLE"] = x86.AJLE /* less than or equal (signed) (ZF = 1 || SF != OF) */ + instructions["JLO"] = x86.AJCS /* alternate */ + instructions["JLS"] = x86.AJLS /* lower or same (unsigned) (CF = 1 || ZF = 1) */ + instructions["JLT"] = x86.AJLT /* less than (signed) (SF != OF) */ + instructions["JMI"] = x86.AJMI /* negative (minus) (SF = 1) */ + instructions["JNA"] = x86.AJLS /* alternate */ + instructions["JNAE"] = x86.AJCS /* alternate */ + instructions["JNB"] = x86.AJCC /* alternate */ + instructions["JNBE"] = x86.AJHI /* alternate */ + instructions["JNC"] = x86.AJCC /* alternate */ + instructions["JNE"] = x86.AJNE /* not equal (ZF = 0) */ + instructions["JNG"] = x86.AJLE /* alternate */ + instructions["JNGE"] = x86.AJLT /* alternate */ + instructions["JNL"] = x86.AJGE /* alternate */ + instructions["JNLE"] = x86.AJGT /* alternate */ + instructions["JNO"] = x86.AJOC /* alternate */ + instructions["JNP"] = x86.AJPC /* alternate */ + instructions["JNS"] = x86.AJPL /* alternate */ + instructions["JNZ"] = x86.AJNE /* alternate */ + instructions["JO"] = x86.AJOS /* alternate */ + instructions["JOC"] = x86.AJOC /* overflow clear (OF = 0) */ + instructions["JOS"] = x86.AJOS /* overflow set (OF = 1) */ + instructions["JP"] = x86.AJPS /* alternate */ + instructions["JPC"] = x86.AJPC /* parity clear (PF = 0) */ + instructions["JPE"] = x86.AJPS /* alternate */ + instructions["JPL"] = x86.AJPL /* non-negative (plus) (SF = 0) */ + instructions["JPO"] = x86.AJPC /* alternate */ + instructions["JPS"] = x86.AJPS /* parity set (PF = 1) */ + instructions["JS"] = x86.AJMI /* alternate */ + instructions["JZ"] = x86.AJEQ /* alternate */ instructions["MASKMOVDQU"] = x86.AMASKMOVOU instructions["MOVD"] = x86.AMOVQ instructions["MOVDQ2Q"] = x86.AMOVQ