@@ -4839,6 +4839,32 @@ void EmitPass::emitSimdShuffleDown(llvm::Instruction* inst)
48394839 m_encoder->Push();
48404840 }
48414841
4842+ if (m_SimdMode == SIMDMode::SIMD32)
4843+ {
4844+ m_encoder->SetDstSubVar(0);
4845+ m_encoder->SetDstSubReg(8);
4846+ m_encoder->SetSimdSize(SIMDMode::SIMD8);
4847+ m_encoder->SetNoMask();
4848+ CVariable* imm1 = m_currShader->ImmToVariable(0x8, ISA_TYPE_UD);
4849+ m_encoder->Add(pLaneId, pLaneId, imm1);
4850+ m_encoder->Push();
4851+
4852+ m_encoder->SetDstSubVar(1);
4853+ m_encoder->SetSimdSize(SIMDMode::SIMD8);
4854+ m_encoder->SetNoMask();
4855+ imm1 = m_currShader->ImmToVariable(0x10, ISA_TYPE_UD);
4856+ m_encoder->Add(pLaneId, pLaneId, imm1);
4857+ m_encoder->Push();
4858+
4859+ m_encoder->SetDstSubVar(1);
4860+ m_encoder->SetDstSubReg(8);
4861+ m_encoder->SetSimdSize(SIMDMode::SIMD8);
4862+ m_encoder->SetNoMask();
4863+ imm1 = m_currShader->ImmToVariable(0x18, ISA_TYPE_UD);
4864+ m_encoder->Add(pLaneId, pLaneId, imm1);
4865+ m_encoder->Push();
4866+ }
4867+
48424868 CVariable* pShuffleIdx = m_currShader->GetNewVariable(
48434869 numLanes(m_SimdMode),
48444870 ISA_TYPE_UD,
@@ -5485,7 +5511,6 @@ void EmitPass::emitSimdMediaBlockRead(llvm::Instruction* inst)
54855511 CVariable* srcbti = m_currShader->ImmToVariable(bindingTableIndex, ISA_TYPE_UD);
54865512 uint32_t maxWidth = 32;
54875513
5488-
54895514 if (totalWidth < maxWidth)
54905515 {
54915516 numPasses = 1;
@@ -5721,7 +5746,6 @@ void EmitPass::emitSimdMediaBlockWrite(llvm::Instruction* inst)
57215746 CVariable* srcbti = m_currShader->ImmToVariable(bindingTableIndex, ISA_TYPE_UD);
57225747 uint32_t maxWidth = 32;
57235748
5724-
57255749 if (totalWidth < maxWidth)
57265750 {
57275751 numPasses = 1;
0 commit comments