| 834 | |
| 835 | template <typename T> |
| 836 | void AssetsLibrary::fill_tensor_uniform_ranged(T &&tensor, |
| 837 | std::random_device::result_type seed_offset, |
| 838 | const std::vector<AssetsLibrary::RangePair> &excluded_range_pairs) const |
| 839 | { |
| 840 | using namespace arm_compute::utils::random; |
| 841 | |
| 842 | switch (tensor.data_type()) |
| 843 | { |
| 844 | case DataType::U8: |
| 845 | case DataType::QASYMM8: |
| 846 | { |
| 847 | const auto converted_pairs = detail::convert_range_pair<uint32_t>(excluded_range_pairs); |
| 848 | RangedUniformDistribution<uint32_t> distribution_u8(std::numeric_limits<uint8_t>::lowest(), |
| 849 | std::numeric_limits<uint8_t>::max(), converted_pairs); |
| 850 | fill(tensor, distribution_u8, seed_offset); |
| 851 | break; |
| 852 | } |
| 853 | case DataType::S8: |
| 854 | case DataType::QSYMM8: |
| 855 | { |
| 856 | const auto converted_pairs = detail::convert_range_pair<int32_t>(excluded_range_pairs); |
| 857 | RangedUniformDistribution<int32_t> distribution_s8(std::numeric_limits<int8_t>::lowest(), |
| 858 | std::numeric_limits<int8_t>::max(), converted_pairs); |
| 859 | fill(tensor, distribution_s8, seed_offset); |
| 860 | break; |
| 861 | } |
| 862 | case DataType::U16: |
| 863 | { |
| 864 | const auto converted_pairs = detail::convert_range_pair<uint16_t>(excluded_range_pairs); |
| 865 | RangedUniformDistribution<uint16_t> distribution_u16(std::numeric_limits<uint16_t>::lowest(), |
| 866 | std::numeric_limits<uint16_t>::max(), converted_pairs); |
| 867 | fill(tensor, distribution_u16, seed_offset); |
| 868 | break; |
| 869 | } |
| 870 | case DataType::S16: |
| 871 | case DataType::QSYMM16: |
| 872 | { |
| 873 | const auto converted_pairs = detail::convert_range_pair<int16_t>(excluded_range_pairs); |
| 874 | RangedUniformDistribution<int16_t> distribution_s16(std::numeric_limits<int16_t>::lowest(), |
| 875 | std::numeric_limits<int16_t>::max(), converted_pairs); |
| 876 | fill(tensor, distribution_s16, seed_offset); |
| 877 | break; |
| 878 | } |
| 879 | case DataType::U32: |
| 880 | { |
| 881 | const auto converted_pairs = detail::convert_range_pair<uint32_t>(excluded_range_pairs); |
| 882 | RangedUniformDistribution<uint32_t> distribution_u32(std::numeric_limits<uint32_t>::lowest(), |
| 883 | std::numeric_limits<uint32_t>::max(), converted_pairs); |
| 884 | fill(tensor, distribution_u32, seed_offset); |
| 885 | break; |
| 886 | } |
| 887 | case DataType::S32: |
| 888 | { |
| 889 | const auto converted_pairs = detail::convert_range_pair<int32_t>(excluded_range_pairs); |
| 890 | RangedUniformDistribution<int32_t> distribution_s32(std::numeric_limits<int32_t>::lowest(), |
| 891 | std::numeric_limits<int32_t>::max(), converted_pairs); |
| 892 | fill(tensor, distribution_s32, seed_offset); |
| 893 | break; |