File tree Expand file tree Collapse file tree 12 files changed +150
-48
lines changed Expand file tree Collapse file tree 12 files changed +150
-48
lines changed Original file line number Diff line number Diff line change @@ -3075,11 +3075,19 @@ __bn_sqrx8x_internal:
30753075
30763076.align 32
30773077.Lsqrx8x_break:
3078- subq 16 +8 (%rsp ),%r8
3078+ xorq %rbp ,%rbp
3079+ subq 16 +8 (%rsp ),%rbx
3080+ adcxq %rbp ,%r8
30793081 movq 24 +8 (%rsp ),%rcx
3082+ adcxq %rbp ,%r9
30803083 movq 0 (%rsi ),%rdx
3081- xorl %ebp , %ebp
3084+ adcq $0 , %r10
30823085 movq %r8 ,0 (%rdi )
3086+ adcq $0 ,%r11
3087+ adcq $0 ,%r12
3088+ adcq $0 ,%r13
3089+ adcq $0 ,%r14
3090+ adcq $0 ,%r15
30833091 cmpq %rcx ,%rdi
30843092 je .Lsqrx8x_outer_loop
30853093
Original file line number Diff line number Diff line change @@ -1036,19 +1036,18 @@ __ecp_nistz256_sqr_montx:
10361036 adoxq %rbp ,%r13
10371037.byte 0x67 ,0x67
10381038 mulxq %rdx ,%rcx ,%rax
1039- movq %r8 ,%rdx
1039+ movq .Lpoly+ 24 ( %rip ) ,%rdx
10401040 adoxq %rcx ,%r14
10411041 shlxq %rsi ,%r8 ,%rcx
10421042 adoxq %rax ,%r15
10431043 shrxq %rsi ,%r8 ,%rax
1044- movq .Lpoly+ 24 ( %rip ) ,%rbp
1044+ movq %rdx ,%rbp
10451045
10461046
10471047 addq %rcx ,%r9
10481048 adcq %rax ,%r10
10491049
1050- mulxq %rbp ,%rcx ,%r8
1051- movq %r9 ,%rdx
1050+ mulxq %r8 ,%rcx ,%r8
10521051 adcq %rcx ,%r11
10531052 shlxq %rsi ,%r9 ,%rcx
10541053 adcq $0 ,%r8
@@ -1058,8 +1057,7 @@ __ecp_nistz256_sqr_montx:
10581057 addq %rcx ,%r10
10591058 adcq %rax ,%r11
10601059
1061- mulxq %rbp ,%rcx ,%r9
1062- movq %r10 ,%rdx
1060+ mulxq %r9 ,%rcx ,%r9
10631061 adcq %rcx ,%r8
10641062 shlxq %rsi ,%r10 ,%rcx
10651063 adcq $0 ,%r9
@@ -1069,8 +1067,7 @@ __ecp_nistz256_sqr_montx:
10691067 addq %rcx ,%r11
10701068 adcq %rax ,%r8
10711069
1072- mulxq %rbp ,%rcx ,%r10
1073- movq %r11 ,%rdx
1070+ mulxq %r10 ,%rcx ,%r10
10741071 adcq %rcx ,%r9
10751072 shlxq %rsi ,%r11 ,%rcx
10761073 adcq $0 ,%r10
@@ -1080,12 +1077,12 @@ __ecp_nistz256_sqr_montx:
10801077 addq %rcx ,%r8
10811078 adcq %rax ,%r9
10821079
1083- mulxq %rbp ,%rcx ,%r11
1080+ mulxq %r11 ,%rcx ,%r11
10841081 adcq %rcx ,%r10
10851082 adcq $0 ,%r11
10861083
10871084 xorq %rdx ,%rdx
1088- adcq %r8 ,%r12
1085+ addq %r8 ,%r12
10891086 movq .Lpoly+8 (%rip ),%rsi
10901087 adcq %r9 ,%r13
10911088 movq %r12 ,%r8
@@ -1094,8 +1091,7 @@ __ecp_nistz256_sqr_montx:
10941091 movq %r13 ,%r9
10951092 adcq $0 ,%rdx
10961093
1097- xorl %eax ,%eax
1098- sbbq $-1 ,%r12
1094+ subq $-1 ,%r12
10991095 movq %r14 ,%r10
11001096 sbbq %rsi ,%r13
11011097 sbbq $0 ,%r14
Original file line number Diff line number Diff line change @@ -116,8 +116,19 @@ OPENSSL_ia32_cpuid:
116116 orl $0x40000000 ,%edx
117117 andb $15 ,%ah
118118 cmpb $15 ,%ah
119- jne .Lnotintel
119+ jne .LnotP4
120120 orl $0x00100000 ,%edx
121+ .LnotP4:
122+ cmpb $6 ,%ah
123+ jne .Lnotintel
124+ andl $0x0fff0ff0 ,%eax
125+ cmpl $0x00050670 ,%eax
126+ je .Lknights
127+ cmpl $0x00080650 ,%eax
128+ jne .Lnotintel
129+ .Lknights:
130+ andl $0xfbffffff ,%ecx
131+
121132.Lnotintel:
122133 btl $28 ,%edx
123134 jnc .Lgeneric
@@ -142,6 +153,10 @@ OPENSSL_ia32_cpuid:
142153 movl $7 ,%eax
143154 xorl %ecx ,%ecx
144155 cpuid
156+ btl $26 ,%r9d
157+ jc .Lnotknights
158+ andl $0xfff7ffff ,%ebx
159+ .Lnotknights:
145160 movl %ebx ,8 (%rdi )
146161.Lno_extended_info:
147162
Original file line number Diff line number Diff line change @@ -3075,11 +3075,19 @@ L$sqrx8x_loop:
30753075
30763076.p2align 5
30773077L$sqrx8x_break:
3078- subq 16 +8 (%rsp ),%r8
3078+ xorq %rbp ,%rbp
3079+ subq 16 +8 (%rsp ),%rbx
3080+ adcxq %rbp ,%r8
30793081 movq 24 +8 (%rsp ),%rcx
3082+ adcxq %rbp ,%r9
30803083 movq 0 (%rsi ),%rdx
3081- xorl %ebp , %ebp
3084+ adcq $0 , %r10
30823085 movq %r8 ,0 (%rdi )
3086+ adcq $0 ,%r11
3087+ adcq $0 ,%r12
3088+ adcq $0 ,%r13
3089+ adcq $0 ,%r14
3090+ adcq $0 ,%r15
30833091 cmpq %rcx ,%rdi
30843092 je L$sqrx8x_outer_loop
30853093
Original file line number Diff line number Diff line change @@ -1036,19 +1036,18 @@ __ecp_nistz256_sqr_montx:
10361036 adoxq %rbp ,%r13
10371037.byte 0x67 ,0x67
10381038 mulxq %rdx ,%rcx ,%rax
1039- movq %r8 ,%rdx
1039+ movq L$poly+ 24 ( %rip ) ,%rdx
10401040 adoxq %rcx ,%r14
10411041 shlxq %rsi ,%r8 ,%rcx
10421042 adoxq %rax ,%r15
10431043 shrxq %rsi ,%r8 ,%rax
1044- movq L$poly+ 24 ( %rip ) ,%rbp
1044+ movq %rdx ,%rbp
10451045
10461046
10471047 addq %rcx ,%r9
10481048 adcq %rax ,%r10
10491049
1050- mulxq %rbp ,%rcx ,%r8
1051- movq %r9 ,%rdx
1050+ mulxq %r8 ,%rcx ,%r8
10521051 adcq %rcx ,%r11
10531052 shlxq %rsi ,%r9 ,%rcx
10541053 adcq $0 ,%r8
@@ -1058,8 +1057,7 @@ __ecp_nistz256_sqr_montx:
10581057 addq %rcx ,%r10
10591058 adcq %rax ,%r11
10601059
1061- mulxq %rbp ,%rcx ,%r9
1062- movq %r10 ,%rdx
1060+ mulxq %r9 ,%rcx ,%r9
10631061 adcq %rcx ,%r8
10641062 shlxq %rsi ,%r10 ,%rcx
10651063 adcq $0 ,%r9
@@ -1069,8 +1067,7 @@ __ecp_nistz256_sqr_montx:
10691067 addq %rcx ,%r11
10701068 adcq %rax ,%r8
10711069
1072- mulxq %rbp ,%rcx ,%r10
1073- movq %r11 ,%rdx
1070+ mulxq %r10 ,%rcx ,%r10
10741071 adcq %rcx ,%r9
10751072 shlxq %rsi ,%r11 ,%rcx
10761073 adcq $0 ,%r10
@@ -1080,12 +1077,12 @@ __ecp_nistz256_sqr_montx:
10801077 addq %rcx ,%r8
10811078 adcq %rax ,%r9
10821079
1083- mulxq %rbp ,%rcx ,%r11
1080+ mulxq %r11 ,%rcx ,%r11
10841081 adcq %rcx ,%r10
10851082 adcq $0 ,%r11
10861083
10871084 xorq %rdx ,%rdx
1088- adcq %r8 ,%r12
1085+ addq %r8 ,%r12
10891086 movq L$poly+8 (%rip ),%rsi
10901087 adcq %r9 ,%r13
10911088 movq %r12 ,%r8
@@ -1094,8 +1091,7 @@ __ecp_nistz256_sqr_montx:
10941091 movq %r13 ,%r9
10951092 adcq $0 ,%rdx
10961093
1097- xorl %eax ,%eax
1098- sbbq $-1 ,%r12
1094+ subq $-1 ,%r12
10991095 movq %r14 ,%r10
11001096 sbbq %rsi ,%r13
11011097 sbbq $0 ,%r14
Original file line number Diff line number Diff line change @@ -117,8 +117,19 @@ L$nocacheinfo:
117117 orl $0x40000000 ,%edx
118118 andb $15 ,%ah
119119 cmpb $15 ,%ah
120- jne L$notintel
120+ jne L$notP4
121121 orl $0x00100000 ,%edx
122+ L$notP4:
123+ cmpb $6 ,%ah
124+ jne L$notintel
125+ andl $0x0fff0ff0 ,%eax
126+ cmpl $0x00050670 ,%eax
127+ je L$knights
128+ cmpl $0x00080650 ,%eax
129+ jne L$notintel
130+ L$knights:
131+ andl $0xfbffffff ,%ecx
132+
122133L$notintel:
123134 btl $28 ,%edx
124135 jnc L$generic
@@ -143,6 +154,10 @@ L$generic:
143154 movl $7 ,%eax
144155 xorl %ecx ,%ecx
145156 cpuid
157+ btl $26 ,%r9d
158+ jc L$notknights
159+ andl $0xfff7ffff ,%ebx
160+ L$notknights:
146161 movl %ebx ,8 (%rdi )
147162L$no_extended_info:
148163
Original file line number Diff line number Diff line change @@ -3166,11 +3166,19 @@ DB 067h
31663166
31673167ALIGN 32
31683168$ L $ sqrx8x_break::
3169- sub r8 , QWORD PTR [ (( 16 + 8 )) + rsp ]
3169+ xor rbp , rbp
3170+ sub rbx , QWORD PTR [ (( 16 + 8 )) + rsp ]
3171+ adcx r8 , rbp
31703172 mov rcx , QWORD PTR [ (( 24 + 8 )) + rsp ]
3173+ adcx r9 , rbp
31713174 mov rdx , QWORD PTR [ rsi ]
3172- xor ebp , ebp
3175+ adc r10 , 0
31733176 mov QWORD PTR [ rdi ], r8
3177+ adc r11 , 0
3178+ adc r12 , 0
3179+ adc r13 , 0
3180+ adc r14 , 0
3181+ adc r15 , 0
31743182 cmp rdi , rcx
31753183 je $ L $ sqrx8x_outer_loop
31763184
Original file line number Diff line number Diff line change @@ -1137,19 +1137,18 @@ DB 067h
11371137 adox r13 , rbp
11381138DB 067h , 067h
11391139 mulx rax , rcx , rdx
1140- mov rdx , r8
1140+ mov rdx , QWORD PTR [ (( $ L $ poly + 24 )) ]
11411141 adox r14 , rcx
11421142 shlx rcx , r8 , rsi
11431143 adox r15 , rax
11441144 shrx rax , r8 , rsi
1145- mov rbp , QWORD PTR [ (( $ L $ poly + 24 )) ]
1145+ mov rbp , rdx
11461146
11471147
11481148 add r9 , rcx
11491149 adc r10 , rax
11501150
1151- mulx r8 , rcx , rbp
1152- mov rdx , r9
1151+ mulx r8 , rcx , r8
11531152 adc r11 , rcx
11541153 shlx rcx , r9 , rsi
11551154 adc r8 , 0
@@ -1159,8 +1158,7 @@ DB 067h,067h
11591158 add r10 , rcx
11601159 adc r11 , rax
11611160
1162- mulx r9 , rcx , rbp
1163- mov rdx , r10
1161+ mulx r9 , rcx , r9
11641162 adc r8 , rcx
11651163 shlx rcx , r10 , rsi
11661164 adc r9 , 0
@@ -1170,8 +1168,7 @@ DB 067h,067h
11701168 add r11 , rcx
11711169 adc r8 , rax
11721170
1173- mulx r10 , rcx , rbp
1174- mov rdx , r11
1171+ mulx r10 , rcx , r10
11751172 adc r9 , rcx
11761173 shlx rcx , r11 , rsi
11771174 adc r10 , 0
@@ -1181,12 +1178,12 @@ DB 067h,067h
11811178 add r8 , rcx
11821179 adc r9 , rax
11831180
1184- mulx r11 , rcx , rbp
1181+ mulx r11 , rcx , r11
11851182 adc r10 , rcx
11861183 adc r11 , 0
11871184
11881185 xor rdx , rdx
1189- adc r12 , r8
1186+ add r12 , r8
11901187 mov rsi , QWORD PTR [ (( $ L $ poly + 8 )) ]
11911188 adc r13 , r9
11921189 mov r8 , r12
@@ -1195,8 +1192,7 @@ DB 067h,067h
11951192 mov r9 , r13
11961193 adc rdx , 0
11971194
1198- xor eax , eax
1199- sbb r12 ,- 1
1195+ sub r12 ,- 1
12001196 mov r10 , r14
12011197 sbb r13 , rsi
12021198 sbb r14 , 0
Original file line number Diff line number Diff line change @@ -127,8 +127,19 @@ $L$nocacheinfo::
127127 or edx , 040000000h
128128 and ah , 15
129129 cmp ah , 15
130- jne $ L $ notintel
130+ jne $ L $ notP4
131131 or edx , 000100000h
132+ $ L $ notP4::
133+ cmp ah , 6
134+ jne $ L $ notintel
135+ and eax , 00fff0ff0h
136+ cmp eax , 000050670h
137+ je $ L $ knights
138+ cmp eax , 000080650h
139+ jne $ L $ notintel
140+ $ L $ knights::
141+ and ecx , 0fbffffffh
142+
132143$ L $ notintel::
133144 bt edx , 28
134145 jnc $ L $ generic
@@ -153,6 +164,10 @@ $L$generic::
153164 mov eax , 7
154165 xor ecx , ecx
155166 cpuid
167+ bt r9d , 26
168+ jc $ L $ notknights
169+ and ebx , 0fff7ffffh
170+ $ L $ notknights::
156171 mov DWORD PTR [ 8 + rdi ], ebx
157172$ L $ no_extended_info::
158173
Original file line number Diff line number Diff line change @@ -116,8 +116,19 @@ OPENSSL_ia32_cpuid:
116116 orl $0x40000000 ,%edx
117117 andb $15 ,%ah
118118 cmpb $15 ,%ah
119- jne .Lnotintel
119+ jne .LnotP4
120120 orl $0x00100000 ,%edx
121+ .LnotP4:
122+ cmpb $6 ,%ah
123+ jne .Lnotintel
124+ andl $0x0fff0ff0 ,%eax
125+ cmpl $0x00050670 ,%eax
126+ je .Lknights
127+ cmpl $0x00080650 ,%eax
128+ jne .Lnotintel
129+ .Lknights:
130+ andl $0xfbffffff ,%ecx
131+
121132.Lnotintel:
122133 btl $28 ,%edx
123134 jnc .Lgeneric
@@ -142,6 +153,10 @@ OPENSSL_ia32_cpuid:
142153 movl $7 ,%eax
143154 xorl %ecx ,%ecx
144155 cpuid
156+ btl $26 ,%r9d
157+ jc .Lnotknights
158+ andl $0xfff7ffff ,%ebx
159+ .Lnotknights:
145160 movl %ebx ,8 (%rdi )
146161.Lno_extended_info:
147162
You can’t perform that action at this time.
0 commit comments