|
912 | 912 | lsr $len,$len,4 |
913 | 913 | cbz $enc,.Ldec |
914 | 914 | |
915 | | - // ABI Compliance: Save callee-saved registers x19, x20 to the stack |
| 915 | + // ABI Compliance: save some callee-saved registers to the stack |
916 | 916 | stp x19, x20, [sp, #-16]! |
917 | 917 |
|
918 | 918 | ldp $iv_lo, $iv_hi, [$ivp] |
919 | | -.Lcbc_4_blocks_enc: |
920 | | - cmp $blocks,#4 |
921 | | - b.lt .Lcbc_cleanup_scalar |
922 | | -
|
923 | | - // Block 0 |
924 | | - ldp $data_lo, $data_hi, [$inp], #16 |
925 | | - eor $data_lo, $data_lo, $iv_lo |
926 | | - eor $data_hi, $data_hi, $iv_hi |
927 | | - rev32 $data_lo,$data_lo |
928 | | - rev32 $data_hi,$data_hi |
929 | | - lsr x13, x12, #32 |
930 | | - lsr x15, x14, #32 |
931 | | -___ |
932 | | - &encrypt_1blk_norev_scalar(); |
933 | | -$code.=<<___; |
934 | | - orr x13, x13, x12, lsl #32 |
935 | | - orr x15, x15, x14, lsl #32 |
936 | | - rev32 x13,x13 |
937 | | - rev32 x15,x15 |
938 | | - stp x15, x13, [$outp], #16 |
939 | | - mov $iv_lo, x15 |
940 | | - mov $iv_hi, x13 |
941 | | -
|
942 | | - // Block 1 |
943 | | - ldp $data_lo, $data_hi, [$inp], #16 |
944 | | - eor $data_lo, $data_lo, $iv_lo |
945 | | - eor $data_hi, $data_hi, $iv_hi |
946 | | - rev32 $data_lo,$data_lo |
947 | | - rev32 $data_hi,$data_hi |
948 | | - lsr x13, x12, #32 |
949 | | - lsr x15, x14, #32 |
950 | | -___ |
951 | | - &encrypt_1blk_norev_scalar(); |
952 | | -$code.=<<___; |
953 | | - orr x13, x13, x12, lsl #32 |
954 | | - orr x15, x15, x14, lsl #32 |
955 | | - rev32 x13,x13 |
956 | | - rev32 x15,x15 |
957 | | - stp x15, x13, [$outp], #16 |
958 | | - mov $iv_lo, x15 |
959 | | - mov $iv_hi, x13 |
960 | | -
|
961 | | - // Block 2 |
962 | | - ldp $data_lo, $data_hi, [$inp], #16 |
963 | | - eor $data_lo, $data_lo, $iv_lo |
964 | | - eor $data_hi, $data_hi, $iv_hi |
965 | | - rev32 $data_lo,$data_lo |
966 | | - rev32 $data_hi,$data_hi |
967 | | - lsr x13, x12, #32 |
968 | | - lsr x15, x14, #32 |
969 | | -___ |
970 | | - &encrypt_1blk_norev_scalar(); |
971 | | -$code.=<<___; |
972 | | - orr x13, x13, x12, lsl #32 |
973 | | - orr x15, x15, x14, lsl #32 |
974 | | - rev32 x13,x13 |
975 | | - rev32 x15,x15 |
976 | | - stp x15, x13, [$outp], #16 |
977 | | - mov $iv_lo, x15 |
978 | | - mov $iv_hi, x13 |
979 | | -
|
980 | | - // Block 3 |
981 | | - ldp $data_lo, $data_hi, [$inp], #16 |
982 | | - eor $data_lo, $data_lo, $iv_lo |
983 | | - eor $data_hi, $data_hi, $iv_hi |
984 | | - rev32 $data_lo,$data_lo |
985 | | - rev32 $data_hi,$data_hi |
986 | | - lsr x13, x12, #32 |
987 | | - lsr x15, x14, #32 |
988 | | -___ |
989 | | - &encrypt_1blk_norev_scalar(); |
990 | | -$code.=<<___; |
991 | | - orr x13, x13, x12, lsl #32 |
992 | | - orr x15, x15, x14, lsl #32 |
993 | | - rev32 x13,x13 |
994 | | - rev32 x15,x15 |
995 | | - stp x15, x13, [$outp], #16 |
996 | | - mov $iv_lo, x15 |
997 | | - mov $iv_hi, x13 |
998 | | -
|
999 | | - subs $blocks,$blocks,#4 |
1000 | | - b.ne .Lcbc_4_blocks_enc |
1001 | | -.Lcbc_cleanup_scalar: |
1002 | | - cbz $blocks, .Lcbc_done_scalar |
1003 | 919 | .Lcbc_single_block_loop: |
| 920 | + cbz $blocks, .Lcbc_done_scalar |
1004 | 921 | subs $blocks,$blocks,#1 |
1005 | 922 | ldp $data_lo, $data_hi, [$inp], #16 |
1006 | 923 | eor $data_lo, $data_lo, $iv_lo |
|
1019 | 936 | stp x15, x13, [$outp], #16 |
1020 | 937 | mov $iv_lo, x15 |
1021 | 938 | mov $iv_hi, x13 |
1022 | | - cbnz $blocks, .Lcbc_single_block_loop |
| 939 | + b .Lcbc_single_block_loop |
| 940 | +
|
1023 | 941 | .Lcbc_done_scalar: |
1024 | 942 | stp $iv_lo, $iv_hi, [$ivp] |
1025 | 943 | // ABI Compliance: Restore callee-saved registers |
|
0 commit comments