r300: add new register class list for vertex shaders
authorPavel Ondračka <pavel.ondracka@gmail.com>
Wed, 26 Oct 2022 15:30:35 +0000 (17:30 +0200)
committerMarge Bot <emma+marge@anholt.net>
Mon, 14 Nov 2022 06:53:54 +0000 (06:53 +0000)
Signed-off-by: Pavel Ondračka <pavel.ondracka@gmail.com>
Reviewed-by: Filip Gawin <filip@gawin.net>
Tested-by: Filip Gawin <filip@gawin.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19618>

src/gallium/drivers/r300/compiler/radeon_regalloc.c
src/gallium/drivers/r300/compiler/radeon_regalloc.h

index bc10a17..2d6525f 100644 (file)
 
 #define DBG(...) do { if (VERBOSE) fprintf(stderr, __VA_ARGS__); } while(0)
 
+const struct rc_class rc_class_list_vp [] = {
+       {RC_REG_CLASS_VP_SINGLE, 4,
+               {RC_MASK_X,
+                RC_MASK_Y,
+                RC_MASK_Z,
+                RC_MASK_W,
+                RC_MASK_NONE,
+                RC_MASK_NONE}},
+       {RC_REG_CLASS_VP_DOUBLE, 6,
+               {RC_MASK_X | RC_MASK_Y,
+                RC_MASK_X | RC_MASK_Z,
+                RC_MASK_X | RC_MASK_W,
+                RC_MASK_Y | RC_MASK_Z,
+                RC_MASK_Y | RC_MASK_W,
+                RC_MASK_Z | RC_MASK_W}},
+       {RC_REG_CLASS_VP_TRIPLE, 4,
+               {RC_MASK_X | RC_MASK_Y | RC_MASK_Z,
+                RC_MASK_X | RC_MASK_Y | RC_MASK_W,
+                RC_MASK_X | RC_MASK_Z | RC_MASK_W,
+                RC_MASK_Y | RC_MASK_Z | RC_MASK_W,
+                RC_MASK_NONE,
+                RC_MASK_NONE}},
+       {RC_REG_CLASS_VP_QUADRUPLE, 1,
+               {RC_MASK_X | RC_MASK_Y | RC_MASK_Z | RC_MASK_W,
+                RC_MASK_NONE,
+                RC_MASK_NONE,
+                RC_MASK_NONE,
+                RC_MASK_NONE,
+                RC_MASK_NONE}}
+};
+
 const struct rc_class rc_class_list_fp [] = {
        {RC_REG_CLASS_FP_SINGLE, 3,
                {RC_MASK_X,
index 0b9df2b..83f8e67 100644 (file)
@@ -59,6 +59,14 @@ enum rc_reg_class {
        RC_REG_CLASS_FP_COUNT
 };
 
+enum rc_reg_class_vp {
+       RC_REG_CLASS_VP_SINGLE,
+       RC_REG_CLASS_VP_DOUBLE,
+       RC_REG_CLASS_VP_TRIPLE,
+       RC_REG_CLASS_VP_QUADRUPLE,
+       RC_REG_CLASS_VP_COUNT
+};
+
 struct rc_regalloc_state {
        struct ra_regs *regs;
        struct ra_class *classes[RC_REG_CLASS_FP_COUNT];