1 print ".text\n\t.type _start,@", "function\n_start:\n\n";
3 @ldhint = ( "", ".nt1", ".nta" );
4 @ldspec = ( "", ".s", ".a", ".sa", ".c.clr", ".c.nc" );
5 @sthint = ( "", ".nta" );
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";
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";
35 foreach $s ("1", "2", "4", "8", "1.rel", "2.rel", "4.rel", "8.rel", "8.spill") {
37 print "\tst${s}${l} [r4] = r5\n";
38 print "\tst${s}${l} [r4] = r5, ", $i - 256, "\n";
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";
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";
68 # Floating Point Store
70 foreach $s ( "fs", "fd", "f8", "fe", "f.spill" ) {
72 print "\tst${s}${l} [r4] = f5\n";
73 print "\tst${s}${l} [r4] = f5, ", $i - 256, "\n";
79 # Floating Point Load Pair
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";
93 @lfhint = ( "", ".nt1", ".nt2", ".nta" );
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;
107 # Compare and Exchange
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";
120 foreach $s ( "1", "2", "4", "8" ) {
121 foreach $h (@ldhint) {
122 print "\txchg${s}${h} r4 = [r5], r6\n";
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";
141 foreach $e ( ".sig", ".exp", ".s", ".d" ) {
142 print "\tsetf${e} f4 = r5\n";
146 foreach $e ( ".sig", ".exp", ".s", ".d" ) {
147 print "\tgetf${e} r4 = f5\n";
151 # Speculation and Advanced Load Checkso
171 { .mii; alloc r4 = ar.pfs, 2, 10, 16, 16 }