@@ -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)
0 commit comments