Commit | Line | Data |
---|---|---|
800eeca4 JW |
1 | @ph = ( "", ".few", ".many" ); |
2 | @bwh = ( ".sptk", ".spnt", ".dptk", ".dpnt" ); | |
3 | @dh = ( "", ".clr" ); | |
4 | ||
5 | @iprel = ( ".cond", ".wexit", ".wtop", ".cloop", ".cexit", ".ctop", ".call" ); | |
6 | @indir = ( ".cond", ".ia", ".ret", ".call" ); | |
7 | %noqual = ( ".ia", 1, ".cloop", 1, ".ctop", 1, ".cexit", 1 ); | |
8 | %slottwo = ( ".cloop", 1, ".ctop", 1, ".cexit", 1, ".wtop", 1, ".wexit", 1 ); | |
9 | ||
10 | print ".L0:\n\n"; | |
11 | ||
12 | foreach $i (@iprel) { | |
13 | $call = ($i eq ".call" ? "b0 = " : ""); | |
14 | foreach $b (@bwh) { | |
15 | foreach $p (@ph) { | |
16 | foreach $d (@dh) { | |
17 | if ($slottwo{$i}) { | |
18 | if (!$noqual{$i}) { | |
19 | print ("\t{ .bbb; (p2) br${i}${b}${p}${d} ${call}.L1 ;; }\n"); | |
20 | } | |
21 | print ("\t{ .bbb; br${i}${b}${p}${d} ${call}.L1 ;; }\n"); | |
22 | } else { | |
23 | print ("\t{ .bbb; nop.b 0\n"); | |
24 | if (!$noqual{$i}) { | |
25 | print ("(p2)\tbr${i}${b}${p}${d} ${call}.L1\n"); | |
26 | } else { | |
27 | print ("\tnop.b 0\n"); | |
28 | } | |
29 | print ("\tbr${i}${b}${p}${d} ${call}.L0\n"); | |
30 | print ("\t;; }\n"); | |
31 | } | |
32 | } | |
33 | } | |
34 | } | |
35 | print "\n"; | |
36 | } | |
37 | ||
38 | foreach $i (@indir) { | |
39 | $call = ($i eq ".call" ? "b0 = " : ""); | |
40 | foreach $b (@bwh) { | |
41 | foreach $p (@ph) { | |
42 | foreach $d (@dh) { | |
43 | print ("\t{ .bbb; nop.b 0;\n"); | |
44 | if (!$noqual{$i}) { | |
45 | print ("(p2)\tbr${i}${b}${p}${d} ${call}b2\n"); | |
46 | } else { | |
47 | print ("\tnop.b 0\n"); | |
48 | } | |
49 | print ("\tbr${i}${b}${p}${d} ${call}b2\n"); | |
50 | print ("\t;; }\n"); | |
51 | } | |
52 | } | |
53 | } | |
54 | print "\n"; | |
55 | } | |
56 | ||
57 | @ih = ( "", ".imp" ); | |
58 | @ipwh = ( ".sptk", ".loop", ".dptk", ".exit" ); | |
59 | @indwh = ( ".sptk", ".dptk" ); | |
60 | ||
61 | $CTR = 2; | |
62 | ||
63 | foreach $w (@ipwh) { | |
64 | foreach $i (@ih) { | |
65 | print ("\t{ .bbb; break.b 0; nop.b 0\n"); | |
66 | print ("\tbrp${w}${i} .L0, .L${CTR}\n"); | |
67 | print ("\t;; }\n"); | |
68 | } | |
69 | print (".L${CTR}:\n"); | |
70 | ++$CTR; | |
71 | } | |
72 | ||
73 | print "\n"; | |
74 | ||
75 | foreach $b ("", ".ret") { | |
76 | foreach $w (@indwh) { | |
77 | foreach $i (@ih) { | |
78 | print ("\t{ .bbb; break.b 0; nop.b 0\n"); | |
79 | print ("\tbrp${b}${w}${i} b3, .L${CTR}\n"); | |
80 | print ("\t;; }\n"); | |
81 | } | |
82 | print (".L${CTR}:\n"); | |
83 | ++$CTR; | |
84 | } | |
85 | print "\n"; | |
86 | } | |
87 | ||
88 | print ".space 5888\n"; | |
89 | ||
90 | @last = ( "cover", "clrrrb", "clrrrb.pr", "rfi", "bsw.0", "bsw.1", "epc" ); | |
91 | foreach $i (@last) { | |
92 | print "\t{ .bbb; nop.b 0; nop.b 0; $i ;; }\n"; | |
93 | } | |
94 | ||
95 | print "\n.L1:\n"; |