Skip to content

Commit f770508

Browse files
authored
[SYCL][ESIMD] Fix incorrect intrinsic lowering for signed atomic min/max (#8527)
The correct intrinsic examples are: @llvm.genx.svm.atomic.imin @llvm.genx.svm.atomic.imax
1 parent a607805 commit f770508

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

llvm/lib/SYCLLowerIR/ESIMD/LowerESIMD.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -832,10 +832,10 @@ static std::string getESIMDIntrinSuffix(id::FunctionEncoding *FE,
832832
Suff = ".xor";
833833
break;
834834
case 0xb:
835-
Suff = ".minsint";
835+
Suff = ".imin";
836836
break;
837837
case 0xc:
838-
Suff = ".maxsint";
838+
Suff = ".imax";
839839
break;
840840
case 0x10:
841841
Suff = ".fmax";

sycl/test/esimd/intrins_trans.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,20 @@ test_mem_intrins(uint64_t addr, const vec<float, 8> &xf,
259259
// CHECK-LABEL: %{{[a-zA-Z0-9.]+}} = call <8 x float> @llvm.genx.svm.atomic.fcmpwr.v8f32.v8i1.v8i64(<8 x i1> %{{[a-zA-Z0-9.]+}}, <8 x i64> %{{[a-zA-Z0-9.]+}}, <8 x float> %{{[a-zA-Z0-9.]+}}, <8 x float> %{{[a-zA-Z0-9.]+}}, <8 x float> undef)
260260
use(x);
261261
}
262+
{
263+
vec<int, 8> src0 = get8i();
264+
auto x = __esimd_svm_atomic1<atomic_op::smin, int, 8>(get8ui64(), src0,
265+
get8ui16());
266+
// CHECK-LABEL: %{{[a-zA-Z0-9.]+}} = call <8 x i32> @llvm.genx.svm.atomic.imin.v8i32.v8i1.v8i64(<8 x i1> %{{[a-zA-Z0-9.]+}}, <8 x i64> %{{[a-zA-Z0-9.]+}}, <8 x i32> %{{[a-zA-Z0-9.]+}}, <8 x i32> undef)
267+
use(x);
268+
}
269+
{
270+
vec<int, 8> src0 = get8i();
271+
auto x = __esimd_svm_atomic1<atomic_op::smax, int, 8>(get8ui64(), src0,
272+
get8ui16());
273+
// CHECK-LABEL: %{{[a-zA-Z0-9.]+}} = call <8 x i32> @llvm.genx.svm.atomic.imax.v8i32.v8i1.v8i64(<8 x i1> %{{[a-zA-Z0-9.]+}}, <8 x i64> %{{[a-zA-Z0-9.]+}}, <8 x i32> %{{[a-zA-Z0-9.]+}}, <8 x i32> undef)
274+
use(x);
275+
}
262276
{
263277
constexpr SurfaceIndex si = 0;
264278
vec<float, 8> x =

0 commit comments

Comments
 (0)