@@ -111,13 +111,13 @@ class RegisterSaver {
111
111
int_reg,
112
112
float_reg,
113
113
special_reg,
114
- vs_reg
114
+ vec_reg
115
115
} RegisterType;
116
116
117
117
typedef enum {
118
118
reg_size = 8 ,
119
119
half_reg_size = reg_size / 2 ,
120
- vs_reg_size = 16
120
+ vec_reg_size = 16
121
121
} RegisterConstants;
122
122
123
123
typedef struct {
@@ -137,8 +137,8 @@ class RegisterSaver {
137
137
#define RegisterSaver_LiveSpecialReg (regname ) \
138
138
{ RegisterSaver::special_reg, regname->encoding (), regname->as_VMReg () }
139
139
140
- #define RegisterSaver_LiveVSReg (regname ) \
141
- { RegisterSaver::vs_reg , regname->encoding (), regname->as_VMReg () }
140
+ #define RegisterSaver_LiveVecReg (regname ) \
141
+ { RegisterSaver::vec_reg , regname->encoding (), regname->as_VMReg () }
142
142
143
143
static const RegisterSaver::LiveRegType RegisterSaver_LiveRegs[] = {
144
144
// Live registers which get spilled to the stack. Register
@@ -220,42 +220,42 @@ static const RegisterSaver::LiveRegType RegisterSaver_LiveRegs[] = {
220
220
RegisterSaver_LiveIntReg ( R31 ) // must be the last register (see save/restore functions below)
221
221
};
222
222
223
- static const RegisterSaver::LiveRegType RegisterSaver_LiveVSRegs [] = {
223
+ static const RegisterSaver::LiveRegType RegisterSaver_LiveVecRegs [] = {
224
224
//
225
- // live vector scalar registers (optional, only these ones are used by C2):
225
+ // live vector registers (optional, only these ones are used by C2):
226
226
//
227
- RegisterSaver_LiveVSReg ( VSR32 ),
228
- RegisterSaver_LiveVSReg ( VSR33 ),
229
- RegisterSaver_LiveVSReg ( VSR34 ),
230
- RegisterSaver_LiveVSReg ( VSR35 ),
231
- RegisterSaver_LiveVSReg ( VSR36 ),
232
- RegisterSaver_LiveVSReg ( VSR37 ),
233
- RegisterSaver_LiveVSReg ( VSR38 ),
234
- RegisterSaver_LiveVSReg ( VSR39 ),
235
- RegisterSaver_LiveVSReg ( VSR40 ),
236
- RegisterSaver_LiveVSReg ( VSR41 ),
237
- RegisterSaver_LiveVSReg ( VSR42 ),
238
- RegisterSaver_LiveVSReg ( VSR43 ),
239
- RegisterSaver_LiveVSReg ( VSR44 ),
240
- RegisterSaver_LiveVSReg ( VSR45 ),
241
- RegisterSaver_LiveVSReg ( VSR46 ),
242
- RegisterSaver_LiveVSReg ( VSR47 ),
243
- RegisterSaver_LiveVSReg ( VSR48 ),
244
- RegisterSaver_LiveVSReg ( VSR49 ),
245
- RegisterSaver_LiveVSReg ( VSR50 ),
246
- RegisterSaver_LiveVSReg ( VSR51 ),
247
- RegisterSaver_LiveVSReg ( VSR52 ),
248
- RegisterSaver_LiveVSReg ( VSR53 ),
249
- RegisterSaver_LiveVSReg ( VSR54 ),
250
- RegisterSaver_LiveVSReg ( VSR55 ),
251
- RegisterSaver_LiveVSReg ( VSR56 ),
252
- RegisterSaver_LiveVSReg ( VSR57 ),
253
- RegisterSaver_LiveVSReg ( VSR58 ),
254
- RegisterSaver_LiveVSReg ( VSR59 ),
255
- RegisterSaver_LiveVSReg ( VSR60 ),
256
- RegisterSaver_LiveVSReg ( VSR61 ),
257
- RegisterSaver_LiveVSReg ( VSR62 ),
258
- RegisterSaver_LiveVSReg ( VSR63 )
227
+ RegisterSaver_LiveVecReg ( VR0 ),
228
+ RegisterSaver_LiveVecReg ( VR1 ),
229
+ RegisterSaver_LiveVecReg ( VR2 ),
230
+ RegisterSaver_LiveVecReg ( VR3 ),
231
+ RegisterSaver_LiveVecReg ( VR4 ),
232
+ RegisterSaver_LiveVecReg ( VR5 ),
233
+ RegisterSaver_LiveVecReg ( VR6 ),
234
+ RegisterSaver_LiveVecReg ( VR7 ),
235
+ RegisterSaver_LiveVecReg ( VR8 ),
236
+ RegisterSaver_LiveVecReg ( VR9 ),
237
+ RegisterSaver_LiveVecReg ( VR10 ),
238
+ RegisterSaver_LiveVecReg ( VR11 ),
239
+ RegisterSaver_LiveVecReg ( VR12 ),
240
+ RegisterSaver_LiveVecReg ( VR13 ),
241
+ RegisterSaver_LiveVecReg ( VR14 ),
242
+ RegisterSaver_LiveVecReg ( VR15 ),
243
+ RegisterSaver_LiveVecReg ( VR16 ),
244
+ RegisterSaver_LiveVecReg ( VR17 ),
245
+ RegisterSaver_LiveVecReg ( VR18 ),
246
+ RegisterSaver_LiveVecReg ( VR19 ),
247
+ RegisterSaver_LiveVecReg ( VR20 ),
248
+ RegisterSaver_LiveVecReg ( VR21 ),
249
+ RegisterSaver_LiveVecReg ( VR22 ),
250
+ RegisterSaver_LiveVecReg ( VR23 ),
251
+ RegisterSaver_LiveVecReg ( VR24 ),
252
+ RegisterSaver_LiveVecReg ( VR25 ),
253
+ RegisterSaver_LiveVecReg ( VR26 ),
254
+ RegisterSaver_LiveVecReg ( VR27 ),
255
+ RegisterSaver_LiveVecReg ( VR28 ),
256
+ RegisterSaver_LiveVecReg ( VR29 ),
257
+ RegisterSaver_LiveVecReg ( VR30 ),
258
+ RegisterSaver_LiveVecReg ( VR31 )
259
259
};
260
260
261
261
@@ -277,10 +277,10 @@ OopMap* RegisterSaver::push_frame_reg_args_and_save_live_registers(MacroAssemble
277
277
// calculate frame size
278
278
const int regstosave_num = sizeof (RegisterSaver_LiveRegs) /
279
279
sizeof (RegisterSaver::LiveRegType);
280
- const int vsregstosave_num = save_vectors ? (sizeof (RegisterSaver_LiveVSRegs ) /
280
+ const int vecregstosave_num = save_vectors ? (sizeof (RegisterSaver_LiveVecRegs ) /
281
281
sizeof (RegisterSaver::LiveRegType))
282
282
: 0 ;
283
- const int register_save_size = regstosave_num * reg_size + vsregstosave_num * vs_reg_size ;
283
+ const int register_save_size = regstosave_num * reg_size + vecregstosave_num * vec_reg_size ;
284
284
const int frame_size_in_bytes = align_up (register_save_size, frame::alignment_in_bytes)
285
285
+ frame::native_abi_reg_args_size;
286
286
@@ -298,8 +298,8 @@ OopMap* RegisterSaver::push_frame_reg_args_and_save_live_registers(MacroAssemble
298
298
299
299
// Save some registers in the last (non-vector) slots of the new frame so we
300
300
// can use them as scratch regs or to determine the return pc.
301
- __ std (R31, frame_size_in_bytes - reg_size - vsregstosave_num * vs_reg_size , R1_SP);
302
- __ std (R30, frame_size_in_bytes - 2 *reg_size - vsregstosave_num * vs_reg_size , R1_SP);
301
+ __ std (R31, frame_size_in_bytes - reg_size - vecregstosave_num * vec_reg_size , R1_SP);
302
+ __ std (R30, frame_size_in_bytes - 2 *reg_size - vecregstosave_num * vec_reg_size , R1_SP);
303
303
304
304
// save the flags
305
305
// Do the save_LR by hand and adjust the return pc if requested.
@@ -360,37 +360,37 @@ OopMap* RegisterSaver::push_frame_reg_args_and_save_live_registers(MacroAssemble
360
360
// the utilized instructions (PowerArchitecturePPC64).
361
361
assert (is_aligned (offset, StackAlignmentInBytes), " should be" );
362
362
if (PowerArchitecturePPC64 >= 10 ) {
363
- assert (is_even (vsregstosave_num ), " expectation" );
364
- for (int i = 0 ; i < vsregstosave_num ; i += 2 ) {
365
- int reg_num = RegisterSaver_LiveVSRegs [i].reg_num ;
366
- assert (RegisterSaver_LiveVSRegs [i + 1 ].reg_num == reg_num + 1 , " or use other instructions!" );
363
+ assert (is_even (vecregstosave_num ), " expectation" );
364
+ for (int i = 0 ; i < vecregstosave_num ; i += 2 ) {
365
+ int reg_num = RegisterSaver_LiveVecRegs [i].reg_num ;
366
+ assert (RegisterSaver_LiveVecRegs [i + 1 ].reg_num == reg_num + 1 , " or use other instructions!" );
367
367
368
- __ stxvp (as_VectorSRegister (reg_num), offset, R1_SP);
368
+ __ stxvp (as_VectorRegister (reg_num). to_vsr ( ), offset, R1_SP);
369
369
// Note: The contents were read in the same order (see loadV16_Power9 node in ppc.ad).
370
370
if (generate_oop_map) {
371
371
map->set_callee_saved (VMRegImpl::stack2reg (offset >> 2 ),
372
- RegisterSaver_LiveVSRegs [i LITTLE_ENDIAN_ONLY (+1 ) ].vmreg );
373
- map->set_callee_saved (VMRegImpl::stack2reg ((offset + vs_reg_size ) >> 2 ),
374
- RegisterSaver_LiveVSRegs [i BIG_ENDIAN_ONLY (+1 ) ].vmreg );
372
+ RegisterSaver_LiveVecRegs [i LITTLE_ENDIAN_ONLY (+1 ) ].vmreg );
373
+ map->set_callee_saved (VMRegImpl::stack2reg ((offset + vec_reg_size ) >> 2 ),
374
+ RegisterSaver_LiveVecRegs [i BIG_ENDIAN_ONLY (+1 ) ].vmreg );
375
375
}
376
- offset += (2 * vs_reg_size );
376
+ offset += (2 * vec_reg_size );
377
377
}
378
378
} else {
379
- for (int i = 0 ; i < vsregstosave_num ; i++) {
380
- int reg_num = RegisterSaver_LiveVSRegs [i].reg_num ;
379
+ for (int i = 0 ; i < vecregstosave_num ; i++) {
380
+ int reg_num = RegisterSaver_LiveVecRegs [i].reg_num ;
381
381
382
382
if (PowerArchitecturePPC64 >= 9 ) {
383
- __ stxv (as_VectorSRegister (reg_num), offset, R1_SP);
383
+ __ stxv (as_VectorRegister (reg_num)-> to_vsr ( ), offset, R1_SP);
384
384
} else {
385
385
__ li (R31, offset);
386
- __ stxvd2x (as_VectorSRegister (reg_num), R31, R1_SP);
386
+ __ stxvd2x (as_VectorRegister (reg_num)-> to_vsr ( ), R31, R1_SP);
387
387
}
388
388
// Note: The contents were read in the same order (see loadV16_Power8 / loadV16_Power9 node in ppc.ad).
389
389
if (generate_oop_map) {
390
- VMReg vsr = RegisterSaver_LiveVSRegs [i].vmreg ;
390
+ VMReg vsr = RegisterSaver_LiveVecRegs [i].vmreg ;
391
391
map->set_callee_saved (VMRegImpl::stack2reg (offset >> 2 ), vsr);
392
392
}
393
- offset += vs_reg_size ;
393
+ offset += vec_reg_size ;
394
394
}
395
395
}
396
396
@@ -411,10 +411,10 @@ void RegisterSaver::restore_live_registers_and_pop_frame(MacroAssembler* masm,
411
411
bool save_vectors) {
412
412
const int regstosave_num = sizeof (RegisterSaver_LiveRegs) /
413
413
sizeof (RegisterSaver::LiveRegType);
414
- const int vsregstosave_num = save_vectors ? (sizeof (RegisterSaver_LiveVSRegs ) /
414
+ const int vecregstosave_num = save_vectors ? (sizeof (RegisterSaver_LiveVecRegs ) /
415
415
sizeof (RegisterSaver::LiveRegType))
416
416
: 0 ;
417
- const int register_save_size = regstosave_num * reg_size + vsregstosave_num * vs_reg_size ;
417
+ const int register_save_size = regstosave_num * reg_size + vecregstosave_num * vec_reg_size ;
418
418
419
419
const int register_save_offset = frame_size_in_bytes - register_save_size;
420
420
@@ -456,26 +456,26 @@ void RegisterSaver::restore_live_registers_and_pop_frame(MacroAssembler* masm,
456
456
457
457
assert (is_aligned (offset, StackAlignmentInBytes), " should be" );
458
458
if (PowerArchitecturePPC64 >= 10 ) {
459
- for (int i = 0 ; i < vsregstosave_num ; i += 2 ) {
460
- int reg_num = RegisterSaver_LiveVSRegs [i].reg_num ;
461
- assert (RegisterSaver_LiveVSRegs [i + 1 ].reg_num == reg_num + 1 , " or use other instructions!" );
459
+ for (int i = 0 ; i < vecregstosave_num ; i += 2 ) {
460
+ int reg_num = RegisterSaver_LiveVecRegs [i].reg_num ;
461
+ assert (RegisterSaver_LiveVecRegs [i + 1 ].reg_num == reg_num + 1 , " or use other instructions!" );
462
462
463
- __ lxvp (as_VectorSRegister (reg_num), offset, R1_SP);
463
+ __ lxvp (as_VectorRegister (reg_num). to_vsr ( ), offset, R1_SP);
464
464
465
- offset += (2 * vs_reg_size );
465
+ offset += (2 * vec_reg_size );
466
466
}
467
467
} else {
468
- for (int i = 0 ; i < vsregstosave_num ; i++) {
469
- int reg_num = RegisterSaver_LiveVSRegs [i].reg_num ;
468
+ for (int i = 0 ; i < vecregstosave_num ; i++) {
469
+ int reg_num = RegisterSaver_LiveVecRegs [i].reg_num ;
470
470
471
471
if (PowerArchitecturePPC64 >= 9 ) {
472
- __ lxv (as_VectorSRegister (reg_num), offset, R1_SP);
472
+ __ lxv (as_VectorRegister (reg_num). to_vsr ( ), offset, R1_SP);
473
473
} else {
474
474
__ li (R31, offset);
475
- __ lxvd2x (as_VectorSRegister (reg_num), R31, R1_SP);
475
+ __ lxvd2x (as_VectorRegister (reg_num). to_vsr ( ), R31, R1_SP);
476
476
}
477
477
478
- offset += vs_reg_size ;
478
+ offset += vec_reg_size ;
479
479
}
480
480
}
481
481
@@ -486,7 +486,7 @@ void RegisterSaver::restore_live_registers_and_pop_frame(MacroAssembler* masm,
486
486
__ mtlr (R31);
487
487
488
488
// restore scratch register's value
489
- __ ld (R31, frame_size_in_bytes - reg_size - vsregstosave_num * vs_reg_size , R1_SP);
489
+ __ ld (R31, frame_size_in_bytes - reg_size - vecregstosave_num * vec_reg_size , R1_SP);
490
490
491
491
// pop the frame
492
492
__ addi (R1_SP, R1_SP, frame_size_in_bytes);
0 commit comments