src/cpu/x86/vm/x86_64.ad
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 7069452 Cdiff src/cpu/x86/vm/x86_64.ad

src/cpu/x86/vm/x86_64.ad

Print this page

        

*** 4011,4021 **** op_attrib op_cost(0); // Required cost attribute //----------Instruction Attributes--------------------------------------------- ins_attrib ins_cost(100); // Required cost attribute ins_attrib ins_size(8); // Required size attribute (in bits) - ins_attrib ins_pc_relative(0); // Required PC Relative flag ins_attrib ins_short_branch(0); // Required flag: is this instruction // a non-matching short branch variant // of some long branch? ins_attrib ins_alignment(1); // Required alignment attribute (must // be a power of 2) specifies the --- 4011,4020 ----
*** 7545,7555 **** Address dispatch($dest$$Register, $switch_val$$Register, (Address::ScaleFactor) $shift$$constant); __ lea($dest$$Register, $constantaddress); __ jmp(dispatch); %} ins_pipe(pipe_jmp); - ins_pc_relative(1); %} instruct jumpXtnd_addr(rRegL switch_val, immI2 shift, immL32 offset, rRegI dest) %{ match(Jump (AddL (LShiftL switch_val shift) offset)); ins_cost(350); --- 7544,7553 ----
*** 7566,7576 **** Address dispatch($dest$$Register, $switch_val$$Register, (Address::ScaleFactor) $shift$$constant, (int) $offset$$constant); __ lea($dest$$Register, $constantaddress); __ jmp(dispatch); %} ins_pipe(pipe_jmp); - ins_pc_relative(1); %} instruct jumpXtnd(rRegL switch_val, rRegI dest) %{ match(Jump switch_val); ins_cost(350); --- 7564,7573 ----
*** 7587,7597 **** Address dispatch($dest$$Register, $switch_val$$Register, Address::times_1); __ lea($dest$$Register, $constantaddress); __ jmp(dispatch); %} ins_pipe(pipe_jmp); - ins_pc_relative(1); %} // Conditional move instruct cmovI_reg(rRegI dst, rRegI src, rFlagsReg cr, cmpOp cop) %{ --- 7584,7593 ----
*** 12018,12028 **** format %{ "jmp $labl" %} size(5); opcode(0xE9); ins_encode(OpcP, Lbl(labl)); ins_pipe(pipe_jmp); - ins_pc_relative(1); %} // Jump Direct Conditional - Label defines a relative address from Jcc+1 instruct jmpCon(cmpOp cop, rFlagsReg cr, label labl) %{ --- 12014,12023 ----
*** 12033,12043 **** format %{ "j$cop $labl" %} size(6); opcode(0x0F, 0x80); ins_encode(Jcc(cop, labl)); ins_pipe(pipe_jcc); - ins_pc_relative(1); %} // Jump Direct Conditional - Label defines a relative address from Jcc+1 instruct jmpLoopEnd(cmpOp cop, rFlagsReg cr, label labl) %{ --- 12028,12037 ----
*** 12048,12058 **** format %{ "j$cop $labl\t# loop end" %} size(6); opcode(0x0F, 0x80); ins_encode(Jcc(cop, labl)); ins_pipe(pipe_jcc); - ins_pc_relative(1); %} // Jump Direct Conditional - Label defines a relative address from Jcc+1 instruct jmpLoopEndU(cmpOpU cop, rFlagsRegU cmp, label labl) %{ match(CountedLoopEnd cop cmp); --- 12042,12051 ----
*** 12062,12072 **** format %{ "j$cop,u $labl\t# loop end" %} size(6); opcode(0x0F, 0x80); ins_encode(Jcc(cop, labl)); ins_pipe(pipe_jcc); - ins_pc_relative(1); %} instruct jmpLoopEndUCF(cmpOpUCF cop, rFlagsRegUCF cmp, label labl) %{ match(CountedLoopEnd cop cmp); effect(USE labl); --- 12055,12064 ----
*** 12075,12085 **** format %{ "j$cop,u $labl\t# loop end" %} size(6); opcode(0x0F, 0x80); ins_encode(Jcc(cop, labl)); ins_pipe(pipe_jcc); - ins_pc_relative(1); %} // Jump Direct Conditional - using unsigned comparison instruct jmpConU(cmpOpU cop, rFlagsRegU cmp, label labl) %{ match(If cop cmp); --- 12067,12076 ----
*** 12089,12099 **** format %{ "j$cop,u $labl" %} size(6); opcode(0x0F, 0x80); ins_encode(Jcc(cop, labl)); ins_pipe(pipe_jcc); - ins_pc_relative(1); %} instruct jmpConUCF(cmpOpUCF cop, rFlagsRegUCF cmp, label labl) %{ match(If cop cmp); effect(USE labl); --- 12080,12089 ----
*** 12102,12112 **** format %{ "j$cop,u $labl" %} size(6); opcode(0x0F, 0x80); ins_encode(Jcc(cop, labl)); ins_pipe(pipe_jcc); - ins_pc_relative(1); %} instruct jmpConUCF2(cmpOpUCF2 cop, rFlagsRegUCF cmp, label labl) %{ match(If cop cmp); effect(USE labl); --- 12092,12101 ----
*** 12142,12152 **** emit_cc(cbuf, $secondary, $cop$$cmpcode); int disp = l->loc_pos() - (cbuf.insts_size() + 4); emit_d32(cbuf, disp); %} ins_pipe(pipe_jcc); - ins_pc_relative(1); %} // ============================================================================ // The 2nd slow-half of a subtype check. Scan the subklass's 2ndary // superklass array for an instance of the superklass. Set a hidden --- 12131,12140 ----
*** 12219,12229 **** format %{ "jmp,s $labl" %} size(2); opcode(0xEB); ins_encode(OpcP, LblShort(labl)); ins_pipe(pipe_jmp); - ins_pc_relative(1); ins_short_branch(1); %} // Jump Direct Conditional - Label defines a relative address from Jcc+1 instruct jmpCon_short(cmpOp cop, rFlagsReg cr, label labl) %{ --- 12207,12216 ----
*** 12234,12244 **** format %{ "j$cop,s $labl" %} size(2); opcode(0x70); ins_encode(JccShort(cop, labl)); ins_pipe(pipe_jcc); - ins_pc_relative(1); ins_short_branch(1); %} // Jump Direct Conditional - Label defines a relative address from Jcc+1 instruct jmpLoopEnd_short(cmpOp cop, rFlagsReg cr, label labl) %{ --- 12221,12230 ----
*** 12249,12259 **** format %{ "j$cop,s $labl\t# loop end" %} size(2); opcode(0x70); ins_encode(JccShort(cop, labl)); ins_pipe(pipe_jcc); - ins_pc_relative(1); ins_short_branch(1); %} // Jump Direct Conditional - Label defines a relative address from Jcc+1 instruct jmpLoopEndU_short(cmpOpU cop, rFlagsRegU cmp, label labl) %{ --- 12235,12244 ----
*** 12264,12274 **** format %{ "j$cop,us $labl\t# loop end" %} size(2); opcode(0x70); ins_encode(JccShort(cop, labl)); ins_pipe(pipe_jcc); - ins_pc_relative(1); ins_short_branch(1); %} instruct jmpLoopEndUCF_short(cmpOpUCF cop, rFlagsRegUCF cmp, label labl) %{ match(CountedLoopEnd cop cmp); --- 12249,12258 ----
*** 12278,12288 **** format %{ "j$cop,us $labl\t# loop end" %} size(2); opcode(0x70); ins_encode(JccShort(cop, labl)); ins_pipe(pipe_jcc); - ins_pc_relative(1); ins_short_branch(1); %} // Jump Direct Conditional - using unsigned comparison instruct jmpConU_short(cmpOpU cop, rFlagsRegU cmp, label labl) %{ --- 12262,12271 ----
*** 12293,12303 **** format %{ "j$cop,us $labl" %} size(2); opcode(0x70); ins_encode(JccShort(cop, labl)); ins_pipe(pipe_jcc); - ins_pc_relative(1); ins_short_branch(1); %} instruct jmpConUCF_short(cmpOpUCF cop, rFlagsRegUCF cmp, label labl) %{ match(If cop cmp); --- 12276,12285 ----
*** 12307,12317 **** format %{ "j$cop,us $labl" %} size(2); opcode(0x70); ins_encode(JccShort(cop, labl)); ins_pipe(pipe_jcc); - ins_pc_relative(1); ins_short_branch(1); %} instruct jmpConUCF2_short(cmpOpUCF2 cop, rFlagsRegUCF cmp, label labl) %{ match(If cop cmp); --- 12289,12298 ----
*** 12347,12357 **** emit_d8(cbuf, disp); assert(-128 <= disp && disp <= 127, "Displacement too large for short jmp"); assert(-128 <= parity_disp && parity_disp <= 127, "Displacement too large for short jmp"); %} ins_pipe(pipe_jcc); - ins_pc_relative(1); ins_short_branch(1); %} // ============================================================================ // inlined locking and unlocking --- 12328,12337 ----
*** 12364,12374 **** ins_cost(300); format %{ "fastlock $object,$box,$tmp,$scr" %} ins_encode(Fast_Lock(object, box, tmp, scr)); ins_pipe(pipe_slow); - ins_pc_relative(1); %} instruct cmpFastUnlock(rFlagsReg cr, rRegP object, rax_RegP box, rRegP tmp) %{ --- 12344,12353 ----
*** 12377,12387 **** ins_cost(300); format %{ "fastunlock $object, $box, $tmp" %} ins_encode(Fast_Unlock(object, box, tmp)); ins_pipe(pipe_slow); - ins_pc_relative(1); %} // ============================================================================ // Safepoint Instructions --- 12356,12365 ----
*** 12430,12440 **** ins_cost(300); format %{ "call,static " %} opcode(0xE8); /* E8 cd */ ins_encode(Java_Static_Call(meth), call_epilog); ins_pipe(pipe_slow); - ins_pc_relative(1); ins_alignment(4); %} // Call Java Static Instruction (method handle version) // Note: If this code changes, the corresponding ret_addr_offset() and --- 12408,12417 ----
*** 12452,12462 **** ins_encode(preserve_SP, Java_Static_Call(meth), restore_SP, call_epilog); ins_pipe(pipe_slow); - ins_pc_relative(1); ins_alignment(4); %} // Call Java Dynamic Instruction // Note: If this code changes, the corresponding ret_addr_offset() and --- 12429,12438 ----
*** 12470,12480 **** format %{ "movq rax, #Universe::non_oop_word()\n\t" "call,dynamic " %} opcode(0xE8); /* E8 cd */ ins_encode(Java_Dynamic_Call(meth), call_epilog); ins_pipe(pipe_slow); - ins_pc_relative(1); ins_alignment(4); %} // Call Runtime Instruction instruct CallRuntimeDirect(method meth) --- 12446,12455 ----
*** 12485,12495 **** ins_cost(300); format %{ "call,runtime " %} opcode(0xE8); /* E8 cd */ ins_encode(Java_To_Runtime(meth)); ins_pipe(pipe_slow); - ins_pc_relative(1); %} // Call runtime without safepoint instruct CallLeafDirect(method meth) %{ --- 12460,12469 ----
*** 12499,12509 **** ins_cost(300); format %{ "call_leaf,runtime " %} opcode(0xE8); /* E8 cd */ ins_encode(Java_To_Runtime(meth)); ins_pipe(pipe_slow); - ins_pc_relative(1); %} // Call runtime without safepoint instruct CallLeafNoFPDirect(method meth) %{ --- 12473,12482 ----
*** 12513,12523 **** ins_cost(300); format %{ "call_leaf_nofp,runtime " %} opcode(0xE8); /* E8 cd */ ins_encode(Java_To_Runtime(meth)); ins_pipe(pipe_slow); - ins_pc_relative(1); %} // Return Instruction // Remove the return address & jump to it. // Notice: We always emit a nop after a ret to make sure there is room --- 12486,12495 ----
src/cpu/x86/vm/x86_64.ad
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File