[Matrix] Support #pragma clang fp
authorHamza Mahfooz <someguy@effective-light.com>
Thu, 22 Apr 2021 08:15:48 +0000 (09:15 +0100)
committerFlorian Hahn <flo@fhahn.com>
Thu, 22 Apr 2021 10:45:34 +0000 (11:45 +0100)
commitbe2277fbf233cca8e1bd698fa9ab6de404001c3a
tree06340cdab1837db9796063912a10308624661244
parent439366817bb860f638b288268a7158cbcdd49e43
[Matrix] Support #pragma clang fp

From https://bugs.llvm.org/show_bug.cgi?id=49739:

Currently, `#pragma clang fp` are ignored for matrix types.

For the code below, the `contract` fast-math flag should be added to the generated call to `llvm.matrix.multiply` and `fadd`

```
typedef float fx2x2_t __attribute__((matrix_type(2, 2)));

void foo(fx2x2_t &A, fx2x2_t &C, fx2x2_t &B) {
  #pragma clang fp contract(fast)
  C = A*B + C;
}
```

Reviewed By: fhahn, mibintc

Differential Revision: https://reviews.llvm.org/D100834
clang/lib/CodeGen/CGExprScalar.cpp
clang/test/CodeGen/fp-matrix-pragma.c [new file with mode: 0644]