Closed alexey-bataev closed 2 weeks ago
@llvm/pr-subscribers-llvm-transforms
Author: Alexey Bataev (alexey-bataev)
:white_check_mark: With the latest revision this PR passed the C/C++ code formatter.
Hi @alexey-bataev.
I'm confused by the code generation of this GCC torture test after this change:
https://www.godbolt.org/z/frnz9K1n4
Check line 5. I would expect the pointer of a negative strided store be moved at the address of the last element of the store. Instead we store at the original place (i.e. I'd expect something like addi a2, a0, 4
and then vsse32.v v8, (a2), a1
)
Hi @alexey-bataev.
I'm confused by the code generation of this GCC torture test after this change:
https://www.godbolt.org/z/frnz9K1n4
Check line 5. I would expect the pointer of a negative strided store be moved at the address of the last element of the store. Instead we store at the original place (i.e. I'd expect something like
addi a2, a0, 4
and thenvsse32.v v8, (a2), a1
)
Yes, looks like you're right, forgot to take the last pointer. Will fix it ASAP.
Hi @alexey-bataev.
I'm confused by the code generation of this GCC torture test after this change:
https://www.godbolt.org/z/frnz9K1n4
Check line 5. I would expect the pointer of a negative strided store be moved at the address of the last element of the store. Instead we store at the original place (i.e. I'd expect something like
addi a2, a0, 4
and thenvsse32.v v8, (a2), a1
)
Must be fixed in c144157f3df0dc5cd147cd1c531d75193fd6a22f
Adds transformation of consecutive vector store + reverse to strided stores with stride -1, if it is profitable