aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--riscv/insns/kabs16.h1
-rw-r--r--riscv/insns/kabs32.h1
-rw-r--r--riscv/insns/kabs8.h1
-rw-r--r--riscv/insns/kabsw.h1
-rw-r--r--riscv/insns/kadd16.h1
-rw-r--r--riscv/insns/kadd32.h1
-rw-r--r--riscv/insns/kadd64.h1
-rw-r--r--riscv/insns/kadd8.h1
-rw-r--r--riscv/insns/kaddh.h1
-rw-r--r--riscv/insns/kaddw.h1
-rw-r--r--riscv/insns/kcras16.h1
-rw-r--r--riscv/insns/kcras32.h1
-rw-r--r--riscv/insns/kcrsa16.h1
-rw-r--r--riscv/insns/kcrsa32.h1
-rw-r--r--riscv/insns/kdmabb.h1
-rw-r--r--riscv/insns/kdmabb16.h1
-rw-r--r--riscv/insns/kdmabt.h1
-rw-r--r--riscv/insns/kdmabt16.h1
-rw-r--r--riscv/insns/kdmatt.h1
-rw-r--r--riscv/insns/kdmatt16.h1
-rw-r--r--riscv/insns/kdmbb.h1
-rw-r--r--riscv/insns/kdmbb16.h1
-rw-r--r--riscv/insns/kdmbt.h1
-rw-r--r--riscv/insns/kdmbt16.h1
-rw-r--r--riscv/insns/kdmtt.h1
-rw-r--r--riscv/insns/kdmtt16.h1
-rw-r--r--riscv/insns/khm16.h1
-rw-r--r--riscv/insns/khm8.h1
-rw-r--r--riscv/insns/khmbb.h1
-rw-r--r--riscv/insns/khmbb16.h1
-rw-r--r--riscv/insns/khmbt.h1
-rw-r--r--riscv/insns/khmbt16.h1
-rw-r--r--riscv/insns/khmtt.h1
-rw-r--r--riscv/insns/khmtt16.h1
-rw-r--r--riscv/insns/khmx16.h1
-rw-r--r--riscv/insns/khmx8.h1
-rw-r--r--riscv/insns/kmabb.h1
-rw-r--r--riscv/insns/kmabb32.h1
-rw-r--r--riscv/insns/kmabt.h1
-rw-r--r--riscv/insns/kmabt32.h1
-rw-r--r--riscv/insns/kmada.h1
-rw-r--r--riscv/insns/kmadrs.h1
-rw-r--r--riscv/insns/kmadrs32.h1
-rw-r--r--riscv/insns/kmads.h1
-rw-r--r--riscv/insns/kmads32.h1
-rw-r--r--riscv/insns/kmar64.h1
-rw-r--r--riscv/insns/kmatt.h1
-rw-r--r--riscv/insns/kmatt32.h1
-rw-r--r--riscv/insns/kmaxda.h1
-rw-r--r--riscv/insns/kmaxda32.h1
-rw-r--r--riscv/insns/kmaxds.h1
-rw-r--r--riscv/insns/kmaxds32.h1
-rw-r--r--riscv/insns/kmda.h1
-rw-r--r--riscv/insns/kmda32.h1
-rw-r--r--riscv/insns/kmmac.h1
-rw-r--r--riscv/insns/kmmac_u.h1
-rw-r--r--riscv/insns/kmmawb.h1
-rw-r--r--riscv/insns/kmmawb2.h1
-rw-r--r--riscv/insns/kmmawb2_u.h1
-rw-r--r--riscv/insns/kmmawb_u.h1
-rw-r--r--riscv/insns/kmmawt.h1
-rw-r--r--riscv/insns/kmmawt2.h1
-rw-r--r--riscv/insns/kmmawt2_u.h1
-rw-r--r--riscv/insns/kmmawt_u.h1
-rw-r--r--riscv/insns/kmmsb.h1
-rw-r--r--riscv/insns/kmmsb_u.h1
-rw-r--r--riscv/insns/kmmwb2.h1
-rw-r--r--riscv/insns/kmmwb2_u.h1
-rw-r--r--riscv/insns/kmmwt2.h1
-rw-r--r--riscv/insns/kmmwt2_u.h1
-rw-r--r--riscv/insns/kmsda.h1
-rw-r--r--riscv/insns/kmsda32.h1
-rw-r--r--riscv/insns/kmsr64.h1
-rw-r--r--riscv/insns/kmsxda.h1
-rw-r--r--riscv/insns/kmsxda32.h1
-rw-r--r--riscv/insns/kmxda.h1
-rw-r--r--riscv/insns/kmxda32.h1
-rw-r--r--riscv/insns/ksll16.h1
-rw-r--r--riscv/insns/ksll32.h1
-rw-r--r--riscv/insns/ksll8.h1
-rw-r--r--riscv/insns/kslli16.h1
-rw-r--r--riscv/insns/kslli32.h1
-rw-r--r--riscv/insns/kslli8.h1
-rw-r--r--riscv/insns/kslliw.h1
-rw-r--r--riscv/insns/ksllw.h1
-rw-r--r--riscv/insns/kslra16.h1
-rw-r--r--riscv/insns/kslra16_u.h1
-rw-r--r--riscv/insns/kslra32.h1
-rw-r--r--riscv/insns/kslra32_u.h1
-rw-r--r--riscv/insns/kslra8.h1
-rw-r--r--riscv/insns/kslra8_u.h1
-rw-r--r--riscv/insns/kslraw.h1
-rw-r--r--riscv/insns/kslraw_u.h1
-rw-r--r--riscv/insns/kstas16.h1
-rw-r--r--riscv/insns/kstas32.h1
-rw-r--r--riscv/insns/kstsa16.h1
-rw-r--r--riscv/insns/kstsa32.h1
-rw-r--r--riscv/insns/ksub16.h1
-rw-r--r--riscv/insns/ksub32.h1
-rw-r--r--riscv/insns/ksub64.h1
-rw-r--r--riscv/insns/ksub8.h1
-rw-r--r--riscv/insns/ksubh.h1
-rw-r--r--riscv/insns/ksubw.h1
-rw-r--r--riscv/insns/kwmmul.h1
-rw-r--r--riscv/insns/kwmmul_u.h1
-rw-r--r--riscv/insns/sclip16.h1
-rw-r--r--riscv/insns/sclip32.h1
-rw-r--r--riscv/insns/sclip8.h1
-rw-r--r--riscv/insns/uclip16.h1
-rw-r--r--riscv/insns/uclip32.h1
-rw-r--r--riscv/insns/uclip8.h1
-rw-r--r--riscv/insns/ukadd16.h1
-rw-r--r--riscv/insns/ukadd32.h1
-rw-r--r--riscv/insns/ukadd64.h1
-rw-r--r--riscv/insns/ukadd8.h1
-rw-r--r--riscv/insns/ukaddh.h1
-rw-r--r--riscv/insns/ukaddw.h1
-rw-r--r--riscv/insns/ukcras16.h1
-rw-r--r--riscv/insns/ukcras32.h1
-rw-r--r--riscv/insns/ukcrsa16.h1
-rw-r--r--riscv/insns/ukcrsa32.h1
-rw-r--r--riscv/insns/ukmar64.h1
-rw-r--r--riscv/insns/ukmsr64.h1
-rw-r--r--riscv/insns/ukstas16.h1
-rw-r--r--riscv/insns/ukstas32.h1
-rw-r--r--riscv/insns/ukstsa16.h1
-rw-r--r--riscv/insns/ukstsa32.h1
-rw-r--r--riscv/insns/uksub16.h1
-rw-r--r--riscv/insns/uksub32.h1
-rw-r--r--riscv/insns/uksub64.h1
-rw-r--r--riscv/insns/uksub8.h1
-rw-r--r--riscv/insns/uksubh.h1
-rw-r--r--riscv/insns/uksubw.h1
133 files changed, 133 insertions, 0 deletions
diff --git a/riscv/insns/kabs16.h b/riscv/insns/kabs16.h
index 376e921..8d1d9b8 100644
--- a/riscv/insns/kabs16.h
+++ b/riscv/insns/kabs16.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_ONE_LOOP(16, {
pd = ps1;
if (ps1 == INT16_MIN) {
diff --git a/riscv/insns/kabs32.h b/riscv/insns/kabs32.h
index 9b0c227..0536aac 100644
--- a/riscv/insns/kabs32.h
+++ b/riscv/insns/kabs32.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_rv64;
P_ONE_LOOP(32, {
pd = ps1;
diff --git a/riscv/insns/kabs8.h b/riscv/insns/kabs8.h
index df42202..2e6e1f1 100644
--- a/riscv/insns/kabs8.h
+++ b/riscv/insns/kabs8.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_ONE_LOOP(8, {
pd = ps1;
if (ps1 == INT8_MIN) {
diff --git a/riscv/insns/kabsw.h b/riscv/insns/kabsw.h
index ce0d786..3ac2339 100644
--- a/riscv/insns/kabsw.h
+++ b/riscv/insns/kabsw.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_extension('P');
int32_t rs1 = P_W(RS1, 0);
diff --git a/riscv/insns/kadd16.h b/riscv/insns/kadd16.h
index 5fd2009..b6defe1 100644
--- a/riscv/insns/kadd16.h
+++ b/riscv/insns/kadd16.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_LOOP(16, {
bool sat = false;
pd = (sat_add<int16_t, uint16_t>(ps1, ps2, sat));
diff --git a/riscv/insns/kadd32.h b/riscv/insns/kadd32.h
index d0c53f5..1728847 100644
--- a/riscv/insns/kadd32.h
+++ b/riscv/insns/kadd32.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_rv64;
P_LOOP(32, {
bool sat = false;
diff --git a/riscv/insns/kadd64.h b/riscv/insns/kadd64.h
index eddc078..c58fff0 100644
--- a/riscv/insns/kadd64.h
+++ b/riscv/insns/kadd64.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_64_PROFILE({
bool sat = false;
rd = (sat_add<int64_t, uint64_t>(rs1, rs2, sat));
diff --git a/riscv/insns/kadd8.h b/riscv/insns/kadd8.h
index d4c6632..98864c7 100644
--- a/riscv/insns/kadd8.h
+++ b/riscv/insns/kadd8.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_LOOP(8, {
bool sat = false;
pd = (sat_add<int8_t, uint8_t>(ps1, ps2, sat));
diff --git a/riscv/insns/kaddh.h b/riscv/insns/kaddh.h
index b0532fb..e7c377c 100644
--- a/riscv/insns/kaddh.h
+++ b/riscv/insns/kaddh.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_extension('P');
sreg_t res = (sreg_t)P_SW(RS1, 0) + (sreg_t)P_SW(RS2, 0);
P_SAT(res, 16);
diff --git a/riscv/insns/kaddw.h b/riscv/insns/kaddw.h
index 1f37c74..693e3eb 100644
--- a/riscv/insns/kaddw.h
+++ b/riscv/insns/kaddw.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_extension('P');
sreg_t res = (sreg_t)P_SW(RS1, 0) + (sreg_t)P_SW(RS2, 0);
P_SAT(res, 32);
diff --git a/riscv/insns/kcras16.h b/riscv/insns/kcras16.h
index e89ac4d..d746425 100644
--- a/riscv/insns/kcras16.h
+++ b/riscv/insns/kcras16.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_CROSS_ULOOP(16, {
bool sat = false;
pd = (sat_add<int16_t, uint16_t>(ps1, ps2, sat));
diff --git a/riscv/insns/kcras32.h b/riscv/insns/kcras32.h
index 0d18aca..ead31f8 100644
--- a/riscv/insns/kcras32.h
+++ b/riscv/insns/kcras32.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_rv64;
P_CROSS_ULOOP(32, {
bool sat = false;
diff --git a/riscv/insns/kcrsa16.h b/riscv/insns/kcrsa16.h
index 1c80c64..2a7ca4d 100644
--- a/riscv/insns/kcrsa16.h
+++ b/riscv/insns/kcrsa16.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_CROSS_ULOOP(16, {
bool sat = false;
pd = (sat_sub<int16_t, uint16_t>(ps1, ps2, sat));
diff --git a/riscv/insns/kcrsa32.h b/riscv/insns/kcrsa32.h
index a427bfc..b688fd3 100644
--- a/riscv/insns/kcrsa32.h
+++ b/riscv/insns/kcrsa32.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_rv64;
P_CROSS_ULOOP(32, {
bool sat = false;
diff --git a/riscv/insns/kdmabb.h b/riscv/insns/kdmabb.h
index cd8dc61..bc012fd 100644
--- a/riscv/insns/kdmabb.h
+++ b/riscv/insns/kdmabb.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_extension('P');
sreg_t res;
sreg_t aop = P_SH(RS1, 0);
diff --git a/riscv/insns/kdmabb16.h b/riscv/insns/kdmabb16.h
index 808e5ab..2ccd40b 100644
--- a/riscv/insns/kdmabb16.h
+++ b/riscv/insns/kdmabb16.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_rv64;
P_LOOP(32, {
int32_t aop = P_SH(ps1, 0);
diff --git a/riscv/insns/kdmabt.h b/riscv/insns/kdmabt.h
index d542cfc..2b293e0 100644
--- a/riscv/insns/kdmabt.h
+++ b/riscv/insns/kdmabt.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_extension('P');
sreg_t res;
sreg_t aop = P_SH(RS1, 0);
diff --git a/riscv/insns/kdmabt16.h b/riscv/insns/kdmabt16.h
index d9a1f83..49538b3 100644
--- a/riscv/insns/kdmabt16.h
+++ b/riscv/insns/kdmabt16.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_rv64;
P_LOOP(32, {
int32_t aop = P_SH(ps1, 0);
diff --git a/riscv/insns/kdmatt.h b/riscv/insns/kdmatt.h
index c4fd29d..b401882 100644
--- a/riscv/insns/kdmatt.h
+++ b/riscv/insns/kdmatt.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_extension('P');
sreg_t res;
sreg_t aop = P_SH(RS1, 1);
diff --git a/riscv/insns/kdmatt16.h b/riscv/insns/kdmatt16.h
index 267d72b..ebce13f 100644
--- a/riscv/insns/kdmatt16.h
+++ b/riscv/insns/kdmatt16.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_rv64;
P_LOOP(32, {
int32_t aop = P_SH(ps1, 1);
diff --git a/riscv/insns/kdmbb.h b/riscv/insns/kdmbb.h
index 485c4a6..b98dd0a 100644
--- a/riscv/insns/kdmbb.h
+++ b/riscv/insns/kdmbb.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_extension('P');
sreg_t res;
sreg_t aop = P_SH(RS1, 0);
diff --git a/riscv/insns/kdmbb16.h b/riscv/insns/kdmbb16.h
index ac5cc5d..a84877d 100644
--- a/riscv/insns/kdmbb16.h
+++ b/riscv/insns/kdmbb16.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_rv64;
P_LOOP(32, {
int32_t aop = P_SH(ps1, 0);
diff --git a/riscv/insns/kdmbt.h b/riscv/insns/kdmbt.h
index 8b1de6e..2a8efa3 100644
--- a/riscv/insns/kdmbt.h
+++ b/riscv/insns/kdmbt.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_extension('P');
sreg_t res;
sreg_t aop = P_SH(RS1, 0);
diff --git a/riscv/insns/kdmbt16.h b/riscv/insns/kdmbt16.h
index 02d9025..85e9d0e 100644
--- a/riscv/insns/kdmbt16.h
+++ b/riscv/insns/kdmbt16.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_rv64;
P_LOOP(32, {
int32_t aop = P_SH(ps1, 0);
diff --git a/riscv/insns/kdmtt.h b/riscv/insns/kdmtt.h
index e264f5d..4bdd647 100644
--- a/riscv/insns/kdmtt.h
+++ b/riscv/insns/kdmtt.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_extension('P');
sreg_t res;
sreg_t aop = P_SH(RS1, 1);
diff --git a/riscv/insns/kdmtt16.h b/riscv/insns/kdmtt16.h
index 7b30f0d..2190710 100644
--- a/riscv/insns/kdmtt16.h
+++ b/riscv/insns/kdmtt16.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_rv64;
P_LOOP(32, {
int32_t aop = P_SH(ps1, 1);
diff --git a/riscv/insns/khm16.h b/riscv/insns/khm16.h
index 3183556..9c2e28c 100644
--- a/riscv/insns/khm16.h
+++ b/riscv/insns/khm16.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_LOOP(16, {
if ((ps1 != INT16_MIN) | (ps2 != INT16_MIN)) {
pd = (ps1 * ps2) >> 15;
diff --git a/riscv/insns/khm8.h b/riscv/insns/khm8.h
index c3ed6b2..ac21d68 100644
--- a/riscv/insns/khm8.h
+++ b/riscv/insns/khm8.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_LOOP(8, {
if ((ps1 != INT8_MIN) | (ps2 != INT8_MIN)) {
pd = (ps1 * ps2) >> 7;
diff --git a/riscv/insns/khmbb.h b/riscv/insns/khmbb.h
index 0555620..28f7649 100644
--- a/riscv/insns/khmbb.h
+++ b/riscv/insns/khmbb.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_extension('P');
sreg_t res;
sreg_t aop = P_SH(RS1, 0);
diff --git a/riscv/insns/khmbb16.h b/riscv/insns/khmbb16.h
index 40a0c41..efbd7eb 100644
--- a/riscv/insns/khmbb16.h
+++ b/riscv/insns/khmbb16.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_rv64;
P_LOOP(32, {
int32_t aop = P_SH(ps1, 0);
diff --git a/riscv/insns/khmbt.h b/riscv/insns/khmbt.h
index 431a9eb..c821e8f 100644
--- a/riscv/insns/khmbt.h
+++ b/riscv/insns/khmbt.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_extension('P');
sreg_t res;
sreg_t aop = P_SH(RS1, 0);
diff --git a/riscv/insns/khmbt16.h b/riscv/insns/khmbt16.h
index 81cabd1..4bb1f48 100644
--- a/riscv/insns/khmbt16.h
+++ b/riscv/insns/khmbt16.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_rv64;
P_LOOP(32, {
int32_t aop = P_SH(ps1, 0);
diff --git a/riscv/insns/khmtt.h b/riscv/insns/khmtt.h
index b39ce70..a6df179 100644
--- a/riscv/insns/khmtt.h
+++ b/riscv/insns/khmtt.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_extension('P');
sreg_t res;
sreg_t aop = P_SH(RS1, 1);
diff --git a/riscv/insns/khmtt16.h b/riscv/insns/khmtt16.h
index 7f004b0..d3c0b4c 100644
--- a/riscv/insns/khmtt16.h
+++ b/riscv/insns/khmtt16.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_rv64;
P_LOOP(32, {
int32_t aop = P_SH(ps1, 1);
diff --git a/riscv/insns/khmx16.h b/riscv/insns/khmx16.h
index ed72f45..bf93462 100644
--- a/riscv/insns/khmx16.h
+++ b/riscv/insns/khmx16.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_CROSS_LOOP(16, {
if ((ps1 != INT16_MIN) | (ps2 != INT16_MIN)) {
pd = (ps1 * ps2) >> 15;
diff --git a/riscv/insns/khmx8.h b/riscv/insns/khmx8.h
index 84aafb3..0d6a5d5 100644
--- a/riscv/insns/khmx8.h
+++ b/riscv/insns/khmx8.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_CROSS_LOOP(8, {
if ((ps1 != INT8_MIN) | (ps2 != INT8_MIN)) {
pd = (ps1 * ps2) >> 7;
diff --git a/riscv/insns/kmabb.h b/riscv/insns/kmabb.h
index f2e7351..f2d7715 100644
--- a/riscv/insns/kmabb.h
+++ b/riscv/insns/kmabb.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_LOOP(32, {
int32_t mres = P_SH(ps1, 0) * P_SH(ps2, 0);
bool sat = false;
diff --git a/riscv/insns/kmabb32.h b/riscv/insns/kmabb32.h
index dba9713..1f6a84e 100644
--- a/riscv/insns/kmabb32.h
+++ b/riscv/insns/kmabb32.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_rv64;
require_extension('P');
diff --git a/riscv/insns/kmabt.h b/riscv/insns/kmabt.h
index e5b4576..4ead23b 100644
--- a/riscv/insns/kmabt.h
+++ b/riscv/insns/kmabt.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_LOOP(32, {
int32_t mres = P_SH(ps1, 0) * P_SH(ps2, 1);
bool sat = false;
diff --git a/riscv/insns/kmabt32.h b/riscv/insns/kmabt32.h
index 441b46f..90b7c3a 100644
--- a/riscv/insns/kmabt32.h
+++ b/riscv/insns/kmabt32.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_rv64;
require_extension('P');
diff --git a/riscv/insns/kmada.h b/riscv/insns/kmada.h
index 8271bd0..3c082c7 100644
--- a/riscv/insns/kmada.h
+++ b/riscv/insns/kmada.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_REDUCTION_LOOP(32, 16, true, true, {
pd_res += ps1 * ps2;
})
diff --git a/riscv/insns/kmadrs.h b/riscv/insns/kmadrs.h
index 92229c4..a450351 100644
--- a/riscv/insns/kmadrs.h
+++ b/riscv/insns/kmadrs.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_REDUCTION_LOOP(32, 16, true, true, {
if (j & 1)
pd_res -= ps1 * ps2;
diff --git a/riscv/insns/kmadrs32.h b/riscv/insns/kmadrs32.h
index 7c5fbf3..bc91982 100644
--- a/riscv/insns/kmadrs32.h
+++ b/riscv/insns/kmadrs32.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_rv64;
require_extension('P');
diff --git a/riscv/insns/kmads.h b/riscv/insns/kmads.h
index c43fe4a..89aabe0 100644
--- a/riscv/insns/kmads.h
+++ b/riscv/insns/kmads.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_REDUCTION_LOOP(32, 16, true, true, {
if (j & 1)
pd_res += ps1 * ps2;
diff --git a/riscv/insns/kmads32.h b/riscv/insns/kmads32.h
index 7434fe8..c8443db 100644
--- a/riscv/insns/kmads32.h
+++ b/riscv/insns/kmads32.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_rv64;
require_extension('P');
diff --git a/riscv/insns/kmar64.h b/riscv/insns/kmar64.h
index 63c103b..49f4482 100644
--- a/riscv/insns/kmar64.h
+++ b/riscv/insns/kmar64.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_64_PROFILE_BASE()
P_64_PROFILE_PARAM(true, false)
diff --git a/riscv/insns/kmatt.h b/riscv/insns/kmatt.h
index 4eb020d..4be2f3d 100644
--- a/riscv/insns/kmatt.h
+++ b/riscv/insns/kmatt.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_LOOP(32, {
int32_t mres = P_SH(ps1, 1) * P_SH(ps2, 1);
bool sat = false;
diff --git a/riscv/insns/kmatt32.h b/riscv/insns/kmatt32.h
index 761c45c..35ad7b0 100644
--- a/riscv/insns/kmatt32.h
+++ b/riscv/insns/kmatt32.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_rv64;
require_extension('P');
diff --git a/riscv/insns/kmaxda.h b/riscv/insns/kmaxda.h
index e0db379..393f047 100644
--- a/riscv/insns/kmaxda.h
+++ b/riscv/insns/kmaxda.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_REDUCTION_CROSS_LOOP(32, 16, true, true, {
pd_res += ps1 * ps2;
})
diff --git a/riscv/insns/kmaxda32.h b/riscv/insns/kmaxda32.h
index 0a09013..8129954 100644
--- a/riscv/insns/kmaxda32.h
+++ b/riscv/insns/kmaxda32.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_rv64;
require_extension('P');
diff --git a/riscv/insns/kmaxds.h b/riscv/insns/kmaxds.h
index 493d8b3..c2f0e59 100644
--- a/riscv/insns/kmaxds.h
+++ b/riscv/insns/kmaxds.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_REDUCTION_CROSS_LOOP(32, 16, true, true, {
if (j & 1)
pd_res += ps1 * ps2;
diff --git a/riscv/insns/kmaxds32.h b/riscv/insns/kmaxds32.h
index 6e18533..e49e9e6 100644
--- a/riscv/insns/kmaxds32.h
+++ b/riscv/insns/kmaxds32.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_rv64;
require_extension('P');
diff --git a/riscv/insns/kmda.h b/riscv/insns/kmda.h
index fc7a427..68b6c9a 100644
--- a/riscv/insns/kmda.h
+++ b/riscv/insns/kmda.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_REDUCTION_LOOP(32, 16, false, true, {
pd_res += ps1 * ps2;
})
diff --git a/riscv/insns/kmda32.h b/riscv/insns/kmda32.h
index 1196f08..7c6de0b 100644
--- a/riscv/insns/kmda32.h
+++ b/riscv/insns/kmda32.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_rv64;
require_extension('P');
diff --git a/riscv/insns/kmmac.h b/riscv/insns/kmmac.h
index dccedf0..946f0fe 100644
--- a/riscv/insns/kmmac.h
+++ b/riscv/insns/kmmac.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_LOOP(32, {
int64_t mres = (int64_t) ps1 * (int64_t) ps2;
bool sat = false;
diff --git a/riscv/insns/kmmac_u.h b/riscv/insns/kmmac_u.h
index 4b81a49..5a06a4d 100644
--- a/riscv/insns/kmmac_u.h
+++ b/riscv/insns/kmmac_u.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_LOOP(32, {
int64_t mres = (int64_t) ps1 * (int64_t) ps2;
int32_t round = (((mres >> 31) + 1) >> 1);
diff --git a/riscv/insns/kmmawb.h b/riscv/insns/kmmawb.h
index 91da3d1..0e3a694 100644
--- a/riscv/insns/kmmawb.h
+++ b/riscv/insns/kmmawb.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_LOOP(32, {
int64_t mres = (int64_t)ps1 * P_SH(ps2, 0);
bool sat = false;
diff --git a/riscv/insns/kmmawb2.h b/riscv/insns/kmmawb2.h
index 74711e8..6b3aa0d 100644
--- a/riscv/insns/kmmawb2.h
+++ b/riscv/insns/kmmawb2.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_LOOP(32, {
int64_t addop = 0;
int64_t mres = 0;
diff --git a/riscv/insns/kmmawb2_u.h b/riscv/insns/kmmawb2_u.h
index bb5d585..f44346e 100644
--- a/riscv/insns/kmmawb2_u.h
+++ b/riscv/insns/kmmawb2_u.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_LOOP(32, {
int64_t addop = 0;
int64_t mres = 0;
diff --git a/riscv/insns/kmmawb_u.h b/riscv/insns/kmmawb_u.h
index cd36184..766dd71 100644
--- a/riscv/insns/kmmawb_u.h
+++ b/riscv/insns/kmmawb_u.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_LOOP(32, {
int64_t mres = (int64_t)ps1 * P_SH(ps2, 0);
int32_t round = (((mres >> 15) + 1) >> 1);
diff --git a/riscv/insns/kmmawt.h b/riscv/insns/kmmawt.h
index 140716c..514ee48 100644
--- a/riscv/insns/kmmawt.h
+++ b/riscv/insns/kmmawt.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_LOOP(32, {
int64_t mres = (int64_t)ps1 * P_SH(ps2, 1);
bool sat = false;
diff --git a/riscv/insns/kmmawt2.h b/riscv/insns/kmmawt2.h
index 8e4dce4..3cd72de 100644
--- a/riscv/insns/kmmawt2.h
+++ b/riscv/insns/kmmawt2.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_LOOP(32, {
int64_t addop = 0;
int64_t mres = 0;
diff --git a/riscv/insns/kmmawt2_u.h b/riscv/insns/kmmawt2_u.h
index 03c15b1..7fe378c 100644
--- a/riscv/insns/kmmawt2_u.h
+++ b/riscv/insns/kmmawt2_u.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_LOOP(32, {
int64_t addop = 0;
int64_t mres = 0;
diff --git a/riscv/insns/kmmawt_u.h b/riscv/insns/kmmawt_u.h
index b1bd289..74d8fd0 100644
--- a/riscv/insns/kmmawt_u.h
+++ b/riscv/insns/kmmawt_u.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_LOOP(32, {
int64_t mres = (int64_t)ps1 * P_SH(ps2, 1);
int32_t round = (((mres >> 15) + 1) >> 1);
diff --git a/riscv/insns/kmmsb.h b/riscv/insns/kmmsb.h
index 783f409..29ad1bf 100644
--- a/riscv/insns/kmmsb.h
+++ b/riscv/insns/kmmsb.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_LOOP(32, {
int64_t mres = (int64_t) ps1 * (int64_t) ps2;
bool sat = false;
diff --git a/riscv/insns/kmmsb_u.h b/riscv/insns/kmmsb_u.h
index 5beb91f..c7b283e 100644
--- a/riscv/insns/kmmsb_u.h
+++ b/riscv/insns/kmmsb_u.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_LOOP(32, {
int64_t mres = (int64_t) ps1 * (int64_t) ps2;
int32_t round = (((mres >> 31) + 1) >> 1);
diff --git a/riscv/insns/kmmwb2.h b/riscv/insns/kmmwb2.h
index 55c4aea..272f738 100644
--- a/riscv/insns/kmmwb2.h
+++ b/riscv/insns/kmmwb2.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_LOOP(32, {
if((INT32_MIN != ps1) | (INT16_MIN != P_SH(ps2, 0))) {
int64_t mres = ((int64_t) ps1 * P_SH(ps2, 0)) << 1;
diff --git a/riscv/insns/kmmwb2_u.h b/riscv/insns/kmmwb2_u.h
index 394a4d6..b5a5006 100644
--- a/riscv/insns/kmmwb2_u.h
+++ b/riscv/insns/kmmwb2_u.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_LOOP(32, {
if((INT32_MIN != ps1) | (INT16_MIN != P_SH(ps2, 0))) {
int64_t mres = ((int64_t) ps1 * P_SH(ps2, 0)) << 1;
diff --git a/riscv/insns/kmmwt2.h b/riscv/insns/kmmwt2.h
index d80291a..73d3dc8 100644
--- a/riscv/insns/kmmwt2.h
+++ b/riscv/insns/kmmwt2.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_LOOP(32, {
if((INT32_MIN != ps1) | (INT16_MIN != P_SH(ps2, 1))) {
int64_t mres = ((int64_t) ps1 * P_SH(ps2, 1)) << 1;
diff --git a/riscv/insns/kmmwt2_u.h b/riscv/insns/kmmwt2_u.h
index 330a241..1f525a8 100644
--- a/riscv/insns/kmmwt2_u.h
+++ b/riscv/insns/kmmwt2_u.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_LOOP(32, {
if((INT32_MIN != ps1) | (INT16_MIN != P_SH(ps2, 1))) {
int64_t mres = ((int64_t) ps1 * P_SH(ps2, 1)) << 1;
diff --git a/riscv/insns/kmsda.h b/riscv/insns/kmsda.h
index 4de7018..94b118a 100644
--- a/riscv/insns/kmsda.h
+++ b/riscv/insns/kmsda.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_REDUCTION_LOOP(32, 16, true, true, {
pd_res -= ps1 * ps2;
})
diff --git a/riscv/insns/kmsda32.h b/riscv/insns/kmsda32.h
index 249a4da..2790f80 100644
--- a/riscv/insns/kmsda32.h
+++ b/riscv/insns/kmsda32.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_rv64;
require_extension('P');
diff --git a/riscv/insns/kmsr64.h b/riscv/insns/kmsr64.h
index 698ae51..bfef503 100644
--- a/riscv/insns/kmsr64.h
+++ b/riscv/insns/kmsr64.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_64_PROFILE_BASE()
P_64_PROFILE_PARAM(true, false)
diff --git a/riscv/insns/kmsxda.h b/riscv/insns/kmsxda.h
index cd83b61..2d0faa3 100644
--- a/riscv/insns/kmsxda.h
+++ b/riscv/insns/kmsxda.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_REDUCTION_CROSS_LOOP(32, 16, true, true, {
pd_res -= ps1 * ps2;
})
diff --git a/riscv/insns/kmsxda32.h b/riscv/insns/kmsxda32.h
index ad265b5..1855a1b 100644
--- a/riscv/insns/kmsxda32.h
+++ b/riscv/insns/kmsxda32.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_rv64;
require_extension('P');
diff --git a/riscv/insns/kmxda.h b/riscv/insns/kmxda.h
index b714af2..4addd8a 100644
--- a/riscv/insns/kmxda.h
+++ b/riscv/insns/kmxda.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_REDUCTION_CROSS_LOOP(32, 16, false, true, {
pd_res += ps1 * ps2;
})
diff --git a/riscv/insns/kmxda32.h b/riscv/insns/kmxda32.h
index 1b0c260..1438652 100644
--- a/riscv/insns/kmxda32.h
+++ b/riscv/insns/kmxda32.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_rv64;
require_extension('P');
diff --git a/riscv/insns/ksll16.h b/riscv/insns/ksll16.h
index ce6dd03..9e03b34 100644
--- a/riscv/insns/ksll16.h
+++ b/riscv/insns/ksll16.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_X_LOOP(16, 4, {
auto res = (sreg_t)ps1 << sa;
P_SAT(res, 16);
diff --git a/riscv/insns/ksll32.h b/riscv/insns/ksll32.h
index dce8c96..3588898 100644
--- a/riscv/insns/ksll32.h
+++ b/riscv/insns/ksll32.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_rv64;
P_X_LOOP(32, 5, {
auto res = (sreg_t)ps1 << sa;
diff --git a/riscv/insns/ksll8.h b/riscv/insns/ksll8.h
index 93ed907..930ea03 100644
--- a/riscv/insns/ksll8.h
+++ b/riscv/insns/ksll8.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_X_LOOP(8, 3, {
auto res = (sreg_t)ps1 << sa;
P_SAT(res, 8);
diff --git a/riscv/insns/kslli16.h b/riscv/insns/kslli16.h
index e37eab8..edc7c67 100644
--- a/riscv/insns/kslli16.h
+++ b/riscv/insns/kslli16.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_I_LOOP(16, 4, {
auto res = (sreg_t)ps1 << imm4u;
P_SAT(res, 16);
diff --git a/riscv/insns/kslli32.h b/riscv/insns/kslli32.h
index 95000e4..4fd506b 100644
--- a/riscv/insns/kslli32.h
+++ b/riscv/insns/kslli32.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_rv64;
P_I_LOOP(32, 5, {
auto res = (sreg_t)ps1 << imm5u;
diff --git a/riscv/insns/kslli8.h b/riscv/insns/kslli8.h
index 115361b..18d714f 100644
--- a/riscv/insns/kslli8.h
+++ b/riscv/insns/kslli8.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_I_LOOP(8, 3, {
auto res = (sreg_t)ps1 << imm3u;
P_SAT(res, 8);
diff --git a/riscv/insns/kslliw.h b/riscv/insns/kslliw.h
index 13c5d7f..db17b2c 100644
--- a/riscv/insns/kslliw.h
+++ b/riscv/insns/kslliw.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_extension('P');
sreg_t rs1 = sext32(RS1);
sreg_t sa = insn.p_imm5();
diff --git a/riscv/insns/ksllw.h b/riscv/insns/ksllw.h
index e8cf68f..0004137 100644
--- a/riscv/insns/ksllw.h
+++ b/riscv/insns/ksllw.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_extension('P');
sreg_t rs1 = sext32(RS1);
sreg_t sa = get_field(RS2, make_mask64(0, 5));
diff --git a/riscv/insns/kslra16.h b/riscv/insns/kslra16.h
index ce4aa33..ad1443a 100644
--- a/riscv/insns/kslra16.h
+++ b/riscv/insns/kslra16.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_X_LOOP(16, 5, {
if (ssa < 0) {
sa = -ssa;
diff --git a/riscv/insns/kslra16_u.h b/riscv/insns/kslra16_u.h
index ff0ef40..8335f3e 100644
--- a/riscv/insns/kslra16_u.h
+++ b/riscv/insns/kslra16_u.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_X_LOOP(16, 5, {
if (ssa < 0) {
sa = -ssa;
diff --git a/riscv/insns/kslra32.h b/riscv/insns/kslra32.h
index 76906d1..871d601 100644
--- a/riscv/insns/kslra32.h
+++ b/riscv/insns/kslra32.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_rv64;
P_X_LOOP(32, 6, {
if (ssa < 0) {
diff --git a/riscv/insns/kslra32_u.h b/riscv/insns/kslra32_u.h
index 66504eb..d53c8fe 100644
--- a/riscv/insns/kslra32_u.h
+++ b/riscv/insns/kslra32_u.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_rv64;
P_X_LOOP(32, 6, {
if (ssa < 0) {
diff --git a/riscv/insns/kslra8.h b/riscv/insns/kslra8.h
index 2346a86..b3f3e6b 100644
--- a/riscv/insns/kslra8.h
+++ b/riscv/insns/kslra8.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_X_LOOP(8, 4, {
if (ssa < 0) {
sa = -ssa;
diff --git a/riscv/insns/kslra8_u.h b/riscv/insns/kslra8_u.h
index b67b25a..620f3bd 100644
--- a/riscv/insns/kslra8_u.h
+++ b/riscv/insns/kslra8_u.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_X_LOOP(8, 4, {
if (ssa < 0) {
sa = -ssa;
diff --git a/riscv/insns/kslraw.h b/riscv/insns/kslraw.h
index 20e4894..0ec07b5 100644
--- a/riscv/insns/kslraw.h
+++ b/riscv/insns/kslraw.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_extension('P');
sreg_t rs1 = sext32(RS1);
sreg_t sa = int64_t(RS2) << (64 - 6) >> (64 - 6);
diff --git a/riscv/insns/kslraw_u.h b/riscv/insns/kslraw_u.h
index e1c53ee..f3c5cd7 100644
--- a/riscv/insns/kslraw_u.h
+++ b/riscv/insns/kslraw_u.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_extension('P');
sreg_t rs1 = sext32(RS1);
sreg_t sa = int64_t(RS2) << (64 - 6) >> (64 - 6);
diff --git a/riscv/insns/kstas16.h b/riscv/insns/kstas16.h
index ca2c538..ad18013 100644
--- a/riscv/insns/kstas16.h
+++ b/riscv/insns/kstas16.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_STRAIGHT_ULOOP(16, {
bool sat = false;
pd = (sat_add<int16_t, uint16_t>(ps1, ps2, sat));
diff --git a/riscv/insns/kstas32.h b/riscv/insns/kstas32.h
index db78a8e..35f23e0 100644
--- a/riscv/insns/kstas32.h
+++ b/riscv/insns/kstas32.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_rv64;
P_STRAIGHT_ULOOP(32, {
bool sat = false;
diff --git a/riscv/insns/kstsa16.h b/riscv/insns/kstsa16.h
index b1349c7..47a8918 100644
--- a/riscv/insns/kstsa16.h
+++ b/riscv/insns/kstsa16.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_STRAIGHT_ULOOP(16, {
bool sat = false;
pd = (sat_sub<int16_t, uint16_t>(ps1, ps2, sat));
diff --git a/riscv/insns/kstsa32.h b/riscv/insns/kstsa32.h
index f7e5eb4..aa9c372 100644
--- a/riscv/insns/kstsa32.h
+++ b/riscv/insns/kstsa32.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_rv64;
P_STRAIGHT_ULOOP(32, {
bool sat = false;
diff --git a/riscv/insns/ksub16.h b/riscv/insns/ksub16.h
index 4f8e8b1..57562b5 100644
--- a/riscv/insns/ksub16.h
+++ b/riscv/insns/ksub16.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_LOOP(16, {
bool sat = false;
pd = (sat_sub<int16_t, uint16_t>(ps1, ps2, sat));
diff --git a/riscv/insns/ksub32.h b/riscv/insns/ksub32.h
index b6eaa82..3ef32e8 100644
--- a/riscv/insns/ksub32.h
+++ b/riscv/insns/ksub32.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_rv64;
P_LOOP(32, {
bool sat = false;
diff --git a/riscv/insns/ksub64.h b/riscv/insns/ksub64.h
index d0040dc..c6f0994 100644
--- a/riscv/insns/ksub64.h
+++ b/riscv/insns/ksub64.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_64_PROFILE({
bool sat = false;
rd = (sat_sub<int64_t, uint64_t>(rs1, rs2, sat));
diff --git a/riscv/insns/ksub8.h b/riscv/insns/ksub8.h
index 2b8ea2e..705f632 100644
--- a/riscv/insns/ksub8.h
+++ b/riscv/insns/ksub8.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_LOOP(8, {
bool sat = false;
pd = (sat_sub<int8_t, uint8_t>(ps1, ps2, sat));
diff --git a/riscv/insns/ksubh.h b/riscv/insns/ksubh.h
index 7c5d2b2..7c421b0 100644
--- a/riscv/insns/ksubh.h
+++ b/riscv/insns/ksubh.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_extension('P');
sreg_t res = (sreg_t)P_SW(RS1, 0) - (sreg_t)P_SW(RS2, 0);
P_SAT(res, 16);
diff --git a/riscv/insns/ksubw.h b/riscv/insns/ksubw.h
index 49c6385..7bd5cdb 100644
--- a/riscv/insns/ksubw.h
+++ b/riscv/insns/ksubw.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_extension('P');
sreg_t res = (sreg_t)P_SW(RS1, 0) - (sreg_t)P_SW(RS2, 0);
P_SAT(res, 32);
diff --git a/riscv/insns/kwmmul.h b/riscv/insns/kwmmul.h
index 57aa2b5..b0ab8d4 100644
--- a/riscv/insns/kwmmul.h
+++ b/riscv/insns/kwmmul.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_LOOP(32, {
if((INT32_MIN != ps1) | (INT32_MIN != ps2)) {
int64_t mres = ((int64_t) ps1 * (int64_t) ps2) << 1;
diff --git a/riscv/insns/kwmmul_u.h b/riscv/insns/kwmmul_u.h
index fb74a43..c2045e1 100644
--- a/riscv/insns/kwmmul_u.h
+++ b/riscv/insns/kwmmul_u.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_LOOP(32, {
if((INT32_MIN != ps1) | (INT32_MIN != ps2)) {
int64_t mres = ((int64_t) ps1 * (int64_t) ps2) << 1;
diff --git a/riscv/insns/sclip16.h b/riscv/insns/sclip16.h
index cd313c0..d90ce19 100644
--- a/riscv/insns/sclip16.h
+++ b/riscv/insns/sclip16.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_I_LOOP(16, 4, {
int64_t int_max = INT64_MAX >> (64 - (imm4u + 1));
int64_t int_min = INT64_MIN >> (64 - (imm4u + 1));
diff --git a/riscv/insns/sclip32.h b/riscv/insns/sclip32.h
index 8c16e81..ff1ba28 100644
--- a/riscv/insns/sclip32.h
+++ b/riscv/insns/sclip32.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_I_LOOP(32, 5, {
int64_t int_max = INT64_MAX >> (64 - (imm5u + 1));
int64_t int_min = INT64_MIN >> (64 - (imm5u + 1));
diff --git a/riscv/insns/sclip8.h b/riscv/insns/sclip8.h
index 7f86891..afd9c69 100644
--- a/riscv/insns/sclip8.h
+++ b/riscv/insns/sclip8.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_I_LOOP(8, 3, {
int64_t int_max = INT64_MAX >> (64 - (imm3u + 1));
int64_t int_min = INT64_MIN >> (64 - (imm3u + 1));
diff --git a/riscv/insns/uclip16.h b/riscv/insns/uclip16.h
index cc1f58a..4cc2519 100644
--- a/riscv/insns/uclip16.h
+++ b/riscv/insns/uclip16.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_I_LOOP(16, 4, {
int64_t uint_max = imm4u ? UINT64_MAX >> (64 - imm4u) : 0;
pd = ps1;
diff --git a/riscv/insns/uclip32.h b/riscv/insns/uclip32.h
index 4d24afb..d347650 100644
--- a/riscv/insns/uclip32.h
+++ b/riscv/insns/uclip32.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_I_LOOP(32, 5, {
int64_t uint_max = imm5u ? UINT64_MAX >> (64 - imm5u) : 0;
pd = ps1;
diff --git a/riscv/insns/uclip8.h b/riscv/insns/uclip8.h
index 87a23ba..b8a95c0 100644
--- a/riscv/insns/uclip8.h
+++ b/riscv/insns/uclip8.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_I_LOOP(8, 3, {
int64_t uint_max = imm3u ? UINT64_MAX >> (64 - imm3u) : 0;
pd = ps1;
diff --git a/riscv/insns/ukadd16.h b/riscv/insns/ukadd16.h
index 8d74291..680b5b6 100644
--- a/riscv/insns/ukadd16.h
+++ b/riscv/insns/ukadd16.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_ULOOP(16, {
bool sat = false;
pd = (sat_addu<uint16_t>(ps1, ps2, sat));
diff --git a/riscv/insns/ukadd32.h b/riscv/insns/ukadd32.h
index 6608027..dd836c1 100644
--- a/riscv/insns/ukadd32.h
+++ b/riscv/insns/ukadd32.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_rv64;
P_ULOOP(32, {
bool sat = false;
diff --git a/riscv/insns/ukadd64.h b/riscv/insns/ukadd64.h
index e61e2f9..d7e98f3 100644
--- a/riscv/insns/ukadd64.h
+++ b/riscv/insns/ukadd64.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_64_UPROFILE({
bool sat = false;
rd = (sat_addu<uint64_t>(rs1, rs2, sat));
diff --git a/riscv/insns/ukadd8.h b/riscv/insns/ukadd8.h
index cc0a5f2..4bcada2 100644
--- a/riscv/insns/ukadd8.h
+++ b/riscv/insns/ukadd8.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_ULOOP(8, {
bool sat = false;
pd = (sat_addu<uint8_t>(ps1, ps2, sat));
diff --git a/riscv/insns/ukaddh.h b/riscv/insns/ukaddh.h
index e4fad34..d067dd6 100644
--- a/riscv/insns/ukaddh.h
+++ b/riscv/insns/ukaddh.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_extension('P');
sreg_t res = (sreg_t)P_W(RS1, 0) + (sreg_t)P_W(RS2, 0);
P_SATU(res, 16);
diff --git a/riscv/insns/ukaddw.h b/riscv/insns/ukaddw.h
index 7188d80..e369106 100644
--- a/riscv/insns/ukaddw.h
+++ b/riscv/insns/ukaddw.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_extension('P');
sreg_t res = (sreg_t)P_W(RS1, 0) + (sreg_t)P_W(RS2, 0);
P_SATU(res, 32);
diff --git a/riscv/insns/ukcras16.h b/riscv/insns/ukcras16.h
index 90ef8f8..54b9a10 100644
--- a/riscv/insns/ukcras16.h
+++ b/riscv/insns/ukcras16.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_CROSS_ULOOP(16, {
bool sat = false;
pd = (sat_addu<uint16_t>(ps1, ps2, sat));
diff --git a/riscv/insns/ukcras32.h b/riscv/insns/ukcras32.h
index 9478778..001644c 100644
--- a/riscv/insns/ukcras32.h
+++ b/riscv/insns/ukcras32.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_rv64;
P_CROSS_ULOOP(32, {
bool sat = false;
diff --git a/riscv/insns/ukcrsa16.h b/riscv/insns/ukcrsa16.h
index 584ff5b..343063c 100644
--- a/riscv/insns/ukcrsa16.h
+++ b/riscv/insns/ukcrsa16.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_CROSS_ULOOP(16, {
bool sat = false;
pd = (sat_subu<uint16_t>(ps1, ps2, sat));
diff --git a/riscv/insns/ukcrsa32.h b/riscv/insns/ukcrsa32.h
index 7eda7a6..260f181 100644
--- a/riscv/insns/ukcrsa32.h
+++ b/riscv/insns/ukcrsa32.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_rv64;
P_CROSS_ULOOP(32, {
bool sat = false;
diff --git a/riscv/insns/ukmar64.h b/riscv/insns/ukmar64.h
index 8f6d4f0..e33ad7d 100644
--- a/riscv/insns/ukmar64.h
+++ b/riscv/insns/ukmar64.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_64_UPROFILE_REDUCTION(32, {
bool sat = false;
rd = (sat_addu<uint64_t>(rd, ps1 * ps2, sat));
diff --git a/riscv/insns/ukmsr64.h b/riscv/insns/ukmsr64.h
index 321c03b..9a38cb0 100644
--- a/riscv/insns/ukmsr64.h
+++ b/riscv/insns/ukmsr64.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_64_UPROFILE_REDUCTION(32, {
bool sat = false;
rd = (sat_subu<uint64_t>(rd, ps1 * ps2, sat));
diff --git a/riscv/insns/ukstas16.h b/riscv/insns/ukstas16.h
index cccf62a..a8203e4 100644
--- a/riscv/insns/ukstas16.h
+++ b/riscv/insns/ukstas16.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_STRAIGHT_ULOOP(16, {
bool sat = false;
pd = (sat_addu<uint16_t>(ps1, ps2, sat));
diff --git a/riscv/insns/ukstas32.h b/riscv/insns/ukstas32.h
index 02a101f..c734eb6 100644
--- a/riscv/insns/ukstas32.h
+++ b/riscv/insns/ukstas32.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_rv64;
P_STRAIGHT_ULOOP(32, {
bool sat = false;
diff --git a/riscv/insns/ukstsa16.h b/riscv/insns/ukstsa16.h
index 2020bbb..8145111 100644
--- a/riscv/insns/ukstsa16.h
+++ b/riscv/insns/ukstsa16.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_STRAIGHT_ULOOP(16, {
bool sat = false;
pd = (sat_subu<uint16_t>(ps1, ps2, sat));
diff --git a/riscv/insns/ukstsa32.h b/riscv/insns/ukstsa32.h
index fbd2a91..9eb713e 100644
--- a/riscv/insns/ukstsa32.h
+++ b/riscv/insns/ukstsa32.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_rv64;
P_STRAIGHT_ULOOP(32, {
bool sat = false;
diff --git a/riscv/insns/uksub16.h b/riscv/insns/uksub16.h
index 07968d8..7fba16e 100644
--- a/riscv/insns/uksub16.h
+++ b/riscv/insns/uksub16.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_ULOOP(16, {
bool sat = false;
pd = (sat_subu<uint16_t>(ps1, ps2, sat));
diff --git a/riscv/insns/uksub32.h b/riscv/insns/uksub32.h
index 3392c69..3d4913b 100644
--- a/riscv/insns/uksub32.h
+++ b/riscv/insns/uksub32.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_rv64;
P_ULOOP(32, {
bool sat = false;
diff --git a/riscv/insns/uksub64.h b/riscv/insns/uksub64.h
index fa5d5fd..0d2bb05 100644
--- a/riscv/insns/uksub64.h
+++ b/riscv/insns/uksub64.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_64_UPROFILE({
bool sat = false;
rd = (sat_subu<uint64_t>(rs1, rs2, sat));
diff --git a/riscv/insns/uksub8.h b/riscv/insns/uksub8.h
index 5771e08..f26621e 100644
--- a/riscv/insns/uksub8.h
+++ b/riscv/insns/uksub8.h
@@ -1,3 +1,4 @@
+require_vector_vs;
P_ULOOP(8, {
bool sat = false;
pd = (sat_subu<uint8_t>(ps1, ps2, sat));
diff --git a/riscv/insns/uksubh.h b/riscv/insns/uksubh.h
index c050543..d7a4f30 100644
--- a/riscv/insns/uksubh.h
+++ b/riscv/insns/uksubh.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_extension('P');
sreg_t res = (sreg_t)P_W(RS1, 0) - (sreg_t)P_W(RS2, 0);
P_SATU(res, 16);
diff --git a/riscv/insns/uksubw.h b/riscv/insns/uksubw.h
index f9758b3..ec07bde 100644
--- a/riscv/insns/uksubw.h
+++ b/riscv/insns/uksubw.h
@@ -1,3 +1,4 @@
+require_vector_vs;
require_extension('P');
sreg_t res = (sreg_t)P_W(RS1, 0) - (sreg_t)P_W(RS2, 0);
P_SATU(res, 32);