hotspot/src/cpu/x86/vm/macroAssembler_x86.hpp
changeset 38135 e06e2d071465
parent 38049 e8541793960f
child 38238 1bbcc430c78d
child 38144 0976c0c5c5d3
equal deleted inserted replaced
38134:7435f311b441 38135:e06e2d071465
   904   void fmul_s(AddressLiteral src) { Assembler::fmul_s(as_Address(src)); }
   904   void fmul_s(AddressLiteral src) { Assembler::fmul_s(as_Address(src)); }
   905 
   905 
   906   void ldmxcsr(Address src) { Assembler::ldmxcsr(src); }
   906   void ldmxcsr(Address src) { Assembler::ldmxcsr(src); }
   907   void ldmxcsr(AddressLiteral src);
   907   void ldmxcsr(AddressLiteral src);
   908 
   908 
       
   909 #ifdef _LP64
       
   910  private:
       
   911   void sha256_AVX2_one_round_compute(
       
   912     Register  reg_old_h,
       
   913     Register  reg_a,
       
   914     Register  reg_b,
       
   915     Register  reg_c,
       
   916     Register  reg_d,
       
   917     Register  reg_e,
       
   918     Register  reg_f,
       
   919     Register  reg_g,
       
   920     Register  reg_h,
       
   921     int iter);
       
   922   void sha256_AVX2_four_rounds_compute_first(int start);
       
   923   void sha256_AVX2_four_rounds_compute_last(int start);
       
   924   void sha256_AVX2_one_round_and_sched(
       
   925         XMMRegister xmm_0,     /* == ymm4 on 0, 1, 2, 3 iterations, then rotate 4 registers left on 4, 8, 12 iterations */
       
   926         XMMRegister xmm_1,     /* ymm5 */  /* full cycle is 16 iterations */
       
   927         XMMRegister xmm_2,     /* ymm6 */
       
   928         XMMRegister xmm_3,     /* ymm7 */
       
   929         Register    reg_a,      /* == eax on 0 iteration, then rotate 8 register right on each next iteration */
       
   930         Register    reg_b,      /* ebx */    /* full cycle is 8 iterations */
       
   931         Register    reg_c,      /* edi */
       
   932         Register    reg_d,      /* esi */
       
   933         Register    reg_e,      /* r8d */
       
   934         Register    reg_f,      /* r9d */
       
   935         Register    reg_g,      /* r10d */
       
   936         Register    reg_h,      /* r11d */
       
   937         int iter);
       
   938 
       
   939   void addm(int disp, Register r1, Register r2);
       
   940 
       
   941  public:
       
   942   void sha256_AVX2(XMMRegister msg, XMMRegister state0, XMMRegister state1, XMMRegister msgtmp0,
       
   943                    XMMRegister msgtmp1, XMMRegister msgtmp2, XMMRegister msgtmp3, XMMRegister msgtmp4,
       
   944                    Register buf, Register state, Register ofs, Register limit, Register rsp,
       
   945                    bool multi_block, XMMRegister shuf_mask);
       
   946 #endif
       
   947 
   909   void fast_sha1(XMMRegister abcd, XMMRegister e0, XMMRegister e1, XMMRegister msg0,
   948   void fast_sha1(XMMRegister abcd, XMMRegister e0, XMMRegister e1, XMMRegister msg0,
   910                  XMMRegister msg1, XMMRegister msg2, XMMRegister msg3, XMMRegister shuf_mask,
   949                  XMMRegister msg1, XMMRegister msg2, XMMRegister msg3, XMMRegister shuf_mask,
   911                  Register buf, Register state, Register ofs, Register limit, Register rsp,
   950                  Register buf, Register state, Register ofs, Register limit, Register rsp,
   912                  bool multi_block);
   951                  bool multi_block);
   913 
   952