Skip to content

Commit

Permalink
Fix build on s390x (#123250)
Browse files Browse the repository at this point in the history
Rename s390x-specific zvector functions with same name.

Pull Request resolved: #123250
Approved by: https://github.com/malfet
  • Loading branch information
AlekseiNikiforovIBM authored and pytorchmergebot committed Apr 22, 2024
1 parent be2e56b commit 77c3533
Showing 1 changed file with 35 additions and 35 deletions.
70 changes: 35 additions & 35 deletions aten/src/ATen/cpu/vec/vec256/zarch/vec256_zarch.h
Expand Up @@ -1505,19 +1505,19 @@ inline ZSimdVect<int> vec_flt_int(const ZSimdVect<float> x) {
#define vec_flt_int vec_signed
#endif

Vectorized<float> convert_to_float(const Vectorized<int32_t>& x) {
Vectorized<float> zvec_convert_to_float(const Vectorized<int32_t>& x) {
return {vec_int_flt(x.vec0()), vec_int_flt(x.vec1())};
}

Vectorized<int32_t> convert_to_int(const Vectorized<float>& x) {
Vectorized<int32_t> zvec_convert_to_int(const Vectorized<float>& x) {
return {vec_flt_int(x.vec0()), vec_flt_int(x.vec1())};
}

Vectorized<double> convert_to_float(const Vectorized<int64_t>& x) {
Vectorized<double> zvec_convert_to_float(const Vectorized<int64_t>& x) {
return {vec_double(x.vec0()), vec_double(x.vec1())};
}

Vectorized<int64_t> convert_to_int(const Vectorized<double>& x) {
Vectorized<int64_t> zvec_convert_to_int(const Vectorized<double>& x) {
return {vec_signed(x.vec0()), vec_signed(x.vec1())};
}

Expand Down Expand Up @@ -1575,13 +1575,13 @@ Vectorized<int64_t> C10_ALWAYS_INLINE fmadd(
template <>
Vectorized<int64_t> C10_ALWAYS_INLINE
convert_to_int_of_same_size<double>(const Vectorized<double>& src) {
return convert_to_int(src);
return zvec_convert_to_int(src);
}

template <>
Vectorized<int32_t> C10_ALWAYS_INLINE
convert_to_int_of_same_size<float>(const Vectorized<float>& src) {
return convert_to_int(src);
return zvec_convert_to_int(src);
}

template <>
Expand All @@ -1593,7 +1593,7 @@ inline void convert(const int32_t* src, float* dst, int64_t n) {
const int32_t* src_a = src + i;
float* dst_a = dst + i;
auto input_vec = Vectorized<int32_t>::loadu(src_a);
auto output_vec = convert_to_float(input_vec);
auto output_vec = zvec_convert_to_float(input_vec);
output_vec.store(dst_a);
}

Expand All @@ -1610,7 +1610,7 @@ inline void convert(const int64_t* src, double* dst, int64_t n) {
const int64_t* src_a = src + i;
double* dst_a = dst + i;
auto input_vec = Vectorized<int64_t>::loadu(src_a);
auto output_vec = convert_to_float(input_vec);
auto output_vec = zvec_convert_to_float(input_vec);
output_vec.store(dst_a);
}
for (; i < n; i++) {
Expand Down Expand Up @@ -1789,7 +1789,7 @@ struct Vectorized<T, std::enable_if_t<is_zarch_implemented_quant<T>()>> {
Vectorized<float> scale,
Vectorized<float> zero_point,
Vectorized<float> scale_zp_premul) const {
auto float_val = convert_to_float(_vec);
auto float_val = zvec_convert_to_float(_vec);
return {fmadd(scale, float_val, scale_zp_premul)};
}

Expand All @@ -1799,7 +1799,7 @@ struct Vectorized<T, std::enable_if_t<is_zarch_implemented_quant<T>()>> {
float_vec_return_type dequantize(
Vectorized<float> scale,
Vectorized<float> zero_point) const {
auto float_val = convert_to_float(_vec);
auto float_val = zvec_convert_to_float(_vec);
return {(float_val - zero_point) * scale};
}

Expand All @@ -1814,7 +1814,7 @@ struct Vectorized<T, std::enable_if_t<is_zarch_implemented_quant<T>()>> {
Vectorized<float> vecf = rhs[0];
vecf = vecf * Vectorized<float>(inverse_scale);
vecf = vecf.rint() + Vectorized<float>((float)(zero_point));
auto veci = convert_to_int(vecf);
auto veci = zvec_convert_to_int(vecf);

return Vectorized<T>{veci};
}
Expand All @@ -1827,10 +1827,10 @@ struct Vectorized<T, std::enable_if_t<is_zarch_implemented_quant<T>()>> {
float multiplier,
int32_t zero_point) {
Vectorized<T> vi = inp[0];
auto vecf = convert_to_float(vi.vec());
auto vecf = zvec_convert_to_float(vi.vec());
vecf = vecf * Vectorized<float>(multiplier);
vecf = vecf.rint();
auto veci = convert_to_int(vecf) + Vectorized<int>(zero_point);
auto veci = zvec_convert_to_int(vecf) + Vectorized<int>(zero_point);

return Vectorized<T>{veci};
}
Expand Down Expand Up @@ -1865,11 +1865,11 @@ struct Vectorized<T, std::enable_if_t<is_zarch_implemented_quant<T>()>> {
auto ret32_0 = unpack(ret16.first);
auto ret32_1 = unpack(ret16.second);

auto vecf_0 = convert_to_float(ret32_0.first);
auto vecf_1 = convert_to_float(ret32_0.second);
auto vecf_0 = zvec_convert_to_float(ret32_0.first);
auto vecf_1 = zvec_convert_to_float(ret32_0.second);

auto vecf_2 = convert_to_float(ret32_1.first);
auto vecf_3 = convert_to_float(ret32_1.second);
auto vecf_2 = zvec_convert_to_float(ret32_1.first);
auto vecf_3 = zvec_convert_to_float(ret32_1.second);
return {
fmadd(scale, vecf_0, scale_zp_premul),
fmadd(scale, vecf_1, scale_zp_premul),
Expand All @@ -1888,11 +1888,11 @@ struct Vectorized<T, std::enable_if_t<is_zarch_implemented_quant<T>()>> {
auto ret32_0 = unpack(ret16.first);
auto ret32_1 = unpack(ret16.second);

auto vecf_0 = convert_to_float(ret32_0.first);
auto vecf_1 = convert_to_float(ret32_0.second);
auto vecf_0 = zvec_convert_to_float(ret32_0.first);
auto vecf_1 = zvec_convert_to_float(ret32_0.second);

auto vecf_2 = convert_to_float(ret32_1.first);
auto vecf_3 = convert_to_float(ret32_1.second);
auto vecf_2 = zvec_convert_to_float(ret32_1.first);
auto vecf_3 = zvec_convert_to_float(ret32_1.second);

return {
(vecf_0 - zero_point) * scale,
Expand Down Expand Up @@ -1927,10 +1927,10 @@ struct Vectorized<T, std::enable_if_t<is_zarch_implemented_quant<T>()>> {
vecf4 = vecf4.rint() + vec_zero_point;
vecf6 = vecf6.rint() + vec_zero_point;

auto veci0 = convert_to_int(vecf0);
auto veci2 = convert_to_int(vecf2);
auto veci4 = convert_to_int(vecf4);
auto veci6 = convert_to_int(vecf6);
auto veci0 = zvec_convert_to_int(vecf0);
auto veci2 = zvec_convert_to_int(vecf2);
auto veci4 = zvec_convert_to_int(vecf4);
auto veci6 = zvec_convert_to_int(vecf6);

auto vecshi0 = pack(veci0, veci2);
auto vecshi2 = pack(veci4, veci6);
Expand All @@ -1954,11 +1954,11 @@ struct Vectorized<T, std::enable_if_t<is_zarch_implemented_quant<T>()>> {
Vectorized<c10::qint32> vi2 = inp[2];
Vectorized<c10::qint32> vi3 = inp[3];

auto vecf0 = convert_to_float(vi0.vec());
auto vecf2 = convert_to_float(vi1.vec());
auto vecf0 = zvec_convert_to_float(vi0.vec());
auto vecf2 = zvec_convert_to_float(vi1.vec());

auto vecf4 = convert_to_float(vi2.vec());
auto vecf6 = convert_to_float(vi3.vec());
auto vecf4 = zvec_convert_to_float(vi2.vec());
auto vecf6 = zvec_convert_to_float(vi3.vec());

vecf0 = vecf0 * vec_multiplier;
vecf2 = vecf2 * vec_multiplier;
Expand All @@ -1971,10 +1971,10 @@ struct Vectorized<T, std::enable_if_t<is_zarch_implemented_quant<T>()>> {
vecf4 = vecf4.rint();
vecf6 = vecf6.rint();

auto veci0 = convert_to_int(vecf0);
auto veci2 = convert_to_int(vecf2);
auto veci4 = convert_to_int(vecf4);
auto veci6 = convert_to_int(vecf6);
auto veci0 = zvec_convert_to_int(vecf0);
auto veci2 = zvec_convert_to_int(vecf2);
auto veci4 = zvec_convert_to_int(vecf4);
auto veci6 = zvec_convert_to_int(vecf6);

veci0 = veci0 + vec_zero_point;
veci2 = veci2 + vec_zero_point;
Expand Down Expand Up @@ -2845,7 +2845,7 @@ inline convert_int8_to_float(const Vectorized<T> &src) {
// Only handle first 64 bits
auto vec_int = src.to_vec_float_helper();

return convert_to_float(vec_int);
return zvec_convert_to_float(vec_int);
}

template <typename T>
Expand All @@ -2854,7 +2854,7 @@ inline convert_float_to_int8(const Vectorized<float> &src) {
constexpr auto min_val = std::numeric_limits<T>::min();
constexpr auto max_val = std::numeric_limits<T>::max();

auto vec_int = clamp(convert_to_int(src), Vectorized<int32_t>(min_val), Vectorized<int32_t>(max_val));
auto vec_int = clamp(zvec_convert_to_int(src), Vectorized<int32_t>(min_val), Vectorized<int32_t>(max_val));

return vec_int.to_vec_uint8_helper();
}
Expand Down

0 comments on commit 77c3533

Please sign in to comment.