adds min/max instructions

This commit is contained in:
Eyck-Alexander Jentzsch 2025-02-16 01:30:08 +01:00
parent 0027946f90
commit dd4416ab15

View File

@ -85,6 +85,20 @@ std::function<dest_elem_t(src2_elem_t, src1_elem_t)> get_funct(unsigned funct) {
return [](src2_elem_t vs2, src1_elem_t vs1) { return vs2 - vs1; };
case 0b000011: // VRSUB
return [](src2_elem_t vs2, src1_elem_t vs1) { return vs1 - vs2; };
case 0b000100: // VMINU
return [](src2_elem_t vs2, src1_elem_t vs1) { return std::min(vs2, static_cast<src2_elem_t>(vs1)); };
case 0b000101: // VMIN
return [](src2_elem_t vs2, src1_elem_t vs1) {
return std::min(static_cast<typename std::make_signed_t<src2_elem_t>>(vs2),
static_cast<typename std::make_signed_t<src2_elem_t>>(vs1));
};
case 0b000110: // VMAXU
return [](src2_elem_t vs2, src1_elem_t vs1) { return std::max(vs2, static_cast<src2_elem_t>(vs1)); };
case 0b000111: // VMAX
return [](src2_elem_t vs2, src1_elem_t vs1) {
return std::max(static_cast<typename std::make_signed_t<src2_elem_t>>(vs2),
static_cast<typename std::make_signed_t<src2_elem_t>>(vs1));
};
case 0b001001: // VAND
return [](src2_elem_t vs2, src1_elem_t vs1) { return vs1 & vs2; };
case 0b001010: // VOR