< prev index next >
src/cpu/x86/vm/assembler_x86.hpp
Print this page
@@ -659,17 +659,34 @@
vex_prefix(src, nds->encoding(), dst->encoding(),
VEX_SIMD_NONE, VEX_OPCODE_0F_38, vex_w,
vector_len, no_mask_reg);
}
+ void vex_prefix_0F38_legacy(Register dst, Register nds, Address src, bool no_mask_reg = false) {
+ bool vex_w = false;
+ int vector_len = AVX_128bit;
+ vex_prefix(src, nds->encoding(), dst->encoding(),
+ VEX_SIMD_NONE, VEX_OPCODE_0F_38, vex_w,
+ vector_len, true, no_mask_reg);
+ }
+
void vex_prefix_0F38_q(Register dst, Register nds, Address src, bool no_mask_reg = false) {
bool vex_w = true;
int vector_len = AVX_128bit;
vex_prefix(src, nds->encoding(), dst->encoding(),
VEX_SIMD_NONE, VEX_OPCODE_0F_38, vex_w,
vector_len, no_mask_reg);
}
+
+ void vex_prefix_0F38_q_legacy(Register dst, Register nds, Address src, bool no_mask_reg = false) {
+ bool vex_w = true;
+ int vector_len = AVX_128bit;
+ vex_prefix(src, nds->encoding(), dst->encoding(),
+ VEX_SIMD_NONE, VEX_OPCODE_0F_38, vex_w,
+ vector_len, true, no_mask_reg);
+ }
+
int vex_prefix_and_encode(int dst_enc, int nds_enc, int src_enc,
VexSimdPrefix pre, VexOpcode opc,
bool vex_w, int vector_len,
bool legacy_mode, bool no_mask_reg);
@@ -678,17 +695,35 @@
int vector_len = AVX_128bit;
return vex_prefix_and_encode(dst->encoding(), nds->encoding(), src->encoding(),
VEX_SIMD_NONE, VEX_OPCODE_0F_38, vex_w, vector_len,
false, no_mask_reg);
}
+
+ int vex_prefix_0F38_and_encode_legacy(Register dst, Register nds, Register src, bool no_mask_reg = false) {
+ bool vex_w = false;
+ int vector_len = AVX_128bit;
+ return vex_prefix_and_encode(dst->encoding(), nds->encoding(), src->encoding(),
+ VEX_SIMD_NONE, VEX_OPCODE_0F_38, vex_w, vector_len,
+ true, no_mask_reg);
+ }
+
int vex_prefix_0F38_and_encode_q(Register dst, Register nds, Register src, bool no_mask_reg = false) {
bool vex_w = true;
int vector_len = AVX_128bit;
return vex_prefix_and_encode(dst->encoding(), nds->encoding(), src->encoding(),
VEX_SIMD_NONE, VEX_OPCODE_0F_38, vex_w, vector_len,
false, no_mask_reg);
}
+
+ int vex_prefix_0F38_and_encode_q_legacy(Register dst, Register nds, Register src, bool no_mask_reg = false) {
+ bool vex_w = true;
+ int vector_len = AVX_128bit;
+ return vex_prefix_and_encode(dst->encoding(), nds->encoding(), src->encoding(),
+ VEX_SIMD_NONE, VEX_OPCODE_0F_38, vex_w, vector_len,
+ true, no_mask_reg);
+ }
+
int vex_prefix_and_encode(XMMRegister dst, XMMRegister nds, XMMRegister src,
VexSimdPrefix pre, int vector_len = AVX_128bit,
VexOpcode opc = VEX_OPCODE_0F, bool legacy_mode = false,
bool no_mask_reg = false) {
int src_enc = src->encoding();
@@ -2019,12 +2054,29 @@
void vextractf32x4h(XMMRegister dst, XMMRegister src, int value);
// duplicate 4-bytes integer data from src into 8 locations in dest
void vpbroadcastd(XMMRegister dst, XMMRegister src);
- // duplicate 4-bytes integer data from src into vector_len locations in dest
+ // duplicate n-bytes integer data from src into vector_len locations in dest
+ void evpbroadcastb(XMMRegister dst, XMMRegister src, int vector_len);
+ void evpbroadcastb(XMMRegister dst, Address src, int vector_len);
+ void evpbroadcastw(XMMRegister dst, XMMRegister src, int vector_len);
+ void evpbroadcastw(XMMRegister dst, Address src, int vector_len);
void evpbroadcastd(XMMRegister dst, XMMRegister src, int vector_len);
+ void evpbroadcastd(XMMRegister dst, Address src, int vector_len);
+ void evpbroadcastq(XMMRegister dst, XMMRegister src, int vector_len);
+ void evpbroadcastq(XMMRegister dst, Address src, int vector_len);
+
+ void evpbroadcastss(XMMRegister dst, XMMRegister src, int vector_len);
+ void evpbroadcastss(XMMRegister dst, Address src, int vector_len);
+ void evpbroadcastsd(XMMRegister dst, XMMRegister src, int vector_len);
+ void evpbroadcastsd(XMMRegister dst, Address src, int vector_len);
+
+ void evpbroadcastb(XMMRegister dst, Register src, int vector_len);
+ void evpbroadcastw(XMMRegister dst, Register src, int vector_len);
+ void evpbroadcastd(XMMRegister dst, Register src, int vector_len);
+ void evpbroadcastq(XMMRegister dst, Register src, int vector_len);
// Carry-Less Multiplication Quadword
void pclmulqdq(XMMRegister dst, XMMRegister src, int mask);
void vpclmulqdq(XMMRegister dst, XMMRegister nds, XMMRegister src, int mask);
< prev index next >