< prev index next >

src/hotspot/cpu/x86/macroAssembler_x86.hpp

Print this page
*** 1334,10 ***
--- 1334,79 ---
    void vpsraw(XMMRegister dst, XMMRegister nds, int shift, int vector_len);
  
    void evpsraq(XMMRegister dst, XMMRegister nds, XMMRegister shift, int vector_len);
    void evpsraq(XMMRegister dst, XMMRegister nds, int shift, int vector_len);
  
+   void evpsllw(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len, bool is_varshift) {
+     if (!is_varshift) {
+       Assembler::evpsllw(dst, mask, nds, src, merge, vector_len);
+     } else {
+       Assembler::evpsllvw(dst, mask, nds, src, merge, vector_len);
+     }
+   }
+   void evpslld(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len, bool is_varshift) {
+     if (!is_varshift) {
+       Assembler::evpslld(dst, mask, nds, src, merge, vector_len);
+     } else {
+       Assembler::evpsllvd(dst, mask, nds, src, merge, vector_len);
+     }
+   }
+   void evpsllq(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len, bool is_varshift) {
+     if (!is_varshift) {
+       Assembler::evpsllq(dst, mask, nds, src, merge, vector_len);
+     } else {
+       Assembler::evpsllvq(dst, mask, nds, src, merge, vector_len);
+     }
+   }
+   void evpsrlw(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len, bool is_varshift) {
+     if (!is_varshift) {
+       Assembler::evpsrlw(dst, mask, nds, src, merge, vector_len);
+     } else {
+       Assembler::evpsrlvw(dst, mask, nds, src, merge, vector_len);
+     }
+   }
+   void evpsrld(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len, bool is_varshift) {
+     if (!is_varshift) {
+       Assembler::evpsrld(dst, mask, nds, src, merge, vector_len);
+     } else {
+       Assembler::evpsrlvd(dst, mask, nds, src, merge, vector_len);
+     }
+   }
+   void evpsrlq(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len, bool is_varshift) {
+     if (!is_varshift) {
+       Assembler::evpsrlq(dst, mask, nds, src, merge, vector_len);
+     } else {
+       Assembler::evpsrlvq(dst, mask, nds, src, merge, vector_len);
+     }
+   }
+   void evpsraw(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len, bool is_varshift) {
+     if (!is_varshift) {
+       Assembler::evpsraw(dst, mask, nds, src, merge, vector_len);
+     } else {
+       Assembler::evpsravw(dst, mask, nds, src, merge, vector_len);
+     }
+   }
+   void evpsrad(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len, bool is_varshift) {
+     if (!is_varshift) {
+       Assembler::evpsrad(dst, mask, nds, src, merge, vector_len);
+     } else {
+       Assembler::evpsravd(dst, mask, nds, src, merge, vector_len);
+     }
+   }
+   void evpsraq(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len, bool is_varshift) {
+     if (!is_varshift) {
+       Assembler::evpsraq(dst, mask, nds, src, merge, vector_len);
+     } else {
+       Assembler::evpsravq(dst, mask, nds, src, merge, vector_len);
+     }
+   }
+ 
+   void evpmins(BasicType type, XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len);
+   void evpmaxs(BasicType type, XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len);
+   void evpmins(BasicType type, XMMRegister dst, KRegister mask, XMMRegister nds, Address src, bool merge, int vector_len);
+   void evpmaxs(BasicType type, XMMRegister dst, KRegister mask, XMMRegister nds, Address src, bool merge, int vector_len);
+ 
    void vpsrlw(XMMRegister dst, XMMRegister nds, XMMRegister shift, int vector_len);
    void vpsrlw(XMMRegister dst, XMMRegister nds, int shift, int vector_len);
  
    void vpsllw(XMMRegister dst, XMMRegister nds, XMMRegister shift, int vector_len);
    void vpsllw(XMMRegister dst, XMMRegister nds, int shift, int vector_len);

*** 1623,11 ***
    void evpclmulhdq(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len) {
      // 0x11 - multiply upper 64 bits [64:127]
      Assembler::evpclmulqdq(dst, nds, src, 0x11, vector_len);
    }
  
!   // Data
  
    void cmov32( Condition cc, Register dst, Address  src);
    void cmov32( Condition cc, Register dst, Register src);
  
    void cmov(   Condition cc, Register dst, Register src) { cmovptr(cc, dst, src); }
--- 1692,37 ---
    void evpclmulhdq(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len) {
      // 0x11 - multiply upper 64 bits [64:127]
      Assembler::evpclmulqdq(dst, nds, src, 0x11, vector_len);
    }
  
!   // AVX-512 mask operations.
+   void kand(BasicType etype, KRegister dst, KRegister src1, KRegister src2);
+   void kor(BasicType type, KRegister dst, KRegister src1, KRegister src2);
+   void knot(uint masklen, KRegister dst, KRegister src, KRegister ktmp = knoreg, Register rtmp = noreg);
+   void kxor(BasicType type, KRegister dst, KRegister src1, KRegister src2);
+   void kortest(uint masklen, KRegister src1, KRegister src2);
+   void ktest(uint masklen, KRegister src1, KRegister src2);
+ 
+   void evperm(BasicType type, XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len);
+   void evperm(BasicType type, XMMRegister dst, KRegister mask, XMMRegister nds, Address src, bool merge, int vector_len);
+ 
+   void evor(BasicType type, XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len);
+   void evor(BasicType type, XMMRegister dst, KRegister mask, XMMRegister nds, Address src, bool merge, int vector_len);
+ 
+   void evand(BasicType type, XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len);
+   void evand(BasicType type, XMMRegister dst, KRegister mask, XMMRegister nds, Address src, bool merge, int vector_len);
+ 
+   void evxor(BasicType type, XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len);
+   void evxor(BasicType type, XMMRegister dst, KRegister mask, XMMRegister nds, Address src, bool merge, int vector_len);
+ 
+   void evrold(BasicType type, XMMRegister dst, KRegister mask, XMMRegister src, int shift, bool merge, int vlen_enc);
+   void evrold(BasicType type, XMMRegister dst, KRegister mask, XMMRegister src1, XMMRegister src2, bool merge, int vlen_enc);
+   void evrord(BasicType type, XMMRegister dst, KRegister mask, XMMRegister src, int shift, bool merge, int vlen_enc);
+   void evrord(BasicType type, XMMRegister dst, KRegister mask, XMMRegister src1, XMMRegister src2, bool merge, int vlen_enc);
+ 
+   void alltrue(Register dst, uint masklen, KRegister src1, KRegister src2, KRegister kscratch);
+   void anytrue(Register dst, uint masklen, KRegister src, KRegister kscratch);
  
    void cmov32( Condition cc, Register dst, Address  src);
    void cmov32( Condition cc, Register dst, Register src);
  
    void cmov(   Condition cc, Register dst, Register src) { cmovptr(cc, dst, src); }
< prev index next >