1326 } |
1326 } |
1327 __ addptr(qword_count, 4); |
1327 __ addptr(qword_count, 4); |
1328 __ BIND(L_end); |
1328 __ BIND(L_end); |
1329 if (UseAVX >= 2) { |
1329 if (UseAVX >= 2) { |
1330 // clean upper bits of YMM registers |
1330 // clean upper bits of YMM registers |
1331 __ vzeroupper(); |
1331 __ vpxor(xmm0, xmm0); |
|
1332 __ vpxor(xmm1, xmm1); |
1332 } |
1333 } |
1333 } else { |
1334 } else { |
1334 // Copy 32-bytes per iteration |
1335 // Copy 32-bytes per iteration |
1335 __ BIND(L_loop); |
1336 __ BIND(L_loop); |
1336 __ movq(to, Address(end_from, qword_count, Address::times_8, -24)); |
1337 __ movq(to, Address(end_from, qword_count, Address::times_8, -24)); |
1403 } |
1404 } |
1404 __ subptr(qword_count, 4); |
1405 __ subptr(qword_count, 4); |
1405 __ BIND(L_end); |
1406 __ BIND(L_end); |
1406 if (UseAVX >= 2) { |
1407 if (UseAVX >= 2) { |
1407 // clean upper bits of YMM registers |
1408 // clean upper bits of YMM registers |
1408 __ vzeroupper(); |
1409 __ vpxor(xmm0, xmm0); |
|
1410 __ vpxor(xmm1, xmm1); |
1409 } |
1411 } |
1410 } else { |
1412 } else { |
1411 // Copy 32-bytes per iteration |
1413 // Copy 32-bytes per iteration |
1412 __ BIND(L_loop); |
1414 __ BIND(L_loop); |
1413 __ movq(to, Address(from, qword_count, Address::times_8, 24)); |
1415 __ movq(to, Address(from, qword_count, Address::times_8, 24)); |