@@ -108,8 +108,8 @@ class SPIRVInstructionSelector : public InstructionSelector {
108
108
unsigned Opcode) const ;
109
109
110
110
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 ;
113
113
114
114
bool selectGlobalValue (Register ResVReg, MachineInstr &I,
115
115
const MachineInstr *Init = nullptr ) const ;
@@ -3171,9 +3171,11 @@ bool SPIRVInstructionSelector::selectFirstBitSet32(Register ResVReg,
3171
3171
.constrainAllUses (TII, TRI, RBI);
3172
3172
}
3173
3173
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 {
3177
3179
Register OpReg = I.getOperand (2 ).getReg ();
3178
3180
3179
3181
// 1. Split int64 into 2 pieces using a bitcast
@@ -3188,8 +3190,8 @@ bool SPIRVInstructionSelector::selectFirstBitSet64(
3188
3190
selectOpWithSrcs (BitcastReg, PostCastType, I, {OpReg}, SPIRV::OpBitcast);
3189
3191
3190
3192
// 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,
3193
3195
BitSetOpcode);
3194
3196
3195
3197
// 3. Split result vector into high bits and low bits
@@ -3202,12 +3204,12 @@ bool SPIRVInstructionSelector::selectFirstBitSet64(
3202
3204
// if scalar do a vector extract
3203
3205
Result = Result &&
3204
3206
selectOpWithSrcs (HighReg, ResType , I,
3205
- {FBPReg , GR.getOrCreateConstInt (0 , I, ResType ,
3207
+ {FBSReg , GR.getOrCreateConstInt (0 , I, ResType ,
3206
3208
TII, ZeroAsNull)},
3207
3209
SPIRV::OpVectorExtractDynamic);
3208
3210
Result = Result &&
3209
3211
selectOpWithSrcs (LowReg, ResType , I,
3210
- {FBPReg , GR.getOrCreateConstInt (1 , I, ResType ,
3212
+ {FBSReg , GR.getOrCreateConstInt (1 , I, ResType ,
3211
3213
TII, ZeroAsNull)},
3212
3214
SPIRV::OpVectorExtractDynamic);
3213
3215
} else {
@@ -3216,11 +3218,11 @@ bool SPIRVInstructionSelector::selectFirstBitSet64(
3216
3218
TII.get (SPIRV::OpVectorShuffle))
3217
3219
.addDef (HighReg)
3218
3220
.addUse (GR.getSPIRVTypeID (ResType ))
3219
- .addUse (FBPReg )
3221
+ .addUse (FBSReg )
3220
3222
// Per the spec, repeat the vector if only one vec is needed
3221
- .addUse (FBPReg );
3223
+ .addUse (FBSReg );
3222
3224
3223
- // high bits are stored in even indexes. Extract them from FBLReg
3225
+ // high bits are stored in even indexes. Extract them from FBSReg
3224
3226
for (unsigned J = 0 ; J < ComponentCount * 2 ; J += 2 ) {
3225
3227
MIB.addImm (J);
3226
3228
}
@@ -3230,11 +3232,11 @@ bool SPIRVInstructionSelector::selectFirstBitSet64(
3230
3232
TII.get (SPIRV::OpVectorShuffle))
3231
3233
.addDef (LowReg)
3232
3234
.addUse (GR.getSPIRVTypeID (ResType ))
3233
- .addUse (FBPReg )
3235
+ .addUse (FBSReg )
3234
3236
// Per the spec, repeat the vector if only one vec is needed
3235
- .addUse (FBPReg );
3237
+ .addUse (FBSReg );
3236
3238
3237
- // low bits are stored in odd indexes. Extract them from FBLReg
3239
+ // low bits are stored in odd indexes. Extract them from FBSReg
3238
3240
for (unsigned J = 1 ; J < ComponentCount * 2 ; J += 2 ) {
3239
3241
MIB.addImm (J);
3240
3242
}
@@ -3322,7 +3324,7 @@ bool SPIRVInstructionSelector::selectFirstBitHigh(Register ResVReg,
3322
3324
case 32 :
3323
3325
return selectFirstBitSet32 (ResVReg, ResType , I, OpReg, BitSetOpcode);
3324
3326
case 64 :
3325
- return selectFirstBitSet64 (ResVReg, ResType , I, ExtendOpcode, BitSetOpcode,
3327
+ return selectFirstBitSet64 (ResVReg, ResType , I, BitSetOpcode,
3326
3328
/* SwapPrimarySide=*/ false );
3327
3329
default :
3328
3330
report_fatal_error (
@@ -3348,7 +3350,7 @@ bool SPIRVInstructionSelector::selectFirstBitLow(Register ResVReg,
3348
3350
case 32 :
3349
3351
return selectFirstBitSet32 (ResVReg, ResType , I, OpReg, BitSetOpcode);
3350
3352
case 64 :
3351
- return selectFirstBitSet64 (ResVReg, ResType , I, ExtendOpcode, BitSetOpcode,
3353
+ return selectFirstBitSet64 (ResVReg, ResType , I, BitSetOpcode,
3352
3354
/* SwapPrimarySide=*/ true );
3353
3355
default :
3354
3356
report_fatal_error (" spv_firstbitlow only supports 16,32,64 bits." );
0 commit comments