aboutsummaryrefslogtreecommitdiffhomepage
path: root/gen
diff options
context:
space:
mode:
authorMITSUNARI Shigeo <[email protected]>2016-07-14 10:41:54 +0900
committerMITSUNARI Shigeo <[email protected]>2016-07-14 10:41:54 +0900
commit2540a7c6520c83eec214d481bfc3dc74cb0125a1 (patch)
tree9cbbc2fafd3b27459dc3b22d8124c08a856e6092 /gen
parentcd650aba4d35a915275df13d0f3e06708f28b026 (diff)
downloadxbyak-2540a7c6520c83eec214d481bfc3dc74cb0125a1.tar.gz
xbyak-2540a7c6520c83eec214d481bfc3dc74cb0125a1.zip
add vextractf{32x4,64x2,32x8,64x4}
Diffstat (limited to 'gen')
-rw-r--r--gen/gen_avx512.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/gen/gen_avx512.cpp b/gen/gen_avx512.cpp
index 1b0d489..a51a07a 100644
--- a/gen/gen_avx512.cpp
+++ b/gen/gen_avx512.cpp
@@ -224,6 +224,24 @@ void putShift()
}
}
+void putEtc()
+{
+/*
+EVEX.256.66.0F3A.W0 19 VEXTRACTF32X4 xmm1/m128 {k1}{z}, ymm2, imm8
+EVEX.512.66.0F3A.W0 19 VEXTRACTF32x4 xmm1/m128 {k1}{z}, zmm2, imm8
+
+EVEX.256.66.0F3A.W1 19 VEXTRACTF64X2 xmm1/m128 {k1}{z}, ymm2, imm8
+EVEX.512.66.0F3A.W1 19 VEXTRACTF64X2 xmm1/m128 {k1}{z}, zmm2, imm8
+
+EVEX.512.66.0F3A.W0 1B VEXTRACTF32X8 ymm1/m256 {k1}{z}, zmm2, imm8
+EVEX.512.66.0F3A.W1 1B VEXTRACTF64x4 ymm1/m256 {k1}{z}, zmm2, imm8
+*/
+ puts("void vextractf32x4(const Operand& op, const Ymm& y, uint8 imm) { opAVX_X_X_XMcvt(y, cvtIdx0(y), op, op.isXMM(), Operand::YMM, T_66 | T_0F3A | T_MUST_EVEX | T_EW0 | T_YMM, 0x19, imm); }");
+ puts("void vextractf64x2(const Operand& op, const Ymm& y, uint8 imm) { opAVX_X_X_XMcvt(y, cvtIdx0(y), op, op.isXMM(), Operand::YMM, T_66 | T_0F3A | T_MUST_EVEX | T_EW1 | T_YMM, 0x19, imm); }");
+ puts("void vextractf32x8(const Operand& op, const Zmm& z, uint8 imm) { opAVX_X_X_XMcvt(z, cvtIdx0(z), op, op.isXMM(), Operand::YMM, T_66 | T_0F3A | T_MUST_EVEX | T_EW0 | T_YMM, 0x1B, imm); }");
+ puts("void vextractf64x4(const Operand& op, const Zmm& z, uint8 imm) { opAVX_X_X_XMcvt(z, cvtIdx0(z), op, op.isXMM(), Operand::YMM, T_66 | T_0F3A | T_MUST_EVEX | T_EW1 | T_YMM, 0x1B, imm); }");
+}
+
int main()
{
puts("#ifndef XBYAK_DISABLE_AVX512");
@@ -233,5 +251,6 @@ int main()
putM_X();
putX_X_XM_IMM();
putShift();
+ putEtc();
puts("#endif");
}