-
Notifications
You must be signed in to change notification settings - Fork 14.4k
Revert "[SPIR-V] Support SPV_INTEL_int4
extension"
#141219
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This reverts commit ced6076.
@llvm/pr-subscribers-backend-spir-v Author: Dmitry Sidorov (MrSidims) ChangesReverts llvm/llvm-project#141031 Full diff: https://github.com/llvm/llvm-project/pull/141219.diff 9 Files Affected:
diff --git a/llvm/docs/SPIRVUsage.rst b/llvm/docs/SPIRVUsage.rst
index 1858bda6160d4..1afae43aa8bce 100644
--- a/llvm/docs/SPIRVUsage.rst
+++ b/llvm/docs/SPIRVUsage.rst
@@ -215,8 +215,6 @@ list of supported SPIR-V extensions, sorted alphabetically by their extension na
- Adds a bitwise instruction on three operands and a look-up table index for specifying the bitwise operation to perform.
* - ``SPV_INTEL_subgroup_matrix_multiply_accumulate``
- Adds an instruction to compute the matrix product of an M x K matrix with a K x N matrix and then add an M x N matrix.
- * - ``SPV_INTEL_int4``
- - Adds support for 4-bit integer type, and allow this type to be used in cooperative matrices.
To enable multiple extensions, list them separated by comma. For example, to enable support for atomic operations on floating-point numbers and arbitrary precision integers, use:
diff --git a/llvm/lib/Target/SPIRV/SPIRVCommandLine.cpp b/llvm/lib/Target/SPIRV/SPIRVCommandLine.cpp
index fbaca4e0e4d81..e6cb8cee66a60 100644
--- a/llvm/lib/Target/SPIRV/SPIRVCommandLine.cpp
+++ b/llvm/lib/Target/SPIRV/SPIRVCommandLine.cpp
@@ -99,8 +99,7 @@ static const std::map<std::string, SPIRV::Extension::Extension, std::less<>>
{"SPV_INTEL_ternary_bitwise_function",
SPIRV::Extension::Extension::SPV_INTEL_ternary_bitwise_function},
{"SPV_INTEL_2d_block_io",
- SPIRV::Extension::Extension::SPV_INTEL_2d_block_io},
- {"SPV_INTEL_int4", SPIRV::Extension::Extension::SPV_INTEL_int4}};
+ SPIRV::Extension::Extension::SPV_INTEL_2d_block_io}};
bool SPIRVExtensionsParser::parse(cl::Option &O, StringRef ArgName,
StringRef ArgValue,
diff --git a/llvm/lib/Target/SPIRV/SPIRVGlobalRegistry.cpp b/llvm/lib/Target/SPIRV/SPIRVGlobalRegistry.cpp
index d9fcb5623b220..ac397fc486e19 100644
--- a/llvm/lib/Target/SPIRV/SPIRVGlobalRegistry.cpp
+++ b/llvm/lib/Target/SPIRV/SPIRVGlobalRegistry.cpp
@@ -154,8 +154,7 @@ unsigned SPIRVGlobalRegistry::adjustOpTypeIntWidth(unsigned Width) const {
report_fatal_error("Unsupported integer width!");
const SPIRVSubtarget &ST = cast<SPIRVSubtarget>(CurMF->getSubtarget());
if (ST.canUseExtension(
- SPIRV::Extension::SPV_INTEL_arbitrary_precision_integers) ||
- ST.canUseExtension(SPIRV::Extension::SPV_INTEL_int4))
+ SPIRV::Extension::SPV_INTEL_arbitrary_precision_integers))
return Width;
if (Width <= 8)
Width = 8;
@@ -175,14 +174,9 @@ SPIRVType *SPIRVGlobalRegistry::getOpTypeInt(unsigned Width,
const SPIRVSubtarget &ST =
cast<SPIRVSubtarget>(MIRBuilder.getMF().getSubtarget());
return createOpType(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
- if (Width == 4 && ST.canUseExtension(SPIRV::Extension::SPV_INTEL_int4)) {
- MIRBuilder.buildInstr(SPIRV::OpExtension)
- .addImm(SPIRV::Extension::SPV_INTEL_int4);
- MIRBuilder.buildInstr(SPIRV::OpCapability)
- .addImm(SPIRV::Capability::Int4TypeINTEL);
- } else if ((!isPowerOf2_32(Width) || Width < 8) &&
- ST.canUseExtension(
- SPIRV::Extension::SPV_INTEL_arbitrary_precision_integers)) {
+ if ((!isPowerOf2_32(Width) || Width < 8) &&
+ ST.canUseExtension(
+ SPIRV::Extension::SPV_INTEL_arbitrary_precision_integers)) {
MIRBuilder.buildInstr(SPIRV::OpExtension)
.addImm(SPIRV::Extension::SPV_INTEL_arbitrary_precision_integers);
MIRBuilder.buildInstr(SPIRV::OpCapability)
@@ -1569,13 +1563,6 @@ SPIRVType *SPIRVGlobalRegistry::getOrCreateOpTypeCoopMatr(
const MachineInstr *NewMI =
createOpType(MIRBuilder, [&](MachineIRBuilder &MIRBuilder) {
SPIRVType *SpvTypeInt32 = getOrCreateSPIRVIntegerType(32, MIRBuilder);
- const Type *ET = getTypeForSPIRVType(ElemType);
- if (ET->isIntegerTy() && ET->getIntegerBitWidth() == 4 &&
- cast<SPIRVSubtarget>(MIRBuilder.getMF().getSubtarget())
- .canUseExtension(SPIRV::Extension::SPV_INTEL_int4)) {
- MIRBuilder.buildInstr(SPIRV::OpCapability)
- .addImm(SPIRV::Capability::Int4CooperativeMatrixINTEL);
- }
return MIRBuilder.buildInstr(SPIRV::OpTypeCooperativeMatrixKHR)
.addDef(createTypeVReg(MIRBuilder))
.addUse(getSPIRVTypeID(ElemType))
diff --git a/llvm/lib/Target/SPIRV/SPIRVLegalizerInfo.cpp b/llvm/lib/Target/SPIRV/SPIRVLegalizerInfo.cpp
index 29ec90d2ae8df..578e82881f6e8 100644
--- a/llvm/lib/Target/SPIRV/SPIRVLegalizerInfo.cpp
+++ b/llvm/lib/Target/SPIRV/SPIRVLegalizerInfo.cpp
@@ -128,8 +128,7 @@ SPIRVLegalizerInfo::SPIRVLegalizerInfo(const SPIRVSubtarget &ST) {
bool IsExtendedInts =
ST.canUseExtension(
SPIRV::Extension::SPV_INTEL_arbitrary_precision_integers) ||
- ST.canUseExtension(SPIRV::Extension::SPV_KHR_bit_instructions) ||
- ST.canUseExtension(SPIRV::Extension::SPV_INTEL_int4);
+ ST.canUseExtension(SPIRV::Extension::SPV_KHR_bit_instructions);
auto extendedScalarsAndVectors =
[IsExtendedInts](const LegalityQuery &Query) {
const LLT Ty = Query.Types[0];
diff --git a/llvm/lib/Target/SPIRV/SPIRVPreLegalizer.cpp b/llvm/lib/Target/SPIRV/SPIRVPreLegalizer.cpp
index 2d6d0e37c8a1c..b6a2da6e2045d 100644
--- a/llvm/lib/Target/SPIRV/SPIRVPreLegalizer.cpp
+++ b/llvm/lib/Target/SPIRV/SPIRVPreLegalizer.cpp
@@ -492,8 +492,7 @@ generateAssignInstrs(MachineFunction &MF, SPIRVGlobalRegistry *GR,
bool IsExtendedInts =
ST->canUseExtension(
SPIRV::Extension::SPV_INTEL_arbitrary_precision_integers) ||
- ST->canUseExtension(SPIRV::Extension::SPV_KHR_bit_instructions) ||
- ST->canUseExtension(SPIRV::Extension::SPV_INTEL_int4);
+ ST->canUseExtension(SPIRV::Extension::SPV_KHR_bit_instructions);
for (MachineBasicBlock *MBB : post_order(&MF)) {
if (MBB->empty())
diff --git a/llvm/lib/Target/SPIRV/SPIRVSymbolicOperands.td b/llvm/lib/Target/SPIRV/SPIRVSymbolicOperands.td
index ca8a9a9997a8b..b49507cd8a1c9 100644
--- a/llvm/lib/Target/SPIRV/SPIRVSymbolicOperands.td
+++ b/llvm/lib/Target/SPIRV/SPIRVSymbolicOperands.td
@@ -317,7 +317,6 @@ defm SPV_INTEL_fp_max_error : ExtensionOperand<119>;
defm SPV_INTEL_ternary_bitwise_function : ExtensionOperand<120>;
defm SPV_INTEL_subgroup_matrix_multiply_accumulate : ExtensionOperand<121>;
defm SPV_INTEL_2d_block_io : ExtensionOperand<122>;
-defm SPV_INTEL_int4 : ExtensionOperand<123>;
//===----------------------------------------------------------------------===//
// Multiclass used to define Capabilities enum values and at the same time
@@ -523,8 +522,6 @@ defm SubgroupMatrixMultiplyAccumulateINTEL : CapabilityOperand<6236, 0, 0, [SPV_
defm Subgroup2DBlockIOINTEL : CapabilityOperand<6228, 0, 0, [SPV_INTEL_2d_block_io], []>;
defm Subgroup2DBlockTransformINTEL : CapabilityOperand<6229, 0, 0, [SPV_INTEL_2d_block_io], [Subgroup2DBlockIOINTEL]>;
defm Subgroup2DBlockTransposeINTEL : CapabilityOperand<6230, 0, 0, [SPV_INTEL_2d_block_io], [Subgroup2DBlockIOINTEL]>;
-defm Int4TypeINTEL : CapabilityOperand<5112, 0, 0, [SPV_INTEL_int4], []>;
-defm Int4CooperativeMatrixINTEL : CapabilityOperand<5114, 0, 0, [SPV_INTEL_int4], [Int4TypeINTEL, CooperativeMatrixKHR]>;
//===----------------------------------------------------------------------===//
// Multiclass used to define SourceLanguage enum values and at the same time
diff --git a/llvm/test/CodeGen/SPIRV/extensions/SPV_INTEL_int4/cooperative_matrix.ll b/llvm/test/CodeGen/SPIRV/extensions/SPV_INTEL_int4/cooperative_matrix.ll
deleted file mode 100644
index 02f023276bf5d..0000000000000
--- a/llvm/test/CodeGen/SPIRV/extensions/SPV_INTEL_int4/cooperative_matrix.ll
+++ /dev/null
@@ -1,20 +0,0 @@
-; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv32-unknown-unknown --spirv-ext=+SPV_INTEL_int4,+SPV_KHR_cooperative_matrix %s -o - | FileCheck %s
-; RUNx: %if spirv-tools %{ llc -O0 -mtriple=spirv32-unknown-unknown --spirv-ext=+SPV_INTEL_int4,+SPV_KHR_cooperative_matrix %s -o - -filetype=obj | spirv-val %}
-
-; CHECK-DAG: Capability Int4TypeINTEL
-; CHECK-DAG: Capability CooperativeMatrixKHR
-; CHECK-DAG: Extension "SPV_INTEL_int4"
-; CHECK-DAG: Capability Int4CooperativeMatrixINTEL
-; CHECK-DAG: Extension "SPV_KHR_cooperative_matrix"
-
-; CHECK: %[[#Int4Ty:]] = OpTypeInt 4 0
-; CHECK: %[[#CoopMatTy:]] = OpTypeCooperativeMatrixKHR %[[#Int4Ty]]
-; CHECK: CompositeConstruct %[[#CoopMatTy]]
-
-define spir_kernel void @foo() {
-entry:
- %call.i.i = tail call spir_func noundef target("spirv.CooperativeMatrixKHR", i4, 3, 12, 12, 2) @_Z26__spirv_CompositeConstruct(i4 noundef 0)
- ret void
-}
-
-declare dso_local spir_func noundef target("spirv.CooperativeMatrixKHR", i4, 3, 12, 12, 2) @_Z26__spirv_CompositeConstruct(i4 noundef)
diff --git a/llvm/test/CodeGen/SPIRV/extensions/SPV_INTEL_int4/negative.ll b/llvm/test/CodeGen/SPIRV/extensions/SPV_INTEL_int4/negative.ll
deleted file mode 100644
index 17202ab243e8f..0000000000000
--- a/llvm/test/CodeGen/SPIRV/extensions/SPV_INTEL_int4/negative.ll
+++ /dev/null
@@ -1,29 +0,0 @@
-; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv32-unknown-unknown --spirv-ext=+SPV_INTEL_arbitrary_precision_integers %s -o - | FileCheck %s --check-prefixes=CHECK,CHECK-INT-4
-
-; RUN: llc -O0 -mtriple=spirv32-unknown-unknown %s -o - | FileCheck %s --check-prefixes=CHECK,CHECK-INT-8
-; No error would be reported in comparison to Khronos llvm-spirv, because type adjustments to integer size are made
-; in case no appropriate extension is enabled. Here we expect that the type is adjusted to 8 bits.
-
-; CHECK-SPIRV: Capability ArbitraryPrecisionIntegersINTEL
-; CHECK-SPIRV: Extension "SPV_INTEL_arbitrary_precision_integers"
-; CHECK-INT-4: %[[#Int4:]] = OpTypeInt 4 0
-; CHECK-INT-8: %[[#Int4:]] = OpTypeInt 8 0
-; CHECK: OpTypeFunction %[[#]] %[[#Int4]]
-; CHECK: %[[#Int4PtrTy:]] = OpTypePointer Function %[[#Int4]]
-; CHECK: %[[#Const:]] = OpConstant %[[#Int4]] 1
-
-; CHECK: %[[#Int4Ptr:]] = OpVariable %[[#Int4PtrTy]] Function
-; CHECK: OpStore %[[#Int4Ptr]] %[[#Const]]
-; CHECK: %[[#Load:]] = OpLoad %[[#Int4]] %[[#Int4Ptr]]
-; CHECK: OpFunctionCall %[[#]] %[[#]] %[[#Load]]
-
-define spir_kernel void @foo() {
-entry:
- %0 = alloca i4
- store i4 1, ptr %0
- %1 = load i4, ptr %0
- call spir_func void @boo(i4 %1)
- ret void
-}
-
-declare spir_func void @boo(i4)
diff --git a/llvm/test/CodeGen/SPIRV/extensions/SPV_INTEL_int4/trivial.ll b/llvm/test/CodeGen/SPIRV/extensions/SPV_INTEL_int4/trivial.ll
deleted file mode 100644
index f1bee0b963613..0000000000000
--- a/llvm/test/CodeGen/SPIRV/extensions/SPV_INTEL_int4/trivial.ll
+++ /dev/null
@@ -1,25 +0,0 @@
-; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv32-unknown-unknown --spirv-ext=+SPV_INTEL_int4 %s -o - | FileCheck %s
-; RUNx: %if spirv-tools %{ llc -O0 -mtriple=spirv32-unknown-unknown --spirv-ext=+SPV_INTEL_int4 %s -o - -filetype=obj | spirv-val %}
-
-; CHECK: Capability Int4TypeINTEL
-; CHECK: Extension "SPV_INTEL_int4"
-; CHECK: %[[#Int4:]] = OpTypeInt 4 0
-; CHECK: OpTypeFunction %[[#]] %[[#Int4]]
-; CHECK: %[[#Int4PtrTy:]] = OpTypePointer Function %[[#Int4]]
-; CHECK: %[[#Const:]] = OpConstant %[[#Int4]] 1
-
-; CHECK: %[[#Int4Ptr:]] = OpVariable %[[#Int4PtrTy]] Function
-; CHECK: OpStore %[[#Int4Ptr]] %[[#Const]]
-; CHECK: %[[#Load:]] = OpLoad %[[#Int4]] %[[#Int4Ptr]]
-; CHECK: OpFunctionCall %[[#]] %[[#]] %[[#Load]]
-
-define spir_kernel void @foo() {
-entry:
- %0 = alloca i4
- store i4 1, ptr %0
- %1 = load i4, ptr %0
- call spir_func void @boo(i4 %1)
- ret void
-}
-
-declare spir_func void @boo(i4)
|
sivan-shani
pushed a commit
to sivan-shani/llvm-project
that referenced
this pull request
Jun 3, 2025
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Reverts #141031