@@ -479,29 +479,10 @@ void VM_Version::determine_features() {
479479 // Emit code.
480480 void (*test)(address addr, uint64_t offset)=(void (*)(address addr, uint64_t offset))(void *)a->function_entry ();
481481 uint32_t *code = (uint32_t *)a->pc ();
482- // Don't use R0 in ldarx.
483482 // Keep R3_ARG1 unmodified, it contains &field (see below).
484483 // Keep R4_ARG2 unmodified, it contains offset = 0 (see below).
485- a->fsqrt (F3, F4); // code[0] -> fsqrt_m
486- a->fsqrts (F3, F4); // code[1] -> fsqrts_m
487- a->isel (R7, R5, R6, 0 ); // code[2] -> isel_m
488- a->ldarx_unchecked (R7, R3_ARG1, R4_ARG2, 1 ); // code[3] -> lxarx_m
489- a->cmpb (R7, R5, R6); // code[4] -> cmpb
490- a->popcntb (R7, R5); // code[5] -> popcntb
491- a->popcntw (R7, R5); // code[6] -> popcntw
492- a->fcfids (F3, F4); // code[7] -> fcfids
493- a->vand (VR0, VR0, VR0); // code[8] -> vand
494- // arg0 of lqarx must be an even register, (arg1 + arg2) must be a multiple of 16
495- a->lqarx_unchecked (R6, R3_ARG1, R4_ARG2, 1 ); // code[9] -> lqarx_m
496- a->vcipher (VR0, VR1, VR2); // code[10] -> vcipher
497- a->vpmsumb (VR0, VR1, VR2); // code[11] -> vpmsumb
498- a->mfdscr (R0); // code[12] -> mfdscr
499- a->lxvd2x (VSR0, R3_ARG1); // code[13] -> vsx
500- a->ldbrx (R7, R3_ARG1, R4_ARG2); // code[14] -> ldbrx
501- a->stdbrx (R7, R3_ARG1, R4_ARG2); // code[15] -> stdbrx
502- a->vshasigmaw (VR0, VR1, 1 , 0xF ); // code[16] -> vshasig
503- a->darn (R7); // code[17] -> darn
504- a->brw (R5, R6); // code[18] -> brw
484+ a->darn (R7);
485+ a->brw (R5, R6);
505486 a->blr ();
506487
507488 // Emit function to set one cache line to zero. Emit function descriptor and get pointer to it.
@@ -536,23 +517,6 @@ void VM_Version::determine_features() {
536517
537518 // determine which instructions are legal.
538519 int feature_cntr = 0 ;
539- if (code[feature_cntr++]) features |= fsqrt_m;
540- if (code[feature_cntr++]) features |= fsqrts_m;
541- if (code[feature_cntr++]) features |= isel_m;
542- if (code[feature_cntr++]) features |= lxarxeh_m;
543- if (code[feature_cntr++]) features |= cmpb_m;
544- if (code[feature_cntr++]) features |= popcntb_m;
545- if (code[feature_cntr++]) features |= popcntw_m;
546- if (code[feature_cntr++]) features |= fcfids_m;
547- if (code[feature_cntr++]) features |= vand_m;
548- if (code[feature_cntr++]) features |= lqarx_m;
549- if (code[feature_cntr++]) features |= vcipher_m;
550- if (code[feature_cntr++]) features |= vpmsumb_m;
551- if (code[feature_cntr++]) features |= mfdscr_m;
552- if (code[feature_cntr++]) features |= vsx_m;
553- if (code[feature_cntr++]) features |= ldbrx_m;
554- if (code[feature_cntr++]) features |= stdbrx_m;
555- if (code[feature_cntr++]) features |= vshasig_m;
556520 if (code[feature_cntr++]) features |= darn_m;
557521 if (code[feature_cntr++]) features |= brw_m;
558522
0 commit comments