< prev index next >
src/cpu/aarch64/vm/templateInterpreterGenerator_aarch64.cpp
Print this page
rev 12379 : 8162338: AArch64: Intrinsify fused mac operations
Reviewed-by:
*** 202,213 ****
__ ldrd(v1, Address(esp));
__ mov(sp, r13);
generate_transcendental_entry(kind, 2);
break;
case Interpreter::java_lang_math_fmaD :
case Interpreter::java_lang_math_fmaF :
! return NULL;
default:
;
}
if (entry_point) {
__ br(continuation);
--- 202,230 ----
__ ldrd(v1, Address(esp));
__ mov(sp, r13);
generate_transcendental_entry(kind, 2);
break;
case Interpreter::java_lang_math_fmaD :
+ if (UseFMA) {
+ entry_point = __ pc();
+ __ ldrd(v0, Address(esp, 4 * Interpreter::stackElementSize));
+ __ ldrd(v1, Address(esp, 2 * Interpreter::stackElementSize));
+ __ ldrd(v2, Address(esp));
+ __ fmaddd(v0, v0, v1, v2);
+ __ mov(sp, r13); // Restore caller's SP
+ }
+ break;
case Interpreter::java_lang_math_fmaF :
! if (UseFMA) {
! entry_point = __ pc();
! __ ldrs(v0, Address(esp, 2 * Interpreter::stackElementSize));
! __ ldrs(v1, Address(esp, Interpreter::stackElementSize));
! __ ldrs(v2, Address(esp));
! __ fmadds(v0, v0, v1, v2);
! __ mov(sp, r13); // Restore caller's SP
! }
! break;
default:
;
}
if (entry_point) {
__ br(continuation);
< prev index next >