OLD | NEW |
1 ; LICENSE: | 1 ; LICENSE: |
2 ; This submission to NSS is to be made available under the terms of the | 2 ; This submission to NSS is to be made available under the terms of the |
3 ; Mozilla Public License, v. 2.0. You can obtain one at http: | 3 ; Mozilla Public License, v. 2.0. You can obtain one at http: |
4 ; //mozilla.org/MPL/2.0/. | 4 ; //mozilla.org/MPL/2.0/. |
5 ;############################################################################### | 5 ;############################################################################### |
6 ; Copyright(c) 2014, Intel Corp. | 6 ; Copyright(c) 2014, Intel Corp. |
7 ; Developers and authors: | 7 ; Developers and authors: |
8 ; Shay Gueron and Vlad Krasnov | 8 ; Shay Gueron and Vlad Krasnov |
9 ; Intel Corporation, Israel Development Centre, Haifa, Israel | 9 ; Intel Corporation, Israel Development Centre, Haifa, Israel |
10 ; Please send feedback directly to crypto.feedback.alias@intel.com | 10 ; Please send feedback directly to crypto.feedback.alias@intel.com |
(...skipping 822 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
833 vaesenc TMP1, TMP1, XMMWORD PTR[12*16 + KS] | 833 vaesenc TMP1, TMP1, XMMWORD PTR[12*16 + KS] |
834 vaesenc TMP1, TMP1, XMMWORD PTR[13*16 + KS] | 834 vaesenc TMP1, TMP1, XMMWORD PTR[13*16 + KS] |
835 vmovdqu TMP2, XMMWORD PTR[14*16 + KS] | 835 vmovdqu TMP2, XMMWORD PTR[14*16 + KS] |
836 @@: | 836 @@: |
837 vaesenclast TMP1, TMP1, TMP2 | 837 vaesenclast TMP1, TMP1, TMP2 |
838 ; zero a temp location | 838 ; zero a temp location |
839 vpxor TMP2, TMP2, TMP2 | 839 vpxor TMP2, TMP2, TMP2 |
840 vmovdqa XMMWORD PTR[esp], TMP2 | 840 vmovdqa XMMWORD PTR[esp], TMP2 |
841 ; copy as many bytes as needed | 841 ; copy as many bytes as needed |
842 xor KS, KS | 842 xor KS, KS |
| 843 mov aluTMP, edx |
843 @@: | 844 @@: |
844 cmp len, KS | 845 cmp len, KS |
845 je @f | 846 je @f |
846 mov di, [PT + KS] | 847 mov dl, BYTE PTR[PT + KS] |
847 mov [esp + KS], di | 848 mov BYTE PTR[esp + KS], dl |
848 inc KS | 849 inc KS |
849 jmp @b | 850 jmp @b |
850 @@: | 851 @@: |
851 vpxor TMP1, TMP1, XMMWORD PTR[esp] | 852 vpxor TMP1, TMP1, XMMWORD PTR[esp] |
852 vmovdqa XMMWORD PTR[esp], TMP1 | 853 vmovdqa XMMWORD PTR[esp], TMP1 |
853 xor KS, KS | 854 xor KS, KS |
854 @@: | 855 @@: |
855 cmp len, KS | 856 cmp len, KS |
856 je @f | 857 je @f |
857 mov di, [esp + KS] | 858 mov dl, BYTE PTR[esp + KS] |
858 mov [CT + KS], di | 859 mov BYTE PTR[CT + KS], dl |
859 inc KS | 860 inc KS |
860 jmp @b | 861 jmp @b |
861 @@: | 862 @@: |
862 cmp KS, 16 | 863 cmp KS, 16 |
863 je @f | 864 je @f |
864 mov BYTE PTR[esp + KS], 0 | 865 mov BYTE PTR[esp + KS], 0 |
865 inc KS | 866 inc KS |
866 jmp @b | 867 jmp @b |
867 @@: | 868 @@: |
| 869 mov edx, aluTMP |
868 vmovdqa TMP1, XMMWORD PTR[esp] | 870 vmovdqa TMP1, XMMWORD PTR[esp] |
869 | |
870 vpshufb TMP1, TMP1, XMMWORD PTR[Lbswap_mask] | 871 vpshufb TMP1, TMP1, XMMWORD PTR[Lbswap_mask] |
871 vpxor TMP1, TMP1, T | 872 vpxor TMP1, TMP1, T |
872 | 873 |
873 vmovdqu TMP0, XMMWORD PTR[Htbl] | 874 vmovdqu TMP0, XMMWORD PTR[Htbl] |
874 GFMUL TMP1, TMP1, TMP0, TMP5, TMP2, TMP3, TMP4 | 875 GFMUL TMP1, TMP1, TMP0, TMP5, TMP2, TMP3, TMP4 |
875 vmovdqu T, TMP1 | 876 vmovdqu T, TMP1 |
876 | 877 |
877 LEncDataEnd: | 878 LEncDataEnd: |
878 inc aluCTR | 879 inc aluCTR |
879 bswap aluCTR | 880 bswap aluCTR |
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1143 cmp NR, 12 | 1144 cmp NR, 12 |
1144 je @f | 1145 je @f |
1145 vaesenc TMP1, TMP1, XMMWORD PTR[12*16 + KS] | 1146 vaesenc TMP1, TMP1, XMMWORD PTR[12*16 + KS] |
1146 vaesenc TMP1, TMP1, XMMWORD PTR[13*16 + KS] | 1147 vaesenc TMP1, TMP1, XMMWORD PTR[13*16 + KS] |
1147 vmovdqu TMP2, XMMWORD PTR[14*16 + KS] | 1148 vmovdqu TMP2, XMMWORD PTR[14*16 + KS] |
1148 @@: | 1149 @@: |
1149 vaesenclast xmm7, TMP1, TMP2 | 1150 vaesenclast xmm7, TMP1, TMP2 |
1150 | 1151 |
1151 ; copy as many bytes as needed | 1152 ; copy as many bytes as needed |
1152 xor KS, KS | 1153 xor KS, KS |
| 1154 mov aluTMP, edx |
1153 @@: | 1155 @@: |
1154 cmp len, KS | 1156 cmp len, KS |
1155 je @f | 1157 je @f |
1156 mov di, [CT + KS] | 1158 mov dl, BYTE PTR[CT + KS] |
1157 mov [esp + KS], di | 1159 mov BYTE PTR[esp + KS], dl |
1158 inc KS | 1160 inc KS |
1159 jmp @b | 1161 jmp @b |
1160 @@: | 1162 @@: |
1161 cmp KS, 16 | 1163 cmp KS, 16 |
1162 je @f | 1164 je @f |
1163 mov BYTE PTR[esp + KS], 0 | 1165 mov BYTE PTR[esp + KS], 0 |
1164 inc KS | 1166 inc KS |
1165 jmp @b | 1167 jmp @b |
1166 @@: | 1168 @@: |
1167 | 1169 mov edx, aluTMP |
1168 vmovdqa TMP1, XMMWORD PTR[esp] | 1170 vmovdqa TMP1, XMMWORD PTR[esp] |
1169 vpshufb TMP1, TMP1, XMMWORD PTR[Lbswap_mask] | 1171 vpshufb TMP1, TMP1, XMMWORD PTR[Lbswap_mask] |
1170 vpxor TMP1, TMP1, T | 1172 vpxor TMP1, TMP1, T |
1171 | 1173 |
1172 vmovdqu TMP0, XMMWORD PTR[Htbl] | 1174 vmovdqu TMP0, XMMWORD PTR[Htbl] |
1173 GFMUL TMP1, TMP1, TMP0, TMP5, TMP2, TMP3, TMP4 | 1175 GFMUL TMP1, TMP1, TMP0, TMP5, TMP2, TMP3, TMP4 |
1174 vmovdqu T, TMP1 | 1176 vmovdqu T, TMP1 |
1175 | 1177 |
1176 | |
1177 vpxor xmm7, xmm7, XMMWORD PTR[esp] | 1178 vpxor xmm7, xmm7, XMMWORD PTR[esp] |
1178 vmovdqa XMMWORD PTR[esp], xmm7 | 1179 vmovdqa XMMWORD PTR[esp], xmm7 |
1179 xor KS, KS | 1180 xor KS, KS |
| 1181 mov aluTMP, edx |
1180 @@: | 1182 @@: |
1181 cmp len, KS | 1183 cmp len, KS |
1182 je @f | 1184 je @f |
1183 mov di, [esp + KS] | 1185 mov dl, BYTE PTR[esp + KS] |
1184 mov [PT + KS], di | 1186 mov BYTE PTR[PT + KS], dl |
1185 inc KS | 1187 inc KS |
1186 jmp @b | 1188 jmp @b |
1187 @@: | 1189 @@: |
1188 cmp KS, 16 | 1190 mov edx, aluTMP |
1189 je @f | |
1190 mov BYTE PTR[PT + KS], 0 | |
1191 inc KS | |
1192 jmp @b | |
1193 @@: | |
1194 | 1191 |
1195 LDecDataEnd: | 1192 LDecDataEnd: |
1196 | 1193 |
1197 bswap aluCTR | 1194 bswap aluCTR |
1198 mov [16*16 + 2*16 + 3*4 + Gctx], aluCTR | 1195 mov [16*16 + 2*16 + 3*4 + Gctx], aluCTR |
1199 | 1196 |
1200 mov esp, ebp | 1197 mov esp, ebp |
1201 pop edi | 1198 pop edi |
1202 pop esi | 1199 pop esi |
1203 pop ebx | 1200 pop ebx |
1204 pop ebp | 1201 pop ebp |
1205 | 1202 |
1206 vzeroupper | 1203 vzeroupper |
1207 | 1204 |
1208 ret | 1205 ret |
1209 intel_aes_gcmDEC ENDP | 1206 intel_aes_gcmDEC ENDP |
1210 | 1207 |
1211 | 1208 |
1212 END | 1209 END |
OLD | NEW |