8 changed files with 75 additions and 78 deletions
@ -1,44 +1,4 @@ |
|||
// vfmerge_vf vd, vs2, vs1, vm
|
|||
VI_CHECK_SSS(false); |
|||
VI_VFP_COMMON; |
|||
|
|||
switch(P.VU.vsew) { |
|||
case e16: |
|||
for (reg_t i=P.VU.vstart->read(); i<vl; ++i) { |
|||
VFP_VF_PARAMS(16); |
|||
|
|||
int midx = i / 64; |
|||
int mpos = i % 64; |
|||
bool use_first = (P.VU.elt<uint64_t>(0, midx) >> mpos) & 0x1; |
|||
|
|||
VI_VF_MERGE_LOOP({ |
|||
vd = use_first ? rs1 : vs2; |
|||
} |
|||
break; |
|||
case e32: |
|||
for (reg_t i=P.VU.vstart->read(); i<vl; ++i) { |
|||
VFP_VF_PARAMS(32); |
|||
|
|||
int midx = i / 64; |
|||
int mpos = i % 64; |
|||
bool use_first = (P.VU.elt<uint64_t>(0, midx) >> mpos) & 0x1; |
|||
|
|||
vd = use_first ? rs1 : vs2; |
|||
} |
|||
break; |
|||
case e64: |
|||
for (reg_t i=P.VU.vstart->read(); i<vl; ++i) { |
|||
VFP_VF_PARAMS(64); |
|||
|
|||
int midx = i / 64; |
|||
int mpos = i % 64; |
|||
bool use_first = (P.VU.elt<uint64_t>(0, midx) >> mpos) & 0x1; |
|||
|
|||
vd = use_first ? rs1 : vs2; |
|||
} |
|||
break; |
|||
default: |
|||
require(0); |
|||
break; |
|||
} |
|||
|
|||
P.VU.vstart->write(0); |
|||
}) |
|||
|
|||
@ -1,11 +1,5 @@ |
|||
// vmerge.vim vd, vs2, simm5
|
|||
require_vector(true); |
|||
VI_CHECK_SSS(false); |
|||
VI_VVXI_MERGE_LOOP |
|||
VI_VI_MERGE_LOOP |
|||
({ |
|||
int midx = i / 64; |
|||
int mpos = i % 64; |
|||
bool use_first = (P.VU.elt<uint64_t>(0, midx) >> mpos) & 0x1; |
|||
|
|||
vd = use_first ? simm5 : vs2; |
|||
}) |
|||
|
|||
@ -1,11 +1,5 @@ |
|||
// vmerge.vvm vd, vs2, vs1
|
|||
require_vector(true); |
|||
VI_CHECK_SSS(true); |
|||
VI_VVXI_MERGE_LOOP |
|||
VI_VV_MERGE_LOOP |
|||
({ |
|||
int midx = i / 64; |
|||
int mpos = i % 64; |
|||
bool use_first = (P.VU.elt<uint64_t>(0, midx) >> mpos) & 0x1; |
|||
|
|||
vd = use_first ? vs1 : vs2; |
|||
}) |
|||
|
|||
@ -1,11 +1,5 @@ |
|||
// vmerge.vxm vd, vs2, rs1
|
|||
require_vector(true); |
|||
VI_CHECK_SSS(false); |
|||
VI_VVXI_MERGE_LOOP |
|||
VI_VX_MERGE_LOOP |
|||
({ |
|||
int midx = i / 64; |
|||
int mpos = i % 64; |
|||
bool use_first = (P.VU.elt<uint64_t>(0, midx) >> mpos) & 0x1; |
|||
|
|||
vd = use_first ? rs1 : vs2; |
|||
}) |
|||
|
|||
@ -1,7 +1,5 @@ |
|||
// vmv.v.i vd, simm5
|
|||
require_vector(true); |
|||
VI_CHECK_SSS(false); |
|||
VI_VVXI_MERGE_LOOP |
|||
VI_VI_MERGE_LOOP |
|||
({ |
|||
vd = simm5; |
|||
}) |
|||
|
|||
@ -1,7 +1,5 @@ |
|||
// vvmv.v.v vd, vs1
|
|||
require_vector(true); |
|||
VI_CHECK_SSS(true); |
|||
VI_VVXI_MERGE_LOOP |
|||
VI_VV_MERGE_LOOP |
|||
({ |
|||
vd = vs1; |
|||
}) |
|||
|
|||
@ -1,7 +1,5 @@ |
|||
// vmv.v.x vd, rs1
|
|||
require_vector(true); |
|||
VI_CHECK_SSS(false); |
|||
VI_VVXI_MERGE_LOOP |
|||
VI_VX_MERGE_LOOP |
|||
({ |
|||
vd = rs1; |
|||
}) |
|||
|
|||
Loading…
Reference in new issue