@@ -9235,6 +9235,7 @@ void EmitPass::EmitGenIntrinsicMessage(llvm::GenIntrinsicInst* inst)
9235
9235
case GenISAIntrinsic::GenISA_fcmpxchgatomicraw:
9236
9236
case GenISAIntrinsic::GenISA_icmpxchgatomicrawA64:
9237
9237
case GenISAIntrinsic::GenISA_fcmpxchgatomicrawA64:
9238
+ case GenISAIntrinsic::GenISA_intatomicrawsinglelane:
9238
9239
emitAtomicRaw(inst, inst->getOperand(1));
9239
9240
break;
9240
9241
case GenISAIntrinsic::GenISA_intatomictyped:
@@ -16234,14 +16235,16 @@ void EmitPass::emitAtomicRaw(llvm::GenIntrinsicInst *pInst, Value *dstAddr,
16234
16235
}
16235
16236
16236
16237
Function* F = pInst->getParent()->getParent();
16237
- if (F->hasFnAttribute("KMPLOCK") && m_currShader->GetIsUniform(pInst))
16238
+ if ((F->hasFnAttribute("KMPLOCK") && m_currShader->GetIsUniform(pInst)) ||
16239
+ IID == GenISAIntrinsic::GenISA_intatomicrawsinglelane)
16238
16240
{
16239
16241
m_encoder->SetSimdSize(SIMDMode::SIMD1);
16240
16242
m_encoder->SetNoMask();
16241
16243
}
16242
16244
pDstAddr = BroadcastIfUniform(pDstAddr);
16243
16245
16244
- if (F->hasFnAttribute("KMPLOCK") && m_currShader->GetIsUniform(pInst))
16246
+ if ((F->hasFnAttribute("KMPLOCK") && m_currShader->GetIsUniform(pInst)) ||
16247
+ IID == GenISAIntrinsic::GenISA_intatomicrawsinglelane)
16245
16248
{
16246
16249
m_encoder->SetSimdSize(SIMDMode::SIMD1);
16247
16250
m_encoder->SetNoMask();
@@ -16251,7 +16254,8 @@ void EmitPass::emitAtomicRaw(llvm::GenIntrinsicInst *pInst, Value *dstAddr,
16251
16254
pSrc0 = UnpackOrBroadcastIfUniform(pSrc0);
16252
16255
}
16253
16256
16254
- if (F->hasFnAttribute("KMPLOCK") && m_currShader->GetIsUniform(pInst))
16257
+ if ((F->hasFnAttribute("KMPLOCK") && m_currShader->GetIsUniform(pInst)) ||
16258
+ IID == GenISAIntrinsic::GenISA_intatomicrawsinglelane)
16255
16259
{
16256
16260
m_encoder->SetSimdSize(SIMDMode::SIMD1);
16257
16261
m_encoder->SetNoMask();
0 commit comments