aboutsummaryrefslogtreecommitdiff
path: root/riscv/insns/vrev8_v.h
diff options
context:
space:
mode:
Diffstat (limited to 'riscv/insns/vrev8_v.h')
-rw-r--r--riscv/insns/vrev8_v.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/riscv/insns/vrev8_v.h b/riscv/insns/vrev8_v.h
new file mode 100644
index 0000000..f26c5a0
--- /dev/null
+++ b/riscv/insns/vrev8_v.h
@@ -0,0 +1,16 @@
+// vrev8.v vd, vs2, vm
+
+#include "zvk_ext_macros.h"
+
+require_zvbb;
+
+VI_V_ULOOP
+({
+ vd = vs2;
+ if (P.VU.vsew > 8)
+ vd = ((vd & 0x00FF00FF00FF00FFllu) << 8) | ((vd & 0xFF00FF00FF00FF00llu) >> 8);
+ if (P.VU.vsew > 16)
+ vd = ((vd & 0x0000FFFF0000FFFFllu) << 16) | ((vd & 0xFFFF0000FFFF0000llu) >> 16);
+ if (P.VU.vsew > 32)
+ vd = ((vd & 0x00000000FFFFFFFFllu) << 32) | ((vd & 0xFFFFFFFF00000000llu) >> 32);
+})