summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Stellard <tstellar@gmail.com>2011-01-01 18:57:53 -0800
committerTom Stellard <tstellar@gmail.com>2011-01-01 18:57:53 -0800
commitad5d6ca73191d5d83513e123ede7ccf14f1906fc (patch)
tree902a036c0fcce103601c72658830fcca5cf2df07
parent0a26190e3dcfc8909505fe017de4b710281b4879 (diff)
emulator: Handle REGISTER_TYPE_NONE
-rw-r--r--emulator.cpp4
-rw-r--r--register_address.cpp5
2 files changed, 9 insertions, 0 deletions
diff --git a/emulator.cpp b/emulator.cpp
index 565f3cc..f9bf38f 100644
--- a/emulator.cpp
+++ b/emulator.cpp
@@ -96,6 +96,7 @@ emulator::get_value(register_address addr)
case REGISTER_TYPE_IMMEDIATE: return m_immediate_regs[index]->clone();
case REGISTER_TYPE_IN: return m_input_regs[index]->clone();
case REGISTER_TYPE_PRIVATE: return m_private_regs[index]->clone();
+ case REGISTER_TYPE_NONE: return NULL;
default:
std::cerr << __FUNCTION__ << " unknown register type: "
<< addr.m_type << "\n";
@@ -124,6 +125,9 @@ emulator::set_value(
delete m_private_regs[index];
m_private_regs[index] = val;
break;
+ case REGISTER_TYPE_NONE:
+ /* Do nothing. */
+ break;
default:
assert(0);
}
diff --git a/register_address.cpp b/register_address.cpp
index afdb149..9f40c6c 100644
--- a/register_address.cpp
+++ b/register_address.cpp
@@ -82,6 +82,11 @@ register_address::to_int()
case SWIZZLE_Y: swz_val = 1; break;
case SWIZZLE_Z: swz_val = 2; break;
case SWIZZLE_W: swz_val = 3; break;
+ case SWIZZLE_EMPTY:
+ if (m_type == REGISTER_TYPE_NONE) {
+ return 0;
+ }
+ /* Fall through */
default:
std::cerr << __FUNCTION__ << ": unhandled swizzle: " <<
m_swizzle << "\n";