aboutsummaryrefslogtreecommitdiff
path: root/riscv/insns/vmerge_vim.h
diff options
context:
space:
mode:
Diffstat (limited to 'riscv/insns/vmerge_vim.h')
-rw-r--r--riscv/insns/vmerge_vim.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/riscv/insns/vmerge_vim.h b/riscv/insns/vmerge_vim.h
new file mode 100644
index 0000000..13354d6
--- /dev/null
+++ b/riscv/insns/vmerge_vim.h
@@ -0,0 +1,9 @@
+// vmerge.vim vd, vs2, simm5
+VI_VVXI_MERGE_LOOP
+({
+ int midx = (P.VU.vmlen * i) / 64;
+ int mpos = (P.VU.vmlen * i) % 64;
+ bool use_first = (P.VU.elt<uint64_t>(0, midx) >> mpos) & 0x1;
+
+ vd = use_first ? simm5 : vs2;
+})