static void alloc_regs( struct brw_sf_compile *c ) { GLuint reg, i; /* Values computed by fixed function unit: */ c->pv = retype(brw_vec1_grf(1, 1), BRW_REGISTER_TYPE_D); c->det = brw_vec1_grf(1, 2); c->dx0 = brw_vec1_grf(1, 3); c->dx2 = brw_vec1_grf(1, 4); c->dy0 = brw_vec1_grf(1, 5); c->dy2 = brw_vec1_grf(1, 6); /* z and 1/w passed in seperately: */ c->z[0] = brw_vec1_grf(2, 0); c->inv_w[0] = brw_vec1_grf(2, 1); c->z[1] = brw_vec1_grf(2, 2); c->inv_w[1] = brw_vec1_grf(2, 3); c->z[2] = brw_vec1_grf(2, 4); c->inv_w[2] = brw_vec1_grf(2, 5); /* The vertices: */ reg = 3; for (i = 0; i < c->nr_verts; i++) { c->vert[i] = brw_vec8_grf(reg, 0); reg += c->nr_attr_regs; } /* Temporaries, allocated after last vertex reg. */ c->inv_det = brw_vec1_grf(reg, 0); reg++; c->a1_sub_a0 = brw_vec8_grf(reg, 0); reg++; c->a2_sub_a0 = brw_vec8_grf(reg, 0); reg++; c->tmp = brw_vec8_grf(reg, 0); reg++; /* Note grf allocation: */ c->prog_data.total_grf = reg; /* Outputs of this program - interpolation coefficients for * rasterization: */ c->m1Cx = brw_vec8_reg(BRW_MESSAGE_REGISTER_FILE, 1, 0); c->m2Cy = brw_vec8_reg(BRW_MESSAGE_REGISTER_FILE, 2, 0); c->m3C0 = brw_vec8_reg(BRW_MESSAGE_REGISTER_FILE, 3, 0); }
static void gen_PLN_MRF_GRF_GRF(struct brw_codegen *p) { struct brw_reg m6 = brw_vec8_reg(BRW_MESSAGE_REGISTER_FILE, 6, 0); struct brw_reg interp = brw_vec1_grf(2, 0); struct brw_reg g4 = brw_vec8_grf(4, 0); brw_PLN(p, m6, interp, g4); }
static void gen_ADD_MRF_GRF_GRF(struct brw_codegen *p) { struct brw_reg m6 = brw_vec8_reg(BRW_MESSAGE_REGISTER_FILE, 6, 0); struct brw_reg g2 = brw_vec8_grf(2, 0); struct brw_reg g4 = brw_vec8_grf(4, 0); brw_ADD(p, m6, g2, g4); }