blob: d092069ebe088073f2bc6b10f5c05e7a8535ac22 [file] [log] [blame]
#include <riscv_vector.h>
#include "test_v_helpers.h"
namespace test_v_helpers {
int set_vsetvl_intrinsic(VSEW sew, VLMUL lmul, uint32_t avl) {
switch(lmul) {
case VLMUL::LMUL_M1:
switch(sew) {
case VSEW::SEW_E8:
return vsetvl_e8m1(avl);
break;
case VSEW::SEW_E16:
return vsetvl_e16m1(avl);
break;
case VSEW::SEW_E32:
return vsetvl_e32m1(avl);
break;
default:
return -1;
break;
}
break;
case VLMUL::LMUL_M2:
switch(sew) {
case VSEW::SEW_E8:
return vsetvl_e8m2(avl);
break;
case VSEW::SEW_E16:
return vsetvl_e16m2(avl);
break;
case VSEW::SEW_E32:
return vsetvl_e32m2(avl);
break;
default:
return -1;
break;
}
case VLMUL::LMUL_M4:
switch(sew) {
case VSEW::SEW_E8:
return vsetvl_e8m4(avl);
break;
case VSEW::SEW_E16:
return vsetvl_e16m4(avl);
break;
case VSEW::SEW_E32:
return vsetvl_e32m4(avl);
break;
default:
return -1;
break;
}
break;
case VLMUL::LMUL_M8:
switch(sew) {
case VSEW::SEW_E8:
return vsetvl_e8m8(avl);
break;
case VSEW::SEW_E16:
return vsetvl_e16m8(avl);
break;
case VSEW::SEW_E32:
return vsetvl_e32m8(avl);
break;
default:
return -1;
break;
}
break;
default:
break;
}
return -1;
}
int get_vsetvlmax_intrinsic(VSEW sew, VLMUL lmul) {
switch(lmul) {
case VLMUL::LMUL_M1:
switch(sew) {
case VSEW::SEW_E8:
return vsetvlmax_e8m1();
break;
case VSEW::SEW_E16:
return vsetvlmax_e16m1();
break;
case VSEW::SEW_E32:
return vsetvlmax_e32m1();
break;
default:
return -1;
break;
}
break;
case VLMUL::LMUL_M2:
switch(sew) {
case VSEW::SEW_E8:
return vsetvlmax_e8m2();
break;
case VSEW::SEW_E16:
return vsetvlmax_e16m2();
break;
case VSEW::SEW_E32:
return vsetvlmax_e32m2();
break;
default:
return -1;
break;
}
case VLMUL::LMUL_M4:
switch(sew) {
case VSEW::SEW_E8:
return vsetvlmax_e8m4();
break;
case VSEW::SEW_E16:
return vsetvlmax_e16m4();
break;
case VSEW::SEW_E32:
return vsetvlmax_e32m4();
break;
default:
return -1;
break;
}
break;
case VLMUL::LMUL_M8:
switch(sew) {
case VSEW::SEW_E8:
return vsetvlmax_e8m8();
break;
case VSEW::SEW_E16:
return vsetvlmax_e16m8();
break;
case VSEW::SEW_E32:
return vsetvlmax_e32m8();
break;
default:
return -1;
break;
}
break;
default:
break;
}
return -1;
}
}