ソースを参照

r600: fixup KIL instruction a bit

- KILLGT takes 2 arguments
- arb KIL has no dst register
- add TODO about clause ending but currently piglit fp-kil passes and
  does not hang the card
tags/mesa_7_6_1_rc1
Andre Maasikas 16年前
コミット
95851d8cb2
1個のファイルの変更9行の追加18行の削除
  1. 9
    18
      src/mesa/drivers/dri/r600/r700_assembler.c

+ 9
- 18
src/mesa/drivers/dri/r600/r700_assembler.c ファイルの表示

@@ -336,7 +336,8 @@ unsigned int r700GetNumOperands(r700_AssemblerBase* pAsm)

switch (pAsm->D.dst.opcode)
{
case SQ_OP2_INST_ADD:
case SQ_OP2_INST_ADD:
case SQ_OP2_INST_KILLGT:
case SQ_OP2_INST_MUL:
case SQ_OP2_INST_MAX:
case SQ_OP2_INST_MIN:
@@ -356,7 +357,6 @@ unsigned int r700GetNumOperands(r700_AssemblerBase* pAsm)
case SQ_OP2_INST_MOV:
case SQ_OP2_INST_FRACT:
case SQ_OP2_INST_FLOOR:
case SQ_OP2_INST_KILLGT:
case SQ_OP2_INST_EXP_IEEE:
case SQ_OP2_INST_LOG_CLAMPED:
case SQ_OP2_INST_LOG_IEEE:
@@ -2617,15 +2617,15 @@ GLboolean assemble_FRC(r700_AssemblerBase *pAsm)
GLboolean assemble_KIL(r700_AssemblerBase *pAsm)
{
/* TODO: doc says KILL has to be last(end) ALU clause */
checkop1(pAsm);

pAsm->D.dst.opcode = SQ_OP2_INST_KILLGT;
if ( GL_FALSE == assemble_dst(pAsm) )
{
return GL_FALSE;
}

setaddrmode_PVSDST(&(pAsm->D.dst), ADDR_ABSOLUTE);
pAsm->D.dst.rtype = DST_REG_TEMPORARY;
pAsm->D.dst.reg = 0;
pAsm->D.dst.writex = 0;
pAsm->D.dst.writey = 0;
pAsm->D.dst.writez = 0;
@@ -2638,20 +2638,11 @@ GLboolean assemble_KIL(r700_AssemblerBase *pAsm)
setswizzle_PVSSRC(&(pAsm->S[0].src), SQ_SEL_0);
noneg_PVSSRC(&(pAsm->S[0].src));

pAsm->S[1].src.rtype = SRC_REG_TEMPORARY;

if(PROGRAM_TEMPORARY == pAsm->pILInst[pAsm->uiCurInst].DstReg.File)
if ( GL_FALSE == assemble_src(pAsm, 0, 1) )
{
pAsm->S[1].src.reg = pAsm->pILInst[pAsm->uiCurInst].DstReg.Index + pAsm->starting_temp_register_number;
}
else
{ //PROGRAM_OUTPUT
pAsm->S[1].src.reg = pAsm->uiFP_OutputMap[pAsm->pILInst[pAsm->uiCurInst].DstReg.Index];
return GL_FALSE;
}
setaddrmode_PVSSRC(&(pAsm->S[1].src), ADDR_ABSOLUTE);
noswizzle_PVSSRC(&(pAsm->S[1].src));
if ( GL_FALSE == next_ins(pAsm) )
{
return GL_FALSE;

読み込み中…
キャンセル
保存