@@ -928,24 +928,30 @@ WC_OMIT_FRAME_POINTER void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c,
928928 /* Load and XOR in message */
929929 "ldr lr, [sp, #32]\n\t"
930930 "ldr %[len], [sp, #36]\n\t"
931- "vldm lr!, {q8-q11}\n\t"
931+ "vld1.8 {q8-q9}, [lr]!\n\t"
932+ "vld1.8 {q10-q11}, [lr]!\n\t"
932933 "veor q12, q12, q8\n\t"
933934 "veor q13, q13, q9\n\t"
934935 "veor q14, q14, q10\n\t"
935936 "veor q15, q15, q11\n\t"
936- "vstm %[len]!, {q12-q15}\n\t"
937- "vldm lr!, {q8-q11}\n\t"
937+ "vst1.8 {q12-q13}, [%[len]]!\n\t"
938+ "vst1.8 {q14-q15}, [%[len]]!\n\t"
939+ "vld1.8 {q8-q9}, [lr]!\n\t"
940+ "vld1.8 {q10-q11}, [lr]!\n\t"
938941 "veor q0, q0, q8\n\t"
939942 "veor q1, q1, q9\n\t"
940943 "veor q2, q2, q10\n\t"
941944 "veor q3, q3, q11\n\t"
942- "vstm %[len]!, {q0-q3}\n\t"
943- "vldm lr!, {q8-q11}\n\t"
945+ "vst1.8 {q0-q1}, [%[len]]!\n\t"
946+ "vst1.8 {q2-q3}, [%[len]]!\n\t"
947+ "vld1.8 {q8-q9}, [lr]!\n\t"
948+ "vld1.8 {q10-q11}, [lr]!\n\t"
944949 "veor q4, q4, q8\n\t"
945950 "veor q5, q5, q9\n\t"
946951 "veor q6, q6, q10\n\t"
947952 "veor q7, q7, q11\n\t"
948- "vstm %[len]!, {q4-q7}\n\t"
953+ "vst1.8 {q4-q5}, [%[len]]!\n\t"
954+ "vst1.8 {q6-q7}, [%[len]]!\n\t"
949955 "str %[len], [sp, #36]\n\t"
950956 "ldr %[len], [sp, #24]\n\t"
951957 "add r10, r10, #3\n\t"
@@ -965,7 +971,8 @@ WC_OMIT_FRAME_POINTER void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c,
965971 "vmov d7, r12, lr\n\t"
966972 "ldr %[len], [sp, #40]\n\t"
967973 "vldm %[ctx], {q12-q15}\n\t"
968- "vldm %[m]!, {q4-q7}\n\t"
974+ "vld1.8 {q4-q5}, [%[m]]!\n\t"
975+ "vld1.8 {q6-q7}, [%[m]]!\n\t"
969976 "vadd.i32 q0, q0, q12\n\t"
970977 "vadd.i32 q1, q1, q13\n\t"
971978 "vadd.i32 q2, q2, q14\n\t"
@@ -976,7 +983,8 @@ WC_OMIT_FRAME_POINTER void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c,
976983 "add lr, lr, #4\n\t"
977984 "veor q2, q2, q6\n\t"
978985 "veor q3, q3, q7\n\t"
979- "vstm %[c]!, {q0-q3}\n\t"
986+ "vst1.8 {q0-q1}, [%[c]]!\n\t"
987+ "vst1.8 {q2-q3}, [%[c]]!\n\t"
980988 "vmov d30[0], lr\n\t"
981989 "str lr, [%[ctx], #48]\n\t"
982990 "sub %[len], %[len], #0x100\n\t"
0 commit comments