|
106 | 106 | // [ return_from_Java ] <--- rsp |
107 | 107 | // [ argument word n ] |
108 | 108 | // ... |
109 | | -// -60 [ argument word 1 ] |
110 | | -// -59 [ saved xmm31 ] <--- rsp after_call |
111 | | -// [ saved xmm16-xmm30 ] (EVEX enabled, else the space is blank) |
112 | | -// -27 [ saved xmm15 ] |
| 109 | +// -28 [ argument word 1 ] |
| 110 | +// -27 [ saved xmm15 ] <--- rsp after_call |
113 | 111 | // [ saved xmm7-xmm14 ] |
114 | 112 | // -9 [ saved xmm6 ] (each xmm register takes 2 slots) |
115 | 113 | // -7 [ saved r15 ] |
|
137 | 135 | #ifdef _WIN64 |
138 | 136 | enum call_stub_layout { |
139 | 137 | xmm_save_first = 6, // save from xmm6 |
140 | | - xmm_save_last = 31, // to xmm31 |
| 138 | + xmm_save_last = 15, // to xmm15 |
141 | 139 | xmm_save_base = -9, |
142 | 140 | rsp_after_call_off = xmm_save_base - 2 * (xmm_save_last - xmm_save_first), // -27 |
143 | 141 | r15_off = -7, |
@@ -237,17 +235,8 @@ address StubGenerator::generate_call_stub(address& return_address) { |
237 | 235 |
|
238 | 236 | #ifdef _WIN64 |
239 | 237 | int last_reg = 15; |
240 | | - if (UseAVX > 2) { |
241 | | - last_reg = 31; |
242 | | - } |
243 | | - if (VM_Version::supports_evex()) { |
244 | | - for (int i = xmm_save_first; i <= last_reg; i++) { |
245 | | - __ vextractf32x4(xmm_save(i), as_XMMRegister(i), 0); |
246 | | - } |
247 | | - } else { |
248 | | - for (int i = xmm_save_first; i <= last_reg; i++) { |
249 | | - __ movdqu(xmm_save(i), as_XMMRegister(i)); |
250 | | - } |
| 238 | + for (int i = xmm_save_first; i <= last_reg; i++) { |
| 239 | + __ movdqu(xmm_save(i), as_XMMRegister(i)); |
251 | 240 | } |
252 | 241 |
|
253 | 242 | const Address rdi_save(rbp, rdi_off * wordSize); |
@@ -370,14 +359,8 @@ address StubGenerator::generate_call_stub(address& return_address) { |
370 | 359 | // restore regs belonging to calling function |
371 | 360 | #ifdef _WIN64 |
372 | 361 | // emit the restores for xmm regs |
373 | | - if (VM_Version::supports_evex()) { |
374 | | - for (int i = xmm_save_first; i <= last_reg; i++) { |
375 | | - __ vinsertf32x4(as_XMMRegister(i), as_XMMRegister(i), xmm_save(i), 0); |
376 | | - } |
377 | | - } else { |
378 | | - for (int i = xmm_save_first; i <= last_reg; i++) { |
379 | | - __ movdqu(as_XMMRegister(i), xmm_save(i)); |
380 | | - } |
| 362 | + for (int i = xmm_save_first; i <= last_reg; i++) { |
| 363 | + __ movdqu(as_XMMRegister(i), xmm_save(i)); |
381 | 364 | } |
382 | 365 | #endif |
383 | 366 | __ movptr(r15, r15_save); |
|
0 commit comments