< prev index next >
src/hotspot/cpu/x86/x86_64.ad
Print this page
rev 53717 : imported patch JDK-8217909.patch
@@ -167,12 +167,29 @@
//
// Empty register class.
reg_class no_reg();
-// Class for all pointer registers (including RSP and RBP)
-reg_class any_reg_with_rbp(RAX, RAX_H,
+// Class for all pointer registers (including RSP and RBP, excluding R12)
+reg_class any_reg_with_rbp_no_r12(RAX, RAX_H,
+ RDX, RDX_H,
+ RBP, RBP_H,
+ RDI, RDI_H,
+ RSI, RSI_H,
+ RCX, RCX_H,
+ RBX, RBX_H,
+ RSP, RSP_H,
+ R8, R8_H,
+ R9, R9_H,
+ R10, R10_H,
+ R11, R11_H,
+ R13, R13_H,
+ R14, R14_H,
+ R15, R15_H);
+
+// Class for all pointer registers (including RSP and RBP andR12)
+reg_class any_reg_with_rbp_with_r12(RAX, RAX_H,
RDX, RDX_H,
RBP, RBP_H,
RDI, RDI_H,
RSI, RSI_H,
RCX, RCX_H,
@@ -185,12 +202,30 @@
R12, R12_H,
R13, R13_H,
R14, R14_H,
R15, R15_H);
-// Class for all pointer registers (including RSP, but excluding RBP)
-reg_class any_reg_no_rbp(RAX, RAX_H,
+reg_class_dynamic any_reg_with_rbp(any_reg_with_rbp_no_r12, any_reg_with_rbp_with_r12, %{ (UseCompressedOops || UseCompressedClassPointers || UseZGC) %});
+
+// Class for all pointer registers (including RSP, but excluding RBP and R12)
+reg_class any_reg_no_rbp_no_r12(RAX, RAX_H,
+ RDX, RDX_H,
+ RDI, RDI_H,
+ RSI, RSI_H,
+ RCX, RCX_H,
+ RBX, RBX_H,
+ RSP, RSP_H,
+ R8, R8_H,
+ R9, R9_H,
+ R10, R10_H,
+ R11, R11_H,
+ R13, R13_H,
+ R14, R14_H,
+ R15, R15_H);
+
+// Class for all pointer registers (including RSP and R12, but excluding RBP)
+reg_class any_reg_no_rbp_with_r12(RAX, RAX_H,
RDX, RDX_H,
RDI, RDI_H,
RSI, RSI_H,
RCX, RCX_H,
RBX, RBX_H,
@@ -202,17 +237,19 @@
R12, R12_H,
R13, R13_H,
R14, R14_H,
R15, R15_H);
+reg_class_dynamic any_reg_no_rbp(any_reg_no_rbp_no_r12, any_reg_no_rbp_with_r12, %{ (UseCompressedOops || UseCompressedClassPointers || UseZGC) %});
+
// Dynamic register class that selects at runtime between register classes
// any_reg_no_rbp and any_reg_with_rbp (depending on the value of the flag PreserveFramePointer).
// Equivalent to: return PreserveFramePointer ? any_reg_no_rbp : any_reg_with_rbp;
reg_class_dynamic any_reg(any_reg_no_rbp, any_reg_with_rbp, %{ PreserveFramePointer %});
-// Class for all pointer registers (excluding RSP)
-reg_class ptr_reg_with_rbp(RAX, RAX_H,
+// Class for all pointer registers (excluding RSP, excluding R12)
+reg_class ptr_reg_with_rbp_no_r12(RAX, RAX_H,
RDX, RDX_H,
RBP, RBP_H,
RDI, RDI_H,
RSI, RSI_H,
RCX, RCX_H,
@@ -222,59 +259,127 @@
R10, R10_H,
R11, R11_H,
R13, R13_H,
R14, R14_H);
-// Class for all pointer registers (excluding RSP and RBP)
-reg_class ptr_reg_no_rbp(RAX, RAX_H,
+// Class for all pointer registers (excluding RSP, including R12)
+reg_class ptr_reg_with_rbp_with_r12(RAX, RAX_H,
RDX, RDX_H,
+ RBP, RBP_H,
RDI, RDI_H,
RSI, RSI_H,
RCX, RCX_H,
RBX, RBX_H,
R8, R8_H,
R9, R9_H,
R10, R10_H,
R11, R11_H,
+ R12, R12_H,
R13, R13_H,
R14, R14_H);
+reg_class_dynamic ptr_reg_with_rbp(ptr_reg_with_rbp_no_r12, ptr_reg_with_rbp_with_r12, %{ (UseCompressedOops || UseCompressedClassPointers || UseZGC) %});
+
+// Class for all pointer registers (excluding RSP and RBP and R12)
+reg_class ptr_reg_no_rbp_no_r12(RAX, RAX_H,
+ RDX, RDX_H,
+ RDI, RDI_H,
+ RSI, RSI_H,
+ RCX, RCX_H,
+ RBX, RBX_H,
+ R8, R8_H,
+ R9, R9_H,
+ R10, R10_H,
+ R11, R11_H,
+ R13, R13_H,
+ R14, R14_H);
+
+// Class for all pointer registers (excluding RSP and RBP, including R12)
+reg_class ptr_reg_no_rbp_with_r12(RAX, RAX_H,
+ RDX, RDX_H,
+ RDI, RDI_H,
+ RSI, RSI_H,
+ RCX, RCX_H,
+ RBX, RBX_H,
+ R8, R8_H,
+ R9, R9_H,
+ R10, R10_H,
+ R11, R11_H,
+ R12, R12_H,
+ R13, R13_H,
+ R14, R14_H);
+
+reg_class_dynamic ptr_reg_no_rbp(ptr_reg_no_rbp_no_r12, ptr_reg_no_rbp_with_r12, %{ (UseCompressedOops || UseCompressedClassPointers || UseZGC) %});
+
// Dynamic register class that selects between ptr_reg_no_rbp and ptr_reg_with_rbp.
reg_class_dynamic ptr_reg(ptr_reg_no_rbp, ptr_reg_with_rbp, %{ PreserveFramePointer %});
-// Class for all pointer registers (excluding RAX and RSP)
-reg_class ptr_no_rax_reg_with_rbp(RDX, RDX_H,
+// Class for all pointer registers (excluding RAX and RSP and R12)
+reg_class ptr_no_rax_reg_with_rbp_no_r12(RDX, RDX_H,
+ RBP, RBP_H,
+ RDI, RDI_H,
+ RSI, RSI_H,
+ RCX, RCX_H,
+ RBX, RBX_H,
+ R8, R8_H,
+ R9, R9_H,
+ R10, R10_H,
+ R11, R11_H,
+ R13, R13_H,
+ R14, R14_H);
+
+// Class for all pointer registers (excluding RAX and RSP, including R12)
+reg_class ptr_no_rax_reg_with_rbp_with_r12(RDX, RDX_H,
RBP, RBP_H,
RDI, RDI_H,
RSI, RSI_H,
RCX, RCX_H,
RBX, RBX_H,
R8, R8_H,
R9, R9_H,
R10, R10_H,
R11, R11_H,
+ R12, R12_H,
+ R13, R13_H,
+ R14, R14_H);
+
+reg_class_dynamic ptr_no_rax_reg_with_rbp(ptr_no_rax_reg_with_rbp_no_r12, ptr_no_rax_reg_with_rbp_with_r12, %{ (UseCompressedOops || UseCompressedClassPointers || UseZGC) %});
+
+// Class for all pointer registers (excluding RAX, RSP, RBP, and R12)
+reg_class ptr_no_rax_reg_no_rbp_no_r12(RDX, RDX_H,
+ RDI, RDI_H,
+ RSI, RSI_H,
+ RCX, RCX_H,
+ RBX, RBX_H,
+ R8, R8_H,
+ R9, R9_H,
+ R10, R10_H,
+ R11, R11_H,
R13, R13_H,
R14, R14_H);
-// Class for all pointer registers (excluding RAX, RSP, and RBP)
-reg_class ptr_no_rax_reg_no_rbp(RDX, RDX_H,
+// Class for all pointer registers (excluding RAX, RSP, RBP, including R12)
+reg_class ptr_no_rax_reg_no_rbp_with_r12(RDX, RDX_H,
RDI, RDI_H,
RSI, RSI_H,
RCX, RCX_H,
RBX, RBX_H,
R8, R8_H,
R9, R9_H,
R10, R10_H,
R11, R11_H,
+ R12, R12_H,
R13, R13_H,
R14, R14_H);
+reg_class_dynamic ptr_no_rax_reg_no_rbp(ptr_no_rax_reg_no_rbp_no_r12, ptr_no_rax_reg_no_rbp_with_r12, %{ (UseCompressedOops || UseCompressedClassPointers || UseZGC) %});
+
// Dynamic register class that selects between ptr_no_rax_reg_no_rbp and ptr_no_rax_reg_with_rbp.
reg_class_dynamic ptr_no_rax_reg(ptr_no_rax_reg_no_rbp, ptr_no_rax_reg_with_rbp, %{ PreserveFramePointer %});
-// Class for all pointer registers (excluding RAX, RBX, and RSP)
-reg_class ptr_no_rax_rbx_reg_with_rbp(RDX, RDX_H,
+// Class for all pointer registers (excluding RAX, RBX, RSP and R12)
+reg_class ptr_no_rax_rbx_reg_with_rbp_no_r12(RDX, RDX_H,
RBP, RBP_H,
RDI, RDI_H,
RSI, RSI_H,
RCX, RCX_H,
R8, R8_H,
@@ -282,22 +387,53 @@
R10, R10_H,
R11, R11_H,
R13, R13_H,
R14, R14_H);
-// Class for all pointer registers (excluding RAX, RBX, RSP, and RBP)
-reg_class ptr_no_rax_rbx_reg_no_rbp(RDX, RDX_H,
+// Class for all pointer registers (excluding RAX, RBX, RSP, including R12)
+reg_class ptr_no_rax_rbx_reg_with_rbp_with_r12(RDX, RDX_H,
+ RBP, RBP_H,
RDI, RDI_H,
RSI, RSI_H,
RCX, RCX_H,
R8, R8_H,
R9, R9_H,
R10, R10_H,
R11, R11_H,
+ R12, R12_H,
R13, R13_H,
R14, R14_H);
+reg_class_dynamic ptr_no_rax_rbx_reg_with_rbp(ptr_no_rax_rbx_reg_with_rbp_no_r12, ptr_no_rax_rbx_reg_with_rbp_with_r12, %{ (UseCompressedOops || UseCompressedClassPointers || UseZGC) %});
+
+// Class for all pointer registers (excluding RAX, RBX, RSP, RBP and R12)
+reg_class ptr_no_rax_rbx_reg_no_rbp_no_r12(RDX, RDX_H,
+ RDI, RDI_H,
+ RSI, RSI_H,
+ RCX, RCX_H,
+ R8, R8_H,
+ R9, R9_H,
+ R10, R10_H,
+ R11, R11_H,
+ R13, R13_H,
+ R14, R14_H);
+
+// Class for all pointer registers (excluding RAX, RBX, RSP, and RBP, including R12)
+reg_class ptr_no_rax_rbx_reg_no_rbp_with_r12(RDX, RDX_H,
+ RDI, RDI_H,
+ RSI, RSI_H,
+ RCX, RCX_H,
+ R8, R8_H,
+ R9, R9_H,
+ R10, R10_H,
+ R11, R11_H,
+ R12, R12_H,
+ R13, R13_H,
+ R14, R14_H);
+
+reg_class_dynamic ptr_no_rax_rbx_reg_no_rbp(ptr_no_rax_rbx_reg_no_rbp_no_r12, ptr_no_rax_rbx_reg_no_rbp_with_r12, %{ (UseCompressedOops || UseCompressedClassPointers || UseZGC) %});
+
// Dynamic register class that selects between ptr_no_rax_rbx_reg_no_rbp and ptr_no_rax_rbx_reg_with_rbp.
reg_class_dynamic ptr_no_rax_rbx_reg(ptr_no_rax_rbx_reg_no_rbp, ptr_no_rax_rbx_reg_with_rbp, %{ PreserveFramePointer %});
// Singleton class for RAX pointer register
reg_class ptr_rax_reg(RAX, RAX_H);
@@ -315,12 +451,12 @@
reg_class ptr_rsp_reg(RSP, RSP_H);
// Singleton class for TLS pointer
reg_class ptr_r15_reg(R15, R15_H);
-// Class for all long registers (excluding RSP)
-reg_class long_reg_with_rbp(RAX, RAX_H,
+// Class for all long registers (excluding RSP and R12)
+reg_class long_reg_with_rbp_no_r12(RAX, RAX_H,
RDX, RDX_H,
RBP, RBP_H,
RDI, RDI_H,
RSI, RSI_H,
RCX, RCX_H,
@@ -330,57 +466,123 @@
R10, R10_H,
R11, R11_H,
R13, R13_H,
R14, R14_H);
-// Class for all long registers (excluding RSP and RBP)
-reg_class long_reg_no_rbp(RAX, RAX_H,
+// Class for all long registers (excluding RSP, including R12)
+reg_class long_reg_with_rbp_with_r12(RAX, RAX_H,
+ RDX, RDX_H,
+ RBP, RBP_H,
+ RDI, RDI_H,
+ RSI, RSI_H,
+ RCX, RCX_H,
+ RBX, RBX_H,
+ R8, R8_H,
+ R9, R9_H,
+ R10, R10_H,
+ R11, R11_H,
+ R12, R12_H,
+ R13, R13_H,
+ R14, R14_H);
+
+reg_class_dynamic long_reg_with_rbp(long_reg_with_rbp_no_r12, long_reg_with_rbp_with_r12, %{ (UseCompressedOops || UseCompressedClassPointers || UseZGC) %});
+
+// Class for all long registers (excluding RSP, RBP, R12)
+reg_class long_reg_no_rbp_no_r12(RAX, RAX_H,
+ RDX, RDX_H,
+ RDI, RDI_H,
+ RSI, RSI_H,
+ RCX, RCX_H,
+ RBX, RBX_H,
+ R8, R8_H,
+ R9, R9_H,
+ R10, R10_H,
+ R11, R11_H,
+ R13, R13_H,
+ R14, R14_H);
+
+// Class for all long registers (excluding RSP, RBP, including R12)
+reg_class long_reg_no_rbp_with_r12(RAX, RAX_H,
RDX, RDX_H,
RDI, RDI_H,
RSI, RSI_H,
RCX, RCX_H,
RBX, RBX_H,
R8, R8_H,
R9, R9_H,
R10, R10_H,
R11, R11_H,
+ R12, R12_H,
R13, R13_H,
R14, R14_H);
+reg_class_dynamic long_reg_no_rbp(long_reg_no_rbp_no_r12, long_reg_no_rbp_with_r12, %{ (UseCompressedOops || UseCompressedClassPointers || UseZGC) %});
+
// Dynamic register class that selects between long_reg_no_rbp and long_reg_with_rbp.
reg_class_dynamic long_reg(long_reg_no_rbp, long_reg_with_rbp, %{ PreserveFramePointer %});
-// Class for all long registers (excluding RAX, RDX and RSP)
-reg_class long_no_rax_rdx_reg_with_rbp(RBP, RBP_H,
+// Class for all long registers (excluding RAX, RDX, RSP and R12)
+reg_class long_no_rax_rdx_reg_with_rbp_no_r12(RBP, RBP_H,
+ RDI, RDI_H,
+ RSI, RSI_H,
+ RCX, RCX_H,
+ RBX, RBX_H,
+ R8, R8_H,
+ R9, R9_H,
+ R10, R10_H,
+ R11, R11_H,
+ R13, R13_H,
+ R14, R14_H);
+
+// Class for all long registers (excluding RAX, RDX and RSP, including R12)
+reg_class long_no_rax_rdx_reg_with_rbp_with_r12(RBP, RBP_H,
RDI, RDI_H,
RSI, RSI_H,
RCX, RCX_H,
RBX, RBX_H,
R8, R8_H,
R9, R9_H,
R10, R10_H,
R11, R11_H,
+ R12, R12_H,
R13, R13_H,
R14, R14_H);
-// Class for all long registers (excluding RAX, RDX, RSP, and RBP)
-reg_class long_no_rax_rdx_reg_no_rbp(RDI, RDI_H,
+reg_class_dynamic long_no_rax_rdx_reg_with_rbp(long_no_rax_rdx_reg_with_rbp_no_r12, long_no_rax_rdx_reg_with_rbp_with_r12, %{ (UseCompressedOops || UseCompressedClassPointers || UseZGC) %});
+
+// Class for all long registers (excluding RAX, RDX, RSP, RBP and R12)
+reg_class long_no_rax_rdx_reg_no_rbp_no_r12(RDI, RDI_H,
RSI, RSI_H,
RCX, RCX_H,
RBX, RBX_H,
R8, R8_H,
R9, R9_H,
R10, R10_H,
R11, R11_H,
R13, R13_H,
R14, R14_H);
+// Class for all long registers (excluding RAX, RDX, RSP, and RBP, including R12)
+reg_class long_no_rax_rdx_reg_no_rbp_with_r12(RDI, RDI_H,
+ RSI, RSI_H,
+ RCX, RCX_H,
+ RBX, RBX_H,
+ R8, R8_H,
+ R9, R9_H,
+ R10, R10_H,
+ R11, R11_H,
+ R12, R12_H,
+ R13, R13_H,
+ R14, R14_H);
+
+reg_class_dynamic long_no_rax_rdx_reg_no_rbp(long_no_rax_rdx_reg_no_rbp_no_r12, long_no_rax_rdx_reg_no_rbp_with_r12, %{ (UseCompressedOops || UseCompressedClassPointers || UseZGC) %});
+
// Dynamic register class that selects between long_no_rax_rdx_reg_no_rbp and long_no_rax_rdx_reg_with_rbp.
reg_class_dynamic long_no_rax_rdx_reg(long_no_rax_rdx_reg_no_rbp, long_no_rax_rdx_reg_with_rbp, %{ PreserveFramePointer %});
-// Class for all long registers (excluding RCX and RSP)
-reg_class long_no_rcx_reg_with_rbp(RBP, RBP_H,
+// Class for all long registers (excluding RCX, RSP and R12)
+reg_class long_no_rcx_reg_with_rbp_no_r12(RBP, RBP_H,
RDI, RDI_H,
RSI, RSI_H,
RAX, RAX_H,
RDX, RDX_H,
RBX, RBX_H,
@@ -389,23 +591,56 @@
R10, R10_H,
R11, R11_H,
R13, R13_H,
R14, R14_H);
-// Class for all long registers (excluding RCX, RSP, and RBP)
-reg_class long_no_rcx_reg_no_rbp(RDI, RDI_H,
+// Class for all long registers (excluding RCX and RSP, including R12)
+reg_class long_no_rcx_reg_with_rbp_with_r12(RBP, RBP_H,
+ RDI, RDI_H,
RSI, RSI_H,
RAX, RAX_H,
RDX, RDX_H,
RBX, RBX_H,
R8, R8_H,
R9, R9_H,
R10, R10_H,
R11, R11_H,
+ R12, R12_H,
R13, R13_H,
R14, R14_H);
+reg_class_dynamic long_no_rcx_reg_with_rbp(long_no_rcx_reg_with_rbp_no_r12, long_no_rcx_reg_with_rbp_with_r12, %{ (UseCompressedOops || UseCompressedClassPointers || UseZGC) %});
+
+// Class for all long registers (excluding RCX, RSP, RBP and R12)
+reg_class long_no_rcx_reg_no_rbp_no_r12(RDI, RDI_H,
+ RSI, RSI_H,
+ RAX, RAX_H,
+ RDX, RDX_H,
+ RBX, RBX_H,
+ R8, R8_H,
+ R9, R9_H,
+ R10, R10_H,
+ R11, R11_H,
+ R13, R13_H,
+ R14, R14_H);
+
+// Class for all long registers (excluding RCX, RSP, and RBP, including R12)
+reg_class long_no_rcx_reg_no_rbp_with_r12(RDI, RDI_H,
+ RSI, RSI_H,
+ RAX, RAX_H,
+ RDX, RDX_H,
+ RBX, RBX_H,
+ R8, R8_H,
+ R9, R9_H,
+ R10, R10_H,
+ R11, R11_H,
+ R12, R12_H,
+ R13, R13_H,
+ R14, R14_H);
+
+reg_class_dynamic long_no_rcx_reg_no_rbp(long_no_rcx_reg_no_rbp_no_r12, long_no_rcx_reg_no_rbp_with_r12, %{ (UseCompressedOops || UseCompressedClassPointers || UseZGC) %});
+
// Dynamic register class that selects between long_no_rcx_reg_no_rbp and long_no_rcx_reg_with_rbp.
reg_class_dynamic long_no_rcx_reg(long_no_rcx_reg_no_rbp, long_no_rcx_reg_with_rbp, %{ PreserveFramePointer %});
// Singleton class for RAX long register
reg_class long_rax_reg(RAX, RAX_H);
@@ -414,12 +649,27 @@
reg_class long_rcx_reg(RCX, RCX_H);
// Singleton class for RDX long register
reg_class long_rdx_reg(RDX, RDX_H);
-// Class for all int registers (excluding RSP)
-reg_class int_reg_with_rbp(RAX,
+// Class for all int registers (excluding RSP and R12)
+reg_class int_reg_with_rbp_no_r12(RAX,
+ RDX,
+ RBP,
+ RDI,
+ RSI,
+ RCX,
+ RBX,
+ R8,
+ R9,
+ R10,
+ R11,
+ R13,
+ R14);
+
+// Class for all int registers (excluding RSP, including R12)
+reg_class int_reg_with_rbp_with_r12(RAX,
RDX,
RBP,
RDI,
RSI,
RCX,
@@ -429,29 +679,48 @@
R10,
R11,
R13,
R14);
-// Class for all int registers (excluding RSP and RBP)
-reg_class int_reg_no_rbp(RAX,
+reg_class_dynamic int_reg_with_rbp(int_reg_with_rbp_no_r12, int_reg_with_rbp_with_r12, %{ (UseCompressedOops || UseCompressedClassPointers || UseZGC) %});
+
+// Class for all int registers (excluding RSP, RBP and R12)
+reg_class int_reg_no_rbp_no_r12(RAX,
+ RDX,
+ RDI,
+ RSI,
+ RCX,
+ RBX,
+ R8,
+ R9,
+ R10,
+ R11,
+ R13,
+ R14);
+
+// Class for all int registers (excluding RSP and RBP, including R12)
+reg_class int_reg_no_rbp_with_r12(RAX,
RDX,
RDI,
RSI,
RCX,
RBX,
R8,
R9,
R10,
R11,
+ R12,
R13,
R14);
+reg_class_dynamic int_reg_no_rbp(int_reg_no_rbp_no_r12, int_reg_no_rbp_with_r12, %{ (UseCompressedOops || UseCompressedClassPointers || UseZGC) %});
+
// Dynamic register class that selects between int_reg_no_rbp and int_reg_with_rbp.
reg_class_dynamic int_reg(int_reg_no_rbp, int_reg_with_rbp, %{ PreserveFramePointer %});
-// Class for all int registers (excluding RCX and RSP)
-reg_class int_no_rcx_reg_with_rbp(RAX,
+// Class for all int registers (excluding RCX, RSP and R12)
+reg_class int_no_rcx_reg_with_rbp_no_r12(RAX,
RDX,
RBP,
RDI,
RSI,
RBX,
@@ -460,28 +729,61 @@
R10,
R11,
R13,
R14);
-// Class for all int registers (excluding RCX, RSP, and RBP)
-reg_class int_no_rcx_reg_no_rbp(RAX,
+// Class for all int registers (excluding RCX and RSP, including R12)
+reg_class int_no_rcx_reg_with_rbp_with_r12(RAX,
RDX,
+ RBP,
RDI,
RSI,
RBX,
R8,
R9,
R10,
R11,
+ R12,
R13,
R14);
+reg_class_dynamic int_no_rcx_reg_with_rbp(int_no_rcx_reg_with_rbp_no_r12, int_no_rcx_reg_with_rbp_with_r12, %{ (UseCompressedOops || UseCompressedClassPointers || UseZGC) %});
+
+// Class for all int registers (excluding RCX, RSP, RBP and R12)
+reg_class int_no_rcx_reg_no_rbp_no_r12(RAX,
+ RDX,
+ RDI,
+ RSI,
+ RBX,
+ R8,
+ R9,
+ R10,
+ R11,
+ R13,
+ R14);
+
+// Class for all int registers (excluding RCX, RSP, and RBP, including R12)
+reg_class int_no_rcx_reg_no_rbp_with_r12(RAX,
+ RDX,
+ RDI,
+ RSI,
+ RBX,
+ R8,
+ R9,
+ R10,
+ R11,
+ R12,
+ R13,
+ R14);
+
+reg_class_dynamic int_no_rcx_reg_no_rbp(int_no_rcx_reg_no_rbp_no_r12, int_no_rcx_reg_no_rbp_with_r12, %{ (UseCompressedOops || UseCompressedClassPointers || UseZGC) %});
+
// Dynamic register class that selects between int_no_rcx_reg_no_rbp and int_no_rcx_reg_with_rbp.
reg_class_dynamic int_no_rcx_reg(int_no_rcx_reg_no_rbp, int_no_rcx_reg_with_rbp, %{ PreserveFramePointer %});
-// Class for all int registers (excluding RAX, RDX, and RSP)
-reg_class int_no_rax_rdx_reg_with_rbp(RBP,
+// Class for all int registers (excluding RAX, RDX, RSP and R12)
+reg_class int_no_rax_rdx_reg_with_rbp_no_r12(RBP,
RDI,
RSI,
RCX,
RBX,
R8,
@@ -489,22 +791,53 @@
R10,
R11,
R13,
R14);
-// Class for all int registers (excluding RAX, RDX, RSP, and RBP)
-reg_class int_no_rax_rdx_reg_no_rbp(RDI,
+// Class for all int registers (excluding RAX, RDX and RSP, including R12)
+reg_class int_no_rax_rdx_reg_with_rbp_with_r12(RBP,
+ RDI,
RSI,
RCX,
RBX,
R8,
R9,
R10,
R11,
+ R12,
R13,
R14);
+reg_class_dynamic int_no_rax_rdx_reg_with_rbp(int_no_rax_rdx_reg_with_rbp_no_r12, int_no_rax_rdx_reg_with_rbp_with_r12, %{ (UseCompressedOops || UseCompressedClassPointers || UseZGC) %});
+
+// Class for all int registers (excluding RAX, RDX, RSP, RBP and R12)
+reg_class int_no_rax_rdx_reg_no_rbp_no_r12(RDI,
+ RSI,
+ RCX,
+ RBX,
+ R8,
+ R9,
+ R10,
+ R11,
+ R13,
+ R14);
+
+// Class for all int registers (excluding RAX, RDX, RSP, and RBP, including R12)
+reg_class int_no_rax_rdx_reg_no_rbp_with_r12(RDI,
+ RSI,
+ RCX,
+ RBX,
+ R8,
+ R9,
+ R10,
+ R11,
+ R12,
+ R13,
+ R14);
+
+reg_class_dynamic int_no_rax_rdx_reg_no_rbp(int_no_rax_rdx_reg_no_rbp_no_r12, int_no_rax_rdx_reg_no_rbp_with_r12, %{ (UseCompressedOops || UseCompressedClassPointers || UseZGC) %});
+
// Dynamic register class that selects between int_no_rax_rdx_reg_no_rbp and int_no_rax_rdx_reg_with_rbp.
reg_class_dynamic int_no_rax_rdx_reg(int_no_rax_rdx_reg_no_rbp, int_no_rax_rdx_reg_with_rbp, %{ PreserveFramePointer %});
// Singleton class for RAX int register
reg_class int_rax_reg(RAX);
< prev index next >