and added files
[bcm963xx.git] / userapps / opensource / openssl / crypto / bn / asm / alpha / sqr_c8.pl
1 #!/usr/local/bin/perl
2 # alpha assember 
3
4 sub bn_sqr_comba8
5         {
6         local($name)=@_;
7         local(@a,@b,$r,$c0,$c1,$c2);
8
9         $cnt=1;
10         &init_pool(2);
11
12         $rp=&wparam(0);
13         $ap=&wparam(1);
14
15         &function_begin($name,"");
16
17         &comment("");
18
19         &ld(($a[0])=&NR(1),&QWPw(0,$ap));
20         &ld(($a[1])=&NR(1),&QWPw(1,$ap));
21         &ld(($a[2])=&NR(1),&QWPw(2,$ap));
22         &ld(($a[3])=&NR(1),&QWPw(3,$ap));
23         &ld(($a[4])=&NR(1),&QWPw(4,$ap));
24         &ld(($a[5])=&NR(1),&QWPw(5,$ap));
25         &ld(($a[6])=&NR(1),&QWPw(6,$ap));
26         &ld(($a[7])=&NR(1),&QWPw(7,$ap)); &FR($ap);
27
28         ($c0,$c1,$c2)=&NR(3);
29
30         &mov("zero",$c2);
31         &mul($a[0],$a[0],$c0);
32         &muh($a[0],$a[0],$c1);
33         &st($c0,&QWPw(0,$rp));
34         ($c0,$c1,$c2)=($c1,$c2,$c0);
35         &mov("zero",$c2);
36
37         &sqr_add_c2($a[1],$a[0],$c0,$c1,$c2);
38         &st($c0,&QWPw(1,$rp));
39         ($c0,$c1,$c2)=($c1,$c2,$c0);
40         &mov("zero",$c2);
41
42         &sqr_add_c($a[1],$c0,$c1,$c2);
43         &sqr_add_c2($a[2],$a[0],$c0,$c1,$c2);
44         &st($c0,&QWPw(2,$rp));
45         ($c0,$c1,$c2)=($c1,$c2,$c0);
46         &mov("zero",$c2);
47
48         &sqr_add_c2($a[2],$a[1],$c0,$c1,$c2);
49         &sqr_add_c2($a[3],$a[0],$c0,$c1,$c2);
50         &st($c0,&QWPw(3,$rp));
51         ($c0,$c1,$c2)=($c1,$c2,$c0);
52         &mov("zero",$c2);
53
54         &sqr_add_c($a[2],$c0,$c1,$c2);
55         &sqr_add_c2($a[3],$a[1],$c0,$c1,$c2);
56         &sqr_add_c2($a[4],$a[0],$c0,$c1,$c2);
57         &st($c0,&QWPw(4,$rp));
58         ($c0,$c1,$c2)=($c1,$c2,$c0);
59         &mov("zero",$c2);
60
61         &sqr_add_c2($a[3],$a[2],$c0,$c1,$c2);
62         &sqr_add_c2($a[4],$a[1],$c0,$c1,$c2);
63         &sqr_add_c2($a[5],$a[0],$c0,$c1,$c2);
64         &st($c0,&QWPw(5,$rp));
65         ($c0,$c1,$c2)=($c1,$c2,$c0);
66         &mov("zero",$c2);
67
68         &sqr_add_c($a[3],$c0,$c1,$c2);
69         &sqr_add_c2($a[4],$a[2],$c0,$c1,$c2);
70         &sqr_add_c2($a[5],$a[1],$c0,$c1,$c2);
71         &sqr_add_c2($a[6],$a[0],$c0,$c1,$c2);
72         &st($c0,&QWPw(6,$rp));
73         ($c0,$c1,$c2)=($c1,$c2,$c0);
74         &mov("zero",$c2);
75
76         &sqr_add_c2($a[4],$a[3],$c0,$c1,$c2);
77         &sqr_add_c2($a[5],$a[2],$c0,$c1,$c2);
78         &sqr_add_c2($a[6],$a[1],$c0,$c1,$c2);
79         &sqr_add_c2($a[7],$a[0],$c0,$c1,$c2);
80         &st($c0,&QWPw(7,$rp));
81         ($c0,$c1,$c2)=($c1,$c2,$c0);
82         &mov("zero",$c2);
83
84         &sqr_add_c($a[4],$c0,$c1,$c2);
85         &sqr_add_c2($a[5],$a[3],$c0,$c1,$c2);
86         &sqr_add_c2($a[6],$a[2],$c0,$c1,$c2);
87         &sqr_add_c2($a[7],$a[1],$c0,$c1,$c2);
88         &st($c0,&QWPw(8,$rp));
89         ($c0,$c1,$c2)=($c1,$c2,$c0);
90         &mov("zero",$c2);
91
92         &sqr_add_c2($a[5],$a[4],$c0,$c1,$c2);
93         &sqr_add_c2($a[6],$a[3],$c0,$c1,$c2);
94         &sqr_add_c2($a[7],$a[2],$c0,$c1,$c2);
95         &st($c0,&QWPw(9,$rp));
96         ($c0,$c1,$c2)=($c1,$c2,$c0);
97         &mov("zero",$c2);
98
99         &sqr_add_c($a[5],$c0,$c1,$c2);
100         &sqr_add_c2($a[6],$a[4],$c0,$c1,$c2);
101         &sqr_add_c2($a[7],$a[3],$c0,$c1,$c2);
102         &st($c0,&QWPw(10,$rp));
103         ($c0,$c1,$c2)=($c1,$c2,$c0);
104         &mov("zero",$c2);
105
106         &sqr_add_c2($a[6],$a[5],$c0,$c1,$c2);
107         &sqr_add_c2($a[7],$a[4],$c0,$c1,$c2);
108         &st($c0,&QWPw(11,$rp));
109         ($c0,$c1,$c2)=($c1,$c2,$c0);
110         &mov("zero",$c2);
111
112         &sqr_add_c($a[6],$c0,$c1,$c2);
113         &sqr_add_c2($a[7],$a[5],$c0,$c1,$c2);
114         &st($c0,&QWPw(12,$rp));
115         ($c0,$c1,$c2)=($c1,$c2,$c0);
116         &mov("zero",$c2);
117
118         &sqr_add_c2($a[7],$a[6],$c0,$c1,$c2);
119         &st($c0,&QWPw(13,$rp));
120         ($c0,$c1,$c2)=($c1,$c2,$c0);
121         &mov("zero",$c2);
122
123         &sqr_add_c($a[7],$c0,$c1,$c2);
124         &st($c0,&QWPw(14,$rp));
125         &st($c1,&QWPw(15,$rp));
126
127         &function_end($name);
128
129         &fin_pool;
130         }
131
132 1;