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] Fix the ambiguous call error for a corner case of gather() (#12506)
Some corner cases with interger scalar operands of gather() may cause
ambiguous call error. Examples of such calls:
// 0 may be treated as vector `simd_mask` or scalar 'global_offset'
auto res1 = gather<T, N>(acc, offsets_simd, 0);
// This case is more tricky, but also can confuse C++ FE.
auto res2 = gather<T, N>(acc, offsets_simd, 0, mask);
Signed-off-by: Klochkov, Vyacheslav N <[email protected]>
// CHECK-STATEFUL: call <8 x i32> @llvm.genx.gather.masked.scaled2.v8i32.v8i32.v8i1(i32 0, i16 0, i32 %[[SI5]], i32 %{{[0-9a-zA-Z_.]+}}, <8 x i32> %{{[0-9a-zA-Z_.]+}}, <8 x i1> %{{[0-9a-zA-Z_.]+}})
313
313
// CHECK-STATELESS: call <32 x i8> @llvm.genx.svm.gather.v32i8.v8i1.v8i64(<8 x i1> %{{[0-9a-zA-Z_.]+}}, i32 0, <8 x i64> %{{[0-9a-zA-Z_.]+}}, <32 x i8> undef)
0 commit comments