[llvm] 8bd35ca - [SPIR-V] Fix LIT tests, improve ICmpInst's type inference (#139726)
via llvm-commits
llvm-commits at lists.llvm.org
Thu May 15 01:46:58 PDT 2025
Author: Vyacheslav Levytskyy
Date: 2025-05-15T10:46:54+02:00
New Revision: 8bd35ca41253ea36fff78d5acf59956a30b6555b
URL: https://github.com/llvm/llvm-project/commit/8bd35ca41253ea36fff78d5acf59956a30b6555b
DIFF: https://github.com/llvm/llvm-project/commit/8bd35ca41253ea36fff78d5acf59956a30b6555b.diff
LOG: [SPIR-V] Fix LIT tests, improve ICmpInst's type inference (#139726)
1. There are failed LIT tests at the moment due to type inference
errors.
```
Failed Tests (3):
LLVM :: CodeGen/SPIRV/pointers/ptr-eq-types.ll
LLVM :: CodeGen/SPIRV/validate/sycl-hier-par-basic.ll
LLVM :: CodeGen/SPIRV/validate/sycl-tangle-group-algorithms.ll
```
This PR improves type inference to fix the errors.
2. The following tests start passing:
```
Unexpectedly Passed Tests (2):
LLVM :: CodeGen/SPIRV/pointers/resource-addrspacecast-2.ll
LLVM :: CodeGen/SPIRV/pointers/resource-addrspacecast.ll
```
This PR removes XFAILS in those two test cases.
Added:
Modified:
llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp
llvm/test/CodeGen/SPIRV/pointers/resource-addrspacecast-2.ll
llvm/test/CodeGen/SPIRV/pointers/resource-addrspacecast.ll
Removed:
################################################################################
diff --git a/llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp b/llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp
index 22fc1ca2c4c2d..b336732ec4b64 100644
--- a/llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp
+++ b/llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp
@@ -1081,15 +1081,19 @@ void SPIRVEmitIntrinsics::deduceOperandElementType(
return;
Value *Op0 = Ref->getOperand(0);
Value *Op1 = Ref->getOperand(1);
- Type *ElemTy0 = GR->findDeducedElementType(Op0);
+ bool Incomplete0 = isTodoType(Op0);
+ bool Incomplete1 = isTodoType(Op1);
Type *ElemTy1 = GR->findDeducedElementType(Op1);
+ Type *ElemTy0 = (Incomplete0 && !Incomplete1 && ElemTy1)
+ ? nullptr
+ : GR->findDeducedElementType(Op0);
if (ElemTy0) {
KnownElemTy = ElemTy0;
- Incomplete = isTodoType(Op0);
+ Incomplete = Incomplete0;
Ops.push_back(std::make_pair(Op1, 1));
} else if (ElemTy1) {
KnownElemTy = ElemTy1;
- Incomplete = isTodoType(Op1);
+ Incomplete = Incomplete1;
Ops.push_back(std::make_pair(Op0, 0));
}
} else if (CallInst *CI = dyn_cast<CallInst>(I)) {
@@ -1108,8 +1112,6 @@ void SPIRVEmitIntrinsics::deduceOperandElementType(
IRBuilder<> B(Ctx);
for (auto &OpIt : Ops) {
Value *Op = OpIt.first;
- if (Op->use_empty())
- continue;
if (AskOps && !AskOps->contains(Op))
continue;
Type *AskTy = nullptr;
diff --git a/llvm/test/CodeGen/SPIRV/pointers/resource-addrspacecast-2.ll b/llvm/test/CodeGen/SPIRV/pointers/resource-addrspacecast-2.ll
index 93208c16ed4a5..d608529b421cc 100644
--- a/llvm/test/CodeGen/SPIRV/pointers/resource-addrspacecast-2.ll
+++ b/llvm/test/CodeGen/SPIRV/pointers/resource-addrspacecast-2.ll
@@ -1,9 +1,6 @@
; RUN: llc -verify-machineinstrs -O3 -mtriple=spirv-unknown-vulkan1.3-compute %s -o - | FileCheck %s --match-full-lines
; RUN: %if spirv-tools %{ llc -O3 -mtriple=spirv-unknown-vulkan1.3-compute %s -o - -filetype=obj | spirv-val %}
-; FIXME(134119): enable-this once Offset decoration are added.
-; XFAIL: spirv-tools
-
%S2 = type { { [10 x { i32, i32 } ] }, i32 }
; CHECK-DAG: %[[#uint:]] = OpTypeInt 32 0
diff --git a/llvm/test/CodeGen/SPIRV/pointers/resource-addrspacecast.ll b/llvm/test/CodeGen/SPIRV/pointers/resource-addrspacecast.ll
index 24a50c7177340..b1446b7529ea4 100644
--- a/llvm/test/CodeGen/SPIRV/pointers/resource-addrspacecast.ll
+++ b/llvm/test/CodeGen/SPIRV/pointers/resource-addrspacecast.ll
@@ -1,9 +1,6 @@
; RUN: llc -verify-machineinstrs -O3 -mtriple=spirv-unknown-vulkan1.3-compute %s -o - | FileCheck %s
; RUN: %if spirv-tools %{ llc -O3 -mtriple=spirv-unknown-vulkan1.3-compute %s -o - -filetype=obj | spirv-val %}
-; FIXME(134119): enable-this once Offset decoration are added.
-; XFAIL: spirv-tools
-
%struct.S = type { i32 }
; CHECK-DAG: %[[#uint:]] = OpTypeInt 32 0
More information about the llvm-commits
mailing list