[all-commits] [llvm/llvm-project] 67a1fd: [mlir][IR] Treat `tf32` as 19-bit float (#116738)

Matthias Springer via All-commits all-commits at lists.llvm.org
Wed Nov 20 00:33:29 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 67a1fdb014790a38a205d28e1748634de34471dd
      https://github.com/llvm/llvm-project/commit/67a1fdb014790a38a205d28e1748634de34471dd
  Author: Matthias Springer <me at m-sp.org>
  Date:   2024-11-20 (Wed, 20 Nov 2024)

  Changed paths:
    M mlir/lib/IR/BuiltinTypes.cpp
    M mlir/test/IR/attribute.mlir

  Log Message:
  -----------
  [mlir][IR] Treat `tf32` as 19-bit float (#116738)

TF32 is a variant of F32 that is truncated to 19 bits. There used to be
special handling in `FloatType::getWidth()` so that TF32 was treated as
a 32-bit float in some places. (Some places use `FloatType::getWidth`,
others directly query the `APFloat` semantics.) This caused problems
because `FloatType::getWidth` did not agree with the underlying
`APFloat` semantics.

In particular, creating an elements attr / array attr with `tf32`
element type crashed. E.g.:
```
"foo"() {attr = dense<4.0> : tensor<tf32>} : () -> ()

mlir-opt: llvm-project/llvm/lib/Support/APFloat.cpp:4108: void llvm::detail::IEEEFloat::initFromAPInt(const fltSemantics *, const APInt &): Assertion `api.getBitWidth() == Sem->sizeInBits' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
```

```
"foo"() {f32attr = array<tf32: 1024.>} : () -> ()

mlir-opt: llvm-project/mlir/lib/AsmParser/AttributeParser.cpp:847: void (anonymous namespace)::DenseArrayElementParser::append(const APInt &): Assertion `data.getBitWidth() % 8 == 0' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
```

It is unclear why the special handling for TF32 is needed. For
reference: #107372



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list