Home | History | Annotate | Download | only in ia64
      1 print ".text\n\t.type _start,@", "function\n_start:\n\n";
      2 
      3 @ldhint = ( "", ".nt1", ".nta" );
      4 @ldspec = ( "", ".s", ".a", ".sa", ".c.clr", ".c.nc" );
      5 @sthint = ( "", ".nta" );
      6 
      7 $i = 0;
      8 
      9 # Integer Load
     10 
     11 foreach $s ( "1", "2", "4", "8" ) {
     12   foreach $e (@ldspec, ".bias", ".acq", ".c.clr.acq") {
     13     foreach $l (@ldhint) {
     14       print "\tld${s}${e}${l} r4 = [r5]\n";
     15       print "\tld${s}${e}${l} r4 = [r5], r6\n";
     16       print "\tld${s}${e}${l} r4 = [r5], ", $i - 256, "\n";
     17       $i = ($i + 13) % 512;
     18     }
     19     print "\n";
     20   }
     21 }
     22 
     23 # Integer Fill
     24 
     25 for $l (@ldhint) {
     26   print "\tld8.fill${l} r4 = [r5]\n";
     27   print "\tld8.fill${l} r4 = [r5], r6\n";
     28   print "\tld8.fill${l} r4 = [r5], ", $i - 256, "\n";
     29   $i = ($i + 13) % 512;
     30 }
     31 print "\n";
     32 
     33 # Integer Store
     34 
     35 foreach $s ("1", "2", "4", "8", "1.rel", "2.rel", "4.rel", "8.rel", "8.spill") {
     36   for $l (@sthint) {
     37     print "\tst${s}${l} [r4] = r5\n";
     38     print "\tst${s}${l} [r4] = r5, ", $i - 256, "\n";
     39     $i = ($i + 13) % 512;
     40   }
     41   print "\n";
     42 }
     43 
     44 # Floating Point Load
     45 
     46 foreach $s ( "fs", "fd", "f8", "fe" ) {
     47   foreach $e (@ldspec) {
     48     foreach $l (@ldhint) {
     49       print "\tld${s}${e}${l} f4 = [r5]\n";
     50       print "\tld${s}${e}${l} f4 = [r5], r6\n";
     51       print "\tld${s}${e}${l} f4 = [r5], ", $i - 256, "\n";
     52       $i = ($i + 13) % 512;
     53     }
     54     print "\n";
     55   }
     56 }
     57 
     58 # Floating Point Fill
     59 
     60 for $l (@ldhint) {
     61   print "\tldf.fill${l} f4 = [r5]\n";
     62   print "\tldf.fill${l} f4 = [r5], r6\n";
     63   print "\tldf.fill${l} f4 = [r5], ", $i - 256, "\n";
     64   $i = ($i + 13) % 512;
     65 }
     66 print "\n";
     67 
     68 # Floating Point Store
     69 
     70 foreach $s ( "fs", "fd", "f8", "fe", "f.spill" ) {
     71   for $l (@sthint) {
     72     print "\tst${s}${l} [r4] = f5\n";
     73     print "\tst${s}${l} [r4] = f5, ", $i - 256, "\n";
     74     $i = ($i + 13) % 512;
     75   }
     76   print "\n";
     77 }
     78 
     79 # Floating Point Load Pair
     80 
     81 foreach $s ( "fps", "fpd", "fp8" ) {
     82   foreach $e (@ldspec) {
     83     foreach $l (@ldhint) {
     84       print "\tld${s}${e}${l} f4, f5 = [r5]\n";
     85       print "\tld${s}${e}${l} f4, f5 = [r5], ", ($s eq "fps" ? 8 : 16), "\n";
     86     }
     87     print "\n";
     88   }
     89 }
     90 
     91 # Line Prefetch
     92 
     93 @lfhint = ( "", ".nt1", ".nt2", ".nta" );
     94 
     95 foreach $e ( "", ".excl" ) {
     96   foreach $f ( "", ".fault" ) {
     97     foreach $h (@lfhint) {
     98       print "\tlfetch${f}${e}${h} [r4]\n";
     99       print "\tlfetch${f}${e}${h} [r4], r5\n";
    100       print "\tlfetch${f}${e}${h} [r4], ", $i - 256, "\n";
    101       $i = ($i + 13) % 512;
    102     }
    103     print "\n";
    104   }
    105 }
    106 
    107 # Compare and Exchange
    108 
    109 foreach $s ( "1", "2", "4", "8" ) {
    110   foreach $e ( ".acq", ".rel" ) {
    111     foreach $h (@ldhint) {
    112       print "\tcmpxchg${s}${e}${h} r4 = [r5], r6, ar.ccv\n";
    113     }
    114     print "\n";
    115   }
    116 }
    117 
    118 # Exchange
    119 
    120 foreach $s ( "1", "2", "4", "8" ) {
    121   foreach $h (@ldhint) {
    122     print "\txchg${s}${h} r4 = [r5], r6\n";
    123   }
    124   print "\n";
    125 }
    126 
    127 # Fetch and Add
    128 
    129 $i = 0;
    130 @inc3 = ( -16, -8, -4, -1, 1, 4, 8, 16 );
    131 foreach $s ( "4.acq", "8.acq", "4.rel", "8.rel" ) {
    132   foreach $h (@ldhint) {
    133     print "\tfetchadd${s}${h} r4 = [r5], ", $inc3[$i], "\n";
    134     $i = ($i + 1) % 8;
    135   }
    136   print "\n";
    137 }
    138 
    139 # Get/Set FR
    140 
    141 foreach $e ( ".sig", ".exp", ".s", ".d" ) {
    142   print "\tsetf${e} f4 = r5\n";
    143 }
    144 print "\n";
    145 
    146 foreach $e ( ".sig", ".exp", ".s", ".d" ) {
    147   print "\tgetf${e} r4 = f5\n";
    148 }
    149 print "\n";
    150 
    151 # Speculation and Advanced Load Checkso
    152 
    153 print <<END
    154 	chk.s.m r4, _start
    155 	chk.s f4, _start
    156 	chk.a.nc r4, _start
    157 	chk.a.clr r4, _start
    158 	chk.a.nc f4, _start
    159 	chk.a.clr f4, _start
    160 
    161 	invala
    162 	fwb
    163 	mf
    164 	mf.a
    165 	srlz.d
    166 	srlz.i
    167 	sync.i
    168 	nop.m 0
    169 	nop.i 0
    170 
    171 	{ .mii; alloc r4 = ar.pfs, 2, 10, 16, 16 }
    172 
    173 	{ .mii; flushrs }
    174 	{ .mii; loadrs }
    175 
    176 	invala.e r4
    177 	invala.e f4
    178 
    179 	fc r4
    180 	ptc.e r4
    181 
    182 	break.m 0
    183 	break.m 0x1ffff
    184 
    185 	nop.m 0
    186 	break.m 0x1ffff
    187 
    188 	probe.r r4 = r5, r6
    189 	probe.w r4 = r5, r6
    190 
    191 	probe.r r4 = r5, 0
    192 	probe.w r4 = r5, 1
    193 
    194 	probe.r.fault r3, 2
    195 	probe.w.fault r3, 3
    196 	probe.rw.fault r3, 0
    197 
    198 	itc.d r8
    199 	itc.i r9
    200 
    201 	sum 0x1234
    202 	rum 0x5aaaaa
    203 	ssm 0xffffff
    204 	rsm 0x400000
    205 
    206 	ptc.l r4, r5
    207 	ptc.g r4, r5
    208 	ptc.ga r4, r5
    209 	ptr.d r4, r5
    210 	ptr.i r4, r5
    211 
    212 	thash r4 = r5
    213 	ttag r4 = r5
    214 	tpa r4 = r5
    215 	tak r4 = r5
    216 
    217 END
    218 ;
    219