#include <riscv_vector.h>
#include <springbok.h>
#include <stdio.h>
#include <stdlib.h>

#include "pw_unit_test/framework.h"
#include "softrvv.h"

namespace softrvv_vadd_test {
namespace {

int16_t src1[] = {1, 2, 3, -4, 5};
int16_t src2[] = {1, 2, 3, 4, -6};
int16_t rs1 = 3;
const uint32_t AVL_CONST = sizeof(src1)/sizeof(src1[0]);
int32_t dest[AVL_CONST];

int32_t ref_vv[] = {2, 4, 6, 0, -1};
int32_t ref_vx[] = {4, 5, 6, -1, 8};

class SoftRvvVwaddTest : public ::testing::Test {
 protected:
  void SetUp() override { memset(dest, 0, sizeof(dest)); }
};

TEST_F(SoftRvvVwaddTest, VV) {
  softrvv::vwadd_vv<int32_t, int16_t>(dest, src1, src2, AVL_CONST);
  ASSERT_EQ(memcmp(dest, ref_vv, sizeof(dest)), 0);
}

TEST_F(SoftRvvVwaddTest, VX) {
  softrvv::vwadd_vx<int32_t, int16_t>(dest, src1, &rs1, AVL_CONST);
  ASSERT_EQ(memcmp(dest, ref_vx, sizeof(dest)), 0);
}

}  // namespace
}  // namespace softrvv_vwadd_test
