Module: Mesa
Branch: master
Commit: 17e212e2631cd652c28378399806c3b3bd293e9a
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=17e212e2631cd652c28378399806c3b3bd293e9a

Author: Andre Maasikas <[email protected]>
Date:   Mon Dec  7 11:51:36 2009 +0200

r600: add ABS support for source regs to assembler

use it in tex cube instruction sequence

---

 src/mesa/drivers/dri/r600/r700_assembler.c |   27 +++++----------------------
 src/mesa/drivers/dri/r600/r700_assembler.h |    7 ++++---
 2 files changed, 9 insertions(+), 25 deletions(-)

diff --git a/src/mesa/drivers/dri/r600/r700_assembler.c 
b/src/mesa/drivers/dri/r600/r700_assembler.c
index 158c5fa..2f8038a 100644
--- a/src/mesa/drivers/dri/r600/r700_assembler.c
+++ b/src/mesa/drivers/dri/r600/r700_assembler.c
@@ -2350,8 +2350,8 @@ GLboolean assemble_alu_instruction(r700_AssemblerBase 
*pAsm)
             {
                 alu_instruction_ptr->m_Word1_OP2.f6.alu_inst           = 
pAsm->D.dst.opcode;
 
-                alu_instruction_ptr->m_Word1_OP2.f6.src0_abs           = 0x0;
-                alu_instruction_ptr->m_Word1_OP2.f6.src1_abs           = 0x0;
+                alu_instruction_ptr->m_Word1_OP2.f6.src0_abs           = 
pAsm->S[0].src.abs;
+                alu_instruction_ptr->m_Word1_OP2.f6.src1_abs           = 
pAsm->S[1].src.abs;
 
                 //alu_instruction_ptr->m_Word1_OP2.f6.update_execute_mask = 
0x0;
                 //alu_instruction_ptr->m_Word1_OP2.f6.update_pred         = 
0x0;
@@ -2379,8 +2379,8 @@ GLboolean assemble_alu_instruction(r700_AssemblerBase 
*pAsm)
             {
                 alu_instruction_ptr->m_Word1_OP2.f.alu_inst           = 
pAsm->D.dst.opcode;
 
-                alu_instruction_ptr->m_Word1_OP2.f.src0_abs           = 0x0;
-                alu_instruction_ptr->m_Word1_OP2.f.src1_abs           = 0x0;
+                alu_instruction_ptr->m_Word1_OP2.f.src0_abs           = 
pAsm->S[0].src.abs;
+                alu_instruction_ptr->m_Word1_OP2.f.src1_abs           = 
pAsm->S[1].src.abs;
 
                 //alu_instruction_ptr->m_Word1_OP2.f.update_execute_mask = 0x0;
                 //alu_instruction_ptr->m_Word1_OP2.f.update_pred         = 0x0;
@@ -4721,24 +4721,6 @@ GLboolean assemble_TEX(r700_AssemblerBase *pAsm)
             return GL_FALSE;
         }
  
-        /* tmp1.z = ABS(tmp1.z) dont have abs support in assembler currently
-         * have to do explicit instruction
-         */
-        pAsm->D.dst.opcode = SQ_OP2_INST_MAX;
-        setaddrmode_PVSDST(&(pAsm->D.dst), ADDR_ABSOLUTE);
-        pAsm->D.dst.rtype = DST_REG_TEMPORARY;
-        pAsm->D.dst.reg   = tmp1;
-        pAsm->D.dst.writez = 1;
-
-        setaddrmode_PVSSRC(&(pAsm->S[0].src), ADDR_ABSOLUTE);
-        pAsm->S[0].src.rtype = SRC_REG_TEMPORARY;
-        pAsm->S[0].src.reg = tmp1;
-       noswizzle_PVSSRC(&(pAsm->S[0].src));
-        pAsm->S[1].bits = pAsm->S[0].bits;
-        flipneg_PVSSRC(&(pAsm->S[1].src));
-        
-        next_ins(pAsm);
-
         /* tmp1.z = RCP_e(|tmp1.z|) */
         pAsm->D.dst.opcode = SQ_OP2_INST_RECIP_IEEE;
         pAsm->D.dst.math = 1;
@@ -4751,6 +4733,7 @@ GLboolean assemble_TEX(r700_AssemblerBase *pAsm)
         pAsm->S[0].src.rtype = SRC_REG_TEMPORARY;
         pAsm->S[0].src.reg = tmp1;
         pAsm->S[0].src.swizzlex = SQ_SEL_Z;
+        pAsm->S[0].src.abs = 1;
 
         next_ins(pAsm);
 
diff --git a/src/mesa/drivers/dri/r600/r700_assembler.h 
b/src/mesa/drivers/dri/r600/r700_assembler.h
index 48ffef5..cfa2610 100644
--- a/src/mesa/drivers/dri/r600/r700_assembler.h
+++ b/src/mesa/drivers/dri/r600/r700_assembler.h
@@ -120,14 +120,15 @@ typedef struct PVSINSTtag
 
 typedef struct PVSSRCtag 
 {
-       BITS rtype:4;            
+       BITS rtype:3;            
        BITS addrmode0:1;        
-       BITS reg:10;      //15     (8)
+       BITS reg:10;      //14     (8)
        BITS swizzlex:3;
        BITS swizzley:3;
        BITS swizzlez:3;
-       BITS swizzlew:3;  //27        
+       BITS swizzlew:3;  //26        
 
+       BITS abs:1;
        BITS negx:1;
        BITS negy:1;
        BITS negz:1;

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to