@@ -108,8 +108,8 @@ class SPIRVInstructionSelector : public InstructionSelector {
108108 unsigned Opcode) const ;
109109
110110 bool selectFirstBitSet64 (Register ResVReg, const SPIRVType *ResType,
111- MachineInstr &I, unsigned ExtendOpcode ,
112- unsigned BitSetOpcode, bool SwapPrimarySide) const ;
111+ MachineInstr &I, unsigned BitSetOpcode ,
112+ bool SwapPrimarySide) const ;
113113
114114 bool selectGlobalValue (Register ResVReg, MachineInstr &I,
115115 const MachineInstr *Init = nullptr ) const ;
@@ -3171,9 +3171,11 @@ bool SPIRVInstructionSelector::selectFirstBitSet32(Register ResVReg,
31713171 .constrainAllUses (TII, TRI, RBI);
31723172}
31733173
3174- bool SPIRVInstructionSelector::selectFirstBitSet64 (
3175- Register ResVReg, const SPIRVType *ResType, MachineInstr &I,
3176- unsigned ExtendOpcode, unsigned BitSetOpcode, bool SwapPrimarySide) const {
3174+ bool SPIRVInstructionSelector::selectFirstBitSet64 (Register ResVReg,
3175+ const SPIRVType *ResType,
3176+ MachineInstr &I,
3177+ unsigned BitSetOpcode,
3178+ bool SwapPrimarySide) const {
31773179 Register OpReg = I.getOperand (2 ).getReg ();
31783180
31793181 // 1. Split int64 into 2 pieces using a bitcast
@@ -3188,8 +3190,8 @@ bool SPIRVInstructionSelector::selectFirstBitSet64(
31883190 selectOpWithSrcs (BitcastReg, PostCastType, I, {OpReg}, SPIRV::OpBitcast);
31893191
31903192 // 2. Find the first set bit from the primary side for all the pieces in #1
3191- Register FBPReg = MRI->createVirtualRegister (GR.getRegClass (PostCastType));
3192- Result = Result && selectFirstBitSet32 (FBPReg , PostCastType, I, BitcastReg,
3193+ Register FBSReg = MRI->createVirtualRegister (GR.getRegClass (PostCastType));
3194+ Result = Result && selectFirstBitSet32 (FBSReg , PostCastType, I, BitcastReg,
31933195 BitSetOpcode);
31943196
31953197 // 3. Split result vector into high bits and low bits
@@ -3202,12 +3204,12 @@ bool SPIRVInstructionSelector::selectFirstBitSet64(
32023204 // if scalar do a vector extract
32033205 Result = Result &&
32043206 selectOpWithSrcs (HighReg, ResType, I,
3205- {FBPReg , GR.getOrCreateConstInt (0 , I, ResType,
3207+ {FBSReg , GR.getOrCreateConstInt (0 , I, ResType,
32063208 TII, ZeroAsNull)},
32073209 SPIRV::OpVectorExtractDynamic);
32083210 Result = Result &&
32093211 selectOpWithSrcs (LowReg, ResType, I,
3210- {FBPReg , GR.getOrCreateConstInt (1 , I, ResType,
3212+ {FBSReg , GR.getOrCreateConstInt (1 , I, ResType,
32113213 TII, ZeroAsNull)},
32123214 SPIRV::OpVectorExtractDynamic);
32133215 } else {
@@ -3216,11 +3218,11 @@ bool SPIRVInstructionSelector::selectFirstBitSet64(
32163218 TII.get (SPIRV::OpVectorShuffle))
32173219 .addDef (HighReg)
32183220 .addUse (GR.getSPIRVTypeID (ResType))
3219- .addUse (FBPReg )
3221+ .addUse (FBSReg )
32203222 // Per the spec, repeat the vector if only one vec is needed
3221- .addUse (FBPReg );
3223+ .addUse (FBSReg );
32223224
3223- // high bits are stored in even indexes. Extract them from FBLReg
3225+ // high bits are stored in even indexes. Extract them from FBSReg
32243226 for (unsigned J = 0 ; J < ComponentCount * 2 ; J += 2 ) {
32253227 MIB.addImm (J);
32263228 }
@@ -3230,11 +3232,11 @@ bool SPIRVInstructionSelector::selectFirstBitSet64(
32303232 TII.get (SPIRV::OpVectorShuffle))
32313233 .addDef (LowReg)
32323234 .addUse (GR.getSPIRVTypeID (ResType))
3233- .addUse (FBPReg )
3235+ .addUse (FBSReg )
32343236 // Per the spec, repeat the vector if only one vec is needed
3235- .addUse (FBPReg );
3237+ .addUse (FBSReg );
32363238
3237- // low bits are stored in odd indexes. Extract them from FBLReg
3239+ // low bits are stored in odd indexes. Extract them from FBSReg
32383240 for (unsigned J = 1 ; J < ComponentCount * 2 ; J += 2 ) {
32393241 MIB.addImm (J);
32403242 }
@@ -3322,7 +3324,7 @@ bool SPIRVInstructionSelector::selectFirstBitHigh(Register ResVReg,
33223324 case 32 :
33233325 return selectFirstBitSet32 (ResVReg, ResType, I, OpReg, BitSetOpcode);
33243326 case 64 :
3325- return selectFirstBitSet64 (ResVReg, ResType, I, ExtendOpcode, BitSetOpcode,
3327+ return selectFirstBitSet64 (ResVReg, ResType, I, BitSetOpcode,
33263328 /* SwapPrimarySide=*/ false );
33273329 default :
33283330 report_fatal_error (
@@ -3348,7 +3350,7 @@ bool SPIRVInstructionSelector::selectFirstBitLow(Register ResVReg,
33483350 case 32 :
33493351 return selectFirstBitSet32 (ResVReg, ResType, I, OpReg, BitSetOpcode);
33503352 case 64 :
3351- return selectFirstBitSet64 (ResVReg, ResType, I, ExtendOpcode, BitSetOpcode,
3353+ return selectFirstBitSet64 (ResVReg, ResType, I, BitSetOpcode,
33523354 /* SwapPrimarySide=*/ true );
33533355 default :
33543356 report_fatal_error (" spv_firstbitlow only supports 16,32,64 bits." );
0 commit comments