#ifndef SOFTRVV_VSRA_H
#define SOFTRVV_VSRA_H

#include <stddef.h>

namespace softrvv {

template <typename T>
void vsra_vx(T *dest, T *src1, const T *src2, int32_t avl) {
  // Only low lg2(SEW) bits are used for shift
  const T low_bits_mask = sizeof(T) * 8 - 1;
  const T shift = *src2 & low_bits_mask;
  for (int32_t idx = 0; idx < avl; idx++) {
    dest[idx] = src1[idx] >> shift;
  }
}

template <typename T>
void vsra_vv(T *dest, T *src1, T *src2, int32_t avl) {
  // Only low lg2(SEW) bits are used for shift
  const T low_bits_mask = sizeof(T) * 8 - 1;
  for (int32_t idx = 0; idx < avl; idx++) {
    dest[idx] = src1[idx] >> (src2[idx] & low_bits_mask);
  }
}

}  // namespace softrvv

#endif  // SOFTRVV_VSRA_H
