< prev index next >

src/cpu/ppc/vm/ppc.ad

Print this page
rev 5788 : 8181420: PPC: Image conversion improvements
Reviewed-by: thartmann, simonis, mbaesken
rev 5791 : 8185716: OpenJDK 7 PPC64 port uses a different ins_encode format in ppc.ad
Summary: Use existing ins_encode format for implementing 8181420
Reviewed-by: omajid

*** 3496,3505 **** --- 3496,3513 ---- int Isrc2 = $src2$$constant; ConditionRegister Rcrx = reg_to_ConditionRegister_object($crx$$reg); __ cmplwi(Rcrx, Rsrc1, Isrc2); %} + enc_class enc_cmpldi(flagsReg crx, iRegIsrc src1, uimmL16 src2) %{ + // TODO: PPC port $archOpcode(ppc64Opcode_cmpli); + MacroAssembler _masm(&cbuf); + Register Rsrc1 = reg_to_register_object($src1$$reg); + ConditionRegister Rcrx = reg_to_ConditionRegister_object($crx$$reg); + __ cmpldi(Rcrx, Rsrc1, $src2$$constant); + %} + enc_class enc_btst_reg(iRegIsrc src1, iRegIsrc src2) %{ // TODO: PPC port $archOpcode(ppc64Opcode_and_); MacroAssembler _masm(&cbuf); Register Rsrc1 = reg_to_register_object($src1$$reg);
*** 11354,11363 **** --- 11362,11388 ---- size(4); ins_encode( enc_cmpdi(crx, src1, con) ); ins_pipe(pipe_class_compare); %} + // Added CmpUL for LoopPredicate. + instruct cmpUL_reg_reg(flagsReg crx, iRegLsrc src1, iRegLsrc src2) %{ + match(Set crx (CmpUL src1 src2)); + format %{ "CMPLD $crx, $src1, $src2" %} + size(4); + ins_encode( enc_cmpld(crx, src1, src2) ); + ins_pipe(pipe_class_compare); + %} + + instruct cmpUL_reg_imm16(flagsReg crx, iRegLsrc src1, uimmL16 src2) %{ + match(Set crx (CmpUL src1 src2)); + format %{ "CMPLDI $crx, $src1, $src2" %} + size(4); + ins_encode( enc_cmpldi(crx, src1, src2) ); + ins_pipe(pipe_class_compare); + %} + instruct testL_reg_reg(flagsRegCR0 cr0, iRegLsrc src1, iRegLsrc src2, immL_0 zero) %{ match(Set cr0 (CmpL (AndL src1 src2) zero)); // r0 is killed format %{ "AND R0, $src1, $src2 \t// BTST long" %} size(4);
< prev index next >