From 58c577492915e42ae7afd275cd12154d00868db3 Mon Sep 17 00:00:00 2001 From: Denis Bakhvalov Date: Wed, 10 Feb 2021 11:19:17 -0800 Subject: [PATCH 1/3] [ESIMD] Fixed a crash lowering __esimd_unpack_mask --- llvm/lib/SYCLLowerIR/LowerESIMD.cpp | 3 ++- llvm/test/SYCLLowerIR/esimd_lower_crash_zext.ll | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 llvm/test/SYCLLowerIR/esimd_lower_crash_zext.ll diff --git a/llvm/lib/SYCLLowerIR/LowerESIMD.cpp b/llvm/lib/SYCLLowerIR/LowerESIMD.cpp index 2617b80bf52f0..1055192f86b4f 100644 --- a/llvm/lib/SYCLLowerIR/LowerESIMD.cpp +++ b/llvm/lib/SYCLLowerIR/LowerESIMD.cpp @@ -726,7 +726,8 @@ static void translateUnPackMask(CallInst &CI) { llvm::Value *TransCI = Builder.CreateZExt( Arg0, llvm::FixedVectorType::get(llvm::Type::getInt16Ty(Context), N)); TransCI->takeName(&CI); - cast(TransCI)->setDebugLoc(CI.getDebugLoc()); + if (llvm::Instruction *TransCInst = dyn_cast(TransCI)) + TransCInst->setDebugLoc(CI.getDebugLoc()); CI.replaceAllUsesWith(TransCI); } diff --git a/llvm/test/SYCLLowerIR/esimd_lower_crash_zext.ll b/llvm/test/SYCLLowerIR/esimd_lower_crash_zext.ll new file mode 100644 index 0000000000000..4ad52521af9d2 --- /dev/null +++ b/llvm/test/SYCLLowerIR/esimd_lower_crash_zext.ll @@ -0,0 +1,12 @@ +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py +; RUN: opt -LowerESIMD -S < %s | FileCheck %s + +define spir_func <32 x i16> @_Z3foov() { +; CHECK-LABEL: @_Z3foov( +; CHECK-NEXT: ret <32 x i16> zext (<32 x i1> bitcast (<1 x i32> to <32 x i1>) to <32 x i16>) +; + %call.i.i = call spir_func <32 x i16> @_Z19__esimd_unpack_maskILi32EEN2cl4sycl5INTEL3gpu11vector_typeItXT_EE4typeEj(i32 1717986918) + ret <32 x i16> %call.i.i +} + +declare dso_local spir_func <32 x i16> @_Z19__esimd_unpack_maskILi32EEN2cl4sycl5INTEL3gpu11vector_typeItXT_EE4typeEj(i32) From 4b4a6c4aba73089b923ab469dd8b73b531e82a9c Mon Sep 17 00:00:00 2001 From: Denis Bakhvalov Date: Thu, 11 Feb 2021 13:46:08 -0800 Subject: [PATCH 2/3] Added comment to the test --- llvm/test/SYCLLowerIR/esimd_lower_crash_zext.ll | 3 +++ 1 file changed, 3 insertions(+) diff --git a/llvm/test/SYCLLowerIR/esimd_lower_crash_zext.ll b/llvm/test/SYCLLowerIR/esimd_lower_crash_zext.ll index 4ad52521af9d2..f0551319ac995 100644 --- a/llvm/test/SYCLLowerIR/esimd_lower_crash_zext.ll +++ b/llvm/test/SYCLLowerIR/esimd_lower_crash_zext.ll @@ -1,6 +1,9 @@ ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; RUN: opt -LowerESIMD -S < %s | FileCheck %s +; This test checks that there is no crash while lowering +; __esimd_unpack_mask. + define spir_func <32 x i16> @_Z3foov() { ; CHECK-LABEL: @_Z3foov( ; CHECK-NEXT: ret <32 x i16> zext (<32 x i1> bitcast (<1 x i32> to <32 x i1>) to <32 x i16>) From b253b6b8775dad654712a5d9aee61f0e5ba8fa9d Mon Sep 17 00:00:00 2001 From: kbobrovs Date: Thu, 11 Feb 2021 19:50:18 -0800 Subject: [PATCH 3/3] Update llvm/test/SYCLLowerIR/esimd_lower_crash_zext.ll --- llvm/test/SYCLLowerIR/esimd_lower_crash_zext.ll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llvm/test/SYCLLowerIR/esimd_lower_crash_zext.ll b/llvm/test/SYCLLowerIR/esimd_lower_crash_zext.ll index f0551319ac995..70cbbdfe46512 100644 --- a/llvm/test/SYCLLowerIR/esimd_lower_crash_zext.ll +++ b/llvm/test/SYCLLowerIR/esimd_lower_crash_zext.ll @@ -2,7 +2,7 @@ ; RUN: opt -LowerESIMD -S < %s | FileCheck %s ; This test checks that there is no crash while lowering -; __esimd_unpack_mask. +; __esimd_unpack_mask when its argument is an integer constant. define spir_func <32 x i16> @_Z3foov() { ; CHECK-LABEL: @_Z3foov(