Lines Matching +full:- +full:j
2 * RISC-V Vector Crypto Extension Helpers for QEMU.
21 #include "qemu/host-utils.h"
26 #include "crypto/aes-round.h"
29 #include "exec/helper-proto.h"
36 for (int j = 63; j >= 0; j--) { in clmul64() local
37 if ((y >> j) & 1) { in clmul64()
38 result ^= (x << j); in clmul64()
47 for (int j = 63; j >= 1; j--) { in clmulh64() local
48 if ((y >> j) & 1) { in clmulh64()
49 result ^= (x >> (64 - j)); in clmulh64()
186 #define DO_SLL(N, M) (N << (M & (sizeof(N) * 8 - 1))) in RVVCALL()
203 uint32_t vl = env->vl; in RVVCALL()
204 uint32_t vstart = env->vstart; in RVVCALL()
213 round_state->v = round_state->v ^ round_key->v; in xor_round_key()
220 uint32_t vl = env->vl; \
226 for (uint32_t i = env->vstart / 4; i < env->vl / 4; i++) { \
237 env->vstart = 0; \
246 uint32_t vl = env->vl; \
252 for (uint32_t i = env->vstart / 4; i < env->vl / 4; i++) { \
263 env->vstart = 0; \
307 uint32_t vl = env->vl;
318 for (uint32_t i = env->vstart / 4; i < env->vl / 4; i++) {
335 ^ rcon[uimm - 1];
345 env->vstart = 0;
355 uint32_t vl = env->vl; in HELPER()
366 for (uint32_t i = env->vstart / 4; i < env->vl / 4; i++) { in HELPER()
388 ^ rcon[(uimm - 1) / 2]; in HELPER()
404 env->vstart = 0; in HELPER()
462 uint32_t sew = FIELD_EX64(env->vtype, VTYPE, VSEW); in HELPER()
467 VSTART_CHECK_EARLY_EXIT(env, env->vl); in HELPER()
469 for (uint32_t i = env->vstart / 4; i < env->vl / 4; i++) { in HELPER()
481 vext_set_elems_1s(vd, vta, env->vl * esz, total_elems * esz); in HELPER()
482 env->vstart = 0; in HELPER()
584 VSTART_CHECK_EARLY_EXIT(env, env->vl); in HELPER()
586 for (uint32_t i = env->vstart / 4; i < env->vl / 4; i++) { in HELPER()
593 vext_set_elems_1s(vd, vta, env->vl * esz, total_elems * esz); in HELPER()
594 env->vstart = 0; in HELPER()
604 VSTART_CHECK_EARLY_EXIT(env, env->vl); in HELPER()
606 for (uint32_t i = env->vstart / 4; i < env->vl / 4; i++) { in HELPER()
613 vext_set_elems_1s(vd, vta, env->vl * esz, total_elems * esz); in HELPER()
614 env->vstart = 0; in HELPER()
624 VSTART_CHECK_EARLY_EXIT(env, env->vl); in HELPER()
626 for (uint32_t i = env->vstart / 4; i < env->vl / 4; i++) { in HELPER()
633 vext_set_elems_1s(vd, vta, env->vl * esz, total_elems * esz); in HELPER()
634 env->vstart = 0; in HELPER()
644 VSTART_CHECK_EARLY_EXIT(env, env->vl); in HELPER()
646 for (uint32_t i = env->vstart / 4; i < env->vl / 4; i++) { in HELPER()
653 vext_set_elems_1s(vd, vta, env->vl * esz, total_elems * esz); in HELPER()
654 env->vstart = 0; in HELPER()
671 uint32_t esz = memop_size(FIELD_EX64(env->vtype, VTYPE, VSEW)); in HELPER()
678 VSTART_CHECK_EARLY_EXIT(env, env->vl); in HELPER()
680 for (int i = env->vstart / 8; i < env->vl / 8; i++) { in HELPER()
682 for (int j = 0; j < 8; j++) { in HELPER() local
683 w[j] = bswap32(vs1[H4((i * 8) + j)]); in HELPER()
684 w[j + 8] = bswap32(vs2[H4((i * 8) + j)]); in HELPER()
686 for (int j = 0; j < 8; j++) { in HELPER() local
687 w[j + 16] = in HELPER()
688 zvksh_w(w[j], w[j + 7], w[j + 13], w[j + 3], w[j + 10]); in HELPER()
690 for (int j = 0; j < 8; j++) { in HELPER() local
691 vd[(i * 8) + j] = bswap32(w[H4(j + 16)]); in HELPER()
694 vext_set_elems_1s(vd_vptr, vta, env->vl * esz, total_elems * esz); in HELPER()
695 env->vstart = 0; in HELPER()
708 static inline uint32_t ff_j(uint32_t x, uint32_t y, uint32_t z, uint32_t j) in ff_j() argument
710 return (j <= 15) ? ff1(x, y, z) : ff2(x, y, z); in ff_j()
723 static inline uint32_t gg_j(uint32_t x, uint32_t y, uint32_t z, uint32_t j) in gg_j() argument
725 return (j <= 15) ? gg1(x, y, z) : gg2(x, y, z); in gg_j()
728 static inline uint32_t t_j(uint32_t j) in t_j() argument
730 return (j <= 15) ? 0x79cc4519 : 0x7a879d8a; in t_j()
741 uint32_t j; in sm3c() local
745 j = 2 * uimm; in sm3c()
746 ss1 = rol32(rol32(vs1[0], 12) + vs1[4] + rol32(t_j(j), j % 32), 7); in sm3c()
748 tt1 = ff_j(vs1[0], vs1[1], vs1[2], j) + vs1[3] + ss2 + x0; in sm3c()
749 tt2 = gg_j(vs1[4], vs1[5], vs1[6], j) + vs1[7] + ss1 + vs2[0]; in sm3c()
758 j = 2 * uimm + 1; in sm3c()
759 ss1 = rol32(rol32(vd[1], 12) + vd[5] + rol32(t_j(j), j % 32), 7); in sm3c()
761 tt1 = ff_j(vd[1], vs1[1], vd[3], j) + vs1[3] + ss2 + x1; in sm3c()
762 tt2 = gg_j(vd[5], vs1[5], vd[7], j) + vs1[7] + ss1 + vs2[1]; in sm3c()
772 uint32_t esz = memop_size(FIELD_EX64(env->vtype, VTYPE, VSEW)); in HELPER()
779 VSTART_CHECK_EARLY_EXIT(env, env->vl); in HELPER()
781 for (int i = env->vstart / 8; i < env->vl / 8; i++) { in HELPER()
791 vext_set_elems_1s(vd_vptr, vta, env->vl * esz, total_elems * esz); in HELPER()
792 env->vstart = 0; in HELPER()
804 VSTART_CHECK_EARLY_EXIT(env, env->vl); in HELPER()
806 for (uint32_t i = env->vstart / 4; i < env->vl / 4; i++) { in HELPER()
814 for (int j = 0; j < 128; j++) { in HELPER() local
815 if ((S[j / 64] >> (j % 64)) & 1) { in HELPER()
831 vext_set_elems_1s(vd, vta, env->vl * 4, total_elems * 4); in HELPER()
832 env->vstart = 0; in HELPER()
843 VSTART_CHECK_EARLY_EXIT(env, env->vl); in HELPER()
845 for (uint32_t i = env->vstart / 4; i < env->vl / 4; i++) { in HELPER()
850 for (int j = 0; j < 128; j++) { in HELPER() local
851 if ((Y[j / 64] >> (j % 64)) & 1) { in HELPER()
867 vext_set_elems_1s(vd, vta, env->vl * 4, total_elems * 4); in HELPER()
868 env->vstart = 0; in HELPER()
876 uint32_t group_start = env->vstart / egs; in HELPER()
877 uint32_t group_end = env->vl / egs; in HELPER()
881 VSTART_CHECK_EARLY_EXIT(env, env->vl); in HELPER()
889 for (uint32_t j = vstart; j < vend; ++j) { in HELPER() local
890 rk[j - vstart] = *((uint32_t *)vs2 + H4(j)); in HELPER()
893 for (uint32_t j = 0; j < egs; ++j) { in HELPER() local
894 tmp[j] = rk[j]; in HELPER()
897 for (uint32_t j = 0; j < egs; ++j) { in HELPER() local
899 b = tmp[j + 1] ^ tmp[j + 2] ^ tmp[j + 3] ^ sm4_ck[rnd * 4 + j]; in HELPER()
903 tmp[j + 4] = tmp[j] ^ (s ^ rol32(s, 13) ^ rol32(s, 23)); in HELPER()
906 for (uint32_t j = vstart; j < vend; ++j) { in HELPER() local
907 *((uint32_t *)vd + H4(j)) = tmp[egs + (j - vstart)]; in HELPER()
911 env->vstart = 0; in HELPER()
913 vext_set_elems_1s(vd, vext_vta(desc), env->vl * esz, total_elems * esz); in HELPER()
921 for (uint32_t j = egs; j < egs * 2; ++j) { in do_sm4_round() local
922 b = buf[j - 3] ^ buf[j - 2] ^ buf[j - 1] ^ rk[j - 4]; in do_sm4_round()
926 buf[j] = buf[j - 4] ^ (s ^ rol32(s, 2) ^ rol32(s, 10) ^ rol32(s, 18) ^ in do_sm4_round()
934 uint32_t group_start = env->vstart / egs; in HELPER()
935 uint32_t group_end = env->vl / egs; in HELPER()
939 VSTART_CHECK_EARLY_EXIT(env, env->vl); in HELPER()
947 for (uint32_t j = vstart; j < vend; ++j) { in HELPER() local
948 rk[j - vstart] = *((uint32_t *)vs2 + H4(j)); in HELPER()
951 for (uint32_t j = vstart; j < vend; ++j) { in HELPER() local
952 tmp[j - vstart] = *((uint32_t *)vd + H4(j)); in HELPER()
957 for (uint32_t j = vstart; j < vend; ++j) { in HELPER() local
958 *((uint32_t *)vd + H4(j)) = tmp[egs + (j - vstart)]; in HELPER()
962 env->vstart = 0; in HELPER()
964 vext_set_elems_1s(vd, vext_vta(desc), env->vl * esz, total_elems * esz); in HELPER()
970 uint32_t group_start = env->vstart / egs; in HELPER()
971 uint32_t group_end = env->vl / egs; in HELPER()
975 VSTART_CHECK_EARLY_EXIT(env, env->vl); in HELPER()
983 for (uint32_t j = 0; j < egs; ++j) { in HELPER() local
984 rk[j] = *((uint32_t *)vs2 + H4(j)); in HELPER()
987 for (uint32_t j = vstart; j < vend; ++j) { in HELPER() local
988 tmp[j - vstart] = *((uint32_t *)vd + H4(j)); in HELPER()
993 for (uint32_t j = vstart; j < vend; ++j) { in HELPER() local
994 *((uint32_t *)vd + H4(j)) = tmp[egs + (j - vstart)]; in HELPER()
998 env->vstart = 0; in HELPER()
1000 vext_set_elems_1s(vd, vext_vta(desc), env->vl * esz, total_elems * esz); in HELPER()