hotspot/src/cpu/x86/vm/stubGenerator_x86_32.cpp
changeset 15115 f8ef87f6f07f
parent 14834 f29c91f2f22b
child 16624 9dbd4b210bf9
equal deleted inserted replaced
15114:4074553c678b 15115:f8ef87f6f07f
   794     // Copy 64-byte chunks
   794     // Copy 64-byte chunks
   795     __ jmpb(L_copy_64_bytes);
   795     __ jmpb(L_copy_64_bytes);
   796     __ align(OptoLoopAlignment);
   796     __ align(OptoLoopAlignment);
   797   __ BIND(L_copy_64_bytes_loop);
   797   __ BIND(L_copy_64_bytes_loop);
   798 
   798 
   799     if(UseUnalignedLoadStores) {
   799     if (UseUnalignedLoadStores) {
   800       __ movdqu(xmm0, Address(from, 0));
   800       if (UseAVX >= 2) {
   801       __ movdqu(Address(from, to_from, Address::times_1, 0), xmm0);
   801         __ vmovdqu(xmm0, Address(from,  0));
   802       __ movdqu(xmm1, Address(from, 16));
   802         __ vmovdqu(Address(from, to_from, Address::times_1,  0), xmm0);
   803       __ movdqu(Address(from, to_from, Address::times_1, 16), xmm1);
   803         __ vmovdqu(xmm1, Address(from, 32));
   804       __ movdqu(xmm2, Address(from, 32));
   804         __ vmovdqu(Address(from, to_from, Address::times_1, 32), xmm1);
   805       __ movdqu(Address(from, to_from, Address::times_1, 32), xmm2);
   805       } else {
   806       __ movdqu(xmm3, Address(from, 48));
   806         __ movdqu(xmm0, Address(from, 0));
   807       __ movdqu(Address(from, to_from, Address::times_1, 48), xmm3);
   807         __ movdqu(Address(from, to_from, Address::times_1, 0), xmm0);
   808 
   808         __ movdqu(xmm1, Address(from, 16));
       
   809         __ movdqu(Address(from, to_from, Address::times_1, 16), xmm1);
       
   810         __ movdqu(xmm2, Address(from, 32));
       
   811         __ movdqu(Address(from, to_from, Address::times_1, 32), xmm2);
       
   812         __ movdqu(xmm3, Address(from, 48));
       
   813         __ movdqu(Address(from, to_from, Address::times_1, 48), xmm3);
       
   814       }
   809     } else {
   815     } else {
   810       __ movq(xmm0, Address(from, 0));
   816       __ movq(xmm0, Address(from, 0));
   811       __ movq(Address(from, to_from, Address::times_1, 0), xmm0);
   817       __ movq(Address(from, to_from, Address::times_1, 0), xmm0);
   812       __ movq(xmm1, Address(from, 8));
   818       __ movq(xmm1, Address(from, 8));
   813       __ movq(Address(from, to_from, Address::times_1, 8), xmm1);
   819       __ movq(Address(from, to_from, Address::times_1, 8), xmm1);