]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/asm: add comments back for aliases on jumps for x86
authorRob Pike <r@golang.org>
Tue, 28 Apr 2015 19:35:06 +0000 (12:35 -0700)
committerRob Pike <r@golang.org>
Tue, 28 Apr 2015 19:41:19 +0000 (19:41 +0000)
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 <rsc@golang.org>
src/cmd/asm/internal/arch/arch.go

index 1f176dd966379c7e9fc9802ffce8d3fa58357b8c..9f2d3472c04a9ff226284663d81925c1f404efce 100644 (file)
@@ -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