| Index: src/ia32/assembler-ia32.h
|
| diff --git a/src/ia32/assembler-ia32.h b/src/ia32/assembler-ia32.h
|
| index 77673697e4dde31440f459cf490e408e8776f91b..466245dd558d4eb1b75f74b855c38073a3379da6 100644
|
| --- a/src/ia32/assembler-ia32.h
|
| +++ b/src/ia32/assembler-ia32.h
|
| @@ -1128,14 +1128,36 @@ class Assembler : public AssemblerBase {
|
| void psrlq(XMMRegister reg, int8_t shift);
|
| void psrlq(XMMRegister dst, XMMRegister src);
|
|
|
| + // pshufb is SSSE3 instruction
|
| + void pshufb(XMMRegister dst, XMMRegister src) { pshufb(dst, Operand(src)); }
|
| + void pshufb(XMMRegister dst, const Operand& src);
|
| + void pshuflw(XMMRegister dst, XMMRegister src, uint8_t shuffle) {
|
| + pshuflw(dst, Operand(src), shuffle);
|
| + }
|
| + void pshuflw(XMMRegister dst, const Operand& src, uint8_t shuffle);
|
| void pshufd(XMMRegister dst, XMMRegister src, uint8_t shuffle) {
|
| pshufd(dst, Operand(src), shuffle);
|
| }
|
| void pshufd(XMMRegister dst, const Operand& src, uint8_t shuffle);
|
| +
|
| + void pextrb(Register dst, XMMRegister src, int8_t offset) {
|
| + pextrb(Operand(dst), src, offset);
|
| + }
|
| + void pextrb(const Operand& dst, XMMRegister src, int8_t offset);
|
| + // Use SSE4_1 encoding for pextrw reg, xmm, imm8 for consistency
|
| + void pextrw(Register dst, XMMRegister src, int8_t offset) {
|
| + pextrw(Operand(dst), src, offset);
|
| + }
|
| + void pextrw(const Operand& dst, XMMRegister src, int8_t offset);
|
| void pextrd(Register dst, XMMRegister src, int8_t offset) {
|
| pextrd(Operand(dst), src, offset);
|
| }
|
| void pextrd(const Operand& dst, XMMRegister src, int8_t offset);
|
| +
|
| + void pinsrb(XMMRegister dst, Register src, int8_t offset) {
|
| + pinsrb(dst, Operand(src), offset);
|
| + }
|
| + void pinsrb(XMMRegister dst, const Operand& src, int8_t offset);
|
| void pinsrw(XMMRegister dst, Register src, int8_t offset) {
|
| pinsrw(dst, Operand(src), offset);
|
| }
|
| @@ -1388,14 +1410,46 @@ class Assembler : public AssemblerBase {
|
| void vpsraw(XMMRegister dst, XMMRegister src, int8_t imm8);
|
| void vpsrad(XMMRegister dst, XMMRegister src, int8_t imm8);
|
|
|
| + void vpshufb(XMMRegister dst, XMMRegister src1, XMMRegister src2) {
|
| + vpshufb(dst, src1, Operand(src2));
|
| + }
|
| + void vpshufb(XMMRegister dst, XMMRegister src1, const Operand& src2) {
|
| + vinstr(0x00, dst, src1, src2, k66, k0F38, kW0);
|
| + }
|
| + void vpshuflw(XMMRegister dst, XMMRegister src, uint8_t shuffle) {
|
| + vpshuflw(dst, Operand(src), shuffle);
|
| + }
|
| + void vpshuflw(XMMRegister dst, const Operand& src, uint8_t shuffle);
|
| void vpshufd(XMMRegister dst, XMMRegister src, uint8_t shuffle) {
|
| vpshufd(dst, Operand(src), shuffle);
|
| }
|
| void vpshufd(XMMRegister dst, const Operand& src, uint8_t shuffle);
|
| +
|
| + void vpextrb(Register dst, XMMRegister src, int8_t offset) {
|
| + vpextrb(Operand(dst), src, offset);
|
| + }
|
| + void vpextrb(const Operand& dst, XMMRegister src, int8_t offset);
|
| + void vpextrw(Register dst, XMMRegister src, int8_t offset) {
|
| + vpextrw(Operand(dst), src, offset);
|
| + }
|
| + void vpextrw(const Operand& dst, XMMRegister src, int8_t offset);
|
| void vpextrd(Register dst, XMMRegister src, int8_t offset) {
|
| vpextrd(Operand(dst), src, offset);
|
| }
|
| void vpextrd(const Operand& dst, XMMRegister src, int8_t offset);
|
| +
|
| + void vpinsrb(XMMRegister dst, XMMRegister src1, Register src2,
|
| + int8_t offset) {
|
| + vpinsrb(dst, src1, Operand(src2), offset);
|
| + }
|
| + void vpinsrb(XMMRegister dst, XMMRegister src1, const Operand& src2,
|
| + int8_t offset);
|
| + void vpinsrw(XMMRegister dst, XMMRegister src1, Register src2,
|
| + int8_t offset) {
|
| + vpinsrw(dst, src1, Operand(src2), offset);
|
| + }
|
| + void vpinsrw(XMMRegister dst, XMMRegister src1, const Operand& src2,
|
| + int8_t offset);
|
| void vpinsrd(XMMRegister dst, XMMRegister src1, Register src2,
|
| int8_t offset) {
|
| vpinsrd(dst, src1, Operand(src2), offset);
|
|
|