VirtualBox

Ignore:
Timestamp:
Jun 8, 2022 8:35:57 AM (3 years ago)
Author:
vboxsync
Message:

libs/openssl-3.0.3: Recreated openssl assembler files, bugref:10128

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/libs/openssl-3.0.3/crypto/genasm-nasm/x86_64-mont.S

    r95219 r95221  
    3232        cmp     r9d,8
    3333        jb      NEAR $L$mul_enter
    34         mov     r11d,DWORD[((OPENSSL_ia32cap_P+8))]
    3534        cmp     rdx,rsi
    3635        jne     NEAR $L$mul4x_enter
     
    295294
    296295$L$mul4x_enter:
    297         and     r11d,0x80100
    298         cmp     r11d,0x80100
    299         je      NEAR $L$mulx4x_enter
    300296        push    rbx
    301297
     
    723719
    724720$L$SEH_end_bn_mul4x_mont:
    725 EXTERN  bn_sqrx8x_internal
    726721EXTERN  bn_sqr8x_internal
    727722
     
    819814DB      102,72,15,110,207
    820815DB      102,73,15,110,218
    821         mov     eax,DWORD[((OPENSSL_ia32cap_P+8))]
    822         and     eax,0x80100
    823         cmp     eax,0x80100
    824         jne     NEAR $L$sqr8x_nox
    825 
    826         call    bn_sqrx8x_internal
    827 
    828 
    829 
    830 
    831         lea     rbx,[rcx*1+r8]
    832         mov     r9,rcx
    833         mov     rdx,rcx
    834 DB      102,72,15,126,207
    835         sar     rcx,3+2
    836         jmp     NEAR $L$sqr8x_sub
    837 
    838 ALIGN   32
    839 $L$sqr8x_nox:
    840816        call    bn_sqr8x_internal
    841817
     
    927903
    928904$L$SEH_end_bn_sqr8x_mont:
    929 
    930 ALIGN   32
    931 bn_mulx4x_mont:
    932         mov     QWORD[8+rsp],rdi        ;WIN64 prologue
    933         mov     QWORD[16+rsp],rsi
    934         mov     rax,rsp
    935 $L$SEH_begin_bn_mulx4x_mont:
    936         mov     rdi,rcx
    937         mov     rsi,rdx
    938         mov     rdx,r8
    939         mov     rcx,r9
    940         mov     r8,QWORD[40+rsp]
    941         mov     r9,QWORD[48+rsp]
    942 
    943 
    944 
    945         mov     rax,rsp
    946 
    947 $L$mulx4x_enter:
    948         push    rbx
    949 
    950         push    rbp
    951 
    952         push    r12
    953 
    954         push    r13
    955 
    956         push    r14
    957 
    958         push    r15
    959 
    960 $L$mulx4x_prologue:
    961 
    962         shl     r9d,3
    963         xor     r10,r10
    964         sub     r10,r9
    965         mov     r8,QWORD[r8]
    966         lea     rbp,[((-72))+r10*1+rsp]
    967         and     rbp,-128
    968         mov     r11,rsp
    969         sub     r11,rbp
    970         and     r11,-4096
    971         lea     rsp,[rbp*1+r11]
    972         mov     r10,QWORD[rsp]
    973         cmp     rsp,rbp
    974         ja      NEAR $L$mulx4x_page_walk
    975         jmp     NEAR $L$mulx4x_page_walk_done
    976 
    977 ALIGN   16
    978 $L$mulx4x_page_walk:
    979         lea     rsp,[((-4096))+rsp]
    980         mov     r10,QWORD[rsp]
    981         cmp     rsp,rbp
    982         ja      NEAR $L$mulx4x_page_walk
    983 $L$mulx4x_page_walk_done:
    984 
    985         lea     r10,[r9*1+rdx]
    986 
    987 
    988 
    989 
    990 
    991 
    992 
    993 
    994 
    995 
    996 
    997 
    998         mov     QWORD[rsp],r9
    999         shr     r9,5
    1000         mov     QWORD[16+rsp],r10
    1001         sub     r9,1
    1002         mov     QWORD[24+rsp],r8
    1003         mov     QWORD[32+rsp],rdi
    1004         mov     QWORD[40+rsp],rax
    1005 
    1006         mov     QWORD[48+rsp],r9
    1007         jmp     NEAR $L$mulx4x_body
    1008 
    1009 ALIGN   32
    1010 $L$mulx4x_body:
    1011         lea     rdi,[8+rdx]
    1012         mov     rdx,QWORD[rdx]
    1013         lea     rbx,[((64+32))+rsp]
    1014         mov     r9,rdx
    1015 
    1016         mulx    rax,r8,QWORD[rsi]
    1017         mulx    r14,r11,QWORD[8+rsi]
    1018         add     r11,rax
    1019         mov     QWORD[8+rsp],rdi
    1020         mulx    r13,r12,QWORD[16+rsi]
    1021         adc     r12,r14
    1022         adc     r13,0
    1023 
    1024         mov     rdi,r8
    1025         imul    r8,QWORD[24+rsp]
    1026         xor     rbp,rbp
    1027 
    1028         mulx    r14,rax,QWORD[24+rsi]
    1029         mov     rdx,r8
    1030         lea     rsi,[32+rsi]
    1031         adcx    r13,rax
    1032         adcx    r14,rbp
    1033 
    1034         mulx    r10,rax,QWORD[rcx]
    1035         adcx    rdi,rax
    1036         adox    r10,r11
    1037         mulx    r11,rax,QWORD[8+rcx]
    1038         adcx    r10,rax
    1039         adox    r11,r12
    1040 DB      0xc4,0x62,0xfb,0xf6,0xa1,0x10,0x00,0x00,0x00
    1041         mov     rdi,QWORD[48+rsp]
    1042         mov     QWORD[((-32))+rbx],r10
    1043         adcx    r11,rax
    1044         adox    r12,r13
    1045         mulx    r15,rax,QWORD[24+rcx]
    1046         mov     rdx,r9
    1047         mov     QWORD[((-24))+rbx],r11
    1048         adcx    r12,rax
    1049         adox    r15,rbp
    1050         lea     rcx,[32+rcx]
    1051         mov     QWORD[((-16))+rbx],r12
    1052 
    1053         jmp     NEAR $L$mulx4x_1st
    1054 
    1055 ALIGN   32
    1056 $L$mulx4x_1st:
    1057         adcx    r15,rbp
    1058         mulx    rax,r10,QWORD[rsi]
    1059         adcx    r10,r14
    1060         mulx    r14,r11,QWORD[8+rsi]
    1061         adcx    r11,rax
    1062         mulx    rax,r12,QWORD[16+rsi]
    1063         adcx    r12,r14
    1064         mulx    r14,r13,QWORD[24+rsi]
    1065 DB      0x67,0x67
    1066         mov     rdx,r8
    1067         adcx    r13,rax
    1068         adcx    r14,rbp
    1069         lea     rsi,[32+rsi]
    1070         lea     rbx,[32+rbx]
    1071 
    1072         adox    r10,r15
    1073         mulx    r15,rax,QWORD[rcx]
    1074         adcx    r10,rax
    1075         adox    r11,r15
    1076         mulx    r15,rax,QWORD[8+rcx]
    1077         adcx    r11,rax
    1078         adox    r12,r15
    1079         mulx    r15,rax,QWORD[16+rcx]
    1080         mov     QWORD[((-40))+rbx],r10
    1081         adcx    r12,rax
    1082         mov     QWORD[((-32))+rbx],r11
    1083         adox    r13,r15
    1084         mulx    r15,rax,QWORD[24+rcx]
    1085         mov     rdx,r9
    1086         mov     QWORD[((-24))+rbx],r12
    1087         adcx    r13,rax
    1088         adox    r15,rbp
    1089         lea     rcx,[32+rcx]
    1090         mov     QWORD[((-16))+rbx],r13
    1091 
    1092         dec     rdi
    1093         jnz     NEAR $L$mulx4x_1st
    1094 
    1095         mov     rax,QWORD[rsp]
    1096         mov     rdi,QWORD[8+rsp]
    1097         adc     r15,rbp
    1098         add     r14,r15
    1099         sbb     r15,r15
    1100         mov     QWORD[((-8))+rbx],r14
    1101         jmp     NEAR $L$mulx4x_outer
    1102 
    1103 ALIGN   32
    1104 $L$mulx4x_outer:
    1105         mov     rdx,QWORD[rdi]
    1106         lea     rdi,[8+rdi]
    1107         sub     rsi,rax
    1108         mov     QWORD[rbx],r15
    1109         lea     rbx,[((64+32))+rsp]
    1110         sub     rcx,rax
    1111 
    1112         mulx    r11,r8,QWORD[rsi]
    1113         xor     ebp,ebp
    1114         mov     r9,rdx
    1115         mulx    r12,r14,QWORD[8+rsi]
    1116         adox    r8,QWORD[((-32))+rbx]
    1117         adcx    r11,r14
    1118         mulx    r13,r15,QWORD[16+rsi]
    1119         adox    r11,QWORD[((-24))+rbx]
    1120         adcx    r12,r15
    1121         adox    r12,QWORD[((-16))+rbx]
    1122         adcx    r13,rbp
    1123         adox    r13,rbp
    1124 
    1125         mov     QWORD[8+rsp],rdi
    1126         mov     r15,r8
    1127         imul    r8,QWORD[24+rsp]
    1128         xor     ebp,ebp
    1129 
    1130         mulx    r14,rax,QWORD[24+rsi]
    1131         mov     rdx,r8
    1132         adcx    r13,rax
    1133         adox    r13,QWORD[((-8))+rbx]
    1134         adcx    r14,rbp
    1135         lea     rsi,[32+rsi]
    1136         adox    r14,rbp
    1137 
    1138         mulx    r10,rax,QWORD[rcx]
    1139         adcx    r15,rax
    1140         adox    r10,r11
    1141         mulx    r11,rax,QWORD[8+rcx]
    1142         adcx    r10,rax
    1143         adox    r11,r12
    1144         mulx    r12,rax,QWORD[16+rcx]
    1145         mov     QWORD[((-32))+rbx],r10
    1146         adcx    r11,rax
    1147         adox    r12,r13
    1148         mulx    r15,rax,QWORD[24+rcx]
    1149         mov     rdx,r9
    1150         mov     QWORD[((-24))+rbx],r11
    1151         lea     rcx,[32+rcx]
    1152         adcx    r12,rax
    1153         adox    r15,rbp
    1154         mov     rdi,QWORD[48+rsp]
    1155         mov     QWORD[((-16))+rbx],r12
    1156 
    1157         jmp     NEAR $L$mulx4x_inner
    1158 
    1159 ALIGN   32
    1160 $L$mulx4x_inner:
    1161         mulx    rax,r10,QWORD[rsi]
    1162         adcx    r15,rbp
    1163         adox    r10,r14
    1164         mulx    r14,r11,QWORD[8+rsi]
    1165         adcx    r10,QWORD[rbx]
    1166         adox    r11,rax
    1167         mulx    rax,r12,QWORD[16+rsi]
    1168         adcx    r11,QWORD[8+rbx]
    1169         adox    r12,r14
    1170         mulx    r14,r13,QWORD[24+rsi]
    1171         mov     rdx,r8
    1172         adcx    r12,QWORD[16+rbx]
    1173         adox    r13,rax
    1174         adcx    r13,QWORD[24+rbx]
    1175         adox    r14,rbp
    1176         lea     rsi,[32+rsi]
    1177         lea     rbx,[32+rbx]
    1178         adcx    r14,rbp
    1179 
    1180         adox    r10,r15
    1181         mulx    r15,rax,QWORD[rcx]
    1182         adcx    r10,rax
    1183         adox    r11,r15
    1184         mulx    r15,rax,QWORD[8+rcx]
    1185         adcx    r11,rax
    1186         adox    r12,r15
    1187         mulx    r15,rax,QWORD[16+rcx]
    1188         mov     QWORD[((-40))+rbx],r10
    1189         adcx    r12,rax
    1190         adox    r13,r15
    1191         mulx    r15,rax,QWORD[24+rcx]
    1192         mov     rdx,r9
    1193         mov     QWORD[((-32))+rbx],r11
    1194         mov     QWORD[((-24))+rbx],r12
    1195         adcx    r13,rax
    1196         adox    r15,rbp
    1197         lea     rcx,[32+rcx]
    1198         mov     QWORD[((-16))+rbx],r13
    1199 
    1200         dec     rdi
    1201         jnz     NEAR $L$mulx4x_inner
    1202 
    1203         mov     rax,QWORD[rsp]
    1204         mov     rdi,QWORD[8+rsp]
    1205         adc     r15,rbp
    1206         sub     rbp,QWORD[rbx]
    1207         adc     r14,r15
    1208         sbb     r15,r15
    1209         mov     QWORD[((-8))+rbx],r14
    1210 
    1211         cmp     rdi,QWORD[16+rsp]
    1212         jne     NEAR $L$mulx4x_outer
    1213 
    1214         lea     rbx,[64+rsp]
    1215         sub     rcx,rax
    1216         neg     r15
    1217         mov     rdx,rax
    1218         shr     rax,3+2
    1219         mov     rdi,QWORD[32+rsp]
    1220         jmp     NEAR $L$mulx4x_sub
    1221 
    1222 ALIGN   32
    1223 $L$mulx4x_sub:
    1224         mov     r11,QWORD[rbx]
    1225         mov     r12,QWORD[8+rbx]
    1226         mov     r13,QWORD[16+rbx]
    1227         mov     r14,QWORD[24+rbx]
    1228         lea     rbx,[32+rbx]
    1229         sbb     r11,QWORD[rcx]
    1230         sbb     r12,QWORD[8+rcx]
    1231         sbb     r13,QWORD[16+rcx]
    1232         sbb     r14,QWORD[24+rcx]
    1233         lea     rcx,[32+rcx]
    1234         mov     QWORD[rdi],r11
    1235         mov     QWORD[8+rdi],r12
    1236         mov     QWORD[16+rdi],r13
    1237         mov     QWORD[24+rdi],r14
    1238         lea     rdi,[32+rdi]
    1239         dec     rax
    1240         jnz     NEAR $L$mulx4x_sub
    1241 
    1242         sbb     r15,0
    1243         lea     rbx,[64+rsp]
    1244         sub     rdi,rdx
    1245 
    1246 DB      102,73,15,110,207
    1247         pxor    xmm0,xmm0
    1248         pshufd  xmm1,xmm1,0
    1249         mov     rsi,QWORD[40+rsp]
    1250 
    1251         jmp     NEAR $L$mulx4x_cond_copy
    1252 
    1253 ALIGN   32
    1254 $L$mulx4x_cond_copy:
    1255         movdqa  xmm2,XMMWORD[rbx]
    1256         movdqa  xmm3,XMMWORD[16+rbx]
    1257         lea     rbx,[32+rbx]
    1258         movdqu  xmm4,XMMWORD[rdi]
    1259         movdqu  xmm5,XMMWORD[16+rdi]
    1260         lea     rdi,[32+rdi]
    1261         movdqa  XMMWORD[(-32)+rbx],xmm0
    1262         movdqa  XMMWORD[(-16)+rbx],xmm0
    1263         pcmpeqd xmm0,xmm1
    1264         pand    xmm2,xmm1
    1265         pand    xmm3,xmm1
    1266         pand    xmm4,xmm0
    1267         pand    xmm5,xmm0
    1268         pxor    xmm0,xmm0
    1269         por     xmm4,xmm2
    1270         por     xmm5,xmm3
    1271         movdqu  XMMWORD[(-32)+rdi],xmm4
    1272         movdqu  XMMWORD[(-16)+rdi],xmm5
    1273         sub     rdx,32
    1274         jnz     NEAR $L$mulx4x_cond_copy
    1275 
    1276         mov     QWORD[rbx],rdx
    1277 
    1278         mov     rax,1
    1279         mov     r15,QWORD[((-48))+rsi]
    1280 
    1281         mov     r14,QWORD[((-40))+rsi]
    1282 
    1283         mov     r13,QWORD[((-32))+rsi]
    1284 
    1285         mov     r12,QWORD[((-24))+rsi]
    1286 
    1287         mov     rbp,QWORD[((-16))+rsi]
    1288 
    1289         mov     rbx,QWORD[((-8))+rsi]
    1290 
    1291         lea     rsp,[rsi]
    1292 
    1293 $L$mulx4x_epilogue:
    1294         mov     rdi,QWORD[8+rsp]        ;WIN64 epilogue
    1295         mov     rsi,QWORD[16+rsp]
    1296         DB      0F3h,0C3h               ;repret
    1297 
    1298 $L$SEH_end_bn_mulx4x_mont:
    1299905DB      77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105
    1300906DB      112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56
     
    14481054        DD      $L$SEH_end_bn_sqr8x_mont wrt ..imagebase
    14491055        DD      $L$SEH_info_bn_sqr8x_mont wrt ..imagebase
    1450         DD      $L$SEH_begin_bn_mulx4x_mont wrt ..imagebase
    1451         DD      $L$SEH_end_bn_mulx4x_mont wrt ..imagebase
    1452         DD      $L$SEH_info_bn_mulx4x_mont wrt ..imagebase
    14531056section .xdata rdata align=8
    14541057ALIGN   8
     
    14661069        DD      $L$sqr8x_prologue wrt ..imagebase,$L$sqr8x_body wrt ..imagebase,$L$sqr8x_epilogue wrt ..imagebase
    14671070ALIGN   8
    1468 $L$SEH_info_bn_mulx4x_mont:
    1469 DB      9,0,0,0
    1470         DD      sqr_handler wrt ..imagebase
    1471         DD      $L$mulx4x_prologue wrt ..imagebase,$L$mulx4x_body wrt ..imagebase,$L$mulx4x_epilogue wrt ..imagebase
    1472 ALIGN   8
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette