Skip to content

Commit c88f01f

Browse files
committed
add APX registers as allocatable.
1 parent edd9890 commit c88f01f

File tree

1 file changed

+35
-1
lines changed
  • src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/amd64

1 file changed

+35
-1
lines changed

src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/amd64/AMD64.java

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,13 @@ public class AMD64 extends Architecture {
9191
r8, r9, r10, r11, r12, r13, r14, r15
9292
};
9393

94+
public static final Register[] cpuRegistersAPX = {
95+
rax, rcx, rdx, rbx, rsp, rbp, rsi, rdi,
96+
r8, r9, r10, r11, r12, r13, r14, r15,
97+
r16, r17, r18, r19, r20, r21, r22, r23,
98+
r24, r25, r26, r27, r28, r29, r30, r31
99+
};
100+
94101
public static final RegisterCategory XMM = new RegisterCategory("XMM");
95102

96103
// XMM registers
@@ -170,6 +177,27 @@ public class AMD64 extends Architecture {
170177
k0, k1, k2, k3, k4, k5, k6, k7
171178
);
172179

180+
public static final List<Register> valueRegistersSSEAndAPX = List.of(
181+
rax, rcx, rdx, rbx, rsp, rbp, rsi, rdi,
182+
r8, r9, r10, r11, r12, r13, r14, r15,
183+
r16, r17, r18, r19, r20, r21, r22, r23,
184+
r24, r25, r26, r27, r28, r29, r30, r31,
185+
xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7,
186+
xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15
187+
);
188+
189+
public static final List<Register> valueRegistersAVX512AndAPX = List.of(
190+
rax, rcx, rdx, rbx, rsp, rbp, rsi, rdi,
191+
r8, r9, r10, r11, r12, r13, r14, r15,
192+
r16, r17, r18, r19, r20, r21, r22, r23,
193+
r24, r25, r26, r27, r28, r29, r30, r31,
194+
xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7,
195+
xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15,
196+
xmm16, xmm17, xmm18, xmm19, xmm20, xmm21, xmm22, xmm23,
197+
xmm24, xmm25, xmm26, xmm27, xmm28, xmm29, xmm30, xmm31,
198+
k0, k1, k2, k3, k4, k5, k6, k7
199+
);
200+
173201
/**
174202
* Register used to construct an instruction-relative address.
175203
*/
@@ -293,7 +321,13 @@ public EnumSet<CPUFeature> getFeatures() {
293321

294322
@Override
295323
public List<Register> getAvailableValueRegisters() {
296-
if (features.contains(CPUFeature.AVX512F)) {
324+
if (features.contains(CPUFeature.APX_F)) {
325+
if (features.contains(CPUFeature.AVX512F)) {
326+
return valueRegistersAVX512AndAPX;
327+
} else {
328+
return valueRegistersSSEAndAPX;
329+
}
330+
} else if (features.contains(CPUFeature.AVX512F)) {
297331
return valueRegistersAVX512;
298332
} else {
299333
return valueRegistersSSE;

0 commit comments

Comments
 (0)