nemanjai requested changes to this revision.
nemanjai added a comment.
This revision now requires changes to proceed.

Can you please merge the tests into one file. There is no compelling reason to 
split them up and it is more difficult to review and make sense of what is 
going on. The test case should have:

1. A function that allocates a 32-byte vector (i.e. defined with 
`__attribute__((vector_size(32)))`)
2. A function that allocates a 32-byte aligned vector (i.e. defined with 
`__attribute__((aligned(32)))`)
3. A function that allocates an array that wouldn't be aligned to something in 
excess of stack alignment but gets over-aligned due to vectorization

You can achieve 3. above with something like this:

  $ cat t.c
  char Arr1[64];
  void test(short *);
  void cpy() {
    short Arr2[64];
    for (int i = 0; i < 64; i++)
      Arr2[i] = Arr1[i];
    test(Arr2);
  }
  
  clang -O3 -S t.c -emit-llvm -Xclang -disable-llvm-passes

Then the test case should run something like the following:
`opt --passes=sroa,loop-vectorize,loop-unroll,instcombine t.ll -S -o t.opt.ll 
-vectorizer-maximize-bandwidth --mtriple=powerpc64le--`
And check the alignment of the `alloca` and vector store. They should be 16 and 
not 32 even though the vector is 32 bytes wide.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D96265

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to