r600/sb: add finalising for lds output queue special values.
authorDave Airlie <airlied@redhat.com>
Wed, 10 Jan 2018 04:22:28 +0000 (04:22 +0000)
committerDave Airlie <airlied@redhat.com>
Thu, 18 Jan 2018 03:37:27 +0000 (03:37 +0000)
We need to convert these to the hw special registers.

Acked-By: Roland Scheidegger <sroland@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
src/gallium/drivers/r600/sb/sb_bc_finalize.cpp

index 2ec4db624a585518fae5b0af54463537031f9f5c..d377a3950a6d98b69dd405af30b081431d74fb3f 100644 (file)
@@ -428,6 +428,18 @@ bool bc_finalizer::finalize_alu_src(alu_group_node* g, alu_node* a, alu_group_no
                        src.chan = k.chan();
                        break;
                }
+               case VLK_SPECIAL_REG:
+                       if (v->select.sel() == SV_LDS_OQA) {
+                               src.sel = ALU_SRC_LDS_OQ_A_POP;
+                               src.chan = 0;
+                       } else if (v->select.sel() == SV_LDS_OQB) {
+                               src.sel = ALU_SRC_LDS_OQ_B_POP;
+                               src.chan = 0;
+                       } else {
+                               src.sel = ALU_SRC_0;
+                               src.chan = 0;
+                       }
+                       break;
                case VLK_PARAM:
                case VLK_SPECIAL_CONST:
                        src.sel = v->select.sel();