Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions backends/cadence/hifi/kernels/kernels.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,7 @@ void requantize(
typed_quantize_val(int8_t);
typed_quantize_val(uint8_t);
typed_quantize_val(int16_t);
typed_quantize_val(uint16_t);
#undef typed_quantize_val

#define typed_quantize_vec(dtype) \
Expand All @@ -177,6 +178,7 @@ typed_quantize_val(int16_t);
typed_quantize_vec(int8_t);
typed_quantize_vec(uint8_t);
typed_quantize_vec(int16_t);
typed_quantize_vec(uint16_t);
typed_quantize_vec(int32_t);
#undef typed_quantize_vec

Expand All @@ -186,6 +188,7 @@ typed_quantize_vec(int32_t);
typed_dequantize_val(int8_t);
typed_dequantize_val(uint8_t);
typed_dequantize_val(int16_t);
typed_dequantize_val(uint16_t);
#undef typed_dequantize_val

#define typed_dequantize_vec(dtype) \
Expand All @@ -198,6 +201,7 @@ typed_dequantize_val(int16_t);
typed_dequantize_vec(int8_t);
typed_dequantize_vec(uint8_t);
typed_dequantize_vec(int16_t);
typed_dequantize_vec(uint16_t);
typed_dequantize_vec(int32_t);
#undef typed_dequantize_vec

Expand Down
3 changes: 3 additions & 0 deletions backends/cadence/hifi/operators/dequantize_per_tensor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,9 @@ void dequantize_per_tensor_out(
} else if (input.scalar_type() == ScalarType::Short) {
const int16_t* input_data = input.const_data_ptr<int16_t>();
dequantize<int16_t>(out_data, input_data, scale, zero_point, numel);
} else if (input.scalar_type() == ScalarType::Bits16) {
const uint16_t* input_data = input.const_data_ptr<uint16_t>();
dequantize<uint16_t>(out_data, input_data, scale, zero_point, numel);
} else if (input.scalar_type() == ScalarType::Int) {
const int32_t* input_data = input.const_data_ptr<int32_t>();
dequantize<int32_t>(out_data, input_data, scale, zero_point, numel);
Expand Down
4 changes: 4 additions & 0 deletions backends/cadence/hifi/operators/quantize_per_tensor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,10 @@ void quantize_per_tensor_out(
int16_t* out_data = out.mutable_data_ptr<int16_t>();
cadence::impl::HiFi::kernels::quantize<int16_t>(
out_data, input_data, 1. / scale, zero_point, numel);
} else if (out.scalar_type() == ScalarType::Bits16) {
uint16_t* out_data = out.mutable_data_ptr<uint16_t>();
cadence::impl::HiFi::kernels::quantize<uint16_t>(
out_data, input_data, 1. / scale, zero_point, numel);
} else if (out.scalar_type() == ScalarType::Int) {
int32_t* out_data = out.mutable_data_ptr<int32_t>();
cadence::impl::HiFi::kernels::quantize<int32_t>(
Expand Down
4 changes: 4 additions & 0 deletions backends/cadence/reference/kernels/kernels.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ void dequantize(
typed_quantize_val(int8_t);
typed_quantize_val(uint8_t);
typed_quantize_val(int16_t);
typed_quantize_val(uint16_t);
typed_quantize_val(int32_t);
#undef typed_quantize_val

Expand All @@ -78,6 +79,7 @@ typed_quantize_val(int32_t);
typed_quantize_vec(int8_t);
typed_quantize_vec(uint8_t);
typed_quantize_vec(int16_t);
typed_quantize_vec(uint16_t);
typed_quantize_vec(int32_t);
#undef typed_quantize_vec

Expand All @@ -86,6 +88,7 @@ typed_quantize_vec(int32_t);
typed_dequantize_val(int8_t);
typed_dequantize_val(uint8_t);
typed_dequantize_val(int16_t);
typed_dequantize_val(uint16_t);
typed_dequantize_val(int32_t);
#undef typed_dequantize_val

Expand All @@ -99,6 +102,7 @@ typed_dequantize_val(int32_t);
typed_dequantize_vec(int8_t);
typed_dequantize_vec(uint8_t);
typed_dequantize_vec(int16_t);
typed_dequantize_vec(uint16_t);
typed_dequantize_vec(int32_t);
#undef typed_dequantize_vec

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,14 @@ void dequantize_per_tensor_out(
const int8_t* input_data = input.const_data_ptr<int8_t>();
impl::reference::kernels::dequantize<int8_t>(
out_data, input_data, scale, zero_point, numel);
} else if (input.scalar_type() == ScalarType::Bits16) {
const uint16_t* input_data = input.const_data_ptr<uint16_t>();
impl::reference::kernels::dequantize<uint16_t>(
out_data, input_data, scale, zero_point, numel);
} else if (input.scalar_type() == ScalarType::Short) {
const int16_t* input_data = input.const_data_ptr<int16_t>();
impl::reference::kernels::dequantize<int16_t>(
out_data, input_data, scale, zero_point, numel);
} else if (input.scalar_type() == ScalarType::Int) {
const int32_t* input_data = input.const_data_ptr<int32_t>();
impl::reference::kernels::dequantize<int32_t>(
Expand Down
8 changes: 8 additions & 0 deletions backends/cadence/reference/operators/quantize_per_tensor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,14 @@ void quantize_per_tensor_out(
int8_t* out_data = out.mutable_data_ptr<int8_t>();
impl::reference::kernels::quantize<int8_t>(
out_data, input_data, 1. / scale, zero_point, numel);
} else if (out.scalar_type() == ScalarType::Bits16) {
uint16_t* out_data = out.mutable_data_ptr<uint16_t>();
impl::reference::kernels::quantize<uint16_t>(
out_data, input_data, 1. / scale, zero_point, numel);
} else if (out.scalar_type() == ScalarType::Short) {
int16_t* out_data = out.mutable_data_ptr<int16_t>();
impl::reference::kernels::quantize<int16_t>(
out_data, input_data, 1. / scale, zero_point, numel);
} else if (out.scalar_type() == ScalarType::Int) {
int32_t* out_data = out.mutable_data_ptr<int32_t>();
impl::reference::kernels::quantize<int32_t>(
Expand Down
Loading