hotspot/src/cpu/x86/vm/sharedRuntime_x86_32.cpp
changeset 36561 b18243f4d955
parent 36079 692adc3fa1b5
child 37248 11a660dbbb8e
equal deleted inserted replaced
36560:59ca2b7f6162 36561:b18243f4d955
   206 
   206 
   207   if (save_vectors) {
   207   if (save_vectors) {
   208     __ subptr(rsp, ymm_bytes);
   208     __ subptr(rsp, ymm_bytes);
   209     // Save upper half of YMM registers
   209     // Save upper half of YMM registers
   210     for (int n = 0; n < num_xmm_regs; n++) {
   210     for (int n = 0; n < num_xmm_regs; n++) {
   211       __ vextractf128h(Address(rsp, n*16), as_XMMRegister(n));
   211       __ vextractf128_high(Address(rsp, n*16), as_XMMRegister(n));
   212     }
   212     }
   213     if (UseAVX > 2) {
   213     if (UseAVX > 2) {
   214       __ subptr(rsp, zmm_bytes);
   214       __ subptr(rsp, zmm_bytes);
   215       // Save upper half of ZMM registers
   215       // Save upper half of ZMM registers
   216       for (int n = 0; n < num_xmm_regs; n++) {
   216       for (int n = 0; n < num_xmm_regs; n++) {
   217         __ vextractf64x4h(Address(rsp, n*32), as_XMMRegister(n), 1);
   217         __ vextractf64x4_high(Address(rsp, n*32), as_XMMRegister(n));
   218       }
   218       }
   219     }
   219     }
   220   }
   220   }
   221 
   221 
   222   // Set an oopmap for the call site.  This oopmap will map all
   222   // Set an oopmap for the call site.  This oopmap will map all
   302 
   302 
   303   if (restore_vectors) {
   303   if (restore_vectors) {
   304     if (UseAVX > 2) {
   304     if (UseAVX > 2) {
   305       // Restore upper half of ZMM registers.
   305       // Restore upper half of ZMM registers.
   306       for (int n = 0; n < num_xmm_regs; n++) {
   306       for (int n = 0; n < num_xmm_regs; n++) {
   307         __ vinsertf64x4h(as_XMMRegister(n), Address(rsp, n*32), 1);
   307         __ vinsertf64x4_high(as_XMMRegister(n), Address(rsp, n*32));
   308       }
   308       }
   309       __ addptr(rsp, zmm_bytes);
   309       __ addptr(rsp, zmm_bytes);
   310     }
   310     }
   311     // Restore upper half of YMM registers.
   311     // Restore upper half of YMM registers.
   312     for (int n = 0; n < num_xmm_regs; n++) {
   312     for (int n = 0; n < num_xmm_regs; n++) {
   313       __ vinsertf128h(as_XMMRegister(n), Address(rsp, n*16));
   313       __ vinsertf128_high(as_XMMRegister(n), Address(rsp, n*16));
   314     }
   314     }
   315     __ addptr(rsp, ymm_bytes);
   315     __ addptr(rsp, ymm_bytes);
   316   }
   316   }
   317 
   317 
   318   __ pop_FPU_state();
   318   __ pop_FPU_state();