[PATCH] D105020: [SLP]Improve graph reordering.

Alexey Bataev via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 20 05:47:45 PDT 2021


ABataev added a comment.

In D105020#3008717 <https://reviews.llvm.org/D105020#3008717>, @goncharov wrote:

> Hi @ABataev ,
>
> this time I've run creduce with asan and msan, so it should not do read out of bounds
>
>   cat repro.cc
>   #include <iostream>
>   namespace a {
>   __attribute__((noinline)) void b(uint8_t *c, float *d, uint16_t e, uint16_t f) {
>     uint16_t g = f;
>     uint16_t h = c[0] << 2 | (c[4] & 3);
>     uint16_t m = c[1] << 2 | 2;
>     uint16_t n = c[2] << 2 | 3;
>     uint16_t j = c[3] << 2 | c[4] >> 6;
>     *(d - 1) = float(m - e) / g;
>     *(d - 2) = float(h - e) / g;
>     *(d - 3) = float(j - e) / g;
>     *(d - 4) = float(n - e) / g;
>   }
>   void bar(uint8_t *buffer, size_t k, size_t height, size_t l, uint16_t e,
>            uint16_t f, float *output) {
>     float *q = &output[4];
>     uint16_t g = f;
>     size_t r = k;
>     for (size_t s = 0; s < height; s++) {
>       uint8_t *o = buffer + l;
>       uint8_t *t = o;
>       float *p = &q[r];
>       b(t, p, e, g);
>     }
>   }
>   } // namespace a
>   int main() {
>     uint8_t u[]{5, 5, 0, 0, 0};
>     float output[4 * 4];
>     a::bar(u, 4, 4, 0, 0, 3, output);
>     int *out = reinterpret_cast<int *>(output);
>     int64_t sum;
>     for (size_t i = 0; i < sizeof sizeof(int); i++)
>       sum = out[i];
>     printf("%ld\n", sum);
>   }
>   $ # on revision before: 8441a8eea8007b9eaaaabf76055949180a702d6d
>   $ clang++ -Wall -Werror -Wextra -O2 -fno-exceptions  -stdlib=libc++ -std=gnu++17 repro.cc && ./a.out
>   1089120939
>   $ # revision 84cbd71c95923f9912512f3051c6ab548a99e016 
>   $ clang++ -Wall -Werror -Wextra -O2 -fno-exceptions  -stdlib=libc++ -std=gnu++17 repro.cc && ./a.out
>   1059760811

Thanks again for the reproducer, checked it with the last version uploaded on Friday, the results are correct. I fixed the incorrect reordering of the nodes with the alternate instructions.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D105020/new/

https://reviews.llvm.org/D105020



More information about the llvm-commits mailing list