From: Matt Turner Date: Sun, 9 Mar 2014 01:22:22 +0000 (-0800) Subject: i965/vec4: Add vector float immediate infrastructure. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=cb0ba848d4176c1ed2c4542fd5875867f460fc3b;p=mesa.git i965/vec4: Add vector float immediate infrastructure. Reviewed-by: Kenneth Graunke --- diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp b/src/mesa/drivers/dri/i965/brw_vec4.cpp index f1d59bda846..db6f6a38ffa 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp @@ -112,6 +112,18 @@ src_reg::src_reg(int32_t i) this->fixed_hw_reg.dw1.d = i; } +src_reg::src_reg(uint8_t vf0, uint8_t vf1, uint8_t vf2, uint8_t vf3) +{ + init(); + + this->file = IMM; + this->type = BRW_REGISTER_TYPE_VF; + this->fixed_hw_reg.dw1.ud = (vf0 << 0) | + (vf1 << 8) | + (vf2 << 16) | + (vf3 << 24); +} + src_reg::src_reg(struct brw_reg reg) { init(); @@ -1396,6 +1408,13 @@ vec4_visitor::dump_instruction(backend_instruction *be_inst, FILE *file) case BRW_REGISTER_TYPE_UD: fprintf(file, "%uU", inst->src[i].fixed_hw_reg.dw1.ud); break; + case BRW_REGISTER_TYPE_VF: + fprintf(stderr, "[%-gF, %-gF, %-gF, %-gF]", + brw_vf_to_float((inst->src[i].fixed_hw_reg.dw1.ud >> 0) & 0xff), + brw_vf_to_float((inst->src[i].fixed_hw_reg.dw1.ud >> 8) & 0xff), + brw_vf_to_float((inst->src[i].fixed_hw_reg.dw1.ud >> 16) & 0xff), + brw_vf_to_float((inst->src[i].fixed_hw_reg.dw1.ud >> 24) & 0xff)); + break; default: fprintf(file, "???"); break; diff --git a/src/mesa/drivers/dri/i965/brw_vec4.h b/src/mesa/drivers/dri/i965/brw_vec4.h index aac5954557c..a8e972aed51 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4.h +++ b/src/mesa/drivers/dri/i965/brw_vec4.h @@ -102,6 +102,7 @@ public: src_reg(float f); src_reg(uint32_t u); src_reg(int32_t i); + src_reg(uint8_t vf0, uint8_t vf1, uint8_t vf2, uint8_t vf3); src_reg(struct brw_reg reg); bool equals(const src_reg &r) const; diff --git a/src/mesa/drivers/dri/i965/brw_vec4_generator.cpp b/src/mesa/drivers/dri/i965/brw_vec4_generator.cpp index 6a70a2f3839..058b2baa098 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4_generator.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4_generator.cpp @@ -92,6 +92,9 @@ vec4_instruction::get_src(const struct brw_vec4_prog_data *prog_data, int i) case BRW_REGISTER_TYPE_UD: brw_reg = brw_imm_ud(src[i].fixed_hw_reg.dw1.ud); break; + case BRW_REGISTER_TYPE_VF: + brw_reg = brw_imm_vf(src[i].fixed_hw_reg.dw1.ud); + break; default: unreachable("not reached"); }