Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

8262355: Support for AVX-512 opmask register allocation. #2768

Closed
wants to merge 23 commits into from
Closed
Changes from 1 commit
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
9e1c3e0
8262355: Support for AVX-512 opmask register allocation.
Feb 28, 2021
69003aa
8262355: Fix for AARCH64 build failure.
Feb 28, 2021
ffacbc6
8262355: Creating a new ideal type TypeVectMask for mask generating n…
Mar 4, 2021
4eaa3d8
8262355: Some synthetic changes for cleanup.
Mar 4, 2021
4fadca5
8262355 : Review comments resolution and deopt handling for mask gene…
Mar 10, 2021
f82741e
8262355: Fix for hs-minimal and windows build failures.
Mar 10, 2021
72f02a9
8262355: Fix for windows build failure.
Mar 10, 2021
a46b2bf
8262355: Removing object re-materialization handling for mask-generat…
Mar 11, 2021
df16ac0
8262355: Review comments resolution.
Mar 16, 2021
fcf2cce
8262355: Fix build failure
Mar 16, 2021
847fdce
8262355: Review comments resolutions.
Mar 17, 2021
f1748bf
Merge branch 'master' of http://github.com/openjdk/jdk into JDK-8262355
Mar 17, 2021
29e889e
Merge branch 'master' of http://github.com/openjdk/jdk into JDK-8262355
Mar 18, 2021
7751342
8262355: Review comments resolution
Mar 18, 2021
661fbda
8262355: Extending Type::isa_vect and Type::is_vect routines to TypeV…
Mar 21, 2021
8a05fbb
8262355: Review comments resolution.
Mar 24, 2021
837428d
8262355: Adding missed safety check.
Mar 25, 2021
13e791a
8262355: Updating copywriter for edited files.
Mar 28, 2021
eeea2d7
Merge branch 'master' of http://github.com/openjdk/jdk into JDK-8262355
Mar 29, 2021
5aa0730
8262355: Review comments resolutions.
Apr 1, 2021
366641a
8262355: Fix AARCH64 build issue
Apr 1, 2021
d6bec3d
Merge http://github.com/openjdk/jdk into JDK-8262355
Apr 1, 2021
b9810d2
8262355: Rebasing patch, 32bit clean-up.
Apr 2, 2021
File filter
Filter file types
Jump to
Jump to file
Failed to load files.

Always

Just for now

@@ -1579,6 +1579,7 @@ uint MachSpillCopyNode::implementation(CodeBuffer* cbuf,
return 0;
}
}

assert(0," foo ");
Unimplemented();
return 0;
@@ -122,6 +122,8 @@ static Node *merge_region(RegionNode *region, PhaseGVN *phase) {
return progress;
}



//--------------------------------has_phi--------------------------------------
// Helper function: Return any PhiNode that uses this region or NULL
PhiNode* RegionNode::has_phi() const {
@@ -214,6 +214,7 @@ class PhiNode : public TypeNode {
inst_offset() == offset &&
type()->higher_equal(tp);
}

virtual const Type* Value(PhaseGVN* phase) const;
virtual Node* Identity(PhaseGVN* phase);
virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
@@ -900,7 +900,7 @@ void PhaseChaitin::gather_lrg_masks( bool after_aggressive ) {
#if defined(ARM32)
lrg.set_reg_pressure(2);
#elif defined(IA32)
if( ireg == Op_RegL) {
if( ireg == Op_RegL ) {
lrg.set_reg_pressure(2);
} else {
lrg.set_reg_pressure(1);
@@ -585,11 +585,11 @@ class MachSpillCopyNode : public MachIdealNode {
private:
const RegMask *_in; // RegMask for input
const RegMask *_out; // RegMask for output
const Node *_node;
const Type *_type;
const SpillType _spill_type;
public:
MachSpillCopyNode(SpillType spill_type, Node *n, const RegMask &in, const RegMask &out ) :
MachIdealNode(), _in(&in), _out(&out), _node(n), _spill_type(spill_type) {
MachIdealNode(), _in(&in), _out(&out), _type(n->bottom_type()), _spill_type(spill_type) {
init_class_id(Class_MachSpillCopy);
init_flags(Flag_is_Copy);
add_req(NULL);
@@ -600,16 +600,8 @@ class MachSpillCopyNode : public MachIdealNode {
void set_in_RegMask(const RegMask &in) { _in = ∈ }
virtual const RegMask &out_RegMask() const { return *_out; }
virtual const RegMask &in_RegMask(uint) const { return *_in; }
virtual const class Type *bottom_type() const { return _node->bottom_type(); }
virtual uint ideal_reg() const {
if(_node->isa_Mach()) {
return _node->as_Mach()->ideal_reg();
}
if (_node->isa_Phi()) {
return _node->ideal_reg();
}
return _node->bottom_type()->ideal_reg();
}
virtual const class Type *bottom_type() const { return _type; }
virtual uint ideal_reg() const { return _type->ideal_reg(); }
virtual uint oper_input_base() const { return 1; }
uint implementation( CodeBuffer *cbuf, PhaseRegAlloc *ra_, bool do_size, outputStream* st ) const;

@@ -2645,7 +2645,6 @@ MachOper* Matcher::specialize_vector_operand(MachNode* m, uint opnd_idx) {
}
}
}

assert(def->bottom_type()->isa_vect(), "not a vector");
uint ideal_vreg = def->bottom_type()->ideal_reg();
return Matcher::pd_specialize_generic_vector_operand(m->_opnds[opnd_idx], ideal_vreg, false /*is_temp*/);
@@ -510,7 +510,6 @@ class Matcher : public PhaseTransform {
void specialize_generic_vector_operands();
void specialize_mach_node(MachNode* m);
void specialize_temp_node(MachTempNode* tmp, MachNode* use, uint idx);

MachOper* specialize_vector_operand(MachNode* m, uint opnd_idx);

static MachOper* pd_specialize_generic_vector_operand(MachOper* generic_opnd, uint ideal_reg, bool is_temp);
ProTip! Use n and p to navigate between commits in a pull request.