You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[ESIMD] Do simd<T, N>* to <N x T> arg/ret type conv when possible. (#6835)
Today, `simd<T, N> foo(simd<T, N> x)` is codegenerated by clang as
`void foo(simd<T, N>* sret(simd<T, N>) %res, simd<T, N>* %x)`
for the SPIRV target (unless `__regcall` is specified), which is then
converted to
`void foo(<N x T>* sret(<N x T>) %res, <N x T>* %x)`
in the LowerESIMDVecArg, then to
`<N x T> foo(<N x T> %x)`
in the VC BE.
With the opaque pointers this becomes impossible, and the optimization
must happen in the "ESIMD FE". This patch implements it.
It also changes `lowerEsimdConstructs` in sycl-post-link.cpp to use new
pass manager to avoid the old pass manager-related boiler plate code in
new ESIMD transformations.
Signed-off-by: Konstantin S Bobrovsky <[email protected]>
0 commit comments