Lines Matching refs:DataValueExt
7 use crate::value::{DataValueExt, ValueConversionKind, ValueError, ValueResult};
41 acc = DataValueExt::add(acc, t)?;
587 Opcode::Iconst => assign(DataValueExt::int(imm().into_int_signed()?, ctrl_ty)?), in step()
636 let sum = DataValueExt::add(arg(0), arg(1))?; in step()
637 let one = DataValueExt::int(1, arg(0).ty())?; in step()
638 let inc = DataValueExt::add(sum, one)?; in step()
639 let two = DataValueExt::int(2, arg(0).ty())?; in step()
640 binary(DataValueExt::udiv, inc, two)? in step()
642 Opcode::Iadd => binary(DataValueExt::add, arg(0), arg(1))?, in step()
647 DataValueExt::uadd_sat, in step()
653 DataValueExt::sadd_sat, in step()
655 Opcode::Isub => binary(DataValueExt::sub, arg(0), arg(1))?, in step()
660 DataValueExt::usub_sat, in step()
666 DataValueExt::ssub_sat, in step()
668 Opcode::Ineg => binary(DataValueExt::sub, DataValueExt::int(0, ctrl_ty)?, arg(0))?, in step()
671 let min_val: DataValue = DataValueExt::int(min_val as i128, ctrl_ty.lane_type())?; in step()
679 DataValueExt::int(lane.into_int_signed()?.abs(), ctrl_ty.lane_type()) in step()
685 Opcode::Imul => binary(DataValueExt::mul, arg(0), arg(1))?, in step()
709 Ok(DataValueExt::mul(x, y)? in step()
716 Opcode::Udiv => binary_can_trap(DataValueExt::udiv, arg(0), arg(1))?, in step()
717 Opcode::Sdiv => binary_can_trap(DataValueExt::sdiv, arg(0), arg(1))?, in step()
718 Opcode::Urem => binary_can_trap(DataValueExt::urem, arg(0), arg(1))?, in step()
719 Opcode::Srem => binary_can_trap(DataValueExt::srem, arg(0), arg(1))?, in step()
720 Opcode::IaddImm => binary(DataValueExt::add, arg(0), imm_as_ctrl_ty()?)?, in step()
721 Opcode::ImulImm => binary(DataValueExt::mul, arg(0), imm_as_ctrl_ty()?)?, in step()
722 Opcode::UdivImm => binary_can_trap(DataValueExt::udiv, arg(0), imm_as_ctrl_ty()?)?, in step()
723 Opcode::SdivImm => binary_can_trap(DataValueExt::sdiv, arg(0), imm_as_ctrl_ty()?)?, in step()
724 Opcode::UremImm => binary_can_trap(DataValueExt::urem, arg(0), imm_as_ctrl_ty()?)?, in step()
725 Opcode::SremImm => binary_can_trap(DataValueExt::srem, arg(0), imm_as_ctrl_ty()?)?, in step()
726 Opcode::IrsubImm => binary(DataValueExt::sub, imm_as_ctrl_ty()?, arg(0))?, in step()
729 assign_multiple(&[sum, DataValueExt::bool(carry, false, types::I8)?]) in step()
733 assign_multiple(&[sum, DataValueExt::bool(carry, false, types::I8)?]) in step()
737 assign_multiple(&[sum, DataValueExt::bool(carry, false, types::I8)?]) in step()
741 assign_multiple(&[sum, DataValueExt::bool(carry, false, types::I8)?]) in step()
745 assign_multiple(&[sum, DataValueExt::bool(carry, false, types::I8)?]) in step()
749 assign_multiple(&[sum, DataValueExt::bool(carry, false, types::I8)?]) in step()
754 if DataValueExt::into_bool(arg(2))? { in step()
755 let (sum2, carry2) = sum.sadd_overflow(DataValueExt::int(1, ctrl_ty)?)?; in step()
760 assign_multiple(&[sum, DataValueExt::bool(carry, false, types::I8)?]) in step()
765 if DataValueExt::into_bool(arg(2))? { in step()
766 let (sum2, carry2) = sum.uadd_overflow(DataValueExt::int(1, ctrl_ty)?)?; in step()
771 assign_multiple(&[sum, DataValueExt::bool(carry, false, types::I8)?]) in step()
774 if let Some(sum) = DataValueExt::uadd_checked(arg(0), arg(1))? { in step()
783 if DataValueExt::into_bool(arg(2))? { in step()
784 let (sub2, carry2) = sub.ssub_overflow(DataValueExt::int(1, ctrl_ty)?)?; in step()
789 assign_multiple(&[sub, DataValueExt::bool(carry, false, types::I8)?]) in step()
794 if DataValueExt::into_bool(arg(2))? { in step()
795 let (sub2, carry2) = sub.usub_overflow(DataValueExt::int(1, ctrl_ty)?)?; in step()
800 assign_multiple(&[sub, DataValueExt::bool(carry, false, types::I8)?]) in step()
802 Opcode::Band => binary(DataValueExt::and, arg(0), arg(1))?, in step()
803 Opcode::Bor => binary(DataValueExt::or, arg(0), arg(1))?, in step()
804 Opcode::Bxor => binary(DataValueExt::xor, arg(0), arg(1))?, in step()
805 Opcode::Bnot => unary(DataValueExt::not, arg(0))?, in step()
806 Opcode::BandNot => binary(DataValueExt::and, arg(0), DataValueExt::not(arg(1))?)?, in step()
807 Opcode::BorNot => binary(DataValueExt::or, arg(0), DataValueExt::not(arg(1))?)?, in step()
808 Opcode::BxorNot => binary(DataValueExt::xor, arg(0), DataValueExt::not(arg(1))?)?, in step()
809 Opcode::BandImm => binary(DataValueExt::and, arg(0), imm_as_ctrl_ty()?)?, in step()
810 Opcode::BorImm => binary(DataValueExt::or, arg(0), imm_as_ctrl_ty()?)?, in step()
811 Opcode::BxorImm => binary(DataValueExt::xor, arg(0), imm_as_ctrl_ty()?)?, in step()
812 Opcode::Rotl => binary(DataValueExt::rotl, arg(0), shift_amt(ctrl_ty, arg(1))?)?, in step()
813 Opcode::Rotr => binary(DataValueExt::rotr, arg(0), shift_amt(ctrl_ty, arg(1))?)?, in step()
814 Opcode::RotlImm => binary(DataValueExt::rotl, arg(0), shift_amt(ctrl_ty, imm())?)?, in step()
815 Opcode::RotrImm => binary(DataValueExt::rotr, arg(0), shift_amt(ctrl_ty, imm())?)?, in step()
816 Opcode::Ishl => binary(DataValueExt::shl, arg(0), shift_amt(ctrl_ty, arg(1))?)?, in step()
817 Opcode::Ushr => binary(DataValueExt::ushr, arg(0), shift_amt(ctrl_ty, arg(1))?)?, in step()
818 Opcode::Sshr => binary(DataValueExt::sshr, arg(0), shift_amt(ctrl_ty, arg(1))?)?, in step()
819 Opcode::IshlImm => binary(DataValueExt::shl, arg(0), shift_amt(ctrl_ty, imm())?)?, in step()
820 Opcode::UshrImm => binary(DataValueExt::ushr, arg(0), shift_amt(ctrl_ty, imm())?)?, in step()
821 Opcode::SshrImm => binary(DataValueExt::sshr, arg(0), shift_amt(ctrl_ty, imm())?)?, in step()
822 Opcode::Bitrev => unary(DataValueExt::reverse_bits, arg(0))?, in step()
823 Opcode::Bswap => unary(DataValueExt::swap_bytes, arg(0))?, in step()
824 Opcode::Clz => unary(DataValueExt::leading_zeros, arg(0))?, in step()
826 let count = if arg(0) < DataValueExt::int(0, ctrl_ty)? { in step()
831 assign(DataValueExt::sub(count, DataValueExt::int(1, ctrl_ty)?)?) in step()
833 Opcode::Ctz => unary(DataValueExt::trailing_zeros, arg(0))?, in step()
866 Opcode::Fadd => binary(DataValueExt::add, arg(0), arg(1))?, in step()
867 Opcode::Fsub => binary(DataValueExt::sub, arg(0), arg(1))?, in step()
868 Opcode::Fmul => binary(DataValueExt::mul, arg(0), arg(1))?, in step()
869 Opcode::Fdiv => binary(DataValueExt::sdiv, arg(0), arg(1))?, in step()
870 Opcode::Sqrt => unary(DataValueExt::sqrt, arg(0))?, in step()
881 .map(|((x, y), z)| DataValueExt::fma(x, y, z)) in step()
886 Opcode::Fneg => unary(DataValueExt::neg, arg(0))?, in step()
887 Opcode::Fabs => unary(DataValueExt::abs, arg(0))?, in step()
888 Opcode::Fcopysign => binary(DataValueExt::copysign, arg(0), arg(1))?, in step()
943 Opcode::Ceil => unary(DataValueExt::ceil, arg(0))?, in step()
944 Opcode::Floor => unary(DataValueExt::floor, arg(0))?, in step()
945 Opcode::Trunc => unary(DataValueExt::trunc, arg(0))?, in step()
946 Opcode::Nearest => unary(DataValueExt::nearest, arg(0))?, in step()
970 Opcode::Ireduce => assign(DataValueExt::convert( in step()
979 let min: DataValue = DataValueExt::int(min as i128, ctrl_ty.lane_type())?; in step()
980 let max: DataValue = DataValueExt::int(max as i128, ctrl_ty.lane_type())?; in step()
983 lane = DataValueExt::umax(lane, min.clone())?; in step()
984 lane = DataValueExt::umin(lane, max.clone())?; in step()
986 lane = DataValueExt::smax(lane, min.clone())?; in step()
987 lane = DataValueExt::smin(lane, max.clone())?; in step()
1008 Opcode::Sextend => assign(DataValueExt::convert( in step()
1012 Opcode::Uextend => assign(DataValueExt::convert( in step()
1016 Opcode::Fpromote => assign(DataValueExt::convert( in step()
1020 Opcode::Fdemote => assign(DataValueExt::convert( in step()
1026 let a = DataValueExt::into_array(&arg(0))?; in step()
1027 let b = DataValueExt::into_array(&arg(1))?; in step()
1036 assign(DataValueExt::vector(new, types::I8X16)?) in step()
1039 let x = DataValueExt::into_array(&arg(0))?; in step()
1040 let s = DataValueExt::into_array(&arg(1))?; in step()
1047 assign(DataValueExt::vector(new, types::I8X16)?) in step()
1074 assign(DataValueExt::int(result as i128, ctrl_ty)?) in step()
1139 assign(DataValueExt::int(x, ctrl_ty)?) in step()
1239 DataValueExt::convert(arg(0), ValueConversionKind::Truncate(types::I64))?, in step()
1240 DataValueExt::convert(arg(0), ValueConversionKind::ExtractUpper(types::I64))?, in step()
1242 Opcode::Iconcat => assign(DataValueExt::concat(arg(0), arg(1))?), in step()
1257 AtomicRmwOp::Add => DataValueExt::add(prev_val, val), in step()
1258 AtomicRmwOp::Sub => DataValueExt::sub(prev_val, val), in step()
1259 AtomicRmwOp::And => DataValueExt::and(prev_val, val), in step()
1260 AtomicRmwOp::Or => DataValueExt::or(prev_val, val), in step()
1261 AtomicRmwOp::Xor => DataValueExt::xor(prev_val, val), in step()
1262 AtomicRmwOp::Nand => DataValueExt::and(prev_val, val).and_then(DataValue::not), in step()
1263 AtomicRmwOp::Smax => DataValueExt::smax(prev_val, val), in step()
1264 AtomicRmwOp::Smin => DataValueExt::smin(prev_val, val), in step()
1265 AtomicRmwOp::Umax => DataValueExt::umax(val, prev_val), in step()
1266 AtomicRmwOp::Umin => DataValueExt::umin(val, prev_val), in step()
1322 let min: DataValue = DataValueExt::int(min as i128, double_width)?; in step()
1323 let max: DataValue = DataValueExt::int(max as i128, double_width)?; in step()
1331 let z: DataValue = DataValueExt::int( in step()
1336 let z = DataValueExt::smin(z, max.clone())?; in step()
1337 let z = DataValueExt::smax(z, min.clone())?; in step()
1345 assign(binary_pairwise(arg(0), arg(1), ctrl_ty, DataValueExt::add)?) in step()
1433 Ok(DataValueExt::bool( in icmp()
1476 FloatCC::Unordered => DataValueExt::uno(left, right)?, in fcmp()
1478 FloatCC::NotEqual => left < right || left > right || DataValueExt::uno(left, right)?, in fcmp()
1480 FloatCC::UnorderedOrEqual => left == right || DataValueExt::uno(left, right)?, in fcmp()
1485 FloatCC::UnorderedOrLessThan => DataValueExt::uno(left, right)? || left < right, in fcmp()
1486 FloatCC::UnorderedOrLessThanOrEqual => DataValueExt::uno(left, right)? || left <= right, in fcmp()
1487 FloatCC::UnorderedOrGreaterThan => DataValueExt::uno(left, right)? || left > right, in fcmp()
1488 FloatCC::UnorderedOrGreaterThanOrEqual => DataValueExt::uno(left, right)? || left >= right, in fcmp()
1524 DataValueExt::float(lane as u64, lane_type)? in extractlanes()
1526 DataValueExt::int(lane, lane_type)? in extractlanes()
1565 DataValueExt::vector(result, vector_type) in vectorizelanes_all()
1638 let mask_x = DataValueExt::and(c.clone(), x)?; in bitselect()
1639 let mask_y = DataValueExt::and(DataValueExt::not(c)?, y)?; in bitselect()
1640 DataValueExt::or(mask_x, mask_y) in bitselect()