# HG changeset patch # User rkennke # Date 1549882587 -3600 # Mon Feb 11 11:56:27 2019 +0100 # Node ID 51f65045288d14e8b4ca0c1d9e86fd8e005ffc11 # Parent b9a806ca423f1a7ae0f93ea67fee2da07fe383e7 imported patch JDK-8217909.patch diff --git a/src/hotspot/cpu/x86/x86_64.ad b/src/hotspot/cpu/x86/x86_64.ad --- a/src/hotspot/cpu/x86/x86_64.ad +++ b/src/hotspot/cpu/x86/x86_64.ad @@ -169,48 +169,85 @@ // 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, - 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, - 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, - 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, - R12, R12_H, - R13, R13_H, - R14, R14_H, - R15, R15_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, + RBX, RBX_H, + RSP, RSP_H, + R8, R8_H, + R9, R9_H, + R10, R10_H, + R11, R11_H, + R12, R12_H, + R13, R13_H, + R14, R14_H, + R15, R15_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, + RSP, RSP_H, + R8, R8_H, + R9, R9_H, + R10, R10_H, + R11, R11_H, + 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, @@ -224,8 +261,26 @@ 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, @@ -238,119 +293,59 @@ 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, - 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, RSP, and RBP) -reg_class ptr_no_rax_reg_no_rbp(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); - -// 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, - RBP, RBP_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) -reg_class ptr_no_rax_rbx_reg_no_rbp(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); - -// 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); - -// Singleton class for RBX pointer register -reg_class ptr_rbx_reg(RBX, RBX_H); - -// Singleton class for RSI pointer register -reg_class ptr_rsi_reg(RSI, RSI_H); - -// Singleton class for RDI pointer register -reg_class ptr_rdi_reg(RDI, RDI_H); - -// Singleton class for stack pointer -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, - 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 long registers (excluding RSP and RBP) -reg_class long_reg_no_rbp(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); - -// 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 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, @@ -362,8 +357,122 @@ 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, +// 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, 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, + R9, R9_H, + R10, R10_H, + R11, R11_H, + R13, R13_H, + R14, R14_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); + +// Singleton class for RBX pointer register +reg_class ptr_rbx_reg(RBX, RBX_H); + +// Singleton class for RSI pointer register +reg_class ptr_rsi_reg(RSI, RSI_H); + +// Singleton class for RDI pointer register +reg_class ptr_rdi_reg(RDI, RDI_H); + +// Singleton class for stack pointer +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 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, + 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, 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, @@ -371,31 +480,18 @@ R9, R9_H, R10, R10_H, R11, R11_H, + R12, R12_H, R13, R13_H, R14, R14_H); -// 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, - 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) -reg_class long_no_rcx_reg_no_rbp(RDI, RDI_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, - RAX, RAX_H, - RDX, RDX_H, + RCX, RCX_H, RBX, RBX_H, R8, R8_H, R9, R9_H, @@ -404,6 +500,145 @@ 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, 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); + +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, 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, + 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 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 %}); @@ -416,44 +651,13 @@ // 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, - RDX, - RBP, - RDI, - RSI, - RCX, - RBX, - R8, - R9, - R10, - R11, - R13, - R14); - -// Class for all int registers (excluding RSP and RBP) -reg_class int_reg_no_rbp(RAX, - RDX, - RDI, - RSI, - RCX, - RBX, - R8, - R9, - R10, - R11, - R13, - R14); - -// 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 RSP and R12) +reg_class int_reg_with_rbp_no_r12(RAX, RDX, RBP, RDI, RSI, + RCX, RBX, R8, R9, @@ -462,37 +666,11 @@ R13, R14); -// Class for all int registers (excluding RCX, RSP, and RBP) -reg_class int_no_rcx_reg_no_rbp(RAX, - RDX, - RDI, - RSI, - RBX, - R8, - R9, - R10, - R11, - R13, - R14); - -// 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, - RDI, - RSI, - RCX, - RBX, - R8, - R9, - 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 RSP, including R12) +reg_class int_reg_with_rbp_with_r12(RAX, + RDX, + RBP, + RDI, RSI, RCX, RBX, @@ -503,6 +681,161 @@ R13, R14); +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, RSP and R12) +reg_class int_no_rcx_reg_with_rbp_no_r12(RAX, + RDX, + RBP, + RDI, + RSI, + RBX, + R8, + R9, + R10, + R11, + R13, + R14); + +// 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, RSP and R12) +reg_class int_no_rax_rdx_reg_with_rbp_no_r12(RBP, + RDI, + RSI, + RCX, + RBX, + R8, + R9, + R10, + R11, + R13, + R14); + +// 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 %});