< prev index next > src/hotspot/cpu/x86/c2_MacroAssembler_x86.cpp
Print this page
lea(ary1, Address(ary1, bound, Address::times(elsize)));
subl(cnt1, bound);
// release bound
// vresult *= IntVector.fromArray(I256, power_of_31_backwards, 1);
for (int idx = 0; idx < 4; idx++) {
! lea(tmp2, ExternalAddress(StubRoutines::x86::arrays_hashcode_powers_of_31() + ((8 * idx + 1) * sizeof(jint))));
- arrays_hashcode_elvload(vcoef[idx], Address(tmp2, 0), T_INT);
vpmulld(vresult[idx], vresult[idx], vcoef[idx], Assembler::AVX_256bit);
}
// result += vresult.reduceLanes(ADD);
for (int idx = 0; idx < 4; idx++) {
reduceI(Op_AddReductionVI, 256/(sizeof(jint) * 8), result, result, vresult[idx], vtmp[(idx * 2 + 0) % 4], vtmp[(idx * 2 + 1) % 4]);
lea(ary1, Address(ary1, bound, Address::times(elsize)));
subl(cnt1, bound);
// release bound
// vresult *= IntVector.fromArray(I256, power_of_31_backwards, 1);
+ lea(tmp2, ExternalAddress(StubRoutines::x86::arrays_hashcode_powers_of_31() + (0 * sizeof(jint))));
for (int idx = 0; idx < 4; idx++) {
! arrays_hashcode_elvload(vcoef[idx], Address(tmp2, (int)((8 * idx + 1) * sizeof(jint))), T_INT);
vpmulld(vresult[idx], vresult[idx], vcoef[idx], Assembler::AVX_256bit);
}
// result += vresult.reduceLanes(ADD);
for (int idx = 0; idx < 4; idx++) {
reduceI(Op_AddReductionVI, 256/(sizeof(jint) * 8), result, result, vresult[idx], vtmp[(idx * 2 + 0) % 4], vtmp[(idx * 2 + 1) % 4]);
< prev index next >