< prev index next >

src/cpu/ppc/vm/c1_LIRGenerator_ppc.cpp

Print this page
rev 12409 : 8171244: PPC64: Make interpreter's math entries consistent with C1 and C2 and support FMA
Reviewed-by:

*** 1433,1443 **** } } } void LIRGenerator::do_FmaIntrinsic(Intrinsic* x) { ! fatal("FMA intrinsic is not implemented on this platform"); } void LIRGenerator::do_vectorizedMismatch(Intrinsic* x) { fatal("vectorizedMismatch intrinsic is not implemented on this platform"); } --- 1433,1462 ---- } } } void LIRGenerator::do_FmaIntrinsic(Intrinsic* x) { ! assert(x->number_of_arguments() == 3, "wrong type"); ! assert(UseFMA, "Needs FMA instructions support."); ! LIRItem value(x->argument_at(0), this); ! LIRItem value1(x->argument_at(1), this); ! LIRItem value2(x->argument_at(2), this); ! ! value.load_item(); ! value1.load_item(); ! value2.load_item(); ! ! LIR_Opr calc_input = value.result(); ! LIR_Opr calc_input1 = value1.result(); ! LIR_Opr calc_input2 = value2.result(); ! LIR_Opr calc_result = rlock_result(x); ! ! switch (x->id()) { ! case vmIntrinsics::_fmaD: __ fmad(calc_input, calc_input1, calc_input2, calc_result); break; ! case vmIntrinsics::_fmaF: __ fmaf(calc_input, calc_input1, calc_input2, calc_result); break; ! default: ShouldNotReachHere(); ! } } void LIRGenerator::do_vectorizedMismatch(Intrinsic* x) { fatal("vectorizedMismatch intrinsic is not implemented on this platform"); }
< prev index next >