author | neliasso |
Tue, 27 Jun 2017 15:50:09 +0200 | |
changeset 46597 | d669fb842ae3 |
parent 46596 | a7c9706d25a9 |
permissions | -rw-r--r-- |
1 | 1 |
/* |
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
2 |
* Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved. |
1 | 3 |
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 |
* |
|
5 |
* This code is free software; you can redistribute it and/or modify it |
|
6 |
* under the terms of the GNU General Public License version 2 only, as |
|
7 |
* published by the Free Software Foundation. |
|
8 |
* |
|
9 |
* This code is distributed in the hope that it will be useful, but WITHOUT |
|
10 |
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
11 |
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
12 |
* version 2 for more details (a copy is included in the LICENSE file that |
|
13 |
* accompanied this code). |
|
14 |
* |
|
15 |
* You should have received a copy of the GNU General Public License version |
|
16 |
* 2 along with this work; if not, write to the Free Software Foundation, |
|
17 |
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
|
18 |
* |
|
5547
f4b087cbb361
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
5542
diff
changeset
|
19 |
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
f4b087cbb361
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
5542
diff
changeset
|
20 |
* or visit www.oracle.com if you need additional information or have any |
f4b087cbb361
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
5542
diff
changeset
|
21 |
* questions. |
1 | 22 |
* |
23 |
*/ |
|
24 |
||
7397 | 25 |
#ifndef CPU_SPARC_VM_ASSEMBLER_SPARC_INLINE_HPP |
26 |
#define CPU_SPARC_VM_ASSEMBLER_SPARC_INLINE_HPP |
|
27 |
||
14631
526804361522
8003250: SPARC: move MacroAssembler into separate file
twisti
parents:
13886
diff
changeset
|
28 |
#include "asm/assembler.hpp" |
1 | 29 |
|
30 |
||
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
31 |
inline void Assembler::avoid_pipeline_stall() { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
32 |
#ifdef VALIDATE_PIPELINE |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
33 |
if (_hazard_state == PcHazard) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
34 |
assert(is_cbcond_before() || is_rdpc_before(), "PC-hazard not preceeded by CBCOND or RDPC."); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
35 |
assert_no_delay("Must not have PC-hazard state in delay-slot."); |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
36 |
nop(); |
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
37 |
_hazard_state = NoHazard; |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
38 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
39 |
#endif |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
40 |
|
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
41 |
bool post_cond = is_cbcond_before(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
42 |
bool post_rdpc = is_rdpc_before(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
43 |
|
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
44 |
if (post_cond || post_rdpc) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
45 |
nop(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
46 |
#ifdef VALIDATE_PIPELINE |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
47 |
if (_hazard_state != PcHazard) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
48 |
assert(post_cond, "CBCOND before when no hazard @0x%p\n", pc()); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
49 |
assert(post_rdpc, "RDPC before when no hazard @0x%p\n", pc()); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
50 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
51 |
#endif |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
52 |
} |
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
53 |
} |
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
54 |
|
1 | 55 |
inline void Assembler::check_delay() { |
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
56 |
#ifdef VALIDATE_PIPELINE |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
57 |
guarantee(_delay_state != AtDelay, "Use delayed() when filling delay-slot"); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
58 |
_delay_state = NoDelay; |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
59 |
#endif |
1 | 60 |
} |
61 |
||
15116
af423dcb739c
8004537: replace AbstractAssembler emit_long with emit_int32
twisti
parents:
14631
diff
changeset
|
62 |
inline void Assembler::emit_int32(int x) { |
1 | 63 |
check_delay(); |
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
64 |
#ifdef VALIDATE_PIPELINE |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
65 |
_hazard_state = NoHazard; |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
66 |
#endif |
15116
af423dcb739c
8004537: replace AbstractAssembler emit_long with emit_int32
twisti
parents:
14631
diff
changeset
|
67 |
AbstractAssembler::emit_int32(x); |
1 | 68 |
} |
69 |
||
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
70 |
inline void Assembler::emit_data(int x) { |
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
71 |
emit_int32(x); |
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
72 |
} |
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
73 |
|
1 | 74 |
inline void Assembler::emit_data(int x, relocInfo::relocType rtype) { |
75 |
relocate(rtype); |
|
15116
af423dcb739c
8004537: replace AbstractAssembler emit_long with emit_int32
twisti
parents:
14631
diff
changeset
|
76 |
emit_int32(x); |
1 | 77 |
} |
78 |
||
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
79 |
inline void Assembler::emit_data(int x, RelocationHolder const &rspec) { |
1 | 80 |
relocate(rspec); |
15116
af423dcb739c
8004537: replace AbstractAssembler emit_long with emit_int32
twisti
parents:
14631
diff
changeset
|
81 |
emit_int32(x); |
1 | 82 |
} |
83 |
||
84 |
||
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
85 |
inline void Assembler::add(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
86 |
emit_int32(op(arith_op) | rd(d) | op3(add_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
87 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
88 |
inline void Assembler::add(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
89 |
emit_int32(op(arith_op) | rd(d) | op3(add_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
90 |
} |
1 | 91 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
92 |
inline void Assembler::addcc(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
93 |
emit_int32(op(arith_op) | rd(d) | op3(add_op3 | cc_bit_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
94 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
95 |
inline void Assembler::addcc(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
96 |
emit_int32(op(arith_op) | rd(d) | op3(add_op3 | cc_bit_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
97 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
98 |
inline void Assembler::addc(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
99 |
emit_int32(op(arith_op) | rd(d) | op3(addc_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
100 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
101 |
inline void Assembler::addc(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
102 |
emit_int32(op(arith_op) | rd(d) | op3(addc_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
103 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
104 |
inline void Assembler::addccc(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
105 |
emit_int32(op(arith_op) | rd(d) | op3(addc_op3 | cc_bit_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
106 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
107 |
inline void Assembler::addccc(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
108 |
emit_int32(op(arith_op) | rd(d) | op3(addc_op3 | cc_bit_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
109 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
110 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
111 |
inline void Assembler::aes_eround01(FloatRegister s1, FloatRegister s2, FloatRegister s3, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
112 |
aes_only(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
113 |
emit_int32(op(arith_op) | fd(d, FloatRegisterImpl::D) | op3(aes4_op3) | fs1(s1, FloatRegisterImpl::D) | fs3(s3, FloatRegisterImpl::D) | op5(aes_eround01_op5) | fs2(s2, FloatRegisterImpl::D)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
114 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
115 |
inline void Assembler::aes_eround23(FloatRegister s1, FloatRegister s2, FloatRegister s3, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
116 |
aes_only(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
117 |
emit_int32(op(arith_op) | fd(d, FloatRegisterImpl::D) | op3(aes4_op3) | fs1(s1, FloatRegisterImpl::D) | fs3(s3, FloatRegisterImpl::D) | op5(aes_eround23_op5) | fs2(s2, FloatRegisterImpl::D)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
118 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
119 |
inline void Assembler::aes_dround01(FloatRegister s1, FloatRegister s2, FloatRegister s3, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
120 |
aes_only(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
121 |
emit_int32(op(arith_op) | fd(d, FloatRegisterImpl::D) | op3(aes4_op3) | fs1(s1, FloatRegisterImpl::D) | fs3(s3, FloatRegisterImpl::D) | op5(aes_dround01_op5) | fs2(s2, FloatRegisterImpl::D)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
122 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
123 |
inline void Assembler::aes_dround23(FloatRegister s1, FloatRegister s2, FloatRegister s3, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
124 |
aes_only(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
125 |
emit_int32(op(arith_op) | fd(d, FloatRegisterImpl::D) | op3(aes4_op3) | fs1(s1, FloatRegisterImpl::D) | fs3(s3, FloatRegisterImpl::D) | op5(aes_dround23_op5) | fs2(s2, FloatRegisterImpl::D)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
126 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
127 |
inline void Assembler::aes_eround01_l(FloatRegister s1, FloatRegister s2, FloatRegister s3, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
128 |
aes_only(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
129 |
emit_int32(op(arith_op) | fd(d, FloatRegisterImpl::D) | op3(aes4_op3) | fs1(s1, FloatRegisterImpl::D) | fs3(s3, FloatRegisterImpl::D) | op5(aes_eround01_l_op5) | fs2(s2, FloatRegisterImpl::D)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
130 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
131 |
inline void Assembler::aes_eround23_l(FloatRegister s1, FloatRegister s2, FloatRegister s3, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
132 |
aes_only(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
133 |
emit_int32(op(arith_op) | fd(d, FloatRegisterImpl::D) | op3(aes4_op3) | fs1(s1, FloatRegisterImpl::D) | fs3(s3, FloatRegisterImpl::D) | op5(aes_eround23_l_op5) | fs2(s2, FloatRegisterImpl::D)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
134 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
135 |
inline void Assembler::aes_dround01_l(FloatRegister s1, FloatRegister s2, FloatRegister s3, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
136 |
aes_only(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
137 |
emit_int32(op(arith_op) | fd(d, FloatRegisterImpl::D) | op3(aes4_op3) | fs1(s1, FloatRegisterImpl::D) | fs3(s3, FloatRegisterImpl::D) | op5(aes_dround01_l_op5) | fs2(s2, FloatRegisterImpl::D)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
138 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
139 |
inline void Assembler::aes_dround23_l(FloatRegister s1, FloatRegister s2, FloatRegister s3, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
140 |
aes_only(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
141 |
emit_int32(op(arith_op) | fd(d, FloatRegisterImpl::D) | op3(aes4_op3) | fs1(s1, FloatRegisterImpl::D) | fs3(s3, FloatRegisterImpl::D) | op5(aes_dround23_l_op5) | fs2(s2, FloatRegisterImpl::D)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
142 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
143 |
inline void Assembler::aes_kexpand1(FloatRegister s1, FloatRegister s2, int imm5a, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
144 |
aes_only(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
145 |
emit_int32(op(arith_op) | fd(d, FloatRegisterImpl::D) | op3(aes4_op3) | fs1(s1, FloatRegisterImpl::D) | u_field(imm5a, 13, 9) | op5(aes_kexpand1_op5) | fs2(s2, FloatRegisterImpl::D)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
146 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
147 |
|
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
148 |
// 3-operand AES instructions |
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
149 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
150 |
inline void Assembler::aes_kexpand0(FloatRegister s1, FloatRegister s2, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
151 |
aes_only(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
152 |
emit_int32(op(arith_op) | fd(d, FloatRegisterImpl::D) | op3(aes3_op3) | fs1(s1, FloatRegisterImpl::D) | opf(aes_kexpand0_opf) | fs2(s2, FloatRegisterImpl::D)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
153 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
154 |
inline void Assembler::aes_kexpand2(FloatRegister s1, FloatRegister s2, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
155 |
aes_only(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
156 |
emit_int32(op(arith_op) | fd(d, FloatRegisterImpl::D) | op3(aes3_op3) | fs1(s1, FloatRegisterImpl::D) | opf(aes_kexpand2_opf) | fs2(s2, FloatRegisterImpl::D)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
157 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
158 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
159 |
inline void Assembler::bpr(RCondition c, bool a, Predict p, Register s1, address d, relocInfo::relocType rt) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
160 |
avoid_pipeline_stall(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
161 |
cti(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
162 |
emit_data(op(branch_op) | annul(a) | cond(c) | op2(bpr_op2) | wdisp16(intptr_t(d), intptr_t(pc())) | predict(p) | rs1(s1), rt); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
163 |
induce_delay_slot(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
164 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
165 |
inline void Assembler::bpr(RCondition c, bool a, Predict p, Register s1, Label &L) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
166 |
// Note[+]: All assembly emit routines using the 'target()' branch back-patch |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
167 |
// resolver must call 'avoid_pipeline_stall()' prior to calling 'target()' |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
168 |
// (we must do so even though the call will be made, as here, in the above |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
169 |
// implementation of 'bpr()', invoked below). The reason is the assumption |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
170 |
// made in 'target()', where using the current PC as the address for back- |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
171 |
// patching prevents any additional code to be emitted _after_ the address |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
172 |
// has been set (implicitly) in order to refer to the correct instruction. |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
173 |
avoid_pipeline_stall(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
174 |
bpr(c, a, p, s1, target(L)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
175 |
} |
1 | 176 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
177 |
inline void Assembler::fb(Condition c, bool a, address d, relocInfo::relocType rt) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
178 |
v9_dep(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
179 |
avoid_pipeline_stall(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
180 |
cti(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
181 |
emit_data(op(branch_op) | annul(a) | cond(c) | op2(fb_op2) | wdisp(intptr_t(d), intptr_t(pc()), 22), rt); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
182 |
induce_delay_slot(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
183 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
184 |
inline void Assembler::fb(Condition c, bool a, Label &L) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
185 |
avoid_pipeline_stall(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
186 |
fb(c, a, target(L)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
187 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
188 |
|
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
189 |
inline void Assembler::fbp(Condition c, bool a, CC cc, Predict p, address d, relocInfo::relocType rt) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
190 |
avoid_pipeline_stall(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
191 |
cti(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
192 |
emit_data(op(branch_op) | annul(a) | cond(c) | op2(fbp_op2) | branchcc(cc) | predict(p) | wdisp(intptr_t(d), intptr_t(pc()), 19), rt); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
193 |
induce_delay_slot(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
194 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
195 |
inline void Assembler::fbp(Condition c, bool a, CC cc, Predict p, Label &L) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
196 |
avoid_pipeline_stall(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
197 |
fbp(c, a, cc, p, target(L)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
198 |
} |
1 | 199 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
200 |
inline void Assembler::br(Condition c, bool a, address d, relocInfo::relocType rt) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
201 |
v9_dep(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
202 |
avoid_pipeline_stall(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
203 |
cti(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
204 |
emit_data(op(branch_op) | annul(a) | cond(c) | op2(br_op2) | wdisp(intptr_t(d), intptr_t(pc()), 22), rt); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
205 |
induce_delay_slot(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
206 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
207 |
inline void Assembler::br(Condition c, bool a, Label &L) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
208 |
avoid_pipeline_stall(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
209 |
br(c, a, target(L)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
210 |
} |
1 | 211 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
212 |
inline void Assembler::bp(Condition c, bool a, CC cc, Predict p, address d, relocInfo::relocType rt) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
213 |
avoid_pipeline_stall(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
214 |
cti(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
215 |
emit_data(op(branch_op) | annul(a) | cond(c) | op2(bp_op2) | branchcc(cc) | predict(p) | wdisp(intptr_t(d), intptr_t(pc()), 19), rt); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
216 |
induce_delay_slot(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
217 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
218 |
inline void Assembler::bp(Condition c, bool a, CC cc, Predict p, Label &L) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
219 |
avoid_pipeline_stall(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
220 |
bp(c, a, cc, p, target(L)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
221 |
} |
1 | 222 |
|
10252 | 223 |
// compare and branch |
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
224 |
inline void Assembler::cbcond(Condition c, CC cc, Register s1, Register s2, Label &L) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
225 |
avoid_pipeline_stall(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
226 |
cti(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
227 |
emit_data(op(branch_op) | cond_cbcond(c) | op2(bpr_op2) | branchcc(cc) | wdisp10(intptr_t(target(L)), intptr_t(pc())) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
228 |
induce_pc_hazard(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
229 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
230 |
inline void Assembler::cbcond(Condition c, CC cc, Register s1, int simm5, Label &L) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
231 |
avoid_pipeline_stall(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
232 |
cti(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
233 |
emit_data(op(branch_op) | cond_cbcond(c) | op2(bpr_op2) | branchcc(cc) | wdisp10(intptr_t(target(L)), intptr_t(pc())) | rs1(s1) | immed(true) | simm(simm5, 5)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
234 |
induce_pc_hazard(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
235 |
} |
35086
bbf32241d851
8072008: Emit direct call instead of linkTo* for recursive indy/MH.invoke* calls
vlivanov
parents:
24008
diff
changeset
|
236 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
237 |
inline void Assembler::call(address d, relocInfo::relocType rt) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
238 |
avoid_pipeline_stall(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
239 |
cti(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
240 |
emit_data(op(call_op) | wdisp(intptr_t(d), intptr_t(pc()), 30), rt); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
241 |
induce_delay_slot(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
242 |
assert(rt != relocInfo::virtual_call_type, "must use virtual_call_Relocation::spec"); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
243 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
244 |
inline void Assembler::call(Label &L, relocInfo::relocType rt) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
245 |
avoid_pipeline_stall(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
246 |
call(target(L), rt); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
247 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
248 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
249 |
inline void Assembler::call(address d, RelocationHolder const &rspec) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
250 |
avoid_pipeline_stall(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
251 |
cti(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
252 |
emit_data(op(call_op) | wdisp(intptr_t(d), intptr_t(pc()), 30), rspec); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
253 |
induce_delay_slot(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
254 |
assert(rspec.type() != relocInfo::virtual_call_type, "must use virtual_call_Relocation::spec"); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
255 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
256 |
|
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
257 |
inline void Assembler::casa(Register s1, Register s2, Register d, int ia) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
258 |
emit_int32(op(ldst_op) | rd(d) | op3(casa_op3) | rs1(s1) | (ia == -1 ? immed(true) : imm_asi(ia)) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
259 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
260 |
inline void Assembler::casxa(Register s1, Register s2, Register d, int ia) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
261 |
emit_int32(op(ldst_op) | rd(d) | op3(casxa_op3) | rs1(s1) | (ia == -1 ? immed(true) : imm_asi(ia)) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
262 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
263 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
264 |
inline void Assembler::udiv(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
265 |
emit_int32(op(arith_op) | rd(d) | op3(udiv_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
266 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
267 |
inline void Assembler::udiv(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
268 |
emit_int32(op(arith_op) | rd(d) | op3(udiv_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
269 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
270 |
inline void Assembler::sdiv(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
271 |
emit_int32(op(arith_op) | rd(d) | op3(sdiv_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
272 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
273 |
inline void Assembler::sdiv(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
274 |
emit_int32(op(arith_op) | rd(d) | op3(sdiv_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
275 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
276 |
inline void Assembler::udivcc(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
277 |
emit_int32(op(arith_op) | rd(d) | op3(udiv_op3 | cc_bit_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
278 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
279 |
inline void Assembler::udivcc(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
280 |
emit_int32(op(arith_op) | rd(d) | op3(udiv_op3 | cc_bit_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
281 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
282 |
inline void Assembler::sdivcc(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
283 |
emit_int32(op(arith_op) | rd(d) | op3(sdiv_op3 | cc_bit_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
284 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
285 |
inline void Assembler::sdivcc(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
286 |
emit_int32(op(arith_op) | rd(d) | op3(sdiv_op3 | cc_bit_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
287 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
288 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
289 |
inline void Assembler::done() { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
290 |
cti(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
291 |
emit_int32(op(arith_op) | fcn(0) | op3(done_op3)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
292 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
293 |
inline void Assembler::retry() { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
294 |
cti(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
295 |
emit_int32(op(arith_op) | fcn(1) | op3(retry_op3)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
296 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
297 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
298 |
inline void Assembler::fadd(FloatRegisterImpl::Width w, FloatRegister s1, FloatRegister s2, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
299 |
emit_int32(op(arith_op) | fd(d, w) | op3(fpop1_op3) | fs1(s1, w) | opf(0x40 + w) | fs2(s2, w)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
300 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
301 |
inline void Assembler::fsub(FloatRegisterImpl::Width w, FloatRegister s1, FloatRegister s2, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
302 |
emit_int32(op(arith_op) | fd(d, w) | op3(fpop1_op3) | fs1(s1, w) | opf(0x44 + w) | fs2(s2, w)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
303 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
304 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
305 |
inline void Assembler::fcmp(FloatRegisterImpl::Width w, CC cc, FloatRegister s1, FloatRegister s2) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
306 |
emit_int32(op(arith_op) | cmpcc(cc) | op3(fpop2_op3) | fs1(s1, w) | opf(0x50 + w) | fs2(s2, w)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
307 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
308 |
inline void Assembler::fcmpe(FloatRegisterImpl::Width w, CC cc, FloatRegister s1, FloatRegister s2) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
309 |
emit_int32(op(arith_op) | cmpcc(cc) | op3(fpop2_op3) | fs1(s1, w) | opf(0x54 + w) | fs2(s2, w)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
310 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
311 |
|
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
312 |
inline void Assembler::ftox(FloatRegisterImpl::Width w, FloatRegister s, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
313 |
emit_int32(op(arith_op) | fd(d, FloatRegisterImpl::D) | op3(fpop1_op3) | opf(0x80 + w) | fs2(s, w)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
314 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
315 |
inline void Assembler::ftoi(FloatRegisterImpl::Width w, FloatRegister s, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
316 |
emit_int32(op(arith_op) | fd(d, FloatRegisterImpl::S) | op3(fpop1_op3) | opf(0xd0 + w) | fs2(s, w)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
317 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
318 |
|
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
319 |
inline void Assembler::ftof(FloatRegisterImpl::Width sw, FloatRegisterImpl::Width dw, FloatRegister s, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
320 |
emit_int32(op(arith_op) | fd(d, dw) | op3(fpop1_op3) | opf(0xc0 + sw + dw*4) | fs2(s, sw)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
321 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
322 |
|
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
323 |
inline void Assembler::fxtof(FloatRegisterImpl::Width w, FloatRegister s, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
324 |
emit_int32(op(arith_op) | fd(d, w) | op3(fpop1_op3) | opf(0x80 + w*4) | fs2(s, FloatRegisterImpl::D)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
325 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
326 |
inline void Assembler::fitof(FloatRegisterImpl::Width w, FloatRegister s, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
327 |
emit_int32(op(arith_op) | fd(d, w) | op3(fpop1_op3) | opf(0xc0 + w*4) | fs2(s, FloatRegisterImpl::S)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
328 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
329 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
330 |
inline void Assembler::fmov(FloatRegisterImpl::Width w, FloatRegister s, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
331 |
emit_int32(op(arith_op) | fd(d, w) | op3(fpop1_op3) | opf(0x00 + w) | fs2(s, w)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
332 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
333 |
inline void Assembler::fneg(FloatRegisterImpl::Width w, FloatRegister s, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
334 |
emit_int32(op(arith_op) | fd(d, w) | op3(fpop1_op3) | opf(0x04 + w) | fs2(s, w)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
335 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
336 |
inline void Assembler::fabs(FloatRegisterImpl::Width w, FloatRegister s, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
337 |
emit_int32(op(arith_op) | fd(d, w) | op3(fpop1_op3) | opf(0x08 + w) | fs2(s, w)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
338 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
339 |
inline void Assembler::fmul(FloatRegisterImpl::Width w, FloatRegister s1, FloatRegister s2, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
340 |
emit_int32(op(arith_op) | fd(d, w) | op3(fpop1_op3) | fs1(s1, w) | opf(0x48 + w) | fs2(s2, w)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
341 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
342 |
inline void Assembler::fmul(FloatRegisterImpl::Width sw, FloatRegisterImpl::Width dw, FloatRegister s1, FloatRegister s2, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
343 |
emit_int32(op(arith_op) | fd(d, dw) | op3(fpop1_op3) | fs1(s1, sw) | opf(0x60 + sw + dw*4) | fs2(s2, sw)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
344 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
345 |
inline void Assembler::fdiv(FloatRegisterImpl::Width w, FloatRegister s1, FloatRegister s2, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
346 |
emit_int32(op(arith_op) | fd(d, w) | op3(fpop1_op3) | fs1(s1, w) | opf(0x4c + w) | fs2(s2, w)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
347 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
348 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
349 |
inline void Assembler::fxor(FloatRegisterImpl::Width w, FloatRegister s1, FloatRegister s2, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
350 |
vis1_only(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
351 |
emit_int32(op(arith_op) | fd(d, w) | op3(flog3_op3) | fs1(s1, w) | opf(0x6E - w) | fs2(s2, w)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
352 |
} |
1 | 353 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
354 |
inline void Assembler::fsqrt(FloatRegisterImpl::Width w, FloatRegister s, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
355 |
emit_int32(op(arith_op) | fd(d, w) | op3(fpop1_op3) | opf(0x28 + w) | fs2(s, w)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
356 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
357 |
|
46597
d669fb842ae3
8164888: Intrinsify fused mac operations on SPARC
neliasso
parents:
46596
diff
changeset
|
358 |
inline void Assembler::fmadd(FloatRegisterImpl::Width w, FloatRegister s1, FloatRegister s2, FloatRegister s3, FloatRegister d) { |
d669fb842ae3
8164888: Intrinsify fused mac operations on SPARC
neliasso
parents:
46596
diff
changeset
|
359 |
fmaf_only(); |
d669fb842ae3
8164888: Intrinsify fused mac operations on SPARC
neliasso
parents:
46596
diff
changeset
|
360 |
emit_int32(op(arith_op) | fd(d, w) | op3(stpartialf_op3) | fs1(s1, w) | fs3(s3, w) | op5(w) | fs2(s2, w)); |
d669fb842ae3
8164888: Intrinsify fused mac operations on SPARC
neliasso
parents:
46596
diff
changeset
|
361 |
} |
d669fb842ae3
8164888: Intrinsify fused mac operations on SPARC
neliasso
parents:
46596
diff
changeset
|
362 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
363 |
inline void Assembler::flush(Register s1, Register s2) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
364 |
emit_int32(op(arith_op) | op3(flush_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
365 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
366 |
inline void Assembler::flush(Register s1, int simm13a) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
367 |
emit_data(op(arith_op) | op3(flush_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
368 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
369 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
370 |
inline void Assembler::flushw() { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
371 |
emit_int32(op(arith_op) | op3(flushw_op3)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
372 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
373 |
|
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
374 |
inline void Assembler::illtrap(int const22a) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
375 |
emit_int32(op(branch_op) | u_field(const22a, 21, 0)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
376 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
377 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
378 |
inline void Assembler::impdep1(int id1, int const19a) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
379 |
emit_int32(op(arith_op) | fcn(id1) | op3(impdep1_op3) | u_field(const19a, 18, 0)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
380 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
381 |
inline void Assembler::impdep2(int id1, int const19a) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
382 |
emit_int32(op(arith_op) | fcn(id1) | op3(impdep2_op3) | u_field(const19a, 18, 0)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
383 |
} |
1 | 384 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
385 |
inline void Assembler::jmpl(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
386 |
avoid_pipeline_stall(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
387 |
cti(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
388 |
emit_int32(op(arith_op) | rd(d) | op3(jmpl_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
389 |
induce_delay_slot(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
390 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
391 |
inline void Assembler::jmpl(Register s1, int simm13a, Register d, RelocationHolder const &rspec) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
392 |
avoid_pipeline_stall(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
393 |
cti(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
394 |
emit_data(op(arith_op) | rd(d) | op3(jmpl_op3) | rs1(s1) | immed(true) | simm(simm13a, 13), rspec); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
395 |
induce_delay_slot(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
396 |
} |
1 | 397 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
398 |
inline void Assembler::ldf(FloatRegisterImpl::Width w, Register s1, Register s2, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
399 |
emit_int32(op(ldst_op) | fd(d, w) | alt_op3(ldf_op3, w) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
400 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
401 |
inline void Assembler::ldf(FloatRegisterImpl::Width w, Register s1, int simm13a, FloatRegister d, RelocationHolder const &rspec) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
402 |
emit_data(op(ldst_op) | fd(d, w) | alt_op3(ldf_op3, w) | rs1(s1) | immed(true) | simm(simm13a, 13), rspec); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
403 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
404 |
|
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
405 |
inline void Assembler::ldxfsr(Register s1, Register s2) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
406 |
emit_int32(op(ldst_op) | rd(G1) | op3(ldfsr_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
407 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
408 |
inline void Assembler::ldxfsr(Register s1, int simm13a) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
409 |
emit_data(op(ldst_op) | rd(G1) | op3(ldfsr_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
410 |
} |
1 | 411 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
412 |
inline void Assembler::ldfa(FloatRegisterImpl::Width w, Register s1, Register s2, int ia, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
413 |
emit_int32(op(ldst_op) | fd(d, w) | alt_op3(ldf_op3 | alt_bit_op3, w) | rs1(s1) | imm_asi(ia) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
414 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
415 |
inline void Assembler::ldfa(FloatRegisterImpl::Width w, Register s1, int simm13a, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
416 |
emit_int32(op(ldst_op) | fd(d, w) | alt_op3(ldf_op3 | alt_bit_op3, w) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
417 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
418 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
419 |
inline void Assembler::ldsb(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
420 |
emit_int32(op(ldst_op) | rd(d) | op3(ldsb_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
421 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
422 |
inline void Assembler::ldsb(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
423 |
emit_data(op(ldst_op) | rd(d) | op3(ldsb_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
424 |
} |
1 | 425 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
426 |
inline void Assembler::ldsh(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
427 |
emit_int32(op(ldst_op) | rd(d) | op3(ldsh_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
428 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
429 |
inline void Assembler::ldsh(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
430 |
emit_data(op(ldst_op) | rd(d) | op3(ldsh_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
431 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
432 |
inline void Assembler::ldsw(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
433 |
emit_int32(op(ldst_op) | rd(d) | op3(ldsw_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
434 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
435 |
inline void Assembler::ldsw(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
436 |
emit_data(op(ldst_op) | rd(d) | op3(ldsw_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
437 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
438 |
inline void Assembler::ldub(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
439 |
emit_int32(op(ldst_op) | rd(d) | op3(ldub_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
440 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
441 |
inline void Assembler::ldub(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
442 |
emit_data(op(ldst_op) | rd(d) | op3(ldub_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
443 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
444 |
inline void Assembler::lduh(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
445 |
emit_int32(op(ldst_op) | rd(d) | op3(lduh_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
446 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
447 |
inline void Assembler::lduh(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
448 |
emit_data(op(ldst_op) | rd(d) | op3(lduh_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
449 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
450 |
inline void Assembler::lduw(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
451 |
emit_int32(op(ldst_op) | rd(d) | op3(lduw_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
452 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
453 |
inline void Assembler::lduw(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
454 |
emit_data(op(ldst_op) | rd(d) | op3(lduw_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
455 |
} |
1 | 456 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
457 |
inline void Assembler::ldx(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
458 |
emit_int32(op(ldst_op) | rd(d) | op3(ldx_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
459 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
460 |
inline void Assembler::ldx(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
461 |
emit_data(op(ldst_op) | rd(d) | op3(ldx_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
462 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
463 |
inline void Assembler::ldd(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
464 |
v9_dep(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
465 |
assert(d->is_even(), "not even"); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
466 |
emit_int32(op(ldst_op) | rd(d) | op3(ldd_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
467 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
468 |
inline void Assembler::ldd(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
469 |
v9_dep(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
470 |
assert(d->is_even(), "not even"); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
471 |
emit_data(op(ldst_op) | rd(d) | op3(ldd_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
472 |
} |
1 | 473 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
474 |
inline void Assembler::ldsba(Register s1, Register s2, int ia, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
475 |
emit_int32(op(ldst_op) | rd(d) | op3(ldsb_op3 | alt_bit_op3) | rs1(s1) | imm_asi(ia) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
476 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
477 |
inline void Assembler::ldsba(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
478 |
emit_int32(op(ldst_op) | rd(d) | op3(ldsb_op3 | alt_bit_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
479 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
480 |
inline void Assembler::ldsha(Register s1, Register s2, int ia, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
481 |
emit_int32(op(ldst_op) | rd(d) | op3(ldsh_op3 | alt_bit_op3) | rs1(s1) | imm_asi(ia) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
482 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
483 |
inline void Assembler::ldsha(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
484 |
emit_int32(op(ldst_op) | rd(d) | op3(ldsh_op3 | alt_bit_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
485 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
486 |
inline void Assembler::ldswa(Register s1, Register s2, int ia, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
487 |
emit_int32(op(ldst_op) | rd(d) | op3(ldsw_op3 | alt_bit_op3) | rs1(s1) | imm_asi(ia) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
488 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
489 |
inline void Assembler::ldswa(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
490 |
emit_int32(op(ldst_op) | rd(d) | op3(ldsw_op3 | alt_bit_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
491 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
492 |
inline void Assembler::lduba(Register s1, Register s2, int ia, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
493 |
emit_int32(op(ldst_op) | rd(d) | op3(ldub_op3 | alt_bit_op3) | rs1(s1) | imm_asi(ia) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
494 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
495 |
inline void Assembler::lduba(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
496 |
emit_int32(op(ldst_op) | rd(d) | op3(ldub_op3 | alt_bit_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
497 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
498 |
inline void Assembler::lduha(Register s1, Register s2, int ia, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
499 |
emit_int32(op(ldst_op) | rd(d) | op3(lduh_op3 | alt_bit_op3) | rs1(s1) | imm_asi(ia) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
500 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
501 |
inline void Assembler::lduha(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
502 |
emit_int32(op(ldst_op) | rd(d) | op3(lduh_op3 | alt_bit_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
503 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
504 |
inline void Assembler::lduwa(Register s1, Register s2, int ia, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
505 |
emit_int32(op(ldst_op) | rd(d) | op3(lduw_op3 | alt_bit_op3) | rs1(s1) | imm_asi(ia) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
506 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
507 |
inline void Assembler::lduwa(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
508 |
emit_int32(op(ldst_op) | rd(d) | op3(lduw_op3 | alt_bit_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
509 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
510 |
inline void Assembler::ldxa(Register s1, Register s2, int ia, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
511 |
emit_int32(op(ldst_op) | rd(d) | op3(ldx_op3 | alt_bit_op3) | rs1(s1) | imm_asi(ia) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
512 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
513 |
inline void Assembler::ldxa(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
514 |
emit_int32(op(ldst_op) | rd(d) | op3(ldx_op3 | alt_bit_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
515 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
516 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
517 |
inline void Assembler::and3(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
518 |
emit_int32(op(arith_op) | rd(d) | op3(and_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
519 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
520 |
inline void Assembler::and3(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
521 |
emit_int32(op(arith_op) | rd(d) | op3(and_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
522 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
523 |
inline void Assembler::andcc(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
524 |
emit_int32(op(arith_op) | rd(d) | op3(and_op3 | cc_bit_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
525 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
526 |
inline void Assembler::andcc(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
527 |
emit_int32(op(arith_op) | rd(d) | op3(and_op3 | cc_bit_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
528 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
529 |
inline void Assembler::andn(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
530 |
emit_int32(op(arith_op) | rd(d) | op3(andn_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
531 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
532 |
inline void Assembler::andn(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
533 |
emit_int32(op(arith_op) | rd(d) | op3(andn_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
534 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
535 |
inline void Assembler::andncc(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
536 |
emit_int32(op(arith_op) | rd(d) | op3(andn_op3 | cc_bit_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
537 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
538 |
inline void Assembler::andncc(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
539 |
emit_int32(op(arith_op) | rd(d) | op3(andn_op3 | cc_bit_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
540 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
541 |
inline void Assembler::or3(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
542 |
emit_int32(op(arith_op) | rd(d) | op3(or_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
543 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
544 |
inline void Assembler::or3(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
545 |
emit_int32(op(arith_op) | rd(d) | op3(or_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
546 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
547 |
inline void Assembler::orcc(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
548 |
emit_int32(op(arith_op) | rd(d) | op3(or_op3 | cc_bit_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
549 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
550 |
inline void Assembler::orcc(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
551 |
emit_int32(op(arith_op) | rd(d) | op3(or_op3 | cc_bit_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
552 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
553 |
inline void Assembler::orn(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
554 |
emit_int32(op(arith_op) | rd(d) | op3(orn_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
555 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
556 |
inline void Assembler::orn(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
557 |
emit_int32(op(arith_op) | rd(d) | op3(orn_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
558 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
559 |
inline void Assembler::orncc(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
560 |
emit_int32(op(arith_op) | rd(d) | op3(orn_op3 | cc_bit_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
561 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
562 |
inline void Assembler::orncc(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
563 |
emit_int32(op(arith_op) | rd(d) | op3(orn_op3 | cc_bit_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
564 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
565 |
inline void Assembler::xor3(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
566 |
emit_int32(op(arith_op) | rd(d) | op3(xor_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
567 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
568 |
inline void Assembler::xor3(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
569 |
emit_int32(op(arith_op) | rd(d) | op3(xor_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
570 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
571 |
inline void Assembler::xorcc(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
572 |
emit_int32(op(arith_op) | rd(d) | op3(xor_op3 | cc_bit_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
573 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
574 |
inline void Assembler::xorcc(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
575 |
emit_int32(op(arith_op) | rd(d) | op3(xor_op3 | cc_bit_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
576 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
577 |
inline void Assembler::xnor(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
578 |
emit_int32(op(arith_op) | rd(d) | op3(xnor_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
579 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
580 |
inline void Assembler::xnor(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
581 |
emit_int32(op(arith_op) | rd(d) | op3(xnor_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
582 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
583 |
inline void Assembler::xnorcc(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
584 |
emit_int32(op(arith_op) | rd(d) | op3(xnor_op3 | cc_bit_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
585 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
586 |
inline void Assembler::xnorcc(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
587 |
emit_int32(op(arith_op) | rd(d) | op3(xnor_op3 | cc_bit_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
588 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
589 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
590 |
inline void Assembler::membar(Membar_mask_bits const7a) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
591 |
emit_int32(op(arith_op) | op3(membar_op3) | rs1(O7) | immed(true) | u_field(int(const7a), 6, 0)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
592 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
593 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
594 |
inline void Assembler::fmov(FloatRegisterImpl::Width w, Condition c, bool floatCC, CC cca, FloatRegister s2, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
595 |
emit_int32(op(arith_op) | fd(d, w) | op3(fpop2_op3) | cond_mov(c) | opf_cc(cca, floatCC) | opf_low6(w) | fs2(s2, w)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
596 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
597 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
598 |
inline void Assembler::fmov(FloatRegisterImpl::Width w, RCondition c, Register s1, FloatRegister s2, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
599 |
emit_int32(op(arith_op) | fd(d, w) | op3(fpop2_op3) | rs1(s1) | rcond(c) | opf_low5(4 + w) | fs2(s2, w)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
600 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
601 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
602 |
inline void Assembler::movcc(Condition c, bool floatCC, CC cca, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
603 |
emit_int32(op(arith_op) | rd(d) | op3(movcc_op3) | mov_cc(cca, floatCC) | cond_mov(c) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
604 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
605 |
inline void Assembler::movcc(Condition c, bool floatCC, CC cca, int simm11a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
606 |
emit_int32(op(arith_op) | rd(d) | op3(movcc_op3) | mov_cc(cca, floatCC) | cond_mov(c) | immed(true) | simm(simm11a, 11)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
607 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
608 |
|
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
609 |
inline void Assembler::movr(RCondition c, Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
610 |
emit_int32(op(arith_op) | rd(d) | op3(movr_op3) | rs1(s1) | rcond(c) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
611 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
612 |
inline void Assembler::movr(RCondition c, Register s1, int simm10a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
613 |
emit_int32(op(arith_op) | rd(d) | op3(movr_op3) | rs1(s1) | rcond(c) | immed(true) | simm(simm10a, 10)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
614 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
615 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
616 |
inline void Assembler::mulx(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
617 |
emit_int32(op(arith_op) | rd(d) | op3(mulx_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
618 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
619 |
inline void Assembler::mulx(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
620 |
emit_int32(op(arith_op) | rd(d) | op3(mulx_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
621 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
622 |
inline void Assembler::sdivx(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
623 |
emit_int32(op(arith_op) | rd(d) | op3(sdivx_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
624 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
625 |
inline void Assembler::sdivx(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
626 |
emit_int32(op(arith_op) | rd(d) | op3(sdivx_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
627 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
628 |
inline void Assembler::udivx(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
629 |
emit_int32(op(arith_op) | rd(d) | op3(udivx_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
630 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
631 |
inline void Assembler::udivx(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
632 |
emit_int32(op(arith_op) | rd(d) | op3(udivx_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
633 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
634 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
635 |
inline void Assembler::umul(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
636 |
emit_int32(op(arith_op) | rd(d) | op3(umul_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
637 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
638 |
inline void Assembler::umul(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
639 |
emit_int32(op(arith_op) | rd(d) | op3(umul_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
640 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
641 |
inline void Assembler::smul(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
642 |
emit_int32(op(arith_op) | rd(d) | op3(smul_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
643 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
644 |
inline void Assembler::smul(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
645 |
emit_int32(op(arith_op) | rd(d) | op3(smul_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
646 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
647 |
inline void Assembler::umulcc(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
648 |
emit_int32(op(arith_op) | rd(d) | op3(umul_op3 | cc_bit_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
649 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
650 |
inline void Assembler::umulcc(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
651 |
emit_int32(op(arith_op) | rd(d) | op3(umul_op3 | cc_bit_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
652 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
653 |
inline void Assembler::smulcc(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
654 |
emit_int32(op(arith_op) | rd(d) | op3(smul_op3 | cc_bit_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
655 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
656 |
inline void Assembler::smulcc(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
657 |
emit_int32(op(arith_op) | rd(d) | op3(smul_op3 | cc_bit_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
658 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
659 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
660 |
inline void Assembler::nop() { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
661 |
emit_int32(op(branch_op) | op2(sethi_op2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
662 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
663 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
664 |
inline void Assembler::sw_count() { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
665 |
emit_int32(op(branch_op) | op2(sethi_op2) | 0x3f0); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
666 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
667 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
668 |
inline void Assembler::popc(Register s, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
669 |
emit_int32(op(arith_op) | rd(d) | op3(popc_op3) | rs2(s)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
670 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
671 |
inline void Assembler::popc(int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
672 |
emit_int32(op(arith_op) | rd(d) | op3(popc_op3) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
673 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
674 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
675 |
inline void Assembler::prefetch(Register s1, Register s2, PrefetchFcn f) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
676 |
emit_int32(op(ldst_op) | fcn(f) | op3(prefetch_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
677 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
678 |
inline void Assembler::prefetch(Register s1, int simm13a, PrefetchFcn f) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
679 |
emit_data(op(ldst_op) | fcn(f) | op3(prefetch_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
680 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
681 |
|
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
682 |
inline void Assembler::prefetcha(Register s1, Register s2, int ia, PrefetchFcn f) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
683 |
emit_int32(op(ldst_op) | fcn(f) | op3(prefetch_op3 | alt_bit_op3) | rs1(s1) | imm_asi(ia) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
684 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
685 |
inline void Assembler::prefetcha(Register s1, int simm13a, PrefetchFcn f) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
686 |
emit_int32(op(ldst_op) | fcn(f) | op3(prefetch_op3 | alt_bit_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
687 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
688 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
689 |
inline void Assembler::rdy(Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
690 |
v9_dep(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
691 |
emit_int32(op(arith_op) | rd(d) | op3(rdreg_op3) | u_field(0, 18, 14)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
692 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
693 |
inline void Assembler::rdccr(Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
694 |
emit_int32(op(arith_op) | rd(d) | op3(rdreg_op3) | u_field(2, 18, 14)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
695 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
696 |
inline void Assembler::rdasi(Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
697 |
emit_int32(op(arith_op) | rd(d) | op3(rdreg_op3) | u_field(3, 18, 14)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
698 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
699 |
inline void Assembler::rdtick(Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
700 |
emit_int32(op(arith_op) | rd(d) | op3(rdreg_op3) | u_field(4, 18, 14)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
701 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
702 |
inline void Assembler::rdpc(Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
703 |
avoid_pipeline_stall(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
704 |
cti(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
705 |
emit_int32(op(arith_op) | rd(d) | op3(rdreg_op3) | u_field(5, 18, 14)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
706 |
induce_pc_hazard(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
707 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
708 |
inline void Assembler::rdfprs(Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
709 |
emit_int32(op(arith_op) | rd(d) | op3(rdreg_op3) | u_field(6, 18, 14)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
710 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
711 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
712 |
inline void Assembler::rett(Register s1, Register s2) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
713 |
cti(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
714 |
emit_int32(op(arith_op) | op3(rett_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
715 |
induce_delay_slot(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
716 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
717 |
inline void Assembler::rett(Register s1, int simm13a, relocInfo::relocType rt) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
718 |
cti(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
719 |
emit_data(op(arith_op) | op3(rett_op3) | rs1(s1) | immed(true) | simm(simm13a, 13), rt); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
720 |
induce_delay_slot(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
721 |
} |
1 | 722 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
723 |
inline void Assembler::save(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
724 |
emit_int32(op(arith_op) | rd(d) | op3(save_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
725 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
726 |
inline void Assembler::save(Register s1, int simm13a, Register d) { |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
727 |
// make sure frame is at least large enough for the register save area |
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
728 |
assert(-simm13a >= 16 * wordSize, "frame too small"); |
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
729 |
emit_int32(op(arith_op) | rd(d) | op3(save_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
730 |
} |
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
731 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
732 |
inline void Assembler::restore(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
733 |
emit_int32(op(arith_op) | rd(d) | op3(restore_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
734 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
735 |
inline void Assembler::restore(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
736 |
emit_int32(op(arith_op) | rd(d) | op3(restore_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
737 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
738 |
|
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
739 |
// pp 216 |
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
740 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
741 |
inline void Assembler::saved() { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
742 |
emit_int32(op(arith_op) | fcn(0) | op3(saved_op3)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
743 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
744 |
inline void Assembler::restored() { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
745 |
emit_int32(op(arith_op) | fcn(1) | op3(saved_op3)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
746 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
747 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
748 |
inline void Assembler::sethi(int imm22a, Register d, RelocationHolder const &rspec) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
749 |
emit_data(op(branch_op) | rd(d) | op2(sethi_op2) | hi22(imm22a), rspec); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
750 |
} |
1 | 751 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
752 |
inline void Assembler::sll(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
753 |
emit_int32(op(arith_op) | rd(d) | op3(sll_op3) | rs1(s1) | sx(0) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
754 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
755 |
inline void Assembler::sll(Register s1, int imm5a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
756 |
emit_int32(op(arith_op) | rd(d) | op3(sll_op3) | rs1(s1) | sx(0) | immed(true) | u_field(imm5a, 4, 0)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
757 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
758 |
inline void Assembler::srl(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
759 |
emit_int32(op(arith_op) | rd(d) | op3(srl_op3) | rs1(s1) | sx(0) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
760 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
761 |
inline void Assembler::srl(Register s1, int imm5a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
762 |
emit_int32(op(arith_op) | rd(d) | op3(srl_op3) | rs1(s1) | sx(0) | immed(true) | u_field(imm5a, 4, 0)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
763 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
764 |
inline void Assembler::sra(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
765 |
emit_int32(op(arith_op) | rd(d) | op3(sra_op3) | rs1(s1) | sx(0) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
766 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
767 |
inline void Assembler::sra(Register s1, int imm5a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
768 |
emit_int32(op(arith_op) | rd(d) | op3(sra_op3) | rs1(s1) | sx(0) | immed(true) | u_field(imm5a, 4, 0)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
769 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
770 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
771 |
inline void Assembler::sllx(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
772 |
emit_int32(op(arith_op) | rd(d) | op3(sll_op3) | rs1(s1) | sx(1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
773 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
774 |
inline void Assembler::sllx(Register s1, int imm6a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
775 |
emit_int32(op(arith_op) | rd(d) | op3(sll_op3) | rs1(s1) | sx(1) | immed(true) | u_field(imm6a, 5, 0)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
776 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
777 |
inline void Assembler::srlx(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
778 |
emit_int32(op(arith_op) | rd(d) | op3(srl_op3) | rs1(s1) | sx(1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
779 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
780 |
inline void Assembler::srlx(Register s1, int imm6a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
781 |
emit_int32(op(arith_op) | rd(d) | op3(srl_op3) | rs1(s1) | sx(1) | immed(true) | u_field(imm6a, 5, 0)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
782 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
783 |
inline void Assembler::srax(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
784 |
emit_int32(op(arith_op) | rd(d) | op3(sra_op3) | rs1(s1) | sx(1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
785 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
786 |
inline void Assembler::srax(Register s1, int imm6a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
787 |
emit_int32(op(arith_op) | rd(d) | op3(sra_op3) | rs1(s1) | sx(1) | immed(true) | u_field(imm6a, 5, 0)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
788 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
789 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
790 |
inline void Assembler::sir(int simm13a) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
791 |
emit_int32(op(arith_op) | fcn(15) | op3(sir_op3) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
792 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
793 |
|
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
794 |
// pp 221 |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
795 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
796 |
inline void Assembler::stbar() { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
797 |
emit_int32(op(arith_op) | op3(membar_op3) | u_field(15, 18, 14)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
798 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
799 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
800 |
// pp 222 |
1 | 801 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
802 |
inline void Assembler::stf(FloatRegisterImpl::Width w, FloatRegister d, Register s1, Register s2) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
803 |
emit_int32(op(ldst_op) | fd(d, w) | alt_op3(stf_op3, w) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
804 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
805 |
inline void Assembler::stf(FloatRegisterImpl::Width w, FloatRegister d, Register s1, int simm13a) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
806 |
emit_data(op(ldst_op) | fd(d, w) | alt_op3(stf_op3, w) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
807 |
} |
1 | 808 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
809 |
inline void Assembler::stxfsr(Register s1, Register s2) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
810 |
emit_int32(op(ldst_op) | rd(G1) | op3(stfsr_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
811 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
812 |
inline void Assembler::stxfsr(Register s1, int simm13a) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
813 |
emit_data(op(ldst_op) | rd(G1) | op3(stfsr_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
814 |
} |
1 | 815 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
816 |
inline void Assembler::stfa(FloatRegisterImpl::Width w, FloatRegister d, Register s1, Register s2, int ia) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
817 |
emit_int32(op(ldst_op) | fd(d, w) | alt_op3(stf_op3 | alt_bit_op3, w) | rs1(s1) | imm_asi(ia) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
818 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
819 |
inline void Assembler::stfa(FloatRegisterImpl::Width w, FloatRegister d, Register s1, int simm13a) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
820 |
emit_int32(op(ldst_op) | fd(d, w) | alt_op3(stf_op3 | alt_bit_op3, w) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
821 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
822 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
823 |
// p 226 |
1 | 824 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
825 |
inline void Assembler::stb(Register d, Register s1, Register s2) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
826 |
emit_int32(op(ldst_op) | rd(d) | op3(stb_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
827 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
828 |
inline void Assembler::stb(Register d, Register s1, int simm13a) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
829 |
emit_data(op(ldst_op) | rd(d) | op3(stb_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
830 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
831 |
inline void Assembler::sth(Register d, Register s1, Register s2) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
832 |
emit_int32(op(ldst_op) | rd(d) | op3(sth_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
833 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
834 |
inline void Assembler::sth(Register d, Register s1, int simm13a) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
835 |
emit_data(op(ldst_op) | rd(d) | op3(sth_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
836 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
837 |
inline void Assembler::stw(Register d, Register s1, Register s2) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
838 |
emit_int32(op(ldst_op) | rd(d) | op3(stw_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
839 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
840 |
inline void Assembler::stw(Register d, Register s1, int simm13a) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
841 |
emit_data(op(ldst_op) | rd(d) | op3(stw_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
842 |
} |
1 | 843 |
|
844 |
||
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
845 |
inline void Assembler::stx(Register d, Register s1, Register s2) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
846 |
emit_int32(op(ldst_op) | rd(d) | op3(stx_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
847 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
848 |
inline void Assembler::stx(Register d, Register s1, int simm13a) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
849 |
emit_data(op(ldst_op) | rd(d) | op3(stx_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
850 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
851 |
inline void Assembler::std(Register d, Register s1, Register s2) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
852 |
v9_dep(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
853 |
assert(d->is_even(), "not even"); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
854 |
emit_int32(op(ldst_op) | rd(d) | op3(std_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
855 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
856 |
inline void Assembler::std(Register d, Register s1, int simm13a) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
857 |
v9_dep(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
858 |
assert(d->is_even(), "not even"); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
859 |
emit_data(op(ldst_op) | rd(d) | op3(std_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
860 |
} |
1 | 861 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
862 |
inline void Assembler::stba(Register d, Register s1, Register s2, int ia) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
863 |
emit_int32(op(ldst_op) | rd(d) | op3(stb_op3 | alt_bit_op3) | rs1(s1) | imm_asi(ia) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
864 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
865 |
inline void Assembler::stba(Register d, Register s1, int simm13a) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
866 |
emit_int32(op(ldst_op) | rd(d) | op3(stb_op3 | alt_bit_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
867 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
868 |
inline void Assembler::stha(Register d, Register s1, Register s2, int ia) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
869 |
emit_int32(op(ldst_op) | rd(d) | op3(sth_op3 | alt_bit_op3) | rs1(s1) | imm_asi(ia) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
870 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
871 |
inline void Assembler::stha(Register d, Register s1, int simm13a) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
872 |
emit_int32(op(ldst_op) | rd(d) | op3(sth_op3 | alt_bit_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
873 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
874 |
inline void Assembler::stwa(Register d, Register s1, Register s2, int ia) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
875 |
emit_int32(op(ldst_op) | rd(d) | op3(stw_op3 | alt_bit_op3) | rs1(s1) | imm_asi(ia) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
876 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
877 |
inline void Assembler::stwa(Register d, Register s1, int simm13a) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
878 |
emit_int32(op(ldst_op) | rd(d) | op3(stw_op3 | alt_bit_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
879 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
880 |
inline void Assembler::stxa(Register d, Register s1, Register s2, int ia) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
881 |
emit_int32(op(ldst_op) | rd(d) | op3(stx_op3 | alt_bit_op3) | rs1(s1) | imm_asi(ia) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
882 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
883 |
inline void Assembler::stxa(Register d, Register s1, int simm13a) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
884 |
emit_int32(op(ldst_op) | rd(d) | op3(stx_op3 | alt_bit_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
885 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
886 |
inline void Assembler::stda(Register d, Register s1, Register s2, int ia) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
887 |
emit_int32(op(ldst_op) | rd(d) | op3(std_op3 | alt_bit_op3) | rs1(s1) | imm_asi(ia) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
888 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
889 |
inline void Assembler::stda(Register d, Register s1, int simm13a) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
890 |
emit_int32(op(ldst_op) | rd(d) | op3(std_op3 | alt_bit_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
891 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
892 |
|
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
893 |
// pp 230 |
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
894 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
895 |
inline void Assembler::sub(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
896 |
emit_int32(op(arith_op) | rd(d) | op3(sub_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
897 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
898 |
inline void Assembler::sub(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
899 |
emit_int32(op(arith_op) | rd(d) | op3(sub_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
900 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
901 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
902 |
inline void Assembler::subcc(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
903 |
emit_int32(op(arith_op) | rd(d) | op3(sub_op3 | cc_bit_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
904 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
905 |
inline void Assembler::subcc(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
906 |
emit_int32(op(arith_op) | rd(d) | op3(sub_op3 | cc_bit_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
907 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
908 |
inline void Assembler::subc(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
909 |
emit_int32(op(arith_op) | rd(d) | op3(subc_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
910 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
911 |
inline void Assembler::subc(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
912 |
emit_int32(op(arith_op) | rd(d) | op3(subc_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
913 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
914 |
inline void Assembler::subccc(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
915 |
emit_int32(op(arith_op) | rd(d) | op3(subc_op3 | cc_bit_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
916 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
917 |
inline void Assembler::subccc(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
918 |
emit_int32(op(arith_op) | rd(d) | op3(subc_op3 | cc_bit_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
919 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
920 |
|
1 | 921 |
// pp 231 |
922 |
||
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
923 |
inline void Assembler::swap(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
924 |
v9_dep(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
925 |
emit_int32(op(ldst_op) | rd(d) | op3(swap_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
926 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
927 |
inline void Assembler::swap(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
928 |
v9_dep(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
929 |
emit_data(op(ldst_op) | rd(d) | op3(swap_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
930 |
} |
1 | 931 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
932 |
inline void Assembler::swapa(Register s1, Register s2, int ia, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
933 |
v9_dep(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
934 |
emit_int32(op(ldst_op) | rd(d) | op3(swap_op3 | alt_bit_op3) | rs1(s1) | imm_asi(ia) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
935 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
936 |
inline void Assembler::swapa(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
937 |
v9_dep(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
938 |
emit_int32(op(ldst_op) | rd(d) | op3(swap_op3 | alt_bit_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
939 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
940 |
|
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
941 |
// pp 234, note op in book is wrong, see pp 268 |
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
942 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
943 |
inline void Assembler::taddcc(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
944 |
emit_int32(op(arith_op) | rd(d) | op3(taddcc_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
945 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
946 |
inline void Assembler::taddcc(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
947 |
emit_int32(op(arith_op) | rd(d) | op3(taddcc_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
948 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
949 |
|
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
950 |
// pp 235 |
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
951 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
952 |
inline void Assembler::tsubcc(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
953 |
emit_int32(op(arith_op) | rd(d) | op3(tsubcc_op3) | rs1(s1) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
954 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
955 |
inline void Assembler::tsubcc(Register s1, int simm13a, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
956 |
emit_int32(op(arith_op) | rd(d) | op3(tsubcc_op3) | rs1(s1) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
957 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
958 |
|
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
959 |
// pp 237 |
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
960 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
961 |
inline void Assembler::trap(Condition c, CC cc, Register s1, Register s2) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
962 |
emit_int32(op(arith_op) | cond(c) | op3(trap_op3) | rs1(s1) | trapcc(cc) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
963 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
964 |
inline void Assembler::trap(Condition c, CC cc, Register s1, int trapa) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
965 |
emit_int32(op(arith_op) | cond(c) | op3(trap_op3) | rs1(s1) | trapcc(cc) | immed(true) | u_field(trapa, 6, 0)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
966 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
967 |
// simple uncond. trap |
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
968 |
inline void Assembler::trap(int trapa) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
969 |
trap(always, icc, G0, trapa); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
970 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
971 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
972 |
inline void Assembler::wry(Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
973 |
v9_dep(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
974 |
emit_int32(op(arith_op) | rs1(d) | op3(wrreg_op3) | u_field(0, 29, 25)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
975 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
976 |
inline void Assembler::wrccr(Register s) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
977 |
emit_int32(op(arith_op) | rs1(s) | op3(wrreg_op3) | u_field(2, 29, 25)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
978 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
979 |
inline void Assembler::wrccr(Register s, int simm13a) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
980 |
emit_int32(op(arith_op) | rs1(s) | op3(wrreg_op3) | u_field(2, 29, 25) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
981 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
982 |
inline void Assembler::wrasi(Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
983 |
emit_int32(op(arith_op) | rs1(d) | op3(wrreg_op3) | u_field(3, 29, 25)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
984 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
985 |
// wrasi(d, imm) stores (d xor imm) to asi |
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
986 |
inline void Assembler::wrasi(Register d, int simm13a) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
987 |
emit_int32(op(arith_op) | rs1(d) | op3(wrreg_op3) | u_field(3, 29, 25) | immed(true) | simm(simm13a, 13)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
988 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
989 |
inline void Assembler::wrfprs(Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
990 |
emit_int32(op(arith_op) | rs1(d) | op3(wrreg_op3) | u_field(6, 29, 25)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
991 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
992 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
993 |
inline void Assembler::alignaddr(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
994 |
vis1_only(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
995 |
emit_int32(op(arith_op) | rd(d) | op3(alignaddr_op3) | rs1(s1) | opf(alignaddr_opf) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
996 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
997 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
998 |
inline void Assembler::faligndata(FloatRegister s1, FloatRegister s2, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
999 |
vis1_only(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1000 |
emit_int32(op(arith_op) | fd(d, FloatRegisterImpl::D) | op3(faligndata_op3) | fs1(s1, FloatRegisterImpl::D) | opf(faligndata_opf) | fs2(s2, FloatRegisterImpl::D)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1001 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
1002 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1003 |
inline void Assembler::fzero(FloatRegisterImpl::Width w, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1004 |
vis1_only(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1005 |
emit_int32(op(arith_op) | fd(d, w) | op3(fzero_op3) | opf(0x62 - w)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1006 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
1007 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1008 |
inline void Assembler::fsrc2(FloatRegisterImpl::Width w, FloatRegister s2, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1009 |
vis1_only(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1010 |
emit_int32(op(arith_op) | fd(d, w) | op3(fsrc_op3) | opf(0x7A - w) | fs2(s2, w)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1011 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
1012 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1013 |
inline void Assembler::fnot1(FloatRegisterImpl::Width w, FloatRegister s1, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1014 |
vis1_only(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1015 |
emit_int32(op(arith_op) | fd(d, w) | op3(fnot_op3) | fs1(s1, w) | opf(0x6C - w)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1016 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
1017 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1018 |
inline void Assembler::fpmerge(FloatRegister s1, FloatRegister s2, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1019 |
vis1_only(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1020 |
emit_int32(op(arith_op) | fd(d, FloatRegisterImpl::D) | op3(0x36) | fs1(s1, FloatRegisterImpl::S) | opf(0x4b) | fs2(s2, FloatRegisterImpl::S)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1021 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
1022 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1023 |
inline void Assembler::stpartialf(Register s1, Register s2, FloatRegister d, int ia) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1024 |
vis1_only(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1025 |
emit_int32(op(ldst_op) | fd(d, FloatRegisterImpl::D) | op3(stpartialf_op3) | rs1(s1) | imm_asi(ia) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1026 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1027 |
|
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1028 |
// VIS2 instructions |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
1029 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1030 |
inline void Assembler::edge8n(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1031 |
vis2_only(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1032 |
emit_int32(op(arith_op) | rd(d) | op3(edge_op3) | rs1(s1) | opf(edge8n_opf) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1033 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
1034 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1035 |
inline void Assembler::bmask(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1036 |
vis2_only(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1037 |
emit_int32(op(arith_op) | rd(d) | op3(bmask_op3) | rs1(s1) | opf(bmask_opf) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1038 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1039 |
inline void Assembler::bshuffle(FloatRegister s1, FloatRegister s2, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1040 |
vis2_only(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1041 |
emit_int32(op(arith_op) | fd(d, FloatRegisterImpl::D) | op3(bshuffle_op3) | fs1(s1, FloatRegisterImpl::D) | opf(bshuffle_opf) | fs2(s2, FloatRegisterImpl::D)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1042 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
1043 |
|
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
1044 |
// VIS3 instructions |
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
1045 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1046 |
inline void Assembler::movstosw(FloatRegister s, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1047 |
vis3_only(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1048 |
emit_int32(op(arith_op) | rd(d) | op3(mftoi_op3) | opf(mstosw_opf) | fs2(s, FloatRegisterImpl::S)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1049 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1050 |
inline void Assembler::movstouw(FloatRegister s, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1051 |
vis3_only(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1052 |
emit_int32(op(arith_op) | rd(d) | op3(mftoi_op3) | opf(mstouw_opf) | fs2(s, FloatRegisterImpl::S)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1053 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1054 |
inline void Assembler::movdtox(FloatRegister s, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1055 |
vis3_only(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1056 |
emit_int32(op(arith_op) | rd(d) | op3(mftoi_op3) | opf(mdtox_opf) | fs2(s, FloatRegisterImpl::D)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1057 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
1058 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1059 |
inline void Assembler::movwtos(Register s, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1060 |
vis3_only(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1061 |
emit_int32(op(arith_op) | fd(d, FloatRegisterImpl::S) | op3(mftoi_op3) | opf(mwtos_opf) | rs2(s)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1062 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1063 |
inline void Assembler::movxtod(Register s, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1064 |
vis3_only(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1065 |
emit_int32(op(arith_op) | fd(d, FloatRegisterImpl::D) | op3(mftoi_op3) | opf(mxtod_opf) | rs2(s)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1066 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
1067 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1068 |
inline void Assembler::xmulx(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1069 |
vis3_only(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1070 |
emit_int32(op(arith_op) | rd(d) | op3(xmulx_op3) | rs1(s1) | opf(xmulx_opf) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1071 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1072 |
inline void Assembler::xmulxhi(Register s1, Register s2, Register d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1073 |
vis3_only(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1074 |
emit_int32(op(arith_op) | rd(d) | op3(xmulx_op3) | rs1(s1) | opf(xmulxhi_opf) | rs2(s2)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1075 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
1076 |
|
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
1077 |
// Crypto SHA instructions |
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
1078 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1079 |
inline void Assembler::sha1() { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1080 |
sha1_only(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1081 |
emit_int32(op(arith_op) | op3(sha_op3) | opf(sha1_opf)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1082 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1083 |
inline void Assembler::sha256() { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1084 |
sha256_only(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1085 |
emit_int32(op(arith_op) | op3(sha_op3) | opf(sha256_opf)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1086 |
} |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1087 |
inline void Assembler::sha512() { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1088 |
sha512_only(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1089 |
emit_int32(op(arith_op) | op3(sha_op3) | opf(sha512_opf)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1090 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
1091 |
|
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
1092 |
// CRC32C instruction |
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
1093 |
|
46596
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1094 |
inline void Assembler::crc32c(FloatRegister s1, FloatRegister s2, FloatRegister d) { |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1095 |
crc32c_only(); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1096 |
emit_int32(op(arith_op) | fd(d, FloatRegisterImpl::D) | op3(crc32c_op3) | fs1(s1, FloatRegisterImpl::D) | opf(crc32c_opf) | fs2(s2, FloatRegisterImpl::D)); |
a7c9706d25a9
8144448: Avoid placing CTI immediately following or preceding RDPC instruction
neliasso
parents:
46594
diff
changeset
|
1097 |
} |
35090
1f5b6aa795d0
8144748: Move assembler/macroAssembler inline function definitions to corresponding inline.hpp files
mikael
parents:
35086
diff
changeset
|
1098 |
|
7397 | 1099 |
#endif // CPU_SPARC_VM_ASSEMBLER_SPARC_INLINE_HPP |