]>
Commit | Line | Data |
---|---|---|
800eeca4 JW |
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 | ; |