]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/asm: add amd64 PALIGNR instruction
authorisharipo <iskander.sharipov@intel.com>
Fri, 18 Aug 2017 11:56:12 +0000 (14:56 +0300)
committerIlya Tocar <ilya.tocar@intel.com>
Wed, 6 Sep 2017 15:37:20 +0000 (15:37 +0000)
3rd change out of 3 to cover AMD64 SSSE3 instruction set in Go asm.
This commit adds instruction that do require new ytab variable.

Change-Id: I0bc7d9401c9176eb3760c3d59494ef082e97af84
Reviewed-on: https://go-review.googlesource.com/56870
Run-TryBot: Iskander Sharipov <iskander.sharipov@intel.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ilya Tocar <ilya.tocar@intel.com>
Reviewed-by: Russ Cox <rsc@golang.org>
src/cmd/asm/internal/asm/testdata/amd64enc.s
src/cmd/internal/obj/x86/a.out.go
src/cmd/internal/obj/x86/anames.go
src/cmd/internal/obj/x86/asm6.go

index ed80f6f92e6f5f4df976ebec85c9e5e6b8e90d66..040e944b704981895fdf639ef956e9095bf58417 100644 (file)
@@ -3315,14 +3315,14 @@ TEXT asmtest(SB),DUPOK|NOSPLIT,$0
        //TODO: PALIGNR $7, (R11), M3           // 410f3a0f1b07
        //TODO: PALIGNR $7, M2, M3              // 0f3a0fda07
        //TODO: PALIGNR $7, M3, M3              // 0f3a0fdb07
-       //TODO: PALIGNR $7, (BX), X2            // 660f3a0f1307
-       //TODO: PALIGNR $7, (R11), X2           // 66410f3a0f1307
-       //TODO: PALIGNR $7, X2, X2              // 660f3a0fd207
-       //TODO: PALIGNR $7, X11, X2             // 66410f3a0fd307
-       //TODO: PALIGNR $7, (BX), X11           // 66440f3a0f1b07
-       //TODO: PALIGNR $7, (R11), X11          // 66450f3a0f1b07
-       //TODO: PALIGNR $7, X2, X11             // 66440f3a0fda07
-       //TODO: PALIGNR $7, X11, X11            // 66450f3a0fdb07
+       PALIGNR $7, (BX), X2                    // 660f3a0f1307
+       PALIGNR $7, (R11), X2                   // 66410f3a0f1307
+       PALIGNR $7, X2, X2                      // 660f3a0fd207
+       PALIGNR $7, X11, X2                     // 66410f3a0fd307
+       PALIGNR $7, (BX), X11                   // 66440f3a0f1b07
+       PALIGNR $7, (R11), X11                  // 66450f3a0f1b07
+       PALIGNR $7, X2, X11                     // 66440f3a0fda07
+       PALIGNR $7, X11, X11                    // 66450f3a0fdb07
        PAND (BX), M2                           // 0fdb13
        PAND (R11), M2                          // 410fdb13
        PAND M2, M2                             // 0fdbd2
index 778bdc63833302e021ec8fd98ad6083745d5fe62..c48093934e47fb1383f8cd807a4b7d514d3619a1 100644 (file)
@@ -627,6 +627,7 @@ const (
        APADDUSB
        APADDUSW
        APADDW
+       APALIGNR
        APAND
        APANDN
        APAVGB
index 45b39aa552c1e2b619deacc935c64f799713b38b..b15325dcadb86f22dbd92374a57a782774ee5a41 100644 (file)
@@ -570,6 +570,7 @@ var Anames = []string{
        "PADDUSB",
        "PADDUSW",
        "PADDW",
+       "PALIGNR",
        "PAND",
        "PANDN",
        "PAVGB",
index 16e58ad94d63141dba3ee78e63710d9c9acb468e..e031a396e8775143194a1279bb0f2f086d35dc0c 100644 (file)
@@ -786,6 +786,10 @@ var ylddqu = []ytab{
        {Ym, Ynone, Yxr, Zm_r, 1},
 }
 
+var ypalignr = []ytab{
+       {Yu8, Yxm, Yxr, Zibm_r, 2},
+}
+
 // VEX instructions that come in two forms:
 //     VTHING xmm2/m128, xmmV, xmm1
 //     VTHING ymm2/m256, ymmV, ymm1
@@ -1274,6 +1278,7 @@ var optab =
        {APADDUSB, ymm, Py1, [23]uint8{0xdc, Pe, 0xdc}},
        {APADDUSW, ymm, Py1, [23]uint8{0xdd, Pe, 0xdd}},
        {APADDW, ymm, Py1, [23]uint8{0xfd, Pe, 0xfd}},
+       {APALIGNR, ypalignr, Pq, [23]uint8{0x3a, 0x0f}},
        {APAND, ymm, Py1, [23]uint8{0xdb, Pe, 0xdb}},
        {APANDN, ymm, Py1, [23]uint8{0xdf, Pe, 0xdf}},
        {APAUSE, ynone, Px, [23]uint8{0xf3, 0x90}},