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

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

namespace softrvv_vwsub_test {
namespace {

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

int32_t ref_vv[] = {1, 2, -9, 12, 5};
int32_t ref_vx[] = {-1, 1, -9, 5, 7};

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

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

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

}  // namespace
}  // namespace softrvv_vwsub_test
