#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
