Skip to content

Commit 0efbc39

Browse files
bcheng0127sys_zuul
authored andcommitted
suffle down support for simd32
Change-Id: Id6a12fd1a03b15611372c023fd5652eb55ea9ea9
1 parent 773b349 commit 0efbc39

File tree

1 file changed

+26
-2
lines changed

1 file changed

+26
-2
lines changed

IGC/Compiler/CISACodeGen/EmitVISAPass.cpp

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)