{ .addr = _reg(idx) }, \
        { .addr = _reg ## _UDW(idx) }
 
+#define REG64_BASE_IDX(_reg, base, idx) \
+       { .addr = _reg(base, idx) }, \
+       { .addr = _reg ## _UDW(base, idx) }
+
 static const struct drm_i915_reg_descriptor gen7_render_regs[] = {
        REG64(GPGPU_THREADS_DISPATCHED),
        REG64(HS_INVOCATION_COUNT),
 };
 
 static const struct drm_i915_reg_descriptor hsw_render_regs[] = {
-       REG64_IDX(HSW_CS_GPR, 0),
-       REG64_IDX(HSW_CS_GPR, 1),
-       REG64_IDX(HSW_CS_GPR, 2),
-       REG64_IDX(HSW_CS_GPR, 3),
-       REG64_IDX(HSW_CS_GPR, 4),
-       REG64_IDX(HSW_CS_GPR, 5),
-       REG64_IDX(HSW_CS_GPR, 6),
-       REG64_IDX(HSW_CS_GPR, 7),
-       REG64_IDX(HSW_CS_GPR, 8),
-       REG64_IDX(HSW_CS_GPR, 9),
-       REG64_IDX(HSW_CS_GPR, 10),
-       REG64_IDX(HSW_CS_GPR, 11),
-       REG64_IDX(HSW_CS_GPR, 12),
-       REG64_IDX(HSW_CS_GPR, 13),
-       REG64_IDX(HSW_CS_GPR, 14),
-       REG64_IDX(HSW_CS_GPR, 15),
+       REG64_BASE_IDX(GEN8_RING_CS_GPR, RENDER_RING_BASE, 0),
+       REG64_BASE_IDX(GEN8_RING_CS_GPR, RENDER_RING_BASE, 1),
+       REG64_BASE_IDX(GEN8_RING_CS_GPR, RENDER_RING_BASE, 2),
+       REG64_BASE_IDX(GEN8_RING_CS_GPR, RENDER_RING_BASE, 3),
+       REG64_BASE_IDX(GEN8_RING_CS_GPR, RENDER_RING_BASE, 4),
+       REG64_BASE_IDX(GEN8_RING_CS_GPR, RENDER_RING_BASE, 5),
+       REG64_BASE_IDX(GEN8_RING_CS_GPR, RENDER_RING_BASE, 6),
+       REG64_BASE_IDX(GEN8_RING_CS_GPR, RENDER_RING_BASE, 7),
+       REG64_BASE_IDX(GEN8_RING_CS_GPR, RENDER_RING_BASE, 8),
+       REG64_BASE_IDX(GEN8_RING_CS_GPR, RENDER_RING_BASE, 9),
+       REG64_BASE_IDX(GEN8_RING_CS_GPR, RENDER_RING_BASE, 10),
+       REG64_BASE_IDX(GEN8_RING_CS_GPR, RENDER_RING_BASE, 11),
+       REG64_BASE_IDX(GEN8_RING_CS_GPR, RENDER_RING_BASE, 12),
+       REG64_BASE_IDX(GEN8_RING_CS_GPR, RENDER_RING_BASE, 13),
+       REG64_BASE_IDX(GEN8_RING_CS_GPR, RENDER_RING_BASE, 14),
+       REG64_BASE_IDX(GEN8_RING_CS_GPR, RENDER_RING_BASE, 15),
        REG32(HSW_SCRATCH1,
              .mask = ~HSW_SCRATCH1_L3_DATA_ATOMICS_DISABLE,
              .value = 0),
        REG32(BCS_SWCTRL),
        REG64_IDX(RING_TIMESTAMP, BLT_RING_BASE),
        REG32_IDX(RING_CTX_TIMESTAMP, BLT_RING_BASE),
-       REG64_IDX(BCS_GPR, 0),
-       REG64_IDX(BCS_GPR, 1),
-       REG64_IDX(BCS_GPR, 2),
-       REG64_IDX(BCS_GPR, 3),
-       REG64_IDX(BCS_GPR, 4),
-       REG64_IDX(BCS_GPR, 5),
-       REG64_IDX(BCS_GPR, 6),
-       REG64_IDX(BCS_GPR, 7),
-       REG64_IDX(BCS_GPR, 8),
-       REG64_IDX(BCS_GPR, 9),
-       REG64_IDX(BCS_GPR, 10),
-       REG64_IDX(BCS_GPR, 11),
-       REG64_IDX(BCS_GPR, 12),
-       REG64_IDX(BCS_GPR, 13),
-       REG64_IDX(BCS_GPR, 14),
-       REG64_IDX(BCS_GPR, 15),
+       REG64_BASE_IDX(GEN8_RING_CS_GPR, BLT_RING_BASE, 0),
+       REG64_BASE_IDX(GEN8_RING_CS_GPR, BLT_RING_BASE, 1),
+       REG64_BASE_IDX(GEN8_RING_CS_GPR, BLT_RING_BASE, 2),
+       REG64_BASE_IDX(GEN8_RING_CS_GPR, BLT_RING_BASE, 3),
+       REG64_BASE_IDX(GEN8_RING_CS_GPR, BLT_RING_BASE, 4),
+       REG64_BASE_IDX(GEN8_RING_CS_GPR, BLT_RING_BASE, 5),
+       REG64_BASE_IDX(GEN8_RING_CS_GPR, BLT_RING_BASE, 6),
+       REG64_BASE_IDX(GEN8_RING_CS_GPR, BLT_RING_BASE, 7),
+       REG64_BASE_IDX(GEN8_RING_CS_GPR, BLT_RING_BASE, 8),
+       REG64_BASE_IDX(GEN8_RING_CS_GPR, BLT_RING_BASE, 9),
+       REG64_BASE_IDX(GEN8_RING_CS_GPR, BLT_RING_BASE, 10),
+       REG64_BASE_IDX(GEN8_RING_CS_GPR, BLT_RING_BASE, 11),
+       REG64_BASE_IDX(GEN8_RING_CS_GPR, BLT_RING_BASE, 12),
+       REG64_BASE_IDX(GEN8_RING_CS_GPR, BLT_RING_BASE, 13),
+       REG64_BASE_IDX(GEN8_RING_CS_GPR, BLT_RING_BASE, 14),
+       REG64_BASE_IDX(GEN8_RING_CS_GPR, BLT_RING_BASE, 15),
 };
 
 #undef REG64