From 4479503ecb540bb6ef9656db250db97e21c030e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nathan=20Gau=C3=ABr?= Date: Mon, 4 Aug 2025 16:58:14 +0200 Subject: [PATCH] [SPIR-V] Fix OpVectorShuffle undef emission When an undef/poison value is lowered as a an immediate, it becomes -1. When reaching the backend, the -1 was printed as operand to OpVectorShuffle instead of the proper 0xFFFFFFFF. From the SPIR-V spec: A Component literal may also be FFFFFFFF, which means the corresponding result component has no source and is undefined. Fixes #151691 --- .../Target/SPIRV/MCTargetDesc/SPIRVInstPrinter.cpp | 14 +++++++++++--- .../llvm-intrinsics/llvm-vector-reduce/add.ll | 8 ++++---- .../llvm-intrinsics/llvm-vector-reduce/and.ll | 8 ++++---- .../llvm-intrinsics/llvm-vector-reduce/mul.ll | 8 ++++---- .../SPIRV/llvm-intrinsics/llvm-vector-reduce/or.ll | 8 ++++---- .../llvm-intrinsics/llvm-vector-reduce/smax.ll | 8 ++++---- .../llvm-intrinsics/llvm-vector-reduce/smin.ll | 8 ++++---- .../llvm-intrinsics/llvm-vector-reduce/umax.ll | 8 ++++---- .../llvm-intrinsics/llvm-vector-reduce/umin.ll | 8 ++++---- .../llvm-intrinsics/llvm-vector-reduce/xor.ll | 8 ++++---- 10 files changed, 47 insertions(+), 39 deletions(-) diff --git a/llvm/lib/Target/SPIRV/MCTargetDesc/SPIRVInstPrinter.cpp b/llvm/lib/Target/SPIRV/MCTargetDesc/SPIRVInstPrinter.cpp index a7f6fbceffc3f..d78be27b9ae70 100644 --- a/llvm/lib/Target/SPIRV/MCTargetDesc/SPIRVInstPrinter.cpp +++ b/llvm/lib/Target/SPIRV/MCTargetDesc/SPIRVInstPrinter.cpp @@ -374,9 +374,17 @@ void SPIRVInstPrinter::printOperand(const MCInst *MI, unsigned OpNo, const MCOperand &Op = MI->getOperand(OpNo); if (Op.isReg()) O << '%' << (getIDFromRegister(Op.getReg().id()) + 1); - else if (Op.isImm()) - O << formatImm((int64_t)Op.getImm()); - else if (Op.isDFPImm()) + else if (Op.isImm()) { + int64_t Imm = (int64_t)Op.getImm(); + // For OpVectorShuffle: + // A Component literal may also be FFFFFFFF, which means the corresponding + // result component has no source and is undefined. + // LLVM representation of poison/undef becomes -1 when lowered to MI. + if (MI->getOpcode() == SPIRV::OpVectorShuffle && Imm == -1) + O << "0xFFFFFFFF"; + else + O << formatImm(Imm); + } else if (Op.isDFPImm()) O << formatImm((double)Op.getDFPImm()); else if (Op.isExpr()) MAI.printExpr(O, *Op.getExpr()); diff --git a/llvm/test/CodeGen/SPIRV/llvm-intrinsics/llvm-vector-reduce/add.ll b/llvm/test/CodeGen/SPIRV/llvm-intrinsics/llvm-vector-reduce/add.ll index ef9719e64586d..39cbd8726400a 100644 --- a/llvm/test/CodeGen/SPIRV/llvm-intrinsics/llvm-vector-reduce/add.ll +++ b/llvm/test/CodeGen/SPIRV/llvm-intrinsics/llvm-vector-reduce/add.ll @@ -21,7 +21,7 @@ ; CHECK-DAG: %[[LongVec3:.*]] = OpTypeVector %[[Long]] 3 ; CHECK: OpFunction -; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[CharVec2]] %[[#]] %[[#]] 1 -1 +; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[CharVec2]] %[[#]] %[[#]] 1 0xFFFFFFFF ; CHECK: %[[Added1:.*]] = OpIAdd %[[CharVec2]] %[[#]] %[[#]] ; CHECK: %[[Vec2CharR:.*]] = OpCompositeExtract %[[Char]] %[[Added1]] 0 ; CHECK: OpReturnValue %[[Vec2CharR]] @@ -38,7 +38,7 @@ ; CHECK: OpFunctionEnd ; CHECK: OpFunction -; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[ShortVec2]] %[[#]] %[[#]] 1 -1 +; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[ShortVec2]] %[[#]] %[[#]] 1 0xFFFFFFFF ; CHECK: %[[Added1:.*]] = OpIAdd %[[ShortVec2]] %[[#]] %[[#]] ; CHECK: %[[Vec2ShortR:.*]] = OpCompositeExtract %[[Short]] %[[Added1]] 0 ; CHECK: OpReturnValue %[[Vec2ShortR]] @@ -55,7 +55,7 @@ ; CHECK: OpFunctionEnd ; CHECK: OpFunction -; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[IntVec2]] %[[#]] %[[#]] 1 -1 +; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[IntVec2]] %[[#]] %[[#]] 1 0xFFFFFFFF ; CHECK: %[[Added1:.*]] = OpIAdd %[[IntVec2]] %[[#]] %[[#]] ; CHECK: %[[Vec2IntR:.*]] = OpCompositeExtract %[[Int]] %[[Added1]] 0 ; CHECK: OpReturnValue %[[Vec2IntR]] @@ -72,7 +72,7 @@ ; CHECK: OpFunctionEnd ; CHECK: OpFunction -; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[LongVec2]] %[[#]] %[[#]] 1 -1 +; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[LongVec2]] %[[#]] %[[#]] 1 0xFFFFFFFF ; CHECK: %[[Added1:.*]] = OpIAdd %[[LongVec2]] %[[#]] %[[#]] ; CHECK: %[[Vec2LongR:.*]] = OpCompositeExtract %[[Long]] %[[Added1]] 0 ; CHECK: OpReturnValue %[[Vec2LongR]] diff --git a/llvm/test/CodeGen/SPIRV/llvm-intrinsics/llvm-vector-reduce/and.ll b/llvm/test/CodeGen/SPIRV/llvm-intrinsics/llvm-vector-reduce/and.ll index e9d9adba8f365..a911cdf094045 100644 --- a/llvm/test/CodeGen/SPIRV/llvm-intrinsics/llvm-vector-reduce/and.ll +++ b/llvm/test/CodeGen/SPIRV/llvm-intrinsics/llvm-vector-reduce/and.ll @@ -21,7 +21,7 @@ ; CHECK-DAG: %[[LongVec3:.*]] = OpTypeVector %[[Long]] 3 ; CHECK: OpFunction -; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[CharVec2]] %[[#]] %[[#]] 1 -1 +; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[CharVec2]] %[[#]] %[[#]] 1 0xFFFFFFFF ; CHECK: %[[Added1:.*]] = OpBitwiseAnd %[[CharVec2]] %[[#]] %[[#]] ; CHECK: %[[Vec2CharR:.*]] = OpCompositeExtract %[[Char]] %[[Added1]] 0 ; CHECK: OpReturnValue %[[Vec2CharR]] @@ -38,7 +38,7 @@ ; CHECK: OpFunctionEnd ; CHECK: OpFunction -; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[ShortVec2]] %[[#]] %[[#]] 1 -1 +; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[ShortVec2]] %[[#]] %[[#]] 1 0xFFFFFFFF ; CHECK: %[[Added1:.*]] = OpBitwiseAnd %[[ShortVec2]] %[[#]] %[[#]] ; CHECK: %[[Vec2ShortR:.*]] = OpCompositeExtract %[[Short]] %[[Added1]] 0 ; CHECK: OpReturnValue %[[Vec2ShortR]] @@ -55,7 +55,7 @@ ; CHECK: OpFunctionEnd ; CHECK: OpFunction -; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[IntVec2]] %[[#]] %[[#]] 1 -1 +; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[IntVec2]] %[[#]] %[[#]] 1 0xFFFFFFFF ; CHECK: %[[Added1:.*]] = OpBitwiseAnd %[[IntVec2]] %[[#]] %[[#]] ; CHECK: %[[Vec2IntR:.*]] = OpCompositeExtract %[[Int]] %[[Added1]] 0 ; CHECK: OpReturnValue %[[Vec2IntR]] @@ -72,7 +72,7 @@ ; CHECK: OpFunctionEnd ; CHECK: OpFunction -; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[LongVec2]] %[[#]] %[[#]] 1 -1 +; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[LongVec2]] %[[#]] %[[#]] 1 0xFFFFFFFF ; CHECK: %[[Added1:.*]] = OpBitwiseAnd %[[LongVec2]] %[[#]] %[[#]] ; CHECK: %[[Vec2LongR:.*]] = OpCompositeExtract %[[Long]] %[[Added1]] 0 ; CHECK: OpReturnValue %[[Vec2LongR]] diff --git a/llvm/test/CodeGen/SPIRV/llvm-intrinsics/llvm-vector-reduce/mul.ll b/llvm/test/CodeGen/SPIRV/llvm-intrinsics/llvm-vector-reduce/mul.ll index 16455f2e21cb6..86e6d42de55d1 100644 --- a/llvm/test/CodeGen/SPIRV/llvm-intrinsics/llvm-vector-reduce/mul.ll +++ b/llvm/test/CodeGen/SPIRV/llvm-intrinsics/llvm-vector-reduce/mul.ll @@ -20,7 +20,7 @@ target triple = "spir64-unknown-unknown" ; CHECK-DAG: %[[LongVec3:.*]] = OpTypeVector %[[Long]] 3 ; CHECK: OpFunction -; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[CharVec2]] %[[#]] %[[#]] 1 -1 +; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[CharVec2]] %[[#]] %[[#]] 1 0xFFFFFFFF ; CHECK: %[[Added1:.*]] = OpIMul %[[CharVec2]] %[[#]] %[[#]] ; CHECK: %[[Vec2CharR:.*]] = OpCompositeExtract %[[Char]] %[[Added1]] 0 ; CHECK: OpReturnValue %[[Vec2CharR]] @@ -37,7 +37,7 @@ target triple = "spir64-unknown-unknown" ; CHECK: OpFunctionEnd ; CHECK: OpFunction -; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[ShortVec2]] %[[#]] %[[#]] 1 -1 +; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[ShortVec2]] %[[#]] %[[#]] 1 0xFFFFFFFF ; CHECK: %[[Added1:.*]] = OpIMul %[[ShortVec2]] %[[#]] %[[#]] ; CHECK: %[[Vec2ShortR:.*]] = OpCompositeExtract %[[Short]] %[[Added1]] 0 ; CHECK: OpReturnValue %[[Vec2ShortR]] @@ -54,7 +54,7 @@ target triple = "spir64-unknown-unknown" ; CHECK: OpFunctionEnd ; CHECK: OpFunction -; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[IntVec2]] %[[#]] %[[#]] 1 -1 +; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[IntVec2]] %[[#]] %[[#]] 1 0xFFFFFFFF ; CHECK: %[[Added1:.*]] = OpIMul %[[IntVec2]] %[[#]] %[[#]] ; CHECK: %[[Vec2IntR:.*]] = OpCompositeExtract %[[Int]] %[[Added1]] 0 ; CHECK: OpReturnValue %[[Vec2IntR]] @@ -71,7 +71,7 @@ target triple = "spir64-unknown-unknown" ; CHECK: OpFunctionEnd ; CHECK: OpFunction -; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[LongVec2]] %[[#]] %[[#]] 1 -1 +; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[LongVec2]] %[[#]] %[[#]] 1 0xFFFFFFFF ; CHECK: %[[Added1:.*]] = OpIMul %[[LongVec2]] %[[#]] %[[#]] ; CHECK: %[[Vec2LongR:.*]] = OpCompositeExtract %[[Long]] %[[Added1]] 0 ; CHECK: OpReturnValue %[[Vec2LongR]] diff --git a/llvm/test/CodeGen/SPIRV/llvm-intrinsics/llvm-vector-reduce/or.ll b/llvm/test/CodeGen/SPIRV/llvm-intrinsics/llvm-vector-reduce/or.ll index badfebc27072f..34e5272ecd629 100644 --- a/llvm/test/CodeGen/SPIRV/llvm-intrinsics/llvm-vector-reduce/or.ll +++ b/llvm/test/CodeGen/SPIRV/llvm-intrinsics/llvm-vector-reduce/or.ll @@ -20,7 +20,7 @@ target triple = "spir64-unknown-unknown" ; CHECK-DAG: %[[LongVec3:.*]] = OpTypeVector %[[Long]] 3 ; CHECK: OpFunction -; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[CharVec2]] %[[#]] %[[#]] 1 -1 +; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[CharVec2]] %[[#]] %[[#]] 1 0xFFFFFFFF ; CHECK: %[[Added1:.*]] = OpBitwiseOr %[[CharVec2]] %[[#]] %[[#]] ; CHECK: %[[Vec2CharR:.*]] = OpCompositeExtract %[[Char]] %[[Added1]] 0 ; CHECK: OpReturnValue %[[Vec2CharR]] @@ -37,7 +37,7 @@ target triple = "spir64-unknown-unknown" ; CHECK: OpFunctionEnd ; CHECK: OpFunction -; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[ShortVec2]] %[[#]] %[[#]] 1 -1 +; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[ShortVec2]] %[[#]] %[[#]] 1 0xFFFFFFFF ; CHECK: %[[Added1:.*]] = OpBitwiseOr %[[ShortVec2]] %[[#]] %[[#]] ; CHECK: %[[Vec2ShortR:.*]] = OpCompositeExtract %[[Short]] %[[Added1]] 0 ; CHECK: OpReturnValue %[[Vec2ShortR]] @@ -54,7 +54,7 @@ target triple = "spir64-unknown-unknown" ; CHECK: OpFunctionEnd ; CHECK: OpFunction -; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[IntVec2]] %[[#]] %[[#]] 1 -1 +; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[IntVec2]] %[[#]] %[[#]] 1 0xFFFFFFFF ; CHECK: %[[Added1:.*]] = OpBitwiseOr %[[IntVec2]] %[[#]] %[[#]] ; CHECK: %[[Vec2IntR:.*]] = OpCompositeExtract %[[Int]] %[[Added1]] 0 ; CHECK: OpReturnValue %[[Vec2IntR]] @@ -71,7 +71,7 @@ target triple = "spir64-unknown-unknown" ; CHECK: OpFunctionEnd ; CHECK: OpFunction -; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[LongVec2]] %[[#]] %[[#]] 1 -1 +; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[LongVec2]] %[[#]] %[[#]] 1 0xFFFFFFFF ; CHECK: %[[Added1:.*]] = OpBitwiseOr %[[LongVec2]] %[[#]] %[[#]] ; CHECK: %[[Vec2LongR:.*]] = OpCompositeExtract %[[Long]] %[[Added1]] 0 ; CHECK: OpReturnValue %[[Vec2LongR]] diff --git a/llvm/test/CodeGen/SPIRV/llvm-intrinsics/llvm-vector-reduce/smax.ll b/llvm/test/CodeGen/SPIRV/llvm-intrinsics/llvm-vector-reduce/smax.ll index 54afb3a25b4d6..eafd4e096a728 100644 --- a/llvm/test/CodeGen/SPIRV/llvm-intrinsics/llvm-vector-reduce/smax.ll +++ b/llvm/test/CodeGen/SPIRV/llvm-intrinsics/llvm-vector-reduce/smax.ll @@ -20,7 +20,7 @@ target triple = "spir64-unknown-unknown" ; CHECK-DAG: %[[LongVec3:.*]] = OpTypeVector %[[Long]] 3 ; CHECK: OpFunction -; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[CharVec2]] %[[#]] %[[#]] 1 -1 +; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[CharVec2]] %[[#]] %[[#]] 1 0xFFFFFFFF ; CHECK: %[[Added1:.*]] = OpExtInst %[[CharVec2]] %[[#]] s_max %[[#]] %[[#]] ; CHECK: %[[Vec2CharR:.*]] = OpCompositeExtract %[[Char]] %[[Added1]] 0 ; CHECK: OpReturnValue %[[Vec2CharR]] @@ -37,7 +37,7 @@ target triple = "spir64-unknown-unknown" ; CHECK: OpFunctionEnd ; CHECK: OpFunction -; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[ShortVec2]] %[[#]] %[[#]] 1 -1 +; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[ShortVec2]] %[[#]] %[[#]] 1 0xFFFFFFFF ; CHECK: %[[Added1:.*]] = OpExtInst %[[ShortVec2]] %[[#]] s_max %[[#]] %[[#]] ; CHECK: %[[Vec2ShortR:.*]] = OpCompositeExtract %[[Short]] %[[Added1]] 0 ; CHECK: OpReturnValue %[[Vec2ShortR]] @@ -54,7 +54,7 @@ target triple = "spir64-unknown-unknown" ; CHECK: OpFunctionEnd ; CHECK: OpFunction -; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[IntVec2]] %[[#]] %[[#]] 1 -1 +; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[IntVec2]] %[[#]] %[[#]] 1 0xFFFFFFFF ; CHECK: %[[Added1:.*]] = OpExtInst %[[IntVec2]] %[[#]] s_max %[[#]] %[[#]] ; CHECK: %[[Vec2IntR:.*]] = OpCompositeExtract %[[Int]] %[[Added1]] 0 ; CHECK: OpReturnValue %[[Vec2IntR]] @@ -71,7 +71,7 @@ target triple = "spir64-unknown-unknown" ; CHECK: OpFunctionEnd ; CHECK: OpFunction -; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[LongVec2]] %[[#]] %[[#]] 1 -1 +; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[LongVec2]] %[[#]] %[[#]] 1 0xFFFFFFFF ; CHECK: %[[Added1:.*]] = OpExtInst %[[LongVec2]] %[[#]] s_max %[[#]] %[[#]] ; CHECK: %[[Vec2LongR:.*]] = OpCompositeExtract %[[Long]] %[[Added1]] 0 ; CHECK: OpReturnValue %[[Vec2LongR]] diff --git a/llvm/test/CodeGen/SPIRV/llvm-intrinsics/llvm-vector-reduce/smin.ll b/llvm/test/CodeGen/SPIRV/llvm-intrinsics/llvm-vector-reduce/smin.ll index a95c2ea0bbbf6..bbd22d4c6d4c5 100644 --- a/llvm/test/CodeGen/SPIRV/llvm-intrinsics/llvm-vector-reduce/smin.ll +++ b/llvm/test/CodeGen/SPIRV/llvm-intrinsics/llvm-vector-reduce/smin.ll @@ -20,7 +20,7 @@ target triple = "spir64-unknown-unknown" ; CHECK-DAG: %[[LongVec3:.*]] = OpTypeVector %[[Long]] 3 ; CHECK: OpFunction -; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[CharVec2]] %[[#]] %[[#]] 1 -1 +; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[CharVec2]] %[[#]] %[[#]] 1 0xFFFFFFFF ; CHECK: %[[Added1:.*]] = OpExtInst %[[CharVec2]] %[[#]] s_min %[[#]] %[[#]] ; CHECK: %[[Vec2CharR:.*]] = OpCompositeExtract %[[Char]] %[[Added1]] 0 ; CHECK: OpReturnValue %[[Vec2CharR]] @@ -37,7 +37,7 @@ target triple = "spir64-unknown-unknown" ; CHECK: OpFunctionEnd ; CHECK: OpFunction -; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[ShortVec2]] %[[#]] %[[#]] 1 -1 +; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[ShortVec2]] %[[#]] %[[#]] 1 0xFFFFFFFF ; CHECK: %[[Added1:.*]] = OpExtInst %[[ShortVec2]] %[[#]] s_min %[[#]] %[[#]] ; CHECK: %[[Vec2ShortR:.*]] = OpCompositeExtract %[[Short]] %[[Added1]] 0 ; CHECK: OpReturnValue %[[Vec2ShortR]] @@ -54,7 +54,7 @@ target triple = "spir64-unknown-unknown" ; CHECK: OpFunctionEnd ; CHECK: OpFunction -; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[IntVec2]] %[[#]] %[[#]] 1 -1 +; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[IntVec2]] %[[#]] %[[#]] 1 0xFFFFFFFF ; CHECK: %[[Added1:.*]] = OpExtInst %[[IntVec2]] %[[#]] s_min %[[#]] %[[#]] ; CHECK: %[[Vec2IntR:.*]] = OpCompositeExtract %[[Int]] %[[Added1]] 0 ; CHECK: OpReturnValue %[[Vec2IntR]] @@ -71,7 +71,7 @@ target triple = "spir64-unknown-unknown" ; CHECK: OpFunctionEnd ; CHECK: OpFunction -; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[LongVec2]] %[[#]] %[[#]] 1 -1 +; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[LongVec2]] %[[#]] %[[#]] 1 0xFFFFFFFF ; CHECK: %[[Added1:.*]] = OpExtInst %[[LongVec2]] %[[#]] s_min %[[#]] %[[#]] ; CHECK: %[[Vec2LongR:.*]] = OpCompositeExtract %[[Long]] %[[Added1]] 0 ; CHECK: OpReturnValue %[[Vec2LongR]] diff --git a/llvm/test/CodeGen/SPIRV/llvm-intrinsics/llvm-vector-reduce/umax.ll b/llvm/test/CodeGen/SPIRV/llvm-intrinsics/llvm-vector-reduce/umax.ll index a742009cef011..80be288d0b941 100644 --- a/llvm/test/CodeGen/SPIRV/llvm-intrinsics/llvm-vector-reduce/umax.ll +++ b/llvm/test/CodeGen/SPIRV/llvm-intrinsics/llvm-vector-reduce/umax.ll @@ -20,7 +20,7 @@ target triple = "spir64-unknown-unknown" ; CHECK-DAG: %[[LongVec3:.*]] = OpTypeVector %[[Long]] 3 ; CHECK: OpFunction -; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[CharVec2]] %[[#]] %[[#]] 1 -1 +; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[CharVec2]] %[[#]] %[[#]] 1 0xFFFFFFFF ; CHECK: %[[Added1:.*]] = OpExtInst %[[CharVec2]] %[[#]] u_max %[[#]] %[[#]] ; CHECK: %[[Vec2CharR:.*]] = OpCompositeExtract %[[Char]] %[[Added1]] 0 ; CHECK: OpReturnValue %[[Vec2CharR]] @@ -37,7 +37,7 @@ target triple = "spir64-unknown-unknown" ; CHECK: OpFunctionEnd ; CHECK: OpFunction -; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[ShortVec2]] %[[#]] %[[#]] 1 -1 +; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[ShortVec2]] %[[#]] %[[#]] 1 0xFFFFFFFF ; CHECK: %[[Added1:.*]] = OpExtInst %[[ShortVec2]] %[[#]] u_max %[[#]] %[[#]] ; CHECK: %[[Vec2ShortR:.*]] = OpCompositeExtract %[[Short]] %[[Added1]] 0 ; CHECK: OpReturnValue %[[Vec2ShortR]] @@ -54,7 +54,7 @@ target triple = "spir64-unknown-unknown" ; CHECK: OpFunctionEnd ; CHECK: OpFunction -; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[IntVec2]] %[[#]] %[[#]] 1 -1 +; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[IntVec2]] %[[#]] %[[#]] 1 0xFFFFFFFF ; CHECK: %[[Added1:.*]] = OpExtInst %[[IntVec2]] %[[#]] u_max %[[#]] %[[#]] ; CHECK: %[[Vec2IntR:.*]] = OpCompositeExtract %[[Int]] %[[Added1]] 0 ; CHECK: OpReturnValue %[[Vec2IntR]] @@ -71,7 +71,7 @@ target triple = "spir64-unknown-unknown" ; CHECK: OpFunctionEnd ; CHECK: OpFunction -; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[LongVec2]] %[[#]] %[[#]] 1 -1 +; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[LongVec2]] %[[#]] %[[#]] 1 0xFFFFFFFF ; CHECK: %[[Added1:.*]] = OpExtInst %[[LongVec2]] %[[#]] u_max %[[#]] %[[#]] ; CHECK: %[[Vec2LongR:.*]] = OpCompositeExtract %[[Long]] %[[Added1]] 0 ; CHECK: OpReturnValue %[[Vec2LongR]] diff --git a/llvm/test/CodeGen/SPIRV/llvm-intrinsics/llvm-vector-reduce/umin.ll b/llvm/test/CodeGen/SPIRV/llvm-intrinsics/llvm-vector-reduce/umin.ll index 7844c205c7ab0..2c4832c877783 100644 --- a/llvm/test/CodeGen/SPIRV/llvm-intrinsics/llvm-vector-reduce/umin.ll +++ b/llvm/test/CodeGen/SPIRV/llvm-intrinsics/llvm-vector-reduce/umin.ll @@ -20,7 +20,7 @@ target triple = "spir64-unknown-unknown" ; CHECK-DAG: %[[LongVec3:.*]] = OpTypeVector %[[Long]] 3 ; CHECK: OpFunction -; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[CharVec2]] %[[#]] %[[#]] 1 -1 +; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[CharVec2]] %[[#]] %[[#]] 1 0xFFFFFFFF ; CHECK: %[[Added1:.*]] = OpExtInst %[[CharVec2]] %[[#]] u_min %[[#]] %[[#]] ; CHECK: %[[Vec2CharR:.*]] = OpCompositeExtract %[[Char]] %[[Added1]] 0 ; CHECK: OpReturnValue %[[Vec2CharR]] @@ -37,7 +37,7 @@ target triple = "spir64-unknown-unknown" ; CHECK: OpFunctionEnd ; CHECK: OpFunction -; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[ShortVec2]] %[[#]] %[[#]] 1 -1 +; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[ShortVec2]] %[[#]] %[[#]] 1 0xFFFFFFFF ; CHECK: %[[Added1:.*]] = OpExtInst %[[ShortVec2]] %[[#]] u_min %[[#]] %[[#]] ; CHECK: %[[Vec2ShortR:.*]] = OpCompositeExtract %[[Short]] %[[Added1]] 0 ; CHECK: OpReturnValue %[[Vec2ShortR]] @@ -54,7 +54,7 @@ target triple = "spir64-unknown-unknown" ; CHECK: OpFunctionEnd ; CHECK: OpFunction -; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[IntVec2]] %[[#]] %[[#]] 1 -1 +; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[IntVec2]] %[[#]] %[[#]] 1 0xFFFFFFFF ; CHECK: %[[Added1:.*]] = OpExtInst %[[IntVec2]] %[[#]] u_min %[[#]] %[[#]] ; CHECK: %[[Vec2IntR:.*]] = OpCompositeExtract %[[Int]] %[[Added1]] 0 ; CHECK: OpReturnValue %[[Vec2IntR]] @@ -71,7 +71,7 @@ target triple = "spir64-unknown-unknown" ; CHECK: OpFunctionEnd ; CHECK: OpFunction -; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[LongVec2]] %[[#]] %[[#]] 1 -1 +; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[LongVec2]] %[[#]] %[[#]] 1 0xFFFFFFFF ; CHECK: %[[Added1:.*]] = OpExtInst %[[LongVec2]] %[[#]] u_min %[[#]] %[[#]] ; CHECK: %[[Vec2LongR:.*]] = OpCompositeExtract %[[Long]] %[[Added1]] 0 ; CHECK: OpReturnValue %[[Vec2LongR]] diff --git a/llvm/test/CodeGen/SPIRV/llvm-intrinsics/llvm-vector-reduce/xor.ll b/llvm/test/CodeGen/SPIRV/llvm-intrinsics/llvm-vector-reduce/xor.ll index 22f45a2c0bd6c..2532154cfc15c 100644 --- a/llvm/test/CodeGen/SPIRV/llvm-intrinsics/llvm-vector-reduce/xor.ll +++ b/llvm/test/CodeGen/SPIRV/llvm-intrinsics/llvm-vector-reduce/xor.ll @@ -20,7 +20,7 @@ target triple = "spir64-unknown-unknown" ; CHECK-DAG: %[[LongVec3:.*]] = OpTypeVector %[[Long]] 3 ; CHECK: OpFunction -; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[CharVec2]] %[[#]] %[[#]] 1 -1 +; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[CharVec2]] %[[#]] %[[#]] 1 0xFFFFFFFF ; CHECK: %[[Added1:.*]] = OpBitwiseXor %[[CharVec2]] %[[#]] %[[#]] ; CHECK: %[[Vec2CharR:.*]] = OpCompositeExtract %[[Char]] %[[Added1]] 0 ; CHECK: OpReturnValue %[[Vec2CharR]] @@ -37,7 +37,7 @@ target triple = "spir64-unknown-unknown" ; CHECK: OpFunctionEnd ; CHECK: OpFunction -; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[ShortVec2]] %[[#]] %[[#]] 1 -1 +; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[ShortVec2]] %[[#]] %[[#]] 1 0xFFFFFFFF ; CHECK: %[[Added1:.*]] = OpBitwiseXor %[[ShortVec2]] %[[#]] %[[#]] ; CHECK: %[[Vec2ShortR:.*]] = OpCompositeExtract %[[Short]] %[[Added1]] 0 ; CHECK: OpReturnValue %[[Vec2ShortR]] @@ -54,7 +54,7 @@ target triple = "spir64-unknown-unknown" ; CHECK: OpFunctionEnd ; CHECK: OpFunction -; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[IntVec2]] %[[#]] %[[#]] 1 -1 +; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[IntVec2]] %[[#]] %[[#]] 1 0xFFFFFFFF ; CHECK: %[[Added1:.*]] = OpBitwiseXor %[[IntVec2]] %[[#]] %[[#]] ; CHECK: %[[Vec2IntR:.*]] = OpCompositeExtract %[[Int]] %[[Added1]] 0 ; CHECK: OpReturnValue %[[Vec2IntR]] @@ -71,7 +71,7 @@ target triple = "spir64-unknown-unknown" ; CHECK: OpFunctionEnd ; CHECK: OpFunction -; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[LongVec2]] %[[#]] %[[#]] 1 -1 +; CHECK: %[[Shuffle1:.*]] = OpVectorShuffle %[[LongVec2]] %[[#]] %[[#]] 1 0xFFFFFFFF ; CHECK: %[[Added1:.*]] = OpBitwiseXor %[[LongVec2]] %[[#]] %[[#]] ; CHECK: %[[Vec2LongR:.*]] = OpCompositeExtract %[[Long]] %[[Added1]] 0 ; CHECK: OpReturnValue %[[Vec2LongR]]