--- a/hotspot/src/cpu/x86/vm/assembler_x86.cpp Mon Jan 07 14:08:28 2013 -0800
+++ b/hotspot/src/cpu/x86/vm/assembler_x86.cpp Tue Jan 08 11:30:51 2013 -0800
@@ -2468,6 +2468,26 @@
emit_int8((unsigned char)(0xC0 | encode));
}
+void Assembler::vptest(XMMRegister dst, Address src) {
+ assert(VM_Version::supports_avx(), "");
+ InstructionMark im(this);
+ bool vector256 = true;
+ assert(dst != xnoreg, "sanity");
+ int dst_enc = dst->encoding();
+ // swap src<->dst for encoding
+ vex_prefix(src, dst_enc, dst_enc, VEX_SIMD_66, VEX_OPCODE_0F_38, false, vector256);
+ emit_int8(0x17);
+ emit_operand(dst, src);
+}
+
+void Assembler::vptest(XMMRegister dst, XMMRegister src) {
+ assert(VM_Version::supports_avx(), "");
+ bool vector256 = true;
+ int encode = vex_prefix_and_encode(dst, xnoreg, src, VEX_SIMD_66, vector256, VEX_OPCODE_0F_38);
+ emit_int8(0x17);
+ emit_int8((unsigned char)(0xC0 | encode));
+}
+
void Assembler::punpcklbw(XMMRegister dst, Address src) {
NOT_LP64(assert(VM_Version::supports_sse2(), ""));
assert((UseAVX > 0), "SSE mode requires address alignment 16 bytes");