Skip to content

Commit 746d510

Browse files
committed
review comments
- use getRegClass instead of IDRegClass - remove unneeded check of isvulkan/opencl - fix testcase to use fixed version and -verify-machineinstrs - fix Result bool to be from and to or
1 parent 3857d17 commit 746d510

File tree

3 files changed

+13
-16
lines changed

3 files changed

+13
-16
lines changed

llvm/lib/Target/SPIRV/SPIRVInstructionSelector.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1653,7 +1653,7 @@ bool SPIRVInstructionSelector::selectIntegerDot(Register ResVReg,
16531653
// Multiply the vectors, then sum the results
16541654
Register Vec0 = I.getOperand(2).getReg();
16551655
Register Vec1 = I.getOperand(3).getReg();
1656-
Register TmpVec = MRI->createVirtualRegister(&SPIRV::IDRegClass);
1656+
Register TmpVec = MRI->createVirtualRegister(GR.getRegClass(ResType));
16571657
SPIRVType *VecType = GR.getSPIRVTypeForVReg(Vec0);
16581658

16591659
bool Result = BuildMI(BB, I, I.getDebugLoc(), TII.get(SPIRV::OpIMulV))
@@ -1667,18 +1667,18 @@ bool SPIRVInstructionSelector::selectIntegerDot(Register ResVReg,
16671667
GR.getScalarOrVectorComponentCount(VecType) > 1 &&
16681668
"dot product requires a vector of at least 2 components");
16691669

1670-
Register Res = MRI->createVirtualRegister(&SPIRV::IDRegClass);
1671-
Result |= BuildMI(BB, I, I.getDebugLoc(), TII.get(SPIRV::OpCompositeExtract))
1670+
Register Res = MRI->createVirtualRegister(GR.getRegClass(ResType));
1671+
Result &= BuildMI(BB, I, I.getDebugLoc(), TII.get(SPIRV::OpCompositeExtract))
16721672
.addDef(Res)
16731673
.addUse(GR.getSPIRVTypeID(ResType))
16741674
.addUse(TmpVec)
16751675
.addImm(0)
16761676
.constrainAllUses(TII, TRI, RBI);
16771677

16781678
for (unsigned i = 1; i < GR.getScalarOrVectorComponentCount(VecType); i++) {
1679-
Register Elt = MRI->createVirtualRegister(&SPIRV::IDRegClass);
1679+
Register Elt = MRI->createVirtualRegister(GR.getRegClass(ResType));
16801680

1681-
Result |=
1681+
Result &=
16821682
BuildMI(BB, I, I.getDebugLoc(), TII.get(SPIRV::OpCompositeExtract))
16831683
.addDef(Elt)
16841684
.addUse(GR.getSPIRVTypeID(ResType))
@@ -1687,10 +1687,10 @@ bool SPIRVInstructionSelector::selectIntegerDot(Register ResVReg,
16871687
.constrainAllUses(TII, TRI, RBI);
16881688

16891689
Register Sum = i < GR.getScalarOrVectorComponentCount(VecType) - 1
1690-
? MRI->createVirtualRegister(&SPIRV::IDRegClass)
1690+
? MRI->createVirtualRegister(GR.getRegClass(ResType))
16911691
: ResVReg;
16921692

1693-
Result |= BuildMI(BB, I, I.getDebugLoc(), TII.get(SPIRV::OpIAddS))
1693+
Result &= BuildMI(BB, I, I.getDebugLoc(), TII.get(SPIRV::OpIAddS))
16941694
.addDef(Sum)
16951695
.addUse(GR.getSPIRVTypeID(ResType))
16961696
.addUse(Res)
@@ -1713,15 +1713,15 @@ bool SPIRVInstructionSelector::selectDot4AddPacked(Register ResVReg,
17131713
MachineBasicBlock &BB = *I.getParent();
17141714

17151715
auto DotOp = Signed ? SPIRV::OpSDot : SPIRV::OpUDot;
1716-
Register Dot = MRI->createVirtualRegister(&SPIRV::IDRegClass);
1716+
Register Dot = MRI->createVirtualRegister(GR.getRegClass(ResType));
17171717
bool Result = BuildMI(BB, I, I.getDebugLoc(), TII.get(DotOp))
17181718
.addDef(Dot)
17191719
.addUse(GR.getSPIRVTypeID(ResType))
17201720
.addUse(I.getOperand(2).getReg())
17211721
.addUse(I.getOperand(3).getReg())
17221722
.constrainAllUses(TII, TRI, RBI);
17231723

1724-
Result |= BuildMI(BB, I, I.getDebugLoc(), TII.get(SPIRV::OpIAddS))
1724+
Result &= BuildMI(BB, I, I.getDebugLoc(), TII.get(SPIRV::OpIAddS))
17251725
.addDef(ResVReg)
17261726
.addUse(GR.getSPIRVTypeID(ResType))
17271727
.addUse(Dot)

llvm/lib/Target/SPIRV/SPIRVSubtarget.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,9 +129,6 @@ bool SPIRVSubtarget::canDirectlyComparePointers() const {
129129

130130
void SPIRVSubtarget::initAvailableExtensions() {
131131
AvailableExtensions.clear();
132-
if (!(isOpenCLEnv() || isVulkanEnv()))
133-
return;
134-
135132
AvailableExtensions.insert(Extensions.begin(), Extensions.end());
136133
}
137134

llvm/test/CodeGen/SPIRV/hlsl-intrinsics/dot4add_i8packed.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
; RUN: llc -O0 -mtriple=spirv-unknown-unknown %s -o - | FileCheck %s --check-prefixes=CHECK,CHECK-EXP
1+
; RUN: llc -O0 -mtriple=spirv1.5-unknown-unknown %s -o - | FileCheck %s --check-prefixes=CHECK,CHECK-EXP
22
; RUN: llc -O0 -mtriple=spirv1.6-unknown-unknown %s -o - | FileCheck %s --check-prefixes=CHECK,CHECK-DOT
33
; RUN: llc -O0 -mtriple=spirv-unknown-unknown -spirv-ext=+SPV_KHR_integer_dot_product %s -o - | FileCheck %s --check-prefixes=CHECK,CHECK-DOT,CHECK-EXT
4-
; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv-unknown-unknown %s -o - -filetype=obj | spirv-val %}
5-
; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv1.6-unknown-unknown %s -o - -filetype=obj | spirv-val %}
6-
; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv-unknown-unknown -spirv-ext=+SPV_KHR_integer_dot_product %s -o - -filetype=obj | spirv-val %}
4+
; RUN: %if spirv-tools %{ llc -verify-machineinstrs -O0 -mtriple=spirv1.5-unknown-unknown %s -o - -filetype=obj | spirv-val %}
5+
; RUN: %if spirv-tools %{ llc -verify-machineinstrs -O0 -mtriple=spirv1.6-unknown-unknown %s -o - -filetype=obj | spirv-val %}
6+
; RUN: %if spirv-tools %{ llc -verify-machineinstrs -O0 -mtriple=spirv-unknown-unknown -spirv-ext=+SPV_KHR_integer_dot_product %s -o - -filetype=obj | spirv-val %}
77

88
; CHECK-DOT: OpCapability DotProductKHR
99
; CHECK-DOT: OpCapability DotProductInput4x8BitPackedKHR

0 commit comments

Comments
 (0)