< 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 >