Better errmsg upon getScalarTypeForType failure (#3734)

Instead of 
`Unhandled type in getScalarTypeForType`

You now get

Unhandled type in getScalarTypeForType: (type name)
Type properties:
  Is integer: yes
  Bit width: 
...


The root cause is https://github.com/llvm/torch-mlir/issues/3720, at
least for unsigned integer issues.
pull/3716/head
Xida Ren (Cedar) 2024-09-25 12:32:26 -04:00 committed by GitHub
parent 67732883fa
commit aa7e77ee64
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 22 additions and 1 deletions

View File

@ -90,7 +90,28 @@ torch_upstream::ScalarType Torch::getScalarTypeForType(Type type) {
return torch_upstream::ScalarType::Float8_e5m2fnuz;
if (isa<Float8E4M3FNUZType>(type))
return torch_upstream::ScalarType::Float8_e4m3fnuz;
llvm::report_fatal_error("unhandled type for getScalarTypeForType");
std::string errorMsg = "Unhandled type in getScalarTypeForType: ";
llvm::raw_string_ostream os(errorMsg);
type.print(os);
// os << "\nType ID: " << type.getTypeID();
os << "\nType properties:";
os << "\n Is integer: " << (type.isInteger() ? "yes" : "no");
os << "\n Is float: "
<< (type.isIntOrFloat() && !type.isInteger() ? "yes" : "no");
os << "\n Is index: " << (type.isIndex() ? "yes" : "no");
os << "\n Bit width: "
<< (type.isIntOrFloat() ? std::to_string(type.getIntOrFloatBitWidth())
: "N/A");
os << "\n Is signless: " << (type.isSignlessInteger() ? "yes" : "no");
os << "\n Is signed: " << (type.isSignedInteger() ? "yes" : "no");
// special error message for unsigned integer
if (type.isUnsignedInteger()) {
os << "\n Is unsigned: yes";
os << "\nUnsigned integer support is currently spotty. Please seeheck "
"https://github.com/llvm/torch-mlir/issues/3720 "
"for more details.";
}
llvm::report_fatal_error(llvm::StringRef(errorMsg));
}
Type Torch::getTypeForTorchType(
MLIRContext *context, Type type,