Type resolving pass does not unify "uint8" and "int8"?


Hello, the context is that I am trying the quantization flow and the convolution op input types are “uint8” and “int8” for x86 AVX512 instructions, It seems the infertype pass calls into the type resolving and it reported the “Unable to unify parent types”. I checked the code, the current implementation falls into the AlphaEqual check.

// default: unify only if alpha-equal │··
Type VisitTypeDefault_(const Node* op, const Type& tn) final { │··
NodeRef nr = GetRef(op); │··
Type t1 = GetRef(nr.as_derivedtvm::relay::TypeNode()); │··
if (!AlphaEqual(t1, tn)) { │··
return Type(nullptr); │··
} │··
return t1; │··

cc @ajtulloch @antinucleon

Seems a relay infer_type bug or Convolution operation unreasonable efforce input data types matching