diff --git a/clang/test/CodeGenDirectX/unsupported_intrinsic.hlsl b/clang/test/CodeGenDirectX/unsupported_intrinsic.hlsl new file mode 100644 index 0000000000000..db91cb8fb789e --- /dev/null +++ b/clang/test/CodeGenDirectX/unsupported_intrinsic.hlsl @@ -0,0 +1,8 @@ +// REQUIRES: directx-registered-target +// RUN: not %clang_dxc -T lib_6_3 %s 2>&1 | FileCheck %s + +// CHECK: error: Unsupported intrinsic llvm.vector.reduce.and.v4i32 for DXIL lowering + +export int vecReduceAndTest(int4 vec) { + return __builtin_reduce_and(vec); +} diff --git a/llvm/lib/Target/DirectX/DXILOpLowering.cpp b/llvm/lib/Target/DirectX/DXILOpLowering.cpp index 4574e5f7bbd96..f28171b6d4908 100644 --- a/llvm/lib/Target/DirectX/DXILOpLowering.cpp +++ b/llvm/lib/Target/DirectX/DXILOpLowering.cpp @@ -8,7 +8,6 @@ #include "DXILOpLowering.h" #include "DXILConstants.h" -#include "DXILIntrinsicExpansion.h" #include "DXILOpBuilder.h" #include "DXILShaderFlags.h" #include "DirectX.h" @@ -27,6 +26,7 @@ #include "llvm/InitializePasses.h" #include "llvm/Pass.h" #include "llvm/Support/ErrorHandling.h" +#include "llvm/Support/FormatVariadic.h" #define DEBUG_TYPE "dxil-op-lower" @@ -756,9 +756,9 @@ class OpLowerer { case Intrinsic::not_intrinsic: continue; default: { - DiagnosticInfoUnsupported Diag( - F, "Unsupported intrinsic for DXIL lowering"); - M.getContext().diagnose(Diag); + SmallString<128> Msg = + formatv("Unsupported intrinsic {0} for DXIL lowering", F.getName()); + M.getContext().emitError(Msg); HasErrors |= true; break; } diff --git a/llvm/test/CodeGen/DirectX/unsupported_intrinsic.ll b/llvm/test/CodeGen/DirectX/unsupported_intrinsic.ll index d703f2f04c494..aaf17d901aef7 100644 --- a/llvm/test/CodeGen/DirectX/unsupported_intrinsic.ll +++ b/llvm/test/CodeGen/DirectX/unsupported_intrinsic.ll @@ -1,6 +1,6 @@ ; RUN: not opt -S -dxil-op-lower -mtriple=dxil-pc-shadermodel6.3-library %s 2>&1 | FileCheck %s -; CHECK: error: :0:0: in function llvm.vector.reduce.and.v4i32 i32 (<4 x i32>): Unsupported intrinsic for DXIL lowering +; CHECK: error: Unsupported intrinsic llvm.vector.reduce.and.v4i32 for DXIL lowering define i32 @fn_and(<4 x i32> %0) local_unnamed_addr #0 { %2 = tail call i32 @llvm.vector.reduce.and.v4i32(<4 x i32> %0) ret i32 %2