< prev index next >
src/hotspot/cpu/ppc/ppc.ad
Print this page
*** 1,8 ****
//
! // Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
! // Copyright (c) 2012, 2018 SAP SE. All rights reserved.
// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
//
// This code is free software; you can redistribute it and/or modify it
// under the terms of the GNU General Public License version 2 only, as
// published by the Free Software Foundation.
--- 1,8 ----
//
! // Copyright (c) 2011, 2019, Oracle and/or its affiliates. All rights reserved.
! // Copyright (c) 2012, 2019 SAP SE. All rights reserved.
// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
//
// This code is free software; you can redistribute it and/or modify it
// under the terms of the GNU General Public License version 2 only, as
// published by the Free Software Foundation.
*** 4629,4638 ****
--- 4629,4648 ----
op_cost(40);
format %{ %}
interface(CONST_INTER);
%}
+ // Double Immediate: +0.0d.
+ operand immD_0() %{
+ predicate(jint_cast(n->getd()) == 0);
+ match(ConD);
+
+ op_cost(0);
+ format %{ %}
+ interface(CONST_INTER);
+ %}
+
// Integer Register Operands
// Integer Destination Register
// See definition of reg_class bits32_reg_rw.
operand iRegIdst() %{
constraint(ALLOC_IN_RC(bits32_reg_rw));
*** 14007,14017 ****
%}
instruct repl4S_immI0(iRegLdst dst, immI_0 zero) %{
match(Set dst (ReplicateS zero));
predicate(n->as_Vector()->length() == 4);
! format %{ "LI $dst, #0 \t// replicate4C" %}
size(4);
ins_encode %{
// TODO: PPC port $archOpcode(ppc64Opcode_addi);
__ li($dst$$Register, (int)((short)($zero$$constant & 0xFFFF)));
%}
--- 14017,14027 ----
%}
instruct repl4S_immI0(iRegLdst dst, immI_0 zero) %{
match(Set dst (ReplicateS zero));
predicate(n->as_Vector()->length() == 4);
! format %{ "LI $dst, #0 \t// replicate4S" %}
size(4);
ins_encode %{
// TODO: PPC port $archOpcode(ppc64Opcode_addi);
__ li($dst$$Register, (int)((short)($zero$$constant & 0xFFFF)));
%}
*** 14019,14029 ****
%}
instruct repl4S_immIminus1(iRegLdst dst, immI_minus1 src) %{
match(Set dst (ReplicateS src));
predicate(n->as_Vector()->length() == 4);
! format %{ "LI $dst, -1 \t// replicate4C" %}
size(4);
ins_encode %{
// TODO: PPC port $archOpcode(ppc64Opcode_addi);
__ li($dst$$Register, (int)((short)($src$$constant & 0xFFFF)));
%}
--- 14029,14039 ----
%}
instruct repl4S_immIminus1(iRegLdst dst, immI_minus1 src) %{
match(Set dst (ReplicateS src));
predicate(n->as_Vector()->length() == 4);
! format %{ "LI $dst, -1 \t// replicate4S" %}
size(4);
ins_encode %{
// TODO: PPC port $archOpcode(ppc64Opcode_addi);
__ li($dst$$Register, (int)((short)($src$$constant & 0xFFFF)));
%}
*** 14060,14070 ****
instruct repl8S_immIminus1(vecX dst, immI_minus1 src) %{
match(Set dst (ReplicateS src));
predicate(n->as_Vector()->length() == 8);
! format %{ "XXLEQV $dst, $src \t// replicate16B" %}
size(4);
ins_encode %{
__ xxleqv($dst$$VectorSRegister, $dst$$VectorSRegister, $dst$$VectorSRegister);
%}
ins_pipe(pipe_class_default);
--- 14070,14080 ----
instruct repl8S_immIminus1(vecX dst, immI_minus1 src) %{
match(Set dst (ReplicateS src));
predicate(n->as_Vector()->length() == 8);
! format %{ "XXLEQV $dst, $src \t// replicate8S" %}
size(4);
ins_encode %{
__ xxleqv($dst$$VectorSRegister, $dst$$VectorSRegister, $dst$$VectorSRegister);
%}
ins_pipe(pipe_class_default);
*** 14081,14091 ****
%}
instruct repl2I_immI0(iRegLdst dst, immI_0 zero) %{
match(Set dst (ReplicateI zero));
predicate(n->as_Vector()->length() == 2);
! format %{ "LI $dst, #0 \t// replicate4C" %}
size(4);
ins_encode %{
// TODO: PPC port $archOpcode(ppc64Opcode_addi);
__ li($dst$$Register, (int)((short)($zero$$constant & 0xFFFF)));
%}
--- 14091,14101 ----
%}
instruct repl2I_immI0(iRegLdst dst, immI_0 zero) %{
match(Set dst (ReplicateI zero));
predicate(n->as_Vector()->length() == 2);
! format %{ "LI $dst, #0 \t// replicate2I" %}
size(4);
ins_encode %{
// TODO: PPC port $archOpcode(ppc64Opcode_addi);
__ li($dst$$Register, (int)((short)($zero$$constant & 0xFFFF)));
%}
*** 14093,14103 ****
%}
instruct repl2I_immIminus1(iRegLdst dst, immI_minus1 src) %{
match(Set dst (ReplicateI src));
predicate(n->as_Vector()->length() == 2);
! format %{ "LI $dst, -1 \t// replicate4C" %}
size(4);
ins_encode %{
// TODO: PPC port $archOpcode(ppc64Opcode_addi);
__ li($dst$$Register, (int)((short)($src$$constant & 0xFFFF)));
%}
--- 14103,14113 ----
%}
instruct repl2I_immIminus1(iRegLdst dst, immI_minus1 src) %{
match(Set dst (ReplicateI src));
predicate(n->as_Vector()->length() == 2);
! format %{ "LI $dst, -1 \t// replicate2I" %}
size(4);
ins_encode %{
// TODO: PPC port $archOpcode(ppc64Opcode_addi);
__ li($dst$$Register, (int)((short)($src$$constant & 0xFFFF)));
%}
*** 14667,14677 ****
__ xxpermdi($dst$$VectorSRegister, $src$$FloatRegister->to_vsr(), $src$$FloatRegister->to_vsr(), 0);
%}
ins_pipe(pipe_class_default);
%}
! instruct repl2D_immI0(vecX dst, immI_0 zero) %{
match(Set dst (ReplicateD zero));
predicate(n->as_Vector()->length() == 2);
format %{ "XXLXOR $dst, $zero \t// replicate2D" %}
size(4);
--- 14677,14687 ----
__ xxpermdi($dst$$VectorSRegister, $src$$FloatRegister->to_vsr(), $src$$FloatRegister->to_vsr(), 0);
%}
ins_pipe(pipe_class_default);
%}
! instruct repl2D_immD0(vecX dst, immD_0 zero) %{
match(Set dst (ReplicateD zero));
predicate(n->as_Vector()->length() == 2);
format %{ "XXLXOR $dst, $zero \t// replicate2D" %}
size(4);
*** 14679,14700 ****
__ xxlxor($dst$$VectorSRegister, $dst$$VectorSRegister, $dst$$VectorSRegister);
%}
ins_pipe(pipe_class_default);
%}
- instruct repl2D_immIminus1(vecX dst, immI_minus1 src) %{
- match(Set dst (ReplicateD src));
- predicate(n->as_Vector()->length() == 2);
-
- format %{ "XXLEQV $dst, $src \t// replicate16B" %}
- size(4);
- ins_encode %{
- __ xxleqv($dst$$VectorSRegister, $dst$$VectorSRegister, $dst$$VectorSRegister);
- %}
- ins_pipe(pipe_class_default);
- %}
-
instruct mtvsrd(vecX dst, iRegLsrc src) %{
predicate(false);
effect(DEF dst, USE src);
format %{ "MTVSRD $dst, $src \t// Move to 16-byte register" %}
--- 14689,14698 ----
*** 14752,14762 ****
instruct repl2L_immIminus1(vecX dst, immI_minus1 src) %{
match(Set dst (ReplicateL src));
predicate(n->as_Vector()->length() == 2);
! format %{ "XXLEQV $dst, $src \t// replicate16B" %}
size(4);
ins_encode %{
__ xxleqv($dst$$VectorSRegister, $dst$$VectorSRegister, $dst$$VectorSRegister);
%}
ins_pipe(pipe_class_default);
--- 14750,14760 ----
instruct repl2L_immIminus1(vecX dst, immI_minus1 src) %{
match(Set dst (ReplicateL src));
predicate(n->as_Vector()->length() == 2);
! format %{ "XXLEQV $dst, $src \t// replicate2L" %}
size(4);
ins_encode %{
__ xxleqv($dst$$VectorSRegister, $dst$$VectorSRegister, $dst$$VectorSRegister);
%}
ins_pipe(pipe_class_default);
< prev index next >