Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / verif / diag / assembly / uarch / tlu / src / fcwt.j
// My custom weight file template.
// Weights available are : wt_hig, wt_med, wt_low, wt_nul
//
inst: trap_asr %rvar wt_low
| trap_asi %rvar wt_low
| tcc %rvar wt_low
| ldst_excp %rvar wt_med
| ldstasi_excp %rvar wt_med
| ldstasi_excp_z %rvar wt_med
| change_mode %rvar wt_low
| alu %rvar wt_low
| branches %rvar wt_high
| wrasi %rvar wt_low
| splash_fprs %rvar wt_low
| splash_pstate %rvar wt_med
| splash_hpstate %rvar wt_med
| splash_cwp %rvar wt_nul
| splash_gl %rvar wt_low
| splash_tt %rvar wt_nul
| stores %rvar wt_high
| sir %rvar wt_low
| splash_tick %rvar wt_med
| splash_cmpr %rvar wt_med
| splash_tba %rvar wt_med
| splash_htba %rvar wt_low
| splash_lsucnt %rvar wt_high
//| splash_decr %rvar wt_nul
| demap %rvar wt_high
| tagged %rvar wt_nul
| intvec %rvar wt_high
| intveclr %rvar wt_med
| xir %rvar wt_low
| mondo %rvar wt_low
| ibp %rvar wt_low
| iaw %rvar wt_low
| dvapa %rvar wt_low
| cmp %rvar wt_high
| donret %rvar wt_med
| pmu %rvar wt_low
#ijifndef NO_SPU
| cwq %rvar wt_med
| sma %rvar wt_low
#ijendif
| memptr %rvar wt_high
| pwr %rvar wt_nul
| skip %rvar wt_high
| fpinit %rvar wt_low
| jmptr %rvar wt_high
//| invtsb %rvar wt_low
//| tglhtw %rvar wt_nul
| unsuptte %rvar wt_nul
| blksts %rvar wt_high
//| vahole %rvar wt_nul
| brcommon %rvar wt_high
//| cerer %rvar wt_nul
//| ceter %rvar wt_nul
| ticken %rvar wt_nul
| frzjmp %rvar wt_med
| cancelint %rvar wt_med
;
#ijifdef TH_STRESS
stress : uLONG %ropr Ro_ldst_ptr | uBLK14 %ropr Ro_blksts | memptr_st
;
stress2 : intvec_st | uDBG3 %ropr Ro_ldst_ptr | uBLK14 %ropr Ro_blksts | loopz
;
memptr_st: tWRCCR_I
{
IJ_printf(th_stress, "memptr_%y_%d:\n", label);
if (label%3 == 0) { //
IJ_printf(th_stress, "\tset user_data_start, %%r31\n", Rv_memptr);
} else {
IJ_printf(th_stress, "\tset 0x%rx, %%r31\n", Rv_memptr);
}
label++;
}
;
intvec_st: uDIFFD
{
if (label%2) {
IJ_printf(th_stress, "\tnop\n\tnop\n\trd %%tick, %%r28\n");
IJ_printf(th_stress, "#if (defined PORTABLE_CORE || MAX_THREADS == 8)\n");
IJ_printf(th_stress, "\tsethi %%hi(0x3800), %%r27\n\tandn %%r28, %%r27, %%r28\n");
IJ_printf(th_stress, "#ifdef PORTABLE_CORE\n\t! Add CID to vector\n");
IJ_printf(th_stress, "\tta T_CHANGE_HPRIV\n");
IJ_printf(th_stress, "\tldxa [%%g0]0x63, %%r27\n\tsllx %%r27, 8, %%r27\n");
IJ_printf(th_stress, "\tor %%r27, %%r28, %%r28 \n#endif\n");
if(IJ_random()&0x1)
IJ_printf(th_stress, "\twrhpr %%g0, 0x%rx, %%hpstate ! ta T_CHANGE_NONHPRIV\n",Rv_wrhp_nonhp);
IJ_printf(th_stress, "#endif\n");
IJ_printf(th_stress, "\tsethi %%hi(0x30000), %%r27\n");
IJ_printf(th_stress, "\tandn %%r28, %%r27, %%r28\n");
if(label&0x1) {
IJ_printf(th_stress, "\tta T_CHANGE_HPRIV\n");
}
IJ_printf(th_stress, "\tstxa %%r28, [%%g0] 0x73\n");
} else {
IJ_printf(th_stress, "\tnop\n\tnop\n\tset 0x%x, %%r28\n", IJ_get_rvar_val32(Rv_intdisvec));
IJ_printf(th_stress, "#if (defined PORTABLE_CORE || MAX_THREADS == 8)\n");
IJ_printf(th_stress, "\tsethi %%hi(0x3800), %%r27\n\tandn %%r28, %%r27, %%r28\n");
IJ_printf(th_stress, "#ifdef PORTABLE_CORE\n\t! Add CID to vector\n");
IJ_printf(th_stress, "\tta T_CHANGE_HPRIV\n");
IJ_printf(th_stress, "\tldxa [%%g0]0x63, %%r27\n\tsllx %%r27, 8, %%r27\n");
IJ_printf(th_stress, "\tor %%r27, %%r28, %%r28 \n#endif\n");
if(IJ_random()&0x1)
IJ_printf(th_stress, "\twrhpr %%g0, 0x%rx, %%hpstate ! ta T_CHANGE_NONHPRIV\n",Rv_wrhp_nonhp);
IJ_printf(th_stress, "#endif\n" );
IJ_printf(th_stress, "\tstxa %%r28, [%%g0] 0x73\n");
}
if(random()&0x1) {
IJ_generate_from_token(1, th_stress, ijdefault, uDIFFD);
}
IJ_printf(th_stress, "intvec_st_%y_%d:\n", label);
label++;
}
;
#ijendif