diff options
author | Ian Romanick <ian.d.romanick@intel.com> | 2010-06-04 16:13:35 -0700 |
---|---|---|
committer | Ian Romanick <ian.d.romanick@intel.com> | 2010-06-11 13:51:09 -0700 |
commit | 989cfc432ee7adef701a87783e0c6b064c1cfaee (patch) | |
tree | cb29a9510ff561ce0858076f7966a2fe4dee3945 /ir.cpp | |
parent | 565185cd8f3ea636d3d2aaad9218d63323390464 (diff) |
Construct an ir_constant from a scalar component of another ir_constant
Diffstat (limited to 'ir.cpp')
-rw-r--r-- | ir.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
@@ -227,6 +227,19 @@ ir_constant::ir_constant(bool b) this->value.b[0] = b; } +ir_constant::ir_constant(const ir_constant *c, unsigned i) +{ + this->type = c->type->get_base_type(); + + switch (this->type->base_type) { + case GLSL_TYPE_UINT: this->value.u[0] = c->value.u[i]; break; + case GLSL_TYPE_INT: this->value.i[0] = c->value.i[i]; break; + case GLSL_TYPE_FLOAT: this->value.f[0] = c->value.f[i]; break; + case GLSL_TYPE_BOOL: this->value.b[0] = c->value.b[i]; break; + default: assert(!"Should not get here."); break; + } +} + ir_dereference_variable::ir_dereference_variable(ir_variable *var) { |