diff options
author | Tom Stellard <tstellar@gmail.com> | 2010-12-16 19:15:39 -0800 |
---|---|---|
committer | Tom Stellard <tstellar@gmail.com> | 2010-12-16 19:15:39 -0800 |
commit | 2a0ffd147e0158f9eb16ad173603da9eddd691a1 (patch) | |
tree | 684ab309b46a4004e44c58f77cdaed2de772fd88 | |
parent | 038c976fd5709cf8fe647f7e0ace989737b37176 (diff) |
register_address: Fix up int conversion.
Also update to_string() to include immediates.
-rw-r--r-- | program.cpp | 2 | ||||
-rw-r--r-- | register_address.cpp | 20 |
2 files changed, 12 insertions, 10 deletions
diff --git a/program.cpp b/program.cpp index 01d584f..153246c 100644 --- a/program.cpp +++ b/program.cpp @@ -6,7 +6,7 @@ register_address program::add_immediate(float value) { m_immediate_regs.push_back(new float_value(value)); - return register_address(REGISTER_TYPE_IMMEDIATE, m_immediate_regs.size()); + return register_address(REGISTER_TYPE_IMMEDIATE, m_immediate_regs.size() - 1); } void diff --git a/register_address.cpp b/register_address.cpp index 2fcd350..a942b91 100644 --- a/register_address.cpp +++ b/register_address.cpp @@ -27,10 +27,10 @@ register_address::register_address( { unsigned int swz_val = int_val % 4; switch (swz_val) { - case 0: m_swizzle = SWIZZLE_X; - case 1: m_swizzle = SWIZZLE_Y; - case 2: m_swizzle = SWIZZLE_Z; - case 3: m_swizzle = SWIZZLE_W; + case 0: m_swizzle = SWIZZLE_X; break; + case 1: m_swizzle = SWIZZLE_Y; break; + case 2: m_swizzle = SWIZZLE_Z; break; + case 3: m_swizzle = SWIZZLE_W; break; } m_index = int_val / 4; } @@ -54,6 +54,7 @@ register_address::register_type_to_string(enum register_type type) case REGISTER_TYPE_CONST: return "CONST"; case REGISTER_TYPE_IN: return "IN"; case REGISTER_TYPE_OUT: return "OUT"; + case REGISTER_TYPE_IMMEDIATE: return "IMM"; default: return "NONE"; } } @@ -76,12 +77,13 @@ register_address::to_int() { unsigned int swz_val; switch(m_swizzle) { - case SWIZZLE_X: swz_val = 0; - case SWIZZLE_Y: swz_val = 1; - case SWIZZLE_Z: swz_val = 2; - case SWIZZLE_W: swz_val = 3; + case SWIZZLE_X: swz_val = 0; break; + case SWIZZLE_Y: swz_val = 1; break; + case SWIZZLE_Z: swz_val = 2; break; + case SWIZZLE_W: swz_val = 3; break; default: - std::cerr << __FUNCTION__ << ": unhandled swizzle\n"; + std::cerr << __FUNCTION__ << ": unhandled swizzle: " << + m_swizzle << "\n"; return 0; } return (m_index * 4) + swz_val; |