Skip to content

Commit f084bd2

Browse files
author
Jatin Bhateja
committedApr 4, 2021
8262355: Support for AVX-512 opmask register allocation.
Reviewed-by: vlivanov, njian, kvn
1 parent 0780666 commit f084bd2

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+1569
-294
lines changed
 

‎src/hotspot/cpu/aarch64/aarch64.ad

+25-17
Original file line numberDiff line numberDiff line change
@@ -467,22 +467,22 @@ reg_def R31_H ( NS, NS, Op_RegI, 31, r31_sp->as_VMReg()->next());
467467
// ----------------------------
468468
// SVE Predicate Registers
469469
// ----------------------------
470-
reg_def P0 (SOC, SOC, Op_RegVMask, 0, p0->as_VMReg());
471-
reg_def P1 (SOC, SOC, Op_RegVMask, 1, p1->as_VMReg());
472-
reg_def P2 (SOC, SOC, Op_RegVMask, 2, p2->as_VMReg());
473-
reg_def P3 (SOC, SOC, Op_RegVMask, 3, p3->as_VMReg());
474-
reg_def P4 (SOC, SOC, Op_RegVMask, 4, p4->as_VMReg());
475-
reg_def P5 (SOC, SOC, Op_RegVMask, 5, p5->as_VMReg());
476-
reg_def P6 (SOC, SOC, Op_RegVMask, 6, p6->as_VMReg());
477-
reg_def P7 (SOC, SOC, Op_RegVMask, 7, p7->as_VMReg());
478-
reg_def P8 (SOC, SOC, Op_RegVMask, 8, p8->as_VMReg());
479-
reg_def P9 (SOC, SOC, Op_RegVMask, 9, p9->as_VMReg());
480-
reg_def P10 (SOC, SOC, Op_RegVMask, 10, p10->as_VMReg());
481-
reg_def P11 (SOC, SOC, Op_RegVMask, 11, p11->as_VMReg());
482-
reg_def P12 (SOC, SOC, Op_RegVMask, 12, p12->as_VMReg());
483-
reg_def P13 (SOC, SOC, Op_RegVMask, 13, p13->as_VMReg());
484-
reg_def P14 (SOC, SOC, Op_RegVMask, 14, p14->as_VMReg());
485-
reg_def P15 (SOC, SOC, Op_RegVMask, 15, p15->as_VMReg());
470+
reg_def P0 (SOC, SOC, Op_RegVectMask, 0, p0->as_VMReg());
471+
reg_def P1 (SOC, SOC, Op_RegVectMask, 1, p1->as_VMReg());
472+
reg_def P2 (SOC, SOC, Op_RegVectMask, 2, p2->as_VMReg());
473+
reg_def P3 (SOC, SOC, Op_RegVectMask, 3, p3->as_VMReg());
474+
reg_def P4 (SOC, SOC, Op_RegVectMask, 4, p4->as_VMReg());
475+
reg_def P5 (SOC, SOC, Op_RegVectMask, 5, p5->as_VMReg());
476+
reg_def P6 (SOC, SOC, Op_RegVectMask, 6, p6->as_VMReg());
477+
reg_def P7 (SOC, SOC, Op_RegVectMask, 7, p7->as_VMReg());
478+
reg_def P8 (SOC, SOC, Op_RegVectMask, 8, p8->as_VMReg());
479+
reg_def P9 (SOC, SOC, Op_RegVectMask, 9, p9->as_VMReg());
480+
reg_def P10 (SOC, SOC, Op_RegVectMask, 10, p10->as_VMReg());
481+
reg_def P11 (SOC, SOC, Op_RegVectMask, 11, p11->as_VMReg());
482+
reg_def P12 (SOC, SOC, Op_RegVectMask, 12, p12->as_VMReg());
483+
reg_def P13 (SOC, SOC, Op_RegVectMask, 13, p13->as_VMReg());
484+
reg_def P14 (SOC, SOC, Op_RegVectMask, 14, p14->as_VMReg());
485+
reg_def P15 (SOC, SOC, Op_RegVectMask, 15, p15->as_VMReg());
486486

487487
// ----------------------------
488488
// Special Registers
@@ -2439,6 +2439,14 @@ const bool Matcher::has_predicated_vectors(void) {
24392439
return UseSVE > 0;
24402440
}
24412441

2442+
const RegMask* Matcher::predicate_reg_mask(void) {
2443+
return &_PR_REG_mask;
2444+
}
2445+
2446+
const TypeVect* Matcher::predicate_reg_type(const Type* elemTy, int length) {
2447+
return new TypeVectMask(elemTy, length);
2448+
}
2449+
24422450
bool Matcher::supports_vector_variable_shifts(void) {
24432451
return true;
24442452
}
@@ -5601,7 +5609,7 @@ operand vRegD_V31()
56015609
operand pRegGov()
56025610
%{
56035611
constraint(ALLOC_IN_RC(gov_pr));
5604-
match(RegVMask);
5612+
match(RegVectMask);
56055613
op_cost(0);
56065614
format %{ %}
56075615
interface(REG_INTER);

‎src/hotspot/cpu/arm/arm.ad

+9-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//
2-
// Copyright (c) 2008, 2020, Oracle and/or its affiliates. All rights reserved.
2+
// Copyright (c) 2008, 2021, Oracle and/or its affiliates. All rights reserved.
33
// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
//
55
// This code is free software; you can redistribute it and/or modify it
@@ -993,6 +993,14 @@ const bool Matcher::has_predicated_vectors(void) {
993993
return false;
994994
}
995995

996+
const RegMask* Matcher::predicate_reg_mask(void) {
997+
return NULL;
998+
}
999+
1000+
const TypeVect* Matcher::predicate_reg_type(const Type* elemTy, int length) {
1001+
return NULL;
1002+
}
1003+
9961004
bool Matcher::supports_vector_variable_shifts(void) {
9971005
return VM_Version::has_simd();
9981006
}

0 commit comments

Comments
 (0)
Please sign in to comment.