diff options
Diffstat (limited to 'src/lib/libcrypto/bn/asm/s390x.S')
-rwxr-xr-x | src/lib/libcrypto/bn/asm/s390x.S | 86 |
1 files changed, 43 insertions, 43 deletions
diff --git a/src/lib/libcrypto/bn/asm/s390x.S b/src/lib/libcrypto/bn/asm/s390x.S index 8f45f5d513..43fcb79bc0 100755 --- a/src/lib/libcrypto/bn/asm/s390x.S +++ b/src/lib/libcrypto/bn/asm/s390x.S | |||
@@ -1,4 +1,4 @@ | |||
1 | .ident "s390x.S, version 1.0" | 1 | .ident "s390x.S, version 1.1" |
2 | // ==================================================================== | 2 | // ==================================================================== |
3 | // Written by Andy Polyakov <appro@fy.chalmers.se> for the OpenSSL | 3 | // Written by Andy Polyakov <appro@fy.chalmers.se> for the OpenSSL |
4 | // project. | 4 | // project. |
@@ -24,67 +24,67 @@ bn_mul_add_words: | |||
24 | bler %r14 // if (len<=0) return 0; | 24 | bler %r14 // if (len<=0) return 0; |
25 | 25 | ||
26 | stmg %r6,%r10,48(%r15) | 26 | stmg %r6,%r10,48(%r15) |
27 | lghi %r10,3 | ||
27 | lghi %r8,0 // carry = 0 | 28 | lghi %r8,0 // carry = 0 |
28 | srag %r10,%r4,2 // cnt=len/4 | 29 | nr %r10,%r4 // len%4 |
29 | jz .Loop1_madd | 30 | sra %r4,2 // cnt=len/4 |
31 | jz .Loop1_madd // carry is incidentally cleared if branch taken | ||
32 | algr zero,zero // clear carry | ||
30 | 33 | ||
31 | .Loop4_madd: | 34 | .Loop4_madd: |
32 | lg %r7,0(%r2,%r3) // ap[i] | 35 | lg %r7,0(%r2,%r3) // ap[i] |
33 | mlgr %r6,%r5 // *=w | 36 | mlgr %r6,%r5 // *=w |
34 | algr %r7,%r8 // +=carry | 37 | alcgr %r7,%r8 // +=carry |
35 | alcgr %r6,zero | 38 | alcgr %r6,zero |
36 | alg %r7,0(%r2,%r1) // +=rp[i] | 39 | alg %r7,0(%r2,%r1) // +=rp[i] |
37 | alcgr %r6,zero | ||
38 | stg %r7,0(%r2,%r1) // rp[i]= | 40 | stg %r7,0(%r2,%r1) // rp[i]= |
39 | 41 | ||
40 | lg %r9,8(%r2,%r3) | 42 | lg %r9,8(%r2,%r3) |
41 | mlgr %r8,%r5 | 43 | mlgr %r8,%r5 |
42 | algr %r9,%r6 | 44 | alcgr %r9,%r6 |
43 | alcgr %r8,zero | 45 | alcgr %r8,zero |
44 | alg %r9,8(%r2,%r1) | 46 | alg %r9,8(%r2,%r1) |
45 | alcgr %r8,zero | ||
46 | stg %r9,8(%r2,%r1) | 47 | stg %r9,8(%r2,%r1) |
47 | 48 | ||
48 | lg %r7,16(%r2,%r3) | 49 | lg %r7,16(%r2,%r3) |
49 | mlgr %r6,%r5 | 50 | mlgr %r6,%r5 |
50 | algr %r7,%r8 | 51 | alcgr %r7,%r8 |
51 | alcgr %r6,zero | 52 | alcgr %r6,zero |
52 | alg %r7,16(%r2,%r1) | 53 | alg %r7,16(%r2,%r1) |
53 | alcgr %r6,zero | ||
54 | stg %r7,16(%r2,%r1) | 54 | stg %r7,16(%r2,%r1) |
55 | 55 | ||
56 | lg %r9,24(%r2,%r3) | 56 | lg %r9,24(%r2,%r3) |
57 | mlgr %r8,%r5 | 57 | mlgr %r8,%r5 |
58 | algr %r9,%r6 | 58 | alcgr %r9,%r6 |
59 | alcgr %r8,zero | 59 | alcgr %r8,zero |
60 | alg %r9,24(%r2,%r1) | 60 | alg %r9,24(%r2,%r1) |
61 | alcgr %r8,zero | ||
62 | stg %r9,24(%r2,%r1) | 61 | stg %r9,24(%r2,%r1) |
63 | 62 | ||
64 | la %r2,32(%r2) // i+=4 | 63 | la %r2,32(%r2) // i+=4 |
65 | brct %r10,.Loop4_madd | 64 | brct %r4,.Loop4_madd |
66 | 65 | ||
67 | lghi %r10,3 | 66 | la %r10,1(%r10) // see if len%4 is zero ... |
68 | nr %r4,%r10 // cnt=len%4 | 67 | brct %r10,.Loop1_madd // without touching condition code:-) |
69 | jz .Lend_madd | 68 | |
69 | .Lend_madd: | ||
70 | alcgr %r8,zero // collect carry bit | ||
71 | lgr %r2,%r8 | ||
72 | lmg %r6,%r10,48(%r15) | ||
73 | br %r14 | ||
70 | 74 | ||
71 | .Loop1_madd: | 75 | .Loop1_madd: |
72 | lg %r7,0(%r2,%r3) // ap[i] | 76 | lg %r7,0(%r2,%r3) // ap[i] |
73 | mlgr %r6,%r5 // *=w | 77 | mlgr %r6,%r5 // *=w |
74 | algr %r7,%r8 // +=carry | 78 | alcgr %r7,%r8 // +=carry |
75 | alcgr %r6,zero | 79 | alcgr %r6,zero |
76 | alg %r7,0(%r2,%r1) // +=rp[i] | 80 | alg %r7,0(%r2,%r1) // +=rp[i] |
77 | alcgr %r6,zero | ||
78 | stg %r7,0(%r2,%r1) // rp[i]= | 81 | stg %r7,0(%r2,%r1) // rp[i]= |
79 | 82 | ||
80 | lgr %r8,%r6 | 83 | lgr %r8,%r6 |
81 | la %r2,8(%r2) // i++ | 84 | la %r2,8(%r2) // i++ |
82 | brct %r4,.Loop1_madd | 85 | brct %r10,.Loop1_madd |
83 | 86 | ||
84 | .Lend_madd: | 87 | j .Lend_madd |
85 | lgr %r2,%r8 | ||
86 | lmg %r6,%r10,48(%r15) | ||
87 | br %r14 | ||
88 | .size bn_mul_add_words,.-bn_mul_add_words | 88 | .size bn_mul_add_words,.-bn_mul_add_words |
89 | 89 | ||
90 | // BN_ULONG bn_mul_words(BN_ULONG *r2,BN_ULONG *r3,int r4,BN_ULONG r5); | 90 | // BN_ULONG bn_mul_words(BN_ULONG *r2,BN_ULONG *r3,int r4,BN_ULONG r5); |
@@ -99,57 +99,57 @@ bn_mul_words: | |||
99 | bler %r14 // if (len<=0) return 0; | 99 | bler %r14 // if (len<=0) return 0; |
100 | 100 | ||
101 | stmg %r6,%r10,48(%r15) | 101 | stmg %r6,%r10,48(%r15) |
102 | lghi %r10,3 | ||
102 | lghi %r8,0 // carry = 0 | 103 | lghi %r8,0 // carry = 0 |
103 | srag %r10,%r4,2 // cnt=len/4 | 104 | nr %r10,%r4 // len%4 |
104 | jz .Loop1_mul | 105 | sra %r4,2 // cnt=len/4 |
106 | jz .Loop1_mul // carry is incidentally cleared if branch taken | ||
107 | algr zero,zero // clear carry | ||
105 | 108 | ||
106 | .Loop4_mul: | 109 | .Loop4_mul: |
107 | lg %r7,0(%r2,%r3) // ap[i] | 110 | lg %r7,0(%r2,%r3) // ap[i] |
108 | mlgr %r6,%r5 // *=w | 111 | mlgr %r6,%r5 // *=w |
109 | algr %r7,%r8 // +=carry | 112 | alcgr %r7,%r8 // +=carry |
110 | alcgr %r6,zero | ||
111 | stg %r7,0(%r2,%r1) // rp[i]= | 113 | stg %r7,0(%r2,%r1) // rp[i]= |
112 | 114 | ||
113 | lg %r9,8(%r2,%r3) | 115 | lg %r9,8(%r2,%r3) |
114 | mlgr %r8,%r5 | 116 | mlgr %r8,%r5 |
115 | algr %r9,%r6 | 117 | alcgr %r9,%r6 |
116 | alcgr %r8,zero | ||
117 | stg %r9,8(%r2,%r1) | 118 | stg %r9,8(%r2,%r1) |
118 | 119 | ||
119 | lg %r7,16(%r2,%r3) | 120 | lg %r7,16(%r2,%r3) |
120 | mlgr %r6,%r5 | 121 | mlgr %r6,%r5 |
121 | algr %r7,%r8 | 122 | alcgr %r7,%r8 |
122 | alcgr %r6,zero | ||
123 | stg %r7,16(%r2,%r1) | 123 | stg %r7,16(%r2,%r1) |
124 | 124 | ||
125 | lg %r9,24(%r2,%r3) | 125 | lg %r9,24(%r2,%r3) |
126 | mlgr %r8,%r5 | 126 | mlgr %r8,%r5 |
127 | algr %r9,%r6 | 127 | alcgr %r9,%r6 |
128 | alcgr %r8,zero | ||
129 | stg %r9,24(%r2,%r1) | 128 | stg %r9,24(%r2,%r1) |
130 | 129 | ||
131 | la %r2,32(%r2) // i+=4 | 130 | la %r2,32(%r2) // i+=4 |
132 | brct %r10,.Loop4_mul | 131 | brct %r4,.Loop4_mul |
133 | 132 | ||
134 | lghi %r10,3 | 133 | la %r10,1(%r10) // see if len%4 is zero ... |
135 | nr %r4,%r10 // cnt=len%4 | 134 | brct %r10,.Loop1_mul // without touching condition code:-) |
136 | jz .Lend_mul | 135 | |
136 | .Lend_mul: | ||
137 | alcgr %r8,zero // collect carry bit | ||
138 | lgr %r2,%r8 | ||
139 | lmg %r6,%r10,48(%r15) | ||
140 | br %r14 | ||
137 | 141 | ||
138 | .Loop1_mul: | 142 | .Loop1_mul: |
139 | lg %r7,0(%r2,%r3) // ap[i] | 143 | lg %r7,0(%r2,%r3) // ap[i] |
140 | mlgr %r6,%r5 // *=w | 144 | mlgr %r6,%r5 // *=w |
141 | algr %r7,%r8 // +=carry | 145 | alcgr %r7,%r8 // +=carry |
142 | alcgr %r6,zero | ||
143 | stg %r7,0(%r2,%r1) // rp[i]= | 146 | stg %r7,0(%r2,%r1) // rp[i]= |
144 | 147 | ||
145 | lgr %r8,%r6 | 148 | lgr %r8,%r6 |
146 | la %r2,8(%r2) // i++ | 149 | la %r2,8(%r2) // i++ |
147 | brct %r4,.Loop1_mul | 150 | brct %r10,.Loop1_mul |
148 | 151 | ||
149 | .Lend_mul: | 152 | j .Lend_mul |
150 | lgr %r2,%r8 | ||
151 | lmg %r6,%r10,48(%r15) | ||
152 | br %r14 | ||
153 | .size bn_mul_words,.-bn_mul_words | 153 | .size bn_mul_words,.-bn_mul_words |
154 | 154 | ||
155 | // void bn_sqr_words(BN_ULONG *r2,BN_ULONG *r2,int r4) | 155 | // void bn_sqr_words(BN_ULONG *r2,BN_ULONG *r2,int r4) |