// instruction counts with the following adjustments made:
// * One vsetvli is considered free.
static const CostTblEntry VectorIntrinsicCostTable[]{
- {Intrinsic::floor, MVT::v2f32, 15},
- {Intrinsic::floor, MVT::v4f32, 15},
- {Intrinsic::floor, MVT::v8f32, 15},
- {Intrinsic::floor, MVT::v16f32, 15},
- {Intrinsic::floor, MVT::nxv2f32, 15},
- {Intrinsic::floor, MVT::nxv4f32, 15},
- {Intrinsic::floor, MVT::nxv8f32, 15},
- {Intrinsic::floor, MVT::nxv16f32, 15},
- {Intrinsic::floor, MVT::v2f64, 15},
- {Intrinsic::floor, MVT::v4f64, 15},
- {Intrinsic::floor, MVT::v8f64, 15},
- {Intrinsic::floor, MVT::v16f64, 15},
- {Intrinsic::floor, MVT::nxv1f64, 15},
- {Intrinsic::floor, MVT::nxv2f64, 15},
- {Intrinsic::floor, MVT::nxv4f64, 15},
- {Intrinsic::floor, MVT::nxv8f64, 15},
- {Intrinsic::ceil, MVT::v2f32, 15},
- {Intrinsic::ceil, MVT::v4f32, 15},
- {Intrinsic::ceil, MVT::v8f32, 15},
- {Intrinsic::ceil, MVT::v16f32, 15},
- {Intrinsic::ceil, MVT::nxv2f32, 15},
- {Intrinsic::ceil, MVT::nxv4f32, 15},
- {Intrinsic::ceil, MVT::nxv8f32, 15},
- {Intrinsic::ceil, MVT::nxv16f32, 15},
- {Intrinsic::ceil, MVT::v2f64, 15},
- {Intrinsic::ceil, MVT::v4f64, 15},
- {Intrinsic::ceil, MVT::v8f64, 15},
- {Intrinsic::ceil, MVT::v16f64, 15},
- {Intrinsic::ceil, MVT::nxv1f64, 15},
- {Intrinsic::ceil, MVT::nxv2f64, 15},
- {Intrinsic::ceil, MVT::nxv4f64, 15},
- {Intrinsic::ceil, MVT::nxv8f64, 15},
- {Intrinsic::trunc, MVT::v2f32, 7},
- {Intrinsic::trunc, MVT::v4f32, 7},
- {Intrinsic::trunc, MVT::v8f32, 7},
- {Intrinsic::trunc, MVT::v16f32, 7},
- {Intrinsic::trunc, MVT::nxv2f32, 7},
- {Intrinsic::trunc, MVT::nxv4f32, 7},
- {Intrinsic::trunc, MVT::nxv8f32, 7},
- {Intrinsic::trunc, MVT::nxv16f32, 7},
- {Intrinsic::trunc, MVT::v2f64, 7},
- {Intrinsic::trunc, MVT::v4f64, 7},
- {Intrinsic::trunc, MVT::v8f64, 7},
- {Intrinsic::trunc, MVT::v16f64, 7},
- {Intrinsic::trunc, MVT::nxv1f64, 7},
- {Intrinsic::trunc, MVT::nxv2f64, 7},
- {Intrinsic::trunc, MVT::nxv4f64, 7},
- {Intrinsic::trunc, MVT::nxv8f64, 7},
- {Intrinsic::round, MVT::v2f32, 10},
- {Intrinsic::round, MVT::v4f32, 10},
- {Intrinsic::round, MVT::v8f32, 10},
- {Intrinsic::round, MVT::v16f32, 10},
- {Intrinsic::round, MVT::nxv2f32, 10},
- {Intrinsic::round, MVT::nxv4f32, 10},
- {Intrinsic::round, MVT::nxv8f32, 10},
- {Intrinsic::round, MVT::nxv16f32, 10},
- {Intrinsic::round, MVT::v2f64, 10},
- {Intrinsic::round, MVT::v4f64, 10},
- {Intrinsic::round, MVT::v8f64, 10},
- {Intrinsic::round, MVT::v16f64, 10},
- {Intrinsic::round, MVT::nxv1f64, 10},
- {Intrinsic::round, MVT::nxv2f64, 10},
- {Intrinsic::round, MVT::nxv4f64, 10},
- {Intrinsic::round, MVT::nxv8f64, 10},
- {Intrinsic::fabs, MVT::v2f32, 1},
- {Intrinsic::fabs, MVT::v4f32, 1},
- {Intrinsic::fabs, MVT::v8f32, 1},
- {Intrinsic::fabs, MVT::v16f32, 1},
- {Intrinsic::fabs, MVT::nxv2f32, 1},
- {Intrinsic::fabs, MVT::nxv4f32, 1},
- {Intrinsic::fabs, MVT::nxv8f32, 1},
- {Intrinsic::fabs, MVT::nxv16f32, 1},
- {Intrinsic::fabs, MVT::v2f64, 1},
- {Intrinsic::fabs, MVT::v4f64, 1},
- {Intrinsic::fabs, MVT::v8f64, 1},
- {Intrinsic::fabs, MVT::v16f64, 1},
- {Intrinsic::fabs, MVT::nxv1f64, 1},
- {Intrinsic::fabs, MVT::nxv2f64, 1},
- {Intrinsic::fabs, MVT::nxv4f64, 1},
- {Intrinsic::fabs, MVT::nxv8f64, 1},
- {Intrinsic::sqrt, MVT::v2f32, 1},
- {Intrinsic::sqrt, MVT::v4f32, 1},
- {Intrinsic::sqrt, MVT::v8f32, 1},
- {Intrinsic::sqrt, MVT::v16f32, 1},
- {Intrinsic::sqrt, MVT::nxv2f32, 1},
- {Intrinsic::sqrt, MVT::nxv4f32, 1},
- {Intrinsic::sqrt, MVT::nxv8f32, 1},
- {Intrinsic::sqrt, MVT::nxv16f32, 1},
- {Intrinsic::sqrt, MVT::v2f64, 1},
- {Intrinsic::sqrt, MVT::v4f64, 1},
- {Intrinsic::sqrt, MVT::v8f64, 1},
- {Intrinsic::sqrt, MVT::v16f64, 1},
- {Intrinsic::sqrt, MVT::nxv1f64, 1},
- {Intrinsic::sqrt, MVT::nxv2f64, 1},
- {Intrinsic::sqrt, MVT::nxv4f64, 1},
- {Intrinsic::sqrt, MVT::nxv8f64, 1},
- {Intrinsic::bswap, MVT::v2i16, 3},
- {Intrinsic::bswap, MVT::v4i16, 3},
- {Intrinsic::bswap, MVT::v8i16, 3},
- {Intrinsic::bswap, MVT::v16i16, 3},
- {Intrinsic::bswap, MVT::nxv2i16, 3},
- {Intrinsic::bswap, MVT::nxv4i16, 3},
- {Intrinsic::bswap, MVT::nxv8i16, 3},
- {Intrinsic::bswap, MVT::nxv16i16, 3},
- {Intrinsic::bswap, MVT::v2i32, 12},
- {Intrinsic::bswap, MVT::v4i32, 12},
- {Intrinsic::bswap, MVT::v8i32, 12},
- {Intrinsic::bswap, MVT::v16i32, 12},
- {Intrinsic::bswap, MVT::nxv2i32, 12},
- {Intrinsic::bswap, MVT::nxv4i32, 12},
- {Intrinsic::bswap, MVT::nxv8i32, 12},
- {Intrinsic::bswap, MVT::nxv16i32, 12},
- {Intrinsic::bswap, MVT::v2i64, 31},
- {Intrinsic::bswap, MVT::v4i64, 31},
- {Intrinsic::bswap, MVT::v8i64, 31},
- {Intrinsic::bswap, MVT::v16i64, 31},
- {Intrinsic::bswap, MVT::nxv2i64, 31},
- {Intrinsic::bswap, MVT::nxv4i64, 31},
- {Intrinsic::bswap, MVT::nxv8i64, 31},
- {Intrinsic::bitreverse, MVT::v2i8, 17},
- {Intrinsic::bitreverse, MVT::v4i8, 17},
- {Intrinsic::bitreverse, MVT::v8i8, 17},
- {Intrinsic::bitreverse, MVT::v16i8, 17},
- {Intrinsic::bitreverse, MVT::nxv2i8, 17},
- {Intrinsic::bitreverse, MVT::nxv4i8, 17},
- {Intrinsic::bitreverse, MVT::nxv8i8, 17},
- {Intrinsic::bitreverse, MVT::nxv16i8, 17},
- {Intrinsic::bitreverse, MVT::v2i16, 24},
- {Intrinsic::bitreverse, MVT::v4i16, 24},
- {Intrinsic::bitreverse, MVT::v8i16, 24},
- {Intrinsic::bitreverse, MVT::v16i16, 24},
- {Intrinsic::bitreverse, MVT::nxv2i16, 24},
- {Intrinsic::bitreverse, MVT::nxv4i16, 24},
- {Intrinsic::bitreverse, MVT::nxv8i16, 24},
- {Intrinsic::bitreverse, MVT::nxv16i16, 24},
- {Intrinsic::bitreverse, MVT::v2i32, 33},
- {Intrinsic::bitreverse, MVT::v4i32, 33},
- {Intrinsic::bitreverse, MVT::v8i32, 33},
- {Intrinsic::bitreverse, MVT::v16i32, 33},
- {Intrinsic::bitreverse, MVT::nxv2i32, 33},
- {Intrinsic::bitreverse, MVT::nxv4i32, 33},
- {Intrinsic::bitreverse, MVT::nxv8i32, 33},
- {Intrinsic::bitreverse, MVT::nxv16i32, 33},
- {Intrinsic::bitreverse, MVT::v2i64, 52},
- {Intrinsic::bitreverse, MVT::v4i64, 52},
- {Intrinsic::bitreverse, MVT::v8i64, 52},
- {Intrinsic::bitreverse, MVT::v16i64, 52},
- {Intrinsic::bitreverse, MVT::nxv2i64, 52},
- {Intrinsic::bitreverse, MVT::nxv4i64, 52},
- {Intrinsic::bitreverse, MVT::nxv8i64, 52},
- {Intrinsic::ctpop, MVT::v2i8, 12},
- {Intrinsic::ctpop, MVT::v4i8, 12},
- {Intrinsic::ctpop, MVT::v8i8, 12},
- {Intrinsic::ctpop, MVT::v16i8, 12},
- {Intrinsic::ctpop, MVT::nxv2i8, 12},
- {Intrinsic::ctpop, MVT::nxv4i8, 12},
- {Intrinsic::ctpop, MVT::nxv8i8, 12},
- {Intrinsic::ctpop, MVT::nxv16i8, 12},
- {Intrinsic::ctpop, MVT::v2i16, 19},
- {Intrinsic::ctpop, MVT::v4i16, 19},
- {Intrinsic::ctpop, MVT::v8i16, 19},
- {Intrinsic::ctpop, MVT::v16i16, 19},
- {Intrinsic::ctpop, MVT::nxv2i16, 19},
- {Intrinsic::ctpop, MVT::nxv4i16, 19},
- {Intrinsic::ctpop, MVT::nxv8i16, 19},
- {Intrinsic::ctpop, MVT::nxv16i16, 19},
- {Intrinsic::ctpop, MVT::v2i32, 20},
- {Intrinsic::ctpop, MVT::v4i32, 20},
- {Intrinsic::ctpop, MVT::v8i32, 20},
- {Intrinsic::ctpop, MVT::v16i32, 20},
- {Intrinsic::ctpop, MVT::nxv2i32, 20},
- {Intrinsic::ctpop, MVT::nxv4i32, 20},
- {Intrinsic::ctpop, MVT::nxv8i32, 20},
- {Intrinsic::ctpop, MVT::nxv16i32, 20},
- {Intrinsic::ctpop, MVT::v2i64, 21},
- {Intrinsic::ctpop, MVT::v4i64, 21},
- {Intrinsic::ctpop, MVT::v8i64, 21},
- {Intrinsic::ctpop, MVT::v16i64, 21},
- {Intrinsic::ctpop, MVT::nxv2i64, 21},
- {Intrinsic::ctpop, MVT::nxv4i64, 21},
- {Intrinsic::ctpop, MVT::nxv8i64, 21},
- {Intrinsic::smax, MVT::v2i8, 1},
- {Intrinsic::smax, MVT::v4i8, 1},
- {Intrinsic::smax, MVT::v8i8, 1},
- {Intrinsic::smax, MVT::v16i8, 1},
- {Intrinsic::smax, MVT::nxv2i8, 1},
- {Intrinsic::smax, MVT::nxv4i8, 1},
- {Intrinsic::smax, MVT::nxv8i8, 1},
- {Intrinsic::smax, MVT::nxv16i8, 1},
- {Intrinsic::smax, MVT::v2i16, 1},
- {Intrinsic::smax, MVT::v4i16, 1},
- {Intrinsic::smax, MVT::v8i16, 1},
- {Intrinsic::smax, MVT::v16i16, 1},
- {Intrinsic::smax, MVT::nxv2i16, 1},
- {Intrinsic::smax, MVT::nxv4i16, 1},
- {Intrinsic::smax, MVT::nxv8i16, 1},
- {Intrinsic::smax, MVT::nxv16i16, 1},
- {Intrinsic::smax, MVT::v2i32, 1},
- {Intrinsic::smax, MVT::v4i32, 1},
- {Intrinsic::smax, MVT::v8i32, 1},
- {Intrinsic::smax, MVT::v16i32, 1},
- {Intrinsic::smax, MVT::nxv2i32, 1},
- {Intrinsic::smax, MVT::nxv4i32, 1},
- {Intrinsic::smax, MVT::nxv8i32, 1},
- {Intrinsic::smax, MVT::nxv16i32, 1},
- {Intrinsic::smax, MVT::v2i64, 1},
- {Intrinsic::smax, MVT::v4i64, 1},
- {Intrinsic::smax, MVT::v8i64, 1},
- {Intrinsic::smax, MVT::v16i64, 1},
- {Intrinsic::smax, MVT::nxv2i64, 1},
- {Intrinsic::smax, MVT::nxv4i64, 1},
- {Intrinsic::smax, MVT::nxv8i64, 1},
- {Intrinsic::smin, MVT::v2i8, 1},
- {Intrinsic::smin, MVT::v4i8, 1},
- {Intrinsic::smin, MVT::v8i8, 1},
- {Intrinsic::smin, MVT::v16i8, 1},
- {Intrinsic::smin, MVT::nxv2i8, 1},
- {Intrinsic::smin, MVT::nxv4i8, 1},
- {Intrinsic::smin, MVT::nxv8i8, 1},
- {Intrinsic::smin, MVT::nxv16i8, 1},
- {Intrinsic::smin, MVT::v2i16, 1},
- {Intrinsic::smin, MVT::v4i16, 1},
- {Intrinsic::smin, MVT::v8i16, 1},
- {Intrinsic::smin, MVT::v16i16, 1},
- {Intrinsic::smin, MVT::nxv2i16, 1},
- {Intrinsic::smin, MVT::nxv4i16, 1},
- {Intrinsic::smin, MVT::nxv8i16, 1},
- {Intrinsic::smin, MVT::nxv16i16, 1},
- {Intrinsic::smin, MVT::v2i32, 1},
- {Intrinsic::smin, MVT::v4i32, 1},
- {Intrinsic::smin, MVT::v8i32, 1},
- {Intrinsic::smin, MVT::v16i32, 1},
- {Intrinsic::smin, MVT::nxv2i32, 1},
- {Intrinsic::smin, MVT::nxv4i32, 1},
- {Intrinsic::smin, MVT::nxv8i32, 1},
- {Intrinsic::smin, MVT::nxv16i32, 1},
- {Intrinsic::smin, MVT::v2i64, 1},
- {Intrinsic::smin, MVT::v4i64, 1},
- {Intrinsic::smin, MVT::v8i64, 1},
- {Intrinsic::smin, MVT::v16i64, 1},
- {Intrinsic::smin, MVT::nxv2i64, 1},
- {Intrinsic::smin, MVT::nxv4i64, 1},
- {Intrinsic::smin, MVT::nxv8i64, 1},
- {Intrinsic::umax, MVT::v2i8, 1},
- {Intrinsic::umax, MVT::v4i8, 1},
- {Intrinsic::umax, MVT::v8i8, 1},
- {Intrinsic::umax, MVT::v16i8, 1},
- {Intrinsic::umax, MVT::nxv2i8, 1},
- {Intrinsic::umax, MVT::nxv4i8, 1},
- {Intrinsic::umax, MVT::nxv8i8, 1},
- {Intrinsic::umax, MVT::nxv16i8, 1},
- {Intrinsic::umax, MVT::v2i16, 1},
- {Intrinsic::umax, MVT::v4i16, 1},
- {Intrinsic::umax, MVT::v8i16, 1},
- {Intrinsic::umax, MVT::v16i16, 1},
- {Intrinsic::umax, MVT::nxv2i16, 1},
- {Intrinsic::umax, MVT::nxv4i16, 1},
- {Intrinsic::umax, MVT::nxv8i16, 1},
- {Intrinsic::umax, MVT::nxv16i16, 1},
- {Intrinsic::umax, MVT::v2i32, 1},
- {Intrinsic::umax, MVT::v4i32, 1},
- {Intrinsic::umax, MVT::v8i32, 1},
- {Intrinsic::umax, MVT::v16i32, 1},
- {Intrinsic::umax, MVT::nxv2i32, 1},
- {Intrinsic::umax, MVT::nxv4i32, 1},
- {Intrinsic::umax, MVT::nxv8i32, 1},
- {Intrinsic::umax, MVT::nxv16i32, 1},
- {Intrinsic::umax, MVT::v2i64, 1},
- {Intrinsic::umax, MVT::v4i64, 1},
- {Intrinsic::umax, MVT::v8i64, 1},
- {Intrinsic::umax, MVT::v16i64, 1},
- {Intrinsic::umax, MVT::nxv2i64, 1},
- {Intrinsic::umax, MVT::nxv4i64, 1},
- {Intrinsic::umax, MVT::nxv8i64, 1},
- {Intrinsic::umin, MVT::v2i8, 1},
- {Intrinsic::umin, MVT::v4i8, 1},
- {Intrinsic::umin, MVT::v8i8, 1},
- {Intrinsic::umin, MVT::v16i8, 1},
- {Intrinsic::umin, MVT::nxv2i8, 1},
- {Intrinsic::umin, MVT::nxv4i8, 1},
- {Intrinsic::umin, MVT::nxv8i8, 1},
- {Intrinsic::umin, MVT::nxv16i8, 1},
- {Intrinsic::umin, MVT::v2i16, 1},
- {Intrinsic::umin, MVT::v4i16, 1},
- {Intrinsic::umin, MVT::v8i16, 1},
- {Intrinsic::umin, MVT::v16i16, 1},
- {Intrinsic::umin, MVT::nxv2i16, 1},
- {Intrinsic::umin, MVT::nxv4i16, 1},
- {Intrinsic::umin, MVT::nxv8i16, 1},
- {Intrinsic::umin, MVT::nxv16i16, 1},
- {Intrinsic::umin, MVT::v2i32, 1},
- {Intrinsic::umin, MVT::v4i32, 1},
- {Intrinsic::umin, MVT::v8i32, 1},
- {Intrinsic::umin, MVT::v16i32, 1},
- {Intrinsic::umin, MVT::nxv2i32, 1},
- {Intrinsic::umin, MVT::nxv4i32, 1},
- {Intrinsic::umin, MVT::nxv8i32, 1},
- {Intrinsic::umin, MVT::nxv16i32, 1},
- {Intrinsic::umin, MVT::v2i64, 1},
- {Intrinsic::umin, MVT::v4i64, 1},
- {Intrinsic::umin, MVT::v8i64, 1},
- {Intrinsic::umin, MVT::v16i64, 1},
- {Intrinsic::umin, MVT::nxv2i64, 1},
- {Intrinsic::umin, MVT::nxv4i64, 1},
- {Intrinsic::umin, MVT::nxv8i64, 1},
- {Intrinsic::sadd_sat, MVT::v2i8, 1},
- {Intrinsic::sadd_sat, MVT::v4i8, 1},
- {Intrinsic::sadd_sat, MVT::v8i8, 1},
- {Intrinsic::sadd_sat, MVT::v16i8, 1},
- {Intrinsic::sadd_sat, MVT::nxv2i8, 1},
- {Intrinsic::sadd_sat, MVT::nxv4i8, 1},
- {Intrinsic::sadd_sat, MVT::nxv8i8, 1},
- {Intrinsic::sadd_sat, MVT::nxv16i8, 1},
- {Intrinsic::sadd_sat, MVT::v2i16, 1},
- {Intrinsic::sadd_sat, MVT::v4i16, 1},
- {Intrinsic::sadd_sat, MVT::v8i16, 1},
- {Intrinsic::sadd_sat, MVT::v16i16, 1},
- {Intrinsic::sadd_sat, MVT::nxv2i16, 1},
- {Intrinsic::sadd_sat, MVT::nxv4i16, 1},
- {Intrinsic::sadd_sat, MVT::nxv8i16, 1},
- {Intrinsic::sadd_sat, MVT::nxv16i16, 1},
- {Intrinsic::sadd_sat, MVT::v2i32, 1},
- {Intrinsic::sadd_sat, MVT::v4i32, 1},
- {Intrinsic::sadd_sat, MVT::v8i32, 1},
- {Intrinsic::sadd_sat, MVT::v16i32, 1},
- {Intrinsic::sadd_sat, MVT::nxv2i32, 1},
- {Intrinsic::sadd_sat, MVT::nxv4i32, 1},
- {Intrinsic::sadd_sat, MVT::nxv8i32, 1},
- {Intrinsic::sadd_sat, MVT::nxv16i32, 1},
- {Intrinsic::sadd_sat, MVT::v2i64, 1},
- {Intrinsic::sadd_sat, MVT::v4i64, 1},
- {Intrinsic::sadd_sat, MVT::v8i64, 1},
- {Intrinsic::sadd_sat, MVT::v16i64, 1},
- {Intrinsic::sadd_sat, MVT::nxv2i64, 1},
- {Intrinsic::sadd_sat, MVT::nxv4i64, 1},
- {Intrinsic::sadd_sat, MVT::nxv8i64, 1},
- {Intrinsic::uadd_sat, MVT::v2i8, 1},
- {Intrinsic::uadd_sat, MVT::v4i8, 1},
- {Intrinsic::uadd_sat, MVT::v8i8, 1},
- {Intrinsic::uadd_sat, MVT::v16i8, 1},
- {Intrinsic::uadd_sat, MVT::nxv2i8, 1},
- {Intrinsic::uadd_sat, MVT::nxv4i8, 1},
- {Intrinsic::uadd_sat, MVT::nxv8i8, 1},
- {Intrinsic::uadd_sat, MVT::nxv16i8, 1},
- {Intrinsic::uadd_sat, MVT::v2i16, 1},
- {Intrinsic::uadd_sat, MVT::v4i16, 1},
- {Intrinsic::uadd_sat, MVT::v8i16, 1},
- {Intrinsic::uadd_sat, MVT::v16i16, 1},
- {Intrinsic::uadd_sat, MVT::nxv2i16, 1},
- {Intrinsic::uadd_sat, MVT::nxv4i16, 1},
- {Intrinsic::uadd_sat, MVT::nxv8i16, 1},
- {Intrinsic::uadd_sat, MVT::nxv16i16, 1},
- {Intrinsic::uadd_sat, MVT::v2i32, 1},
- {Intrinsic::uadd_sat, MVT::v4i32, 1},
- {Intrinsic::uadd_sat, MVT::v8i32, 1},
- {Intrinsic::uadd_sat, MVT::v16i32, 1},
- {Intrinsic::uadd_sat, MVT::nxv2i32, 1},
- {Intrinsic::uadd_sat, MVT::nxv4i32, 1},
- {Intrinsic::uadd_sat, MVT::nxv8i32, 1},
- {Intrinsic::uadd_sat, MVT::nxv16i32, 1},
- {Intrinsic::uadd_sat, MVT::v2i64, 1},
- {Intrinsic::uadd_sat, MVT::v4i64, 1},
- {Intrinsic::uadd_sat, MVT::v8i64, 1},
- {Intrinsic::uadd_sat, MVT::v16i64, 1},
- {Intrinsic::uadd_sat, MVT::nxv2i64, 1},
- {Intrinsic::uadd_sat, MVT::nxv4i64, 1},
- {Intrinsic::uadd_sat, MVT::nxv8i64, 1},
- {Intrinsic::usub_sat, MVT::v2i8, 1},
- {Intrinsic::usub_sat, MVT::v4i8, 1},
- {Intrinsic::usub_sat, MVT::v8i8, 1},
- {Intrinsic::usub_sat, MVT::v16i8, 1},
- {Intrinsic::usub_sat, MVT::nxv2i8, 1},
- {Intrinsic::usub_sat, MVT::nxv4i8, 1},
- {Intrinsic::usub_sat, MVT::nxv8i8, 1},
- {Intrinsic::usub_sat, MVT::nxv16i8, 1},
- {Intrinsic::usub_sat, MVT::v2i16, 1},
- {Intrinsic::usub_sat, MVT::v4i16, 1},
- {Intrinsic::usub_sat, MVT::v8i16, 1},
- {Intrinsic::usub_sat, MVT::v16i16, 1},
- {Intrinsic::usub_sat, MVT::nxv2i16, 1},
- {Intrinsic::usub_sat, MVT::nxv4i16, 1},
- {Intrinsic::usub_sat, MVT::nxv8i16, 1},
- {Intrinsic::usub_sat, MVT::nxv16i16, 1},
- {Intrinsic::usub_sat, MVT::v2i32, 1},
- {Intrinsic::usub_sat, MVT::v4i32, 1},
- {Intrinsic::usub_sat, MVT::v8i32, 1},
- {Intrinsic::usub_sat, MVT::v16i32, 1},
- {Intrinsic::usub_sat, MVT::nxv2i32, 1},
- {Intrinsic::usub_sat, MVT::nxv4i32, 1},
- {Intrinsic::usub_sat, MVT::nxv8i32, 1},
- {Intrinsic::usub_sat, MVT::nxv16i32, 1},
- {Intrinsic::usub_sat, MVT::v2i64, 1},
- {Intrinsic::usub_sat, MVT::v4i64, 1},
- {Intrinsic::usub_sat, MVT::v8i64, 1},
- {Intrinsic::usub_sat, MVT::v16i64, 1},
- {Intrinsic::usub_sat, MVT::nxv2i64, 1},
- {Intrinsic::usub_sat, MVT::nxv4i64, 1},
- {Intrinsic::usub_sat, MVT::nxv8i64, 1},
- {Intrinsic::ssub_sat, MVT::v2i8, 1},
- {Intrinsic::ssub_sat, MVT::v4i8, 1},
- {Intrinsic::ssub_sat, MVT::v8i8, 1},
- {Intrinsic::ssub_sat, MVT::v16i8, 1},
- {Intrinsic::ssub_sat, MVT::nxv2i8, 1},
- {Intrinsic::ssub_sat, MVT::nxv4i8, 1},
- {Intrinsic::ssub_sat, MVT::nxv8i8, 1},
- {Intrinsic::ssub_sat, MVT::nxv16i8, 1},
- {Intrinsic::ssub_sat, MVT::v2i16, 1},
- {Intrinsic::ssub_sat, MVT::v4i16, 1},
- {Intrinsic::ssub_sat, MVT::v8i16, 1},
- {Intrinsic::ssub_sat, MVT::v16i16, 1},
- {Intrinsic::ssub_sat, MVT::nxv2i16, 1},
- {Intrinsic::ssub_sat, MVT::nxv4i16, 1},
- {Intrinsic::ssub_sat, MVT::nxv8i16, 1},
- {Intrinsic::ssub_sat, MVT::nxv16i16, 1},
- {Intrinsic::ssub_sat, MVT::v2i32, 1},
- {Intrinsic::ssub_sat, MVT::v4i32, 1},
- {Intrinsic::ssub_sat, MVT::v8i32, 1},
- {Intrinsic::ssub_sat, MVT::v16i32, 1},
- {Intrinsic::ssub_sat, MVT::nxv2i32, 1},
- {Intrinsic::ssub_sat, MVT::nxv4i32, 1},
- {Intrinsic::ssub_sat, MVT::nxv8i32, 1},
- {Intrinsic::ssub_sat, MVT::nxv16i32, 1},
- {Intrinsic::ssub_sat, MVT::v2i64, 1},
- {Intrinsic::ssub_sat, MVT::v4i64, 1},
- {Intrinsic::ssub_sat, MVT::v8i64, 1},
- {Intrinsic::ssub_sat, MVT::v16i64, 1},
- {Intrinsic::ssub_sat, MVT::nxv2i64, 1},
- {Intrinsic::ssub_sat, MVT::nxv4i64, 1},
- {Intrinsic::ssub_sat, MVT::nxv8i64, 1},
+ {Intrinsic::floor, MVT::v2f32, 15},
+ {Intrinsic::floor, MVT::v4f32, 15},
+ {Intrinsic::floor, MVT::v8f32, 15},
+ {Intrinsic::floor, MVT::v16f32, 15},
+ {Intrinsic::floor, MVT::nxv2f32, 15},
+ {Intrinsic::floor, MVT::nxv4f32, 15},
+ {Intrinsic::floor, MVT::nxv8f32, 15},
+ {Intrinsic::floor, MVT::nxv16f32, 15},
+ {Intrinsic::floor, MVT::v2f64, 15},
+ {Intrinsic::floor, MVT::v4f64, 15},
+ {Intrinsic::floor, MVT::v8f64, 15},
+ {Intrinsic::floor, MVT::v16f64, 15},
+ {Intrinsic::floor, MVT::nxv1f64, 15},
+ {Intrinsic::floor, MVT::nxv2f64, 15},
+ {Intrinsic::floor, MVT::nxv4f64, 15},
+ {Intrinsic::floor, MVT::nxv8f64, 15},
+ {Intrinsic::ceil, MVT::v2f32, 15},
+ {Intrinsic::ceil, MVT::v4f32, 15},
+ {Intrinsic::ceil, MVT::v8f32, 15},
+ {Intrinsic::ceil, MVT::v16f32, 15},
+ {Intrinsic::ceil, MVT::nxv2f32, 15},
+ {Intrinsic::ceil, MVT::nxv4f32, 15},
+ {Intrinsic::ceil, MVT::nxv8f32, 15},
+ {Intrinsic::ceil, MVT::nxv16f32, 15},
+ {Intrinsic::ceil, MVT::v2f64, 15},
+ {Intrinsic::ceil, MVT::v4f64, 15},
+ {Intrinsic::ceil, MVT::v8f64, 15},
+ {Intrinsic::ceil, MVT::v16f64, 15},
+ {Intrinsic::ceil, MVT::nxv1f64, 15},
+ {Intrinsic::ceil, MVT::nxv2f64, 15},
+ {Intrinsic::ceil, MVT::nxv4f64, 15},
+ {Intrinsic::ceil, MVT::nxv8f64, 15},
+ {Intrinsic::trunc, MVT::v2f32, 7},
+ {Intrinsic::trunc, MVT::v4f32, 7},
+ {Intrinsic::trunc, MVT::v8f32, 7},
+ {Intrinsic::trunc, MVT::v16f32, 7},
+ {Intrinsic::trunc, MVT::nxv2f32, 7},
+ {Intrinsic::trunc, MVT::nxv4f32, 7},
+ {Intrinsic::trunc, MVT::nxv8f32, 7},
+ {Intrinsic::trunc, MVT::nxv16f32, 7},
+ {Intrinsic::trunc, MVT::v2f64, 7},
+ {Intrinsic::trunc, MVT::v4f64, 7},
+ {Intrinsic::trunc, MVT::v8f64, 7},
+ {Intrinsic::trunc, MVT::v16f64, 7},
+ {Intrinsic::trunc, MVT::nxv1f64, 7},
+ {Intrinsic::trunc, MVT::nxv2f64, 7},
+ {Intrinsic::trunc, MVT::nxv4f64, 7},
+ {Intrinsic::trunc, MVT::nxv8f64, 7},
+ {Intrinsic::round, MVT::v2f32, 10},
+ {Intrinsic::round, MVT::v4f32, 10},
+ {Intrinsic::round, MVT::v8f32, 10},
+ {Intrinsic::round, MVT::v16f32, 10},
+ {Intrinsic::round, MVT::nxv2f32, 10},
+ {Intrinsic::round, MVT::nxv4f32, 10},
+ {Intrinsic::round, MVT::nxv8f32, 10},
+ {Intrinsic::round, MVT::nxv16f32, 10},
+ {Intrinsic::round, MVT::v2f64, 10},
+ {Intrinsic::round, MVT::v4f64, 10},
+ {Intrinsic::round, MVT::v8f64, 10},
+ {Intrinsic::round, MVT::v16f64, 10},
+ {Intrinsic::round, MVT::nxv1f64, 10},
+ {Intrinsic::round, MVT::nxv2f64, 10},
+ {Intrinsic::round, MVT::nxv4f64, 10},
+ {Intrinsic::round, MVT::nxv8f64, 10},
+ {Intrinsic::fabs, MVT::v2f32, 1},
+ {Intrinsic::fabs, MVT::v4f32, 1},
+ {Intrinsic::fabs, MVT::v8f32, 1},
+ {Intrinsic::fabs, MVT::v16f32, 1},
+ {Intrinsic::fabs, MVT::nxv2f32, 1},
+ {Intrinsic::fabs, MVT::nxv4f32, 1},
+ {Intrinsic::fabs, MVT::nxv8f32, 1},
+ {Intrinsic::fabs, MVT::nxv16f32, 1},
+ {Intrinsic::fabs, MVT::v2f64, 1},
+ {Intrinsic::fabs, MVT::v4f64, 1},
+ {Intrinsic::fabs, MVT::v8f64, 1},
+ {Intrinsic::fabs, MVT::v16f64, 1},
+ {Intrinsic::fabs, MVT::nxv1f64, 1},
+ {Intrinsic::fabs, MVT::nxv2f64, 1},
+ {Intrinsic::fabs, MVT::nxv4f64, 1},
+ {Intrinsic::fabs, MVT::nxv8f64, 1},
+ {Intrinsic::sqrt, MVT::v2f32, 1},
+ {Intrinsic::sqrt, MVT::v4f32, 1},
+ {Intrinsic::sqrt, MVT::v8f32, 1},
+ {Intrinsic::sqrt, MVT::v16f32, 1},
+ {Intrinsic::sqrt, MVT::nxv2f32, 1},
+ {Intrinsic::sqrt, MVT::nxv4f32, 1},
+ {Intrinsic::sqrt, MVT::nxv8f32, 1},
+ {Intrinsic::sqrt, MVT::nxv16f32, 1},
+ {Intrinsic::sqrt, MVT::v2f64, 1},
+ {Intrinsic::sqrt, MVT::v4f64, 1},
+ {Intrinsic::sqrt, MVT::v8f64, 1},
+ {Intrinsic::sqrt, MVT::v16f64, 1},
+ {Intrinsic::sqrt, MVT::nxv1f64, 1},
+ {Intrinsic::sqrt, MVT::nxv2f64, 1},
+ {Intrinsic::sqrt, MVT::nxv4f64, 1},
+ {Intrinsic::sqrt, MVT::nxv8f64, 1},
+ {Intrinsic::bswap, MVT::v2i16, 3},
+ {Intrinsic::bswap, MVT::v4i16, 3},
+ {Intrinsic::bswap, MVT::v8i16, 3},
+ {Intrinsic::bswap, MVT::v16i16, 3},
+ {Intrinsic::bswap, MVT::nxv2i16, 3},
+ {Intrinsic::bswap, MVT::nxv4i16, 3},
+ {Intrinsic::bswap, MVT::nxv8i16, 3},
+ {Intrinsic::bswap, MVT::nxv16i16, 3},
+ {Intrinsic::bswap, MVT::v2i32, 12},
+ {Intrinsic::bswap, MVT::v4i32, 12},
+ {Intrinsic::bswap, MVT::v8i32, 12},
+ {Intrinsic::bswap, MVT::v16i32, 12},
+ {Intrinsic::bswap, MVT::nxv2i32, 12},
+ {Intrinsic::bswap, MVT::nxv4i32, 12},
+ {Intrinsic::bswap, MVT::nxv8i32, 12},
+ {Intrinsic::bswap, MVT::nxv16i32, 12},
+ {Intrinsic::bswap, MVT::v2i64, 31},
+ {Intrinsic::bswap, MVT::v4i64, 31},
+ {Intrinsic::bswap, MVT::v8i64, 31},
+ {Intrinsic::bswap, MVT::v16i64, 31},
+ {Intrinsic::bswap, MVT::nxv2i64, 31},
+ {Intrinsic::bswap, MVT::nxv4i64, 31},
+ {Intrinsic::bswap, MVT::nxv8i64, 31},
+ {Intrinsic::bitreverse, MVT::v2i8, 17},
+ {Intrinsic::bitreverse, MVT::v4i8, 17},
+ {Intrinsic::bitreverse, MVT::v8i8, 17},
+ {Intrinsic::bitreverse, MVT::v16i8, 17},
+ {Intrinsic::bitreverse, MVT::nxv2i8, 17},
+ {Intrinsic::bitreverse, MVT::nxv4i8, 17},
+ {Intrinsic::bitreverse, MVT::nxv8i8, 17},
+ {Intrinsic::bitreverse, MVT::nxv16i8, 17},
+ {Intrinsic::bitreverse, MVT::v2i16, 24},
+ {Intrinsic::bitreverse, MVT::v4i16, 24},
+ {Intrinsic::bitreverse, MVT::v8i16, 24},
+ {Intrinsic::bitreverse, MVT::v16i16, 24},
+ {Intrinsic::bitreverse, MVT::nxv2i16, 24},
+ {Intrinsic::bitreverse, MVT::nxv4i16, 24},
+ {Intrinsic::bitreverse, MVT::nxv8i16, 24},
+ {Intrinsic::bitreverse, MVT::nxv16i16, 24},
+ {Intrinsic::bitreverse, MVT::v2i32, 33},
+ {Intrinsic::bitreverse, MVT::v4i32, 33},
+ {Intrinsic::bitreverse, MVT::v8i32, 33},
+ {Intrinsic::bitreverse, MVT::v16i32, 33},
+ {Intrinsic::bitreverse, MVT::nxv2i32, 33},
+ {Intrinsic::bitreverse, MVT::nxv4i32, 33},
+ {Intrinsic::bitreverse, MVT::nxv8i32, 33},
+ {Intrinsic::bitreverse, MVT::nxv16i32, 33},
+ {Intrinsic::bitreverse, MVT::v2i64, 52},
+ {Intrinsic::bitreverse, MVT::v4i64, 52},
+ {Intrinsic::bitreverse, MVT::v8i64, 52},
+ {Intrinsic::bitreverse, MVT::v16i64, 52},
+ {Intrinsic::bitreverse, MVT::nxv2i64, 52},
+ {Intrinsic::bitreverse, MVT::nxv4i64, 52},
+ {Intrinsic::bitreverse, MVT::nxv8i64, 52},
+ {Intrinsic::ctpop, MVT::v2i8, 12},
+ {Intrinsic::ctpop, MVT::v4i8, 12},
+ {Intrinsic::ctpop, MVT::v8i8, 12},
+ {Intrinsic::ctpop, MVT::v16i8, 12},
+ {Intrinsic::ctpop, MVT::nxv2i8, 12},
+ {Intrinsic::ctpop, MVT::nxv4i8, 12},
+ {Intrinsic::ctpop, MVT::nxv8i8, 12},
+ {Intrinsic::ctpop, MVT::nxv16i8, 12},
+ {Intrinsic::ctpop, MVT::v2i16, 19},
+ {Intrinsic::ctpop, MVT::v4i16, 19},
+ {Intrinsic::ctpop, MVT::v8i16, 19},
+ {Intrinsic::ctpop, MVT::v16i16, 19},
+ {Intrinsic::ctpop, MVT::nxv2i16, 19},
+ {Intrinsic::ctpop, MVT::nxv4i16, 19},
+ {Intrinsic::ctpop, MVT::nxv8i16, 19},
+ {Intrinsic::ctpop, MVT::nxv16i16, 19},
+ {Intrinsic::ctpop, MVT::v2i32, 20},
+ {Intrinsic::ctpop, MVT::v4i32, 20},
+ {Intrinsic::ctpop, MVT::v8i32, 20},
+ {Intrinsic::ctpop, MVT::v16i32, 20},
+ {Intrinsic::ctpop, MVT::nxv2i32, 20},
+ {Intrinsic::ctpop, MVT::nxv4i32, 20},
+ {Intrinsic::ctpop, MVT::nxv8i32, 20},
+ {Intrinsic::ctpop, MVT::nxv16i32, 20},
+ {Intrinsic::ctpop, MVT::v2i64, 21},
+ {Intrinsic::ctpop, MVT::v4i64, 21},
+ {Intrinsic::ctpop, MVT::v8i64, 21},
+ {Intrinsic::ctpop, MVT::v16i64, 21},
+ {Intrinsic::ctpop, MVT::nxv2i64, 21},
+ {Intrinsic::ctpop, MVT::nxv4i64, 21},
+ {Intrinsic::ctpop, MVT::nxv8i64, 21},
+ {Intrinsic::sadd_sat, MVT::v2i8, 1},
+ {Intrinsic::sadd_sat, MVT::v4i8, 1},
+ {Intrinsic::sadd_sat, MVT::v8i8, 1},
+ {Intrinsic::sadd_sat, MVT::v16i8, 1},
+ {Intrinsic::sadd_sat, MVT::nxv2i8, 1},
+ {Intrinsic::sadd_sat, MVT::nxv4i8, 1},
+ {Intrinsic::sadd_sat, MVT::nxv8i8, 1},
+ {Intrinsic::sadd_sat, MVT::nxv16i8, 1},
+ {Intrinsic::sadd_sat, MVT::v2i16, 1},
+ {Intrinsic::sadd_sat, MVT::v4i16, 1},
+ {Intrinsic::sadd_sat, MVT::v8i16, 1},
+ {Intrinsic::sadd_sat, MVT::v16i16, 1},
+ {Intrinsic::sadd_sat, MVT::nxv2i16, 1},
+ {Intrinsic::sadd_sat, MVT::nxv4i16, 1},
+ {Intrinsic::sadd_sat, MVT::nxv8i16, 1},
+ {Intrinsic::sadd_sat, MVT::nxv16i16, 1},
+ {Intrinsic::sadd_sat, MVT::v2i32, 1},
+ {Intrinsic::sadd_sat, MVT::v4i32, 1},
+ {Intrinsic::sadd_sat, MVT::v8i32, 1},
+ {Intrinsic::sadd_sat, MVT::v16i32, 1},
+ {Intrinsic::sadd_sat, MVT::nxv2i32, 1},
+ {Intrinsic::sadd_sat, MVT::nxv4i32, 1},
+ {Intrinsic::sadd_sat, MVT::nxv8i32, 1},
+ {Intrinsic::sadd_sat, MVT::nxv16i32, 1},
+ {Intrinsic::sadd_sat, MVT::v2i64, 1},
+ {Intrinsic::sadd_sat, MVT::v4i64, 1},
+ {Intrinsic::sadd_sat, MVT::v8i64, 1},
+ {Intrinsic::sadd_sat, MVT::v16i64, 1},
+ {Intrinsic::sadd_sat, MVT::nxv2i64, 1},
+ {Intrinsic::sadd_sat, MVT::nxv4i64, 1},
+ {Intrinsic::sadd_sat, MVT::nxv8i64, 1},
+ {Intrinsic::uadd_sat, MVT::v2i8, 1},
+ {Intrinsic::uadd_sat, MVT::v4i8, 1},
+ {Intrinsic::uadd_sat, MVT::v8i8, 1},
+ {Intrinsic::uadd_sat, MVT::v16i8, 1},
+ {Intrinsic::uadd_sat, MVT::nxv2i8, 1},
+ {Intrinsic::uadd_sat, MVT::nxv4i8, 1},
+ {Intrinsic::uadd_sat, MVT::nxv8i8, 1},
+ {Intrinsic::uadd_sat, MVT::nxv16i8, 1},
+ {Intrinsic::uadd_sat, MVT::v2i16, 1},
+ {Intrinsic::uadd_sat, MVT::v4i16, 1},
+ {Intrinsic::uadd_sat, MVT::v8i16, 1},
+ {Intrinsic::uadd_sat, MVT::v16i16, 1},
+ {Intrinsic::uadd_sat, MVT::nxv2i16, 1},
+ {Intrinsic::uadd_sat, MVT::nxv4i16, 1},
+ {Intrinsic::uadd_sat, MVT::nxv8i16, 1},
+ {Intrinsic::uadd_sat, MVT::nxv16i16, 1},
+ {Intrinsic::uadd_sat, MVT::v2i32, 1},
+ {Intrinsic::uadd_sat, MVT::v4i32, 1},
+ {Intrinsic::uadd_sat, MVT::v8i32, 1},
+ {Intrinsic::uadd_sat, MVT::v16i32, 1},
+ {Intrinsic::uadd_sat, MVT::nxv2i32, 1},
+ {Intrinsic::uadd_sat, MVT::nxv4i32, 1},
+ {Intrinsic::uadd_sat, MVT::nxv8i32, 1},
+ {Intrinsic::uadd_sat, MVT::nxv16i32, 1},
+ {Intrinsic::uadd_sat, MVT::v2i64, 1},
+ {Intrinsic::uadd_sat, MVT::v4i64, 1},
+ {Intrinsic::uadd_sat, MVT::v8i64, 1},
+ {Intrinsic::uadd_sat, MVT::v16i64, 1},
+ {Intrinsic::uadd_sat, MVT::nxv2i64, 1},
+ {Intrinsic::uadd_sat, MVT::nxv4i64, 1},
+ {Intrinsic::uadd_sat, MVT::nxv8i64, 1},
+ {Intrinsic::usub_sat, MVT::v2i8, 1},
+ {Intrinsic::usub_sat, MVT::v4i8, 1},
+ {Intrinsic::usub_sat, MVT::v8i8, 1},
+ {Intrinsic::usub_sat, MVT::v16i8, 1},
+ {Intrinsic::usub_sat, MVT::nxv2i8, 1},
+ {Intrinsic::usub_sat, MVT::nxv4i8, 1},
+ {Intrinsic::usub_sat, MVT::nxv8i8, 1},
+ {Intrinsic::usub_sat, MVT::nxv16i8, 1},
+ {Intrinsic::usub_sat, MVT::v2i16, 1},
+ {Intrinsic::usub_sat, MVT::v4i16, 1},
+ {Intrinsic::usub_sat, MVT::v8i16, 1},
+ {Intrinsic::usub_sat, MVT::v16i16, 1},
+ {Intrinsic::usub_sat, MVT::nxv2i16, 1},
+ {Intrinsic::usub_sat, MVT::nxv4i16, 1},
+ {Intrinsic::usub_sat, MVT::nxv8i16, 1},
+ {Intrinsic::usub_sat, MVT::nxv16i16, 1},
+ {Intrinsic::usub_sat, MVT::v2i32, 1},
+ {Intrinsic::usub_sat, MVT::v4i32, 1},
+ {Intrinsic::usub_sat, MVT::v8i32, 1},
+ {Intrinsic::usub_sat, MVT::v16i32, 1},
+ {Intrinsic::usub_sat, MVT::nxv2i32, 1},
+ {Intrinsic::usub_sat, MVT::nxv4i32, 1},
+ {Intrinsic::usub_sat, MVT::nxv8i32, 1},
+ {Intrinsic::usub_sat, MVT::nxv16i32, 1},
+ {Intrinsic::usub_sat, MVT::v2i64, 1},
+ {Intrinsic::usub_sat, MVT::v4i64, 1},
+ {Intrinsic::usub_sat, MVT::v8i64, 1},
+ {Intrinsic::usub_sat, MVT::v16i64, 1},
+ {Intrinsic::usub_sat, MVT::nxv2i64, 1},
+ {Intrinsic::usub_sat, MVT::nxv4i64, 1},
+ {Intrinsic::usub_sat, MVT::nxv8i64, 1},
+ {Intrinsic::ssub_sat, MVT::v2i8, 1},
+ {Intrinsic::ssub_sat, MVT::v4i8, 1},
+ {Intrinsic::ssub_sat, MVT::v8i8, 1},
+ {Intrinsic::ssub_sat, MVT::v16i8, 1},
+ {Intrinsic::ssub_sat, MVT::nxv2i8, 1},
+ {Intrinsic::ssub_sat, MVT::nxv4i8, 1},
+ {Intrinsic::ssub_sat, MVT::nxv8i8, 1},
+ {Intrinsic::ssub_sat, MVT::nxv16i8, 1},
+ {Intrinsic::ssub_sat, MVT::v2i16, 1},
+ {Intrinsic::ssub_sat, MVT::v4i16, 1},
+ {Intrinsic::ssub_sat, MVT::v8i16, 1},
+ {Intrinsic::ssub_sat, MVT::v16i16, 1},
+ {Intrinsic::ssub_sat, MVT::nxv2i16, 1},
+ {Intrinsic::ssub_sat, MVT::nxv4i16, 1},
+ {Intrinsic::ssub_sat, MVT::nxv8i16, 1},
+ {Intrinsic::ssub_sat, MVT::nxv16i16, 1},
+ {Intrinsic::ssub_sat, MVT::v2i32, 1},
+ {Intrinsic::ssub_sat, MVT::v4i32, 1},
+ {Intrinsic::ssub_sat, MVT::v8i32, 1},
+ {Intrinsic::ssub_sat, MVT::v16i32, 1},
+ {Intrinsic::ssub_sat, MVT::nxv2i32, 1},
+ {Intrinsic::ssub_sat, MVT::nxv4i32, 1},
+ {Intrinsic::ssub_sat, MVT::nxv8i32, 1},
+ {Intrinsic::ssub_sat, MVT::nxv16i32, 1},
+ {Intrinsic::ssub_sat, MVT::v2i64, 1},
+ {Intrinsic::ssub_sat, MVT::v4i64, 1},
+ {Intrinsic::ssub_sat, MVT::v8i64, 1},
+ {Intrinsic::ssub_sat, MVT::v16i64, 1},
+ {Intrinsic::ssub_sat, MVT::nxv2i64, 1},
+ {Intrinsic::ssub_sat, MVT::nxv4i64, 1},
+ {Intrinsic::ssub_sat, MVT::nxv8i64, 1},
};
InstructionCost
TTI::TargetCostKind CostKind) {
auto *RetTy = ICA.getReturnType();
switch (ICA.getID()) {
+ case Intrinsic::umin:
+ case Intrinsic::umax:
+ case Intrinsic::smin:
+ case Intrinsic::smax: {
+ auto LT = getTypeLegalizationCost(RetTy);
+ if ((ST->hasVInstructions() && LT.second.isVector()) ||
+ (LT.second.isScalarInteger() && ST->hasStdExtZbb()))
+ return LT.first;
+ break;
+ }
// TODO: add more intrinsic
case Intrinsic::experimental_stepvector: {
unsigned Cost = 1; // vid