Skip to content

Commit d63b561

Browse files
committed
8353188: C1: Clean up x86 backend after 32-bit x86 removal
Reviewed-by: kvn, vlivanov
1 parent d1e91fc commit d63b561

11 files changed

+47
-1081
lines changed

src/hotspot/cpu/x86/c1_CodeStubs_x86.cpp

Lines changed: 1 addition & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -37,66 +37,12 @@
3737

3838
#define __ ce->masm()->
3939

40-
#ifndef _LP64
41-
float ConversionStub::float_zero = 0.0;
42-
double ConversionStub::double_zero = 0.0;
43-
44-
void ConversionStub::emit_code(LIR_Assembler* ce) {
45-
__ bind(_entry);
46-
assert(bytecode() == Bytecodes::_f2i || bytecode() == Bytecodes::_d2i, "other conversions do not require stub");
47-
48-
49-
if (input()->is_single_xmm()) {
50-
__ comiss(input()->as_xmm_float_reg(),
51-
ExternalAddress((address)&float_zero));
52-
} else if (input()->is_double_xmm()) {
53-
__ comisd(input()->as_xmm_double_reg(),
54-
ExternalAddress((address)&double_zero));
55-
} else {
56-
__ push(rax);
57-
__ ftst();
58-
__ fnstsw_ax();
59-
__ sahf();
60-
__ pop(rax);
61-
}
62-
63-
Label NaN, do_return;
64-
__ jccb(Assembler::parity, NaN);
65-
__ jccb(Assembler::below, do_return);
66-
67-
// input is > 0 -> return maxInt
68-
// result register already contains 0x80000000, so subtracting 1 gives 0x7fffffff
69-
__ decrement(result()->as_register());
70-
__ jmpb(do_return);
71-
72-
// input is NaN -> return 0
73-
__ bind(NaN);
74-
__ xorptr(result()->as_register(), result()->as_register());
75-
76-
__ bind(do_return);
77-
__ jmp(_continuation);
78-
}
79-
#endif // !_LP64
80-
8140
void C1SafepointPollStub::emit_code(LIR_Assembler* ce) {
8241
__ bind(_entry);
8342
InternalAddress safepoint_pc(ce->masm()->pc() - ce->masm()->offset() + safepoint_offset());
84-
#ifdef _LP64
8543
__ lea(rscratch1, safepoint_pc);
8644
__ movptr(Address(r15_thread, JavaThread::saved_exception_pc_offset()), rscratch1);
87-
#else
88-
const Register tmp1 = rcx;
89-
const Register tmp2 = rdx;
90-
__ push(tmp1);
91-
__ push(tmp2);
92-
93-
__ lea(tmp1, safepoint_pc);
94-
__ get_thread(tmp2);
95-
__ movptr(Address(tmp2, JavaThread::saved_exception_pc_offset()), tmp1);
96-
97-
__ pop(tmp2);
98-
__ pop(tmp1);
99-
#endif /* _LP64 */
45+
10046
assert(SharedRuntime::polling_page_return_handler_blob() != nullptr,
10147
"polling page return stub not created yet");
10248

src/hotspot/cpu/x86/c1_Defs_x86.hpp

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,11 @@ enum {
3333

3434
// registers
3535
enum {
36-
pd_nof_cpu_regs_frame_map = NOT_LP64(8) LP64_ONLY(16), // number of registers used during code emission
36+
pd_nof_cpu_regs_frame_map = 16, // number of registers used during code emission
3737
pd_nof_fpu_regs_frame_map = FloatRegister::number_of_registers, // number of registers used during code emission
3838
pd_nof_xmm_regs_frame_map = XMMRegister::number_of_registers, // number of registers used during code emission
3939

40-
#ifdef _LP64
4140
#define UNALLOCATED 4 // rsp, rbp, r15, r10
42-
#else
43-
#define UNALLOCATED 2 // rsp, rbp
44-
#endif // LP64
4541

4642
pd_nof_caller_save_cpu_regs_frame_map = pd_nof_cpu_regs_frame_map - UNALLOCATED, // number of registers killed by calls
4743
pd_nof_caller_save_fpu_regs_frame_map = pd_nof_fpu_regs_frame_map, // number of registers killed by calls
@@ -54,9 +50,9 @@ enum {
5450
pd_nof_fpu_regs_linearscan = pd_nof_fpu_regs_frame_map, // number of registers visible to linear scan
5551
pd_nof_xmm_regs_linearscan = pd_nof_xmm_regs_frame_map, // number of registers visible to linear scan
5652
pd_first_cpu_reg = 0,
57-
pd_last_cpu_reg = NOT_LP64(5) LP64_ONLY(11),
58-
pd_first_byte_reg = NOT_LP64(2) LP64_ONLY(0),
59-
pd_last_byte_reg = NOT_LP64(5) LP64_ONLY(11),
53+
pd_last_cpu_reg = 11,
54+
pd_first_byte_reg = 0,
55+
pd_last_byte_reg = 11,
6056
pd_first_fpu_reg = pd_nof_cpu_regs_frame_map,
6157
pd_last_fpu_reg = pd_first_fpu_reg + 7,
6258
pd_first_xmm_reg = pd_nof_cpu_regs_frame_map + pd_nof_fpu_regs_frame_map,

src/hotspot/cpu/x86/c1_FrameMap_x86.cpp

Lines changed: 6 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ const int FrameMap::pd_c_runtime_reserved_arg_size = 0;
3232
LIR_Opr FrameMap::map_to_opr(BasicType type, VMRegPair* reg, bool) {
3333
LIR_Opr opr = LIR_OprFact::illegalOpr;
3434
VMReg r_1 = reg->first();
35-
VMReg r_2 = reg->second();
3635
if (r_1->is_stack()) {
3736
// Convert stack slot to an SP offset
3837
// The calling convention does not count the SharedRuntime::out_preserve_stack_slots() value
@@ -41,14 +40,8 @@ LIR_Opr FrameMap::map_to_opr(BasicType type, VMRegPair* reg, bool) {
4140
opr = LIR_OprFact::address(new LIR_Address(rsp_opr, st_off, type));
4241
} else if (r_1->is_Register()) {
4342
Register reg = r_1->as_Register();
44-
if (r_2->is_Register() && (type == T_LONG || type == T_DOUBLE)) {
45-
Register reg2 = r_2->as_Register();
46-
#ifdef _LP64
47-
assert(reg2 == reg, "must be same register");
43+
if (type == T_LONG || type == T_DOUBLE) {
4844
opr = as_long_opr(reg);
49-
#else
50-
opr = as_long_opr(reg2, reg);
51-
#endif // _LP64
5245
} else if (is_reference_type(type)) {
5346
opr = as_oop_opr(reg);
5447
} else if (type == T_METADATA) {
@@ -111,8 +104,6 @@ LIR_Opr FrameMap::long1_opr;
111104
LIR_Opr FrameMap::xmm0_float_opr;
112105
LIR_Opr FrameMap::xmm0_double_opr;
113106

114-
#ifdef _LP64
115-
116107
LIR_Opr FrameMap::r8_opr;
117108
LIR_Opr FrameMap::r9_opr;
118109
LIR_Opr FrameMap::r10_opr;
@@ -137,7 +128,6 @@ LIR_Opr FrameMap::r11_metadata_opr;
137128
LIR_Opr FrameMap::r12_metadata_opr;
138129
LIR_Opr FrameMap::r13_metadata_opr;
139130
LIR_Opr FrameMap::r14_metadata_opr;
140-
#endif // _LP64
141131

142132
LIR_Opr FrameMap::_caller_save_cpu_regs[] = {};
143133
LIR_Opr FrameMap::_caller_save_fpu_regs[] = {};
@@ -157,23 +147,17 @@ XMMRegister FrameMap::nr2xmmreg(int rnr) {
157147
void FrameMap::initialize() {
158148
assert(!_init_done, "once");
159149

160-
assert(nof_cpu_regs == LP64_ONLY(16) NOT_LP64(8), "wrong number of CPU registers");
150+
assert(nof_cpu_regs == 16, "wrong number of CPU registers");
161151
map_register(0, rsi); rsi_opr = LIR_OprFact::single_cpu(0);
162152
map_register(1, rdi); rdi_opr = LIR_OprFact::single_cpu(1);
163153
map_register(2, rbx); rbx_opr = LIR_OprFact::single_cpu(2);
164154
map_register(3, rax); rax_opr = LIR_OprFact::single_cpu(3);
165155
map_register(4, rdx); rdx_opr = LIR_OprFact::single_cpu(4);
166156
map_register(5, rcx); rcx_opr = LIR_OprFact::single_cpu(5);
167-
168-
#ifndef _LP64
169-
// The unallocatable registers are at the end
170-
map_register(6, rsp);
171-
map_register(7, rbp);
172-
#else
173-
map_register( 6, r8); r8_opr = LIR_OprFact::single_cpu(6);
174-
map_register( 7, r9); r9_opr = LIR_OprFact::single_cpu(7);
175-
map_register( 8, r11); r11_opr = LIR_OprFact::single_cpu(8);
176-
map_register( 9, r13); r13_opr = LIR_OprFact::single_cpu(9);
157+
map_register(6, r8); r8_opr = LIR_OprFact::single_cpu(6);
158+
map_register(7, r9); r9_opr = LIR_OprFact::single_cpu(7);
159+
map_register(8, r11); r11_opr = LIR_OprFact::single_cpu(8);
160+
map_register(9, r13); r13_opr = LIR_OprFact::single_cpu(9);
177161
map_register(10, r14); r14_opr = LIR_OprFact::single_cpu(10);
178162
// r12 is allocated conditionally. With compressed oops it holds
179163
// the heapbase value and is not visible to the allocator.
@@ -183,15 +167,9 @@ void FrameMap::initialize() {
183167
map_register(13, r15); r15_opr = LIR_OprFact::single_cpu(13);
184168
map_register(14, rsp);
185169
map_register(15, rbp);
186-
#endif // _LP64
187170

188-
#ifdef _LP64
189171
long0_opr = LIR_OprFact::double_cpu(3 /*eax*/, 3 /*eax*/);
190172
long1_opr = LIR_OprFact::double_cpu(2 /*ebx*/, 2 /*ebx*/);
191-
#else
192-
long0_opr = LIR_OprFact::double_cpu(3 /*eax*/, 4 /*edx*/);
193-
long1_opr = LIR_OprFact::double_cpu(2 /*ebx*/, 5 /*ecx*/);
194-
#endif // _LP64
195173
xmm0_float_opr = LIR_OprFact::single_xmm(0);
196174
xmm0_double_opr = LIR_OprFact::double_xmm(0);
197175

@@ -201,16 +179,12 @@ void FrameMap::initialize() {
201179
_caller_save_cpu_regs[3] = rax_opr;
202180
_caller_save_cpu_regs[4] = rdx_opr;
203181
_caller_save_cpu_regs[5] = rcx_opr;
204-
205-
#ifdef _LP64
206182
_caller_save_cpu_regs[6] = r8_opr;
207183
_caller_save_cpu_regs[7] = r9_opr;
208184
_caller_save_cpu_regs[8] = r11_opr;
209185
_caller_save_cpu_regs[9] = r13_opr;
210186
_caller_save_cpu_regs[10] = r14_opr;
211187
_caller_save_cpu_regs[11] = r12_opr;
212-
#endif // _LP64
213-
214188

215189
_xmm_regs[0] = xmm0;
216190
_xmm_regs[1] = xmm1;
@@ -220,8 +194,6 @@ void FrameMap::initialize() {
220194
_xmm_regs[5] = xmm5;
221195
_xmm_regs[6] = xmm6;
222196
_xmm_regs[7] = xmm7;
223-
224-
#ifdef _LP64
225197
_xmm_regs[8] = xmm8;
226198
_xmm_regs[9] = xmm9;
227199
_xmm_regs[10] = xmm10;
@@ -246,7 +218,6 @@ void FrameMap::initialize() {
246218
_xmm_regs[29] = xmm29;
247219
_xmm_regs[30] = xmm30;
248220
_xmm_regs[31] = xmm31;
249-
#endif // _LP64
250221

251222
for (int i = 0; i < 8; i++) {
252223
_caller_save_fpu_regs[i] = LIR_OprFact::single_fpu(i);
@@ -276,7 +247,6 @@ void FrameMap::initialize() {
276247
rsp_opr = as_pointer_opr(rsp);
277248
rbp_opr = as_pointer_opr(rbp);
278249

279-
#ifdef _LP64
280250
r8_oop_opr = as_oop_opr(r8);
281251
r9_oop_opr = as_oop_opr(r9);
282252
r11_oop_opr = as_oop_opr(r11);
@@ -290,7 +260,6 @@ void FrameMap::initialize() {
290260
r12_metadata_opr = as_metadata_opr(r12);
291261
r13_metadata_opr = as_metadata_opr(r13);
292262
r14_metadata_opr = as_metadata_opr(r14);
293-
#endif // _LP64
294263

295264
VMRegPair regs;
296265
BasicType sig_bt = T_OBJECT;

src/hotspot/cpu/x86/c1_FrameMap_x86.hpp

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,8 @@
4141
nof_xmm_regs = pd_nof_xmm_regs_frame_map,
4242
nof_caller_save_xmm_regs = pd_nof_caller_save_xmm_regs_frame_map,
4343
first_available_sp_in_frame = 0,
44-
#ifndef _LP64
45-
frame_pad_in_bytes = 8,
46-
nof_reg_args = 2
47-
#else
4844
frame_pad_in_bytes = 16,
4945
nof_reg_args = 6
50-
#endif // _LP64
5146
};
5247

5348
private:
@@ -81,8 +76,6 @@
8176
static LIR_Opr rdx_metadata_opr;
8277
static LIR_Opr rcx_metadata_opr;
8378

84-
#ifdef _LP64
85-
8679
static LIR_Opr r8_opr;
8780
static LIR_Opr r9_opr;
8881
static LIR_Opr r10_opr;
@@ -108,28 +101,17 @@
108101
static LIR_Opr r13_metadata_opr;
109102
static LIR_Opr r14_metadata_opr;
110103

111-
#endif // _LP64
112-
113104
static LIR_Opr long0_opr;
114105
static LIR_Opr long1_opr;
115106
static LIR_Opr xmm0_float_opr;
116107
static LIR_Opr xmm0_double_opr;
117108

118-
#ifdef _LP64
119109
static LIR_Opr as_long_opr(Register r) {
120110
return LIR_OprFact::double_cpu(cpu_reg2rnr(r), cpu_reg2rnr(r));
121111
}
122112
static LIR_Opr as_pointer_opr(Register r) {
123113
return LIR_OprFact::double_cpu(cpu_reg2rnr(r), cpu_reg2rnr(r));
124114
}
125-
#else
126-
static LIR_Opr as_long_opr(Register r, Register r2) {
127-
return LIR_OprFact::double_cpu(cpu_reg2rnr(r), cpu_reg2rnr(r2));
128-
}
129-
static LIR_Opr as_pointer_opr(Register r) {
130-
return LIR_OprFact::single_cpu(cpu_reg2rnr(r));
131-
}
132-
#endif // _LP64
133115

134116
// VMReg name for spilled physical FPU stack slot n
135117
static VMReg fpu_regname (int n);

0 commit comments

Comments
 (0)