Skip to content
This repository was archived by the owner on Aug 27, 2022. It is now read-only.
/ lanai Public archive

Commit 51e14f2

Browse files
committedJan 14, 2021
Merge
2 parents c7e2174 + 5926d75 commit 51e14f2

Some content is hidden

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

48 files changed

+868
-227
lines changed
 

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

+8-10
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
//
22
// Copyright (c) 2003, 2021, Oracle and/or its affiliates. All rights reserved.
3-
// Copyright (c) 2014, 2020, Red Hat, Inc. All rights reserved.
3+
// Copyright (c) 2014, 2021, Red Hat, Inc. All rights reserved.
44
// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
55
//
66
// This code is free software; you can redistribute it and/or modify it
@@ -1916,7 +1916,7 @@ void MachPrologNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const {
19161916
__ bind(L_skip_barrier);
19171917
}
19181918

1919-
if (UseSVE > 0 && C->max_vector_size() >= 16) {
1919+
if (C->max_vector_size() >= 16) {
19201920
__ reinitialize_ptrue();
19211921
}
19221922

@@ -3798,11 +3798,9 @@ encode %{
37983798
}
37993799
}
38003800

3801-
if (UseSVE > 0 && Compile::current()->max_vector_size() >= 16) {
3802-
// Only non uncommon_trap calls need to reinitialize ptrue.
3803-
if (uncommon_trap_request() == 0) {
3804-
__ reinitialize_ptrue();
3805-
}
3801+
// Only non uncommon_trap calls need to reinitialize ptrue.
3802+
if (Compile::current()->max_vector_size() >= 16 && uncommon_trap_request() == 0) {
3803+
__ reinitialize_ptrue();
38063804
}
38073805
%}
38083806

@@ -3813,7 +3811,7 @@ encode %{
38133811
if (call == NULL) {
38143812
ciEnv::current()->record_failure("CodeCache is full");
38153813
return;
3816-
} else if (UseSVE > 0 && Compile::current()->max_vector_size() >= 16) {
3814+
} else if (Compile::current()->max_vector_size() >= 16) {
38173815
__ reinitialize_ptrue();
38183816
}
38193817
%}
@@ -3851,7 +3849,7 @@ encode %{
38513849
__ bind(retaddr);
38523850
__ add(sp, sp, 2 * wordSize);
38533851
}
3854-
if (UseSVE > 0 && Compile::current()->max_vector_size() >= 16) {
3852+
if (Compile::current()->max_vector_size() >= 16) {
38553853
__ reinitialize_ptrue();
38563854
}
38573855
%}
@@ -3864,7 +3862,7 @@ encode %{
38643862
enc_class aarch64_enc_ret() %{
38653863
C2_MacroAssembler _masm(&cbuf);
38663864
#ifdef ASSERT
3867-
if (UseSVE > 0 && Compile::current()->max_vector_size() >= 16) {
3865+
if (Compile::current()->max_vector_size() >= 16) {
38683866
__ verify_ptrue();
38693867
}
38703868
#endif

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

+12-11
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
// Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
2-
// Copyright (c) 2020, Arm Limited. All rights reserved.
1+
// Copyright (c) 2020, 2021, Oracle and/or its affiliates. All rights reserved.
2+
// Copyright (c) 2020, 2021, Arm Limited. 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
@@ -84,9 +84,11 @@ instruct reinterpretD2X(vecX dst, vecD src)
8484
n->in(1)->bottom_type()->is_vect()->length_in_bytes() == 8);
8585
match(Set dst (VectorReinterpret src));
8686
ins_cost(INSN_COST);
87-
format %{ " # reinterpret $dst,$src" %}
87+
format %{ " # reinterpret $dst,$src\t# D2X" %}
8888
ins_encode %{
89-
// If register is the same, then move is not needed.
89+
// If registers are the same, no register move is required - the
90+
// upper 64 bits of 'src' are expected to have been initialized
91+
// to zero.
9092
if (as_FloatRegister($dst$$reg) != as_FloatRegister($src$$reg)) {
9193
__ orr(as_FloatRegister($dst$$reg), __ T8B,
9294
as_FloatRegister($src$$reg),
@@ -102,14 +104,13 @@ instruct reinterpretX2D(vecD dst, vecX src)
102104
n->in(1)->bottom_type()->is_vect()->length_in_bytes() == 16);
103105
match(Set dst (VectorReinterpret src));
104106
ins_cost(INSN_COST);
105-
format %{ " # reinterpret $dst,$src" %}
107+
format %{ " # reinterpret $dst,$src\t# X2D" %}
106108
ins_encode %{
107-
// If register is the same, then move is not needed.
108-
if (as_FloatRegister($dst$$reg) != as_FloatRegister($src$$reg)) {
109-
__ orr(as_FloatRegister($dst$$reg), __ T8B,
110-
as_FloatRegister($src$$reg),
111-
as_FloatRegister($src$$reg));
112-
}
109+
// Resize the vector from 128-bits to 64-bits. The higher 64-bits of
110+
// the "dst" register must be cleared to zero.
111+
__ orr(as_FloatRegister($dst$$reg), __ T8B,
112+
as_FloatRegister($src$$reg),
113+
as_FloatRegister($src$$reg));
113114
%}
114115
ins_pipe(vlogical64);
115116
%}

0 commit comments

Comments
 (0)