Commit b15e8bab authored by isharipo's avatar isharipo Committed by Ilya Tocar

cmd/asm: add amd64 PALIGNR instruction

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: default avatarIlya Tocar <ilya.tocar@intel.com>
Reviewed-by: default avatarRuss Cox <rsc@golang.org>
parent 4074e4e5
...@@ -3315,14 +3315,14 @@ TEXT asmtest(SB),DUPOK|NOSPLIT,$0 ...@@ -3315,14 +3315,14 @@ TEXT asmtest(SB),DUPOK|NOSPLIT,$0
//TODO: PALIGNR $7, (R11), M3 // 410f3a0f1b07 //TODO: PALIGNR $7, (R11), M3 // 410f3a0f1b07
//TODO: PALIGNR $7, M2, M3 // 0f3a0fda07 //TODO: PALIGNR $7, M2, M3 // 0f3a0fda07
//TODO: PALIGNR $7, M3, M3 // 0f3a0fdb07 //TODO: PALIGNR $7, M3, M3 // 0f3a0fdb07
//TODO: PALIGNR $7, (BX), X2 // 660f3a0f1307 PALIGNR $7, (BX), X2 // 660f3a0f1307
//TODO: PALIGNR $7, (R11), X2 // 66410f3a0f1307 PALIGNR $7, (R11), X2 // 66410f3a0f1307
//TODO: PALIGNR $7, X2, X2 // 660f3a0fd207 PALIGNR $7, X2, X2 // 660f3a0fd207
//TODO: PALIGNR $7, X11, X2 // 66410f3a0fd307 PALIGNR $7, X11, X2 // 66410f3a0fd307
//TODO: PALIGNR $7, (BX), X11 // 66440f3a0f1b07 PALIGNR $7, (BX), X11 // 66440f3a0f1b07
//TODO: PALIGNR $7, (R11), X11 // 66450f3a0f1b07 PALIGNR $7, (R11), X11 // 66450f3a0f1b07
//TODO: PALIGNR $7, X2, X11 // 66440f3a0fda07 PALIGNR $7, X2, X11 // 66440f3a0fda07
//TODO: PALIGNR $7, X11, X11 // 66450f3a0fdb07 PALIGNR $7, X11, X11 // 66450f3a0fdb07
PAND (BX), M2 // 0fdb13 PAND (BX), M2 // 0fdb13
PAND (R11), M2 // 410fdb13 PAND (R11), M2 // 410fdb13
PAND M2, M2 // 0fdbd2 PAND M2, M2 // 0fdbd2
......
...@@ -627,6 +627,7 @@ const ( ...@@ -627,6 +627,7 @@ const (
APADDUSB APADDUSB
APADDUSW APADDUSW
APADDW APADDW
APALIGNR
APAND APAND
APANDN APANDN
APAVGB APAVGB
......
...@@ -570,6 +570,7 @@ var Anames = []string{ ...@@ -570,6 +570,7 @@ var Anames = []string{
"PADDUSB", "PADDUSB",
"PADDUSW", "PADDUSW",
"PADDW", "PADDW",
"PALIGNR",
"PAND", "PAND",
"PANDN", "PANDN",
"PAVGB", "PAVGB",
......
...@@ -786,6 +786,10 @@ var ylddqu = []ytab{ ...@@ -786,6 +786,10 @@ var ylddqu = []ytab{
{Ym, Ynone, Yxr, Zm_r, 1}, {Ym, Ynone, Yxr, Zm_r, 1},
} }
var ypalignr = []ytab{
{Yu8, Yxm, Yxr, Zibm_r, 2},
}
// VEX instructions that come in two forms: // VEX instructions that come in two forms:
// VTHING xmm2/m128, xmmV, xmm1 // VTHING xmm2/m128, xmmV, xmm1
// VTHING ymm2/m256, ymmV, ymm1 // VTHING ymm2/m256, ymmV, ymm1
...@@ -1274,6 +1278,7 @@ var optab = ...@@ -1274,6 +1278,7 @@ var optab =
{APADDUSB, ymm, Py1, [23]uint8{0xdc, Pe, 0xdc}}, {APADDUSB, ymm, Py1, [23]uint8{0xdc, Pe, 0xdc}},
{APADDUSW, ymm, Py1, [23]uint8{0xdd, Pe, 0xdd}}, {APADDUSW, ymm, Py1, [23]uint8{0xdd, Pe, 0xdd}},
{APADDW, ymm, Py1, [23]uint8{0xfd, Pe, 0xfd}}, {APADDW, ymm, Py1, [23]uint8{0xfd, Pe, 0xfd}},
{APALIGNR, ypalignr, Pq, [23]uint8{0x3a, 0x0f}},
{APAND, ymm, Py1, [23]uint8{0xdb, Pe, 0xdb}}, {APAND, ymm, Py1, [23]uint8{0xdb, Pe, 0xdb}},
{APANDN, ymm, Py1, [23]uint8{0xdf, Pe, 0xdf}}, {APANDN, ymm, Py1, [23]uint8{0xdf, Pe, 0xdf}},
{APAUSE, ynone, Px, [23]uint8{0xf3, 0x90}}, {APAUSE, ynone, Px, [23]uint8{0xf3, 0x90}},
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment