clang-format the src/Reactor directory

Bug: b/144825072

Change-Id: I1f14af4446536c760d11d32aa03edb5f497e75e4
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/39656
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
Tested-by: Ben Clayton <bclayton@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/Reactor/CPUID.cpp b/src/Reactor/CPUID.cpp
index f3b9024..12637a7 100644
--- a/src/Reactor/CPUID.cpp
+++ b/src/Reactor/CPUID.cpp
@@ -15,16 +15,16 @@
 #include "CPUID.hpp"
 
 #if defined(_WIN32)
-	#ifndef WIN32_LEAN_AND_MEAN
-		#define WIN32_LEAN_AND_MEAN
-	#endif
-	#include <windows.h>
-	#include <intrin.h>
-	#include <float.h>
+#	ifndef WIN32_LEAN_AND_MEAN
+#		define WIN32_LEAN_AND_MEAN
+#	endif
+#	include <windows.h>
+#	include <intrin.h>
+#	include <float.h>
 #else
-	#include <unistd.h>
-	#include <sched.h>
-	#include <sys/types.h>
+#	include <unistd.h>
+#	include <sched.h>
+#	include <sys/types.h>
 #endif
 
 namespace rr {
@@ -162,18 +162,20 @@
 
 static void cpuid(int registers[4], int info)
 {
-	#if defined(__i386__) || defined(__x86_64__)
-		#if defined(_WIN32)
-			__cpuid(registers, info);
-		#else
-			__asm volatile("cpuid": "=a" (registers[0]), "=b" (registers[1]), "=c" (registers[2]), "=d" (registers[3]): "a" (info));
-		#endif
-	#else
-		registers[0] = 0;
-		registers[1] = 0;
-		registers[2] = 0;
-		registers[3] = 0;
-	#endif
+#if defined(__i386__) || defined(__x86_64__)
+#	if defined(_WIN32)
+	__cpuid(registers, info);
+#	else
+	__asm volatile("cpuid"
+	               : "=a"(registers[0]), "=b"(registers[1]), "=c"(registers[2]), "=d"(registers[3])
+	               : "a"(info));
+#	endif
+#else
+	registers[0] = 0;
+	registers[1] = 0;
+	registers[2] = 0;
+	registers[3] = 0;
+#endif
 }
 
 bool CPUID::detectMMX()
diff --git a/src/Reactor/CPUID.hpp b/src/Reactor/CPUID.hpp
index 577e237..a97c6d4 100644
--- a/src/Reactor/CPUID.hpp
+++ b/src/Reactor/CPUID.hpp
@@ -18,11 +18,11 @@
 namespace rr {
 
 #if !defined(__i386__) && defined(_M_IX86)
-	#define __i386__ 1
+#	define __i386__ 1
 #endif
 
-#if !defined(__x86_64__) && (defined(_M_AMD64) || defined (_M_X64))
-	#define __x86_64__ 1
+#if !defined(__x86_64__) && (defined(_M_AMD64) || defined(_M_X64))
+#	define __x86_64__ 1
 #endif
 
 class CPUID
@@ -30,7 +30,7 @@
 public:
 	static bool supportsMMX();
 	static bool supportsCMOV();
-	static bool supportsMMX2();   // MMX instructions added by SSE: pshufw, pmulhuw, pmovmskb, pavgw/b, pextrw, pinsrw, pmaxsw/ub, etc.
+	static bool supportsMMX2();  // MMX instructions added by SSE: pshufw, pmulhuw, pmovmskb, pavgw/b, pextrw, pinsrw, pmaxsw/ub, etc.
 	static bool supportsSSE();
 	static bool supportsSSE2();
 	static bool supportsSSE3();
@@ -89,7 +89,7 @@
 
 inline bool CPUID::supportsMMX2()
 {
-	return supportsSSE();   // Coincides with 64-bit integer vector instructions supported by SSE
+	return supportsSSE();  // Coincides with 64-bit integer vector instructions supported by SSE
 }
 
 inline bool CPUID::supportsSSE()
@@ -119,4 +119,4 @@
 
 }  // namespace rr
 
-#endif   // rr_CPUID_hpp
+#endif  // rr_CPUID_hpp
diff --git a/src/Reactor/Coroutine.hpp b/src/Reactor/Coroutine.hpp
index 8bd601e..92ad2e3 100644
--- a/src/Reactor/Coroutine.hpp
+++ b/src/Reactor/Coroutine.hpp
@@ -17,7 +17,7 @@
 #include <memory>
 
 #ifndef rr_ReactorCoroutine_hpp
-#define rr_ReactorCoroutine_hpp
+#	define rr_ReactorCoroutine_hpp
 
 namespace rr {
 
@@ -26,17 +26,19 @@
 {
 protected:
 	StreamBase(const std::shared_ptr<Routine> &routine, Nucleus::CoroutineHandle handle)
-		: routine(routine), handle(handle) {}
+	    : routine(routine)
+	    , handle(handle)
+	{}
 
 	~StreamBase()
 	{
-		auto pfn = (Nucleus::CoroutineDestroy*)routine->getEntry(Nucleus::CoroutineEntryDestroy);
+		auto pfn = (Nucleus::CoroutineDestroy *)routine->getEntry(Nucleus::CoroutineEntryDestroy);
 		pfn(handle);
 	}
 
-	bool await(void* out)
+	bool await(void *out)
 	{
-		auto pfn = (Nucleus::CoroutineAwait*)routine->getEntry(Nucleus::CoroutineEntryAwait);
+		auto pfn = (Nucleus::CoroutineAwait *)routine->getEntry(Nucleus::CoroutineEntryAwait);
 		return pfn(handle, out);
 	}
 
@@ -53,13 +55,14 @@
 {
 public:
 	inline Stream(const std::shared_ptr<Routine> &routine, Nucleus::CoroutineHandle handle)
-		: StreamBase(routine, handle) {}
+	    : StreamBase(routine, handle)
+	{}
 
 	// await() retrieves the next yielded value from the coroutine.
 	// Returns true if the coroutine yieled a value and out was assigned a
 	// new value. If await() returns false, the coroutine has finished
 	// execution and await() will return false for all future calls.
-	inline bool await(T& out) { return StreamBase::await(&out); }
+	inline bool await(T &out) { return StreamBase::await(&out); }
 };
 
 template<typename FunctionType>
@@ -143,7 +146,7 @@
 protected:
 	std::unique_ptr<Nucleus> core;
 	std::shared_ptr<Routine> routine;
-	std::vector<Type*> arguments;
+	std::vector<Type *> arguments;
 };
 
 template<typename Return, typename... Arguments>
@@ -151,7 +154,7 @@
 {
 	core.reset(new Nucleus());
 
-	std::vector<Type*> types = {CToReactorT<Arguments>::getType()...};
+	std::vector<Type *> types = { CToReactorT<Arguments>::getType()... };
 	for(auto type : types)
 	{
 		if(type != Void::getType())
@@ -180,20 +183,23 @@
 	finalize();
 
 	using Sig = Nucleus::CoroutineBegin<Arguments...>;
-	auto pfn = (Sig*)routine->getEntry(Nucleus::CoroutineEntryBegin);
+	auto pfn = (Sig *)routine->getEntry(Nucleus::CoroutineEntryBegin);
 	auto handle = pfn(args...);
 	return std::unique_ptr<Stream<Return>>(new Stream<Return>(routine, handle));
 }
 
-#ifdef Yield // Defined in WinBase.h
-#undef Yield
-#endif
+#	ifdef Yield  // Defined in WinBase.h
+#		undef Yield
+#	endif
 
 // Suspends execution of the coroutine and yields val to the caller.
 // Execution of the coroutine will resume after val is retrieved.
 template<typename T>
-inline void Yield(const T &val) { Nucleus::yield(ValueOf(val)); }
+inline void Yield(const T &val)
+{
+	Nucleus::yield(ValueOf(val));
+}
 
-} // namespace rr
+}  // namespace rr
 
-#endif // rr_ReactorCoroutine_hpp
\ No newline at end of file
+#endif  // rr_ReactorCoroutine_hpp
\ No newline at end of file
diff --git a/src/Reactor/Debug.cpp b/src/Reactor/Debug.cpp
index df8e8fc..65a894f 100644
--- a/src/Reactor/Debug.cpp
+++ b/src/Reactor/Debug.cpp
@@ -14,8 +14,8 @@
 
 #include "Debug.hpp"
 
-#include <string>
 #include <stdarg.h>
+#include <string>
 
 namespace rr {
 
diff --git a/src/Reactor/Debug.hpp b/src/Reactor/Debug.hpp
index da8a48d..c0f3232 100644
--- a/src/Reactor/Debug.hpp
+++ b/src/Reactor/Debug.hpp
@@ -17,18 +17,18 @@
 #ifndef rr_DEBUG_H_
 #define rr_DEBUG_H_
 
-#include <stdlib.h>
 #include <assert.h>
 #include <stdio.h>
+#include <stdlib.h>
 
 #if !defined(TRACE_OUTPUT_FILE)
-#define TRACE_OUTPUT_FILE "debug.txt"
+#	define TRACE_OUTPUT_FILE "debug.txt"
 #endif
 
 #if defined(__GNUC__) || defined(__clang__)
-#define CHECK_PRINTF_ARGS __attribute__((format(printf, 1, 2)))
+#	define CHECK_PRINTF_ARGS __attribute__((format(printf, 1, 2)))
 #else
-#define CHECK_PRINTF_ARGS
+#	define CHECK_PRINTF_ARGS
 #endif
 
 namespace rr {
@@ -49,9 +49,9 @@
 // A macro to output a trace of a function call and its arguments to the
 // debugging log. Disabled if RR_DISABLE_TRACE is defined.
 #if defined(RR_DISABLE_TRACE)
-#define TRACE(message, ...) (void(0))
+#	define TRACE(message, ...) (void(0))
 #else
-#define TRACE(message, ...) rr::trace("%s:%d TRACE: " message "\n", __FILE__, __LINE__, ##__VA_ARGS__)
+#	define TRACE(message, ...) rr::trace("%s:%d TRACE: " message "\n", __FILE__, __LINE__, ##__VA_ARGS__)
 #endif
 
 // A macro to print a warning message to the debugging log and stderr to denote
@@ -75,26 +75,34 @@
 //   WARN() in release builds (NDEBUG && !DCHECK_ALWAYS_ON)
 #undef DABORT
 #if !defined(NDEBUG) || defined(DCHECK_ALWAYS_ON)
-#define DABORT(message, ...) ABORT(message, ##__VA_ARGS__)
+#	define DABORT(message, ...) ABORT(message, ##__VA_ARGS__)
 #else
-#define DABORT(message, ...) WARN(message, ##__VA_ARGS__)
+#	define DABORT(message, ...) WARN(message, ##__VA_ARGS__)
 #endif
 
 // A macro asserting a condition.
 // If the condition fails, the condition and message is passed to DABORT().
 #undef ASSERT_MSG
-#define ASSERT_MSG(expression, format, ...) do { \
-	if(!(expression)) { \
-		DABORT("ASSERT(%s): " format "\n", #expression, ##__VA_ARGS__); \
-	} } while(0)
+#define ASSERT_MSG(expression, format, ...)                                 \
+	do                                                                      \
+	{                                                                       \
+		if(!(expression))                                                   \
+		{                                                                   \
+			DABORT("ASSERT(%s): " format "\n", #expression, ##__VA_ARGS__); \
+		}                                                                   \
+	} while(0)
 
 // A macro asserting a condition.
 // If the condition fails, the condition is passed to DABORT().
 #undef ASSERT
-#define ASSERT(expression) do { \
-	if(!(expression)) { \
-		DABORT("ASSERT(%s)\n", #expression); \
-	} } while(0)
+#define ASSERT(expression)                       \
+	do                                           \
+	{                                            \
+		if(!(expression))                        \
+		{                                        \
+			DABORT("ASSERT(%s)\n", #expression); \
+		}                                        \
+	} while(0)
 
 // A macro to indicate unimplemented functionality.
 #undef UNIMPLEMENTED
@@ -107,12 +115,16 @@
 // A macro asserting a condition and performing a return.
 #undef ASSERT_OR_RETURN
 #if !defined(NDEBUG) || defined(DCHECK_ALWAYS_ON)
-#define ASSERT_OR_RETURN(expression) ASSERT(expression)
+#	define ASSERT_OR_RETURN(expression) ASSERT(expression)
 #else
-#define ASSERT_OR_RETURN(expression) do { \
-	if(!(expression)) { \
-		return; \
-	} } while(0)
+#	define ASSERT_OR_RETURN(expression) \
+		do                               \
+		{                                \
+			if(!(expression))            \
+			{                            \
+				return;                  \
+			}                            \
+		} while(0)
 #endif
 
-#endif   // rr_DEBUG_H_
+#endif  // rr_DEBUG_H_
diff --git a/src/Reactor/DebugAndroid.cpp b/src/Reactor/DebugAndroid.cpp
index 2a6569c..5194cc3 100644
--- a/src/Reactor/DebugAndroid.cpp
+++ b/src/Reactor/DebugAndroid.cpp
@@ -14,16 +14,16 @@
 
 #include "DebugAndroid.hpp"
 
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/types.h>
 #include <cutils/properties.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <unistd.h>
 
 void AndroidEnterDebugger()
 {
 	ALOGE(__FUNCTION__);
 #ifndef NDEBUG
-	static volatile int * const makefault = nullptr;
+	static volatile int *const makefault = nullptr;
 	char value[PROPERTY_VALUE_MAX];
 	property_get("debug.db.uid", value, "-1");
 	int debug_uid = atoi(value);
@@ -31,7 +31,8 @@
 	{
 		ALOGE("Waiting for debugger: gdbserver :${PORT} --attach %u. Look for thread %u", getpid(), gettid());
 		volatile int waiting = 1;
-		while(waiting) {
+		while(waiting)
+		{
 			sleep(1);
 		}
 	}
diff --git a/src/Reactor/DebugAndroid.hpp b/src/Reactor/DebugAndroid.hpp
index bb7451e..a8cbc9f 100644
--- a/src/Reactor/DebugAndroid.hpp
+++ b/src/Reactor/DebugAndroid.hpp
@@ -16,11 +16,11 @@
 #define DebugAndroid_hpp
 
 #if ANDROID_PLATFORM_SDK_VERSION < 27
-#include <cutils/log.h>
+#	include <cutils/log.h>
 #elif ANDROID_PLATFORM_SDK_VERSION >= 27
-#include <log/log.h>
+#	include <log/log.h>
 #else
-#error "ANDROID_PLATFORM_SDK_VERSION is not defined"
+#	error "ANDROID_PLATFORM_SDK_VERSION is not defined"
 #endif
 
 #include <cassert>
@@ -48,52 +48,61 @@
  */
 void AndroidEnterDebugger();
 
-#define ASSERT(E) do { \
-		if(!(E)) { \
-			ALOGE("badness: assertion_failed %s in %s at %s:%d", #E,	\
-				  __FUNCTION__, __FILE__, __LINE__);					\
-			AndroidEnterDebugger();										\
-		}																\
+#define ASSERT(E)                                                    \
+	do                                                               \
+	{                                                                \
+		if(!(E))                                                     \
+		{                                                            \
+			ALOGE("badness: assertion_failed %s in %s at %s:%d", #E, \
+			      __FUNCTION__, __FILE__, __LINE__);                 \
+			AndroidEnterDebugger();                                  \
+		}                                                            \
 	} while(0)
 
 #undef assert
 #define assert(E) ASSERT(E)
 
-#define ERR(format, ...)												\
-	do {																\
+#define ERR(format, ...)                                                    \
+	do                                                                      \
+	{                                                                       \
 		ALOGE("badness: err %s %s:%d (" format ")", __FUNCTION__, __FILE__, \
-			  __LINE__, ##__VA_ARGS__);									\
-		AndroidEnterDebugger();											\
+		      __LINE__, ##__VA_ARGS__);                                     \
+		AndroidEnterDebugger();                                             \
 	} while(0)
 
-#define FIXME(format, ...)												\
-	do {																\
+#define FIXME(format, ...)                                                    \
+	do                                                                        \
+	{                                                                         \
 		ALOGE("badness: fixme %s %s:%d (" format ")", __FUNCTION__, __FILE__, \
-			  __LINE__, ##__VA_ARGS__);									\
-		AndroidEnterDebugger();											\
+		      __LINE__, ##__VA_ARGS__);                                       \
+		AndroidEnterDebugger();                                               \
 	} while(0)
 
 // TODO: Handle __VA_ARGS__ (can be empty)
-#define UNIMPLEMENTED(...) do {						\
-		ALOGE("badness: unimplemented: %s %s:%d",	\
-			  __FUNCTION__, __FILE__, __LINE__);	\
-		AndroidEnterDebugger();						\
+#define UNIMPLEMENTED(...)                        \
+	do                                            \
+	{                                             \
+		ALOGE("badness: unimplemented: %s %s:%d", \
+		      __FUNCTION__, __FILE__, __LINE__);  \
+		AndroidEnterDebugger();                   \
 	} while(0)
 
-#define UNREACHABLE(value) do {                                         \
+#define UNREACHABLE(value)                                           \
+	do                                                               \
+	{                                                                \
 		ALOGE("badness: unreachable case reached: %s %s:%d. %s: %d", \
-			  __FUNCTION__, __FILE__, __LINE__, #value, value);			\
-		AndroidEnterDebugger();                                         \
+		      __FUNCTION__, __FILE__, __LINE__, #value, value);      \
+		AndroidEnterDebugger();                                      \
 	} while(0)
 
 #ifndef NDEBUG
-	#define TRACE(format, ...)								   \
+#	define TRACE(format, ...)                                 \
 		ALOGV("%s %s:%d (" format ")", __FUNCTION__, __FILE__, \
-			  __LINE__, ##__VA_ARGS__)
+		      __LINE__, ##__VA_ARGS__)
 #else
-	#define TRACE(...) ((void)0)
+#	define TRACE(...) ((void)0)
 #endif
 
 void trace(const char *format, ...);
 
-#endif   // DebugAndroid_hpp
+#endif  // DebugAndroid_hpp
diff --git a/src/Reactor/EmulatedReactor.cpp b/src/Reactor/EmulatedReactor.cpp
index 3740224..6fb7385 100644
--- a/src/Reactor/EmulatedReactor.cpp
+++ b/src/Reactor/EmulatedReactor.cpp
@@ -7,18 +7,18 @@
 namespace rr {
 namespace {
 
-template <typename T>
+template<typename T>
 struct UnderlyingType
 {
 	using Type = typename decltype(rr::Extract(std::declval<RValue<T>>(), 0))::rvalue_underlying_type;
 };
 
-template <typename T>
+template<typename T>
 using UnderlyingTypeT = typename UnderlyingType<T>::Type;
 
 // Call single arg function on a vector type
-template <typename Func, typename T>
-RValue<T> call4(Func func, const RValue<T>& x)
+template<typename Func, typename T>
+RValue<T> call4(Func func, const RValue<T> &x)
 {
 	T result;
 	result = Insert(result, Call(func, Extract(x, 0)), 0);
@@ -29,8 +29,8 @@
 }
 
 // Call two arg function on a vector type
-template <typename Func, typename T>
-RValue<T> call4(Func func, const RValue<T>& x, const RValue<T>& y)
+template<typename Func, typename T>
+RValue<T> call4(Func func, const RValue<T> &x, const RValue<T> &y)
 {
 	T result;
 	result = Insert(result, Call(func, Extract(x, 0), Extract(y, 0)), 0);
@@ -40,8 +40,8 @@
 	return result;
 }
 
-template <typename T, typename EL = UnderlyingTypeT<T>>
-void gather(T& out, RValue<Pointer<EL>> base, RValue<Int4> offsets, RValue<Int4> mask, unsigned int alignment, bool zeroMaskedLanes)
+template<typename T, typename EL = UnderlyingTypeT<T>>
+void gather(T &out, RValue<Pointer<EL>> base, RValue<Int4> offsets, RValue<Int4> mask, unsigned int alignment, bool zeroMaskedLanes)
 {
 	constexpr bool atomic = false;
 	constexpr std::memory_order order = std::memory_order_relaxed;
@@ -64,7 +64,7 @@
 	}
 }
 
-template <typename T, typename EL = UnderlyingTypeT<T>>
+template<typename T, typename EL = UnderlyingTypeT<T>>
 void scatter(RValue<Pointer<EL>> base, RValue<T> val, RValue<Int4> offsets, RValue<Int4> mask, unsigned int alignment)
 {
 	constexpr bool atomic = false;
diff --git a/src/Reactor/ExecutableMemory.cpp b/src/Reactor/ExecutableMemory.cpp
index b6cee9c..3fec84d 100644
--- a/src/Reactor/ExecutableMemory.cpp
+++ b/src/Reactor/ExecutableMemory.cpp
@@ -17,20 +17,20 @@
 #include "Debug.hpp"
 
 #if defined(_WIN32)
-	#ifndef WIN32_LEAN_AND_MEAN
-		#define WIN32_LEAN_AND_MEAN
-	#endif
-	#include <windows.h>
-	#include <intrin.h>
+#	ifndef WIN32_LEAN_AND_MEAN
+#		define WIN32_LEAN_AND_MEAN
+#	endif
+#	include <windows.h>
+#	include <intrin.h>
 #elif defined(__Fuchsia__)
-	#include <unistd.h>
-	#include <zircon/process.h>
-	#include <zircon/syscalls.h>
+#	include <unistd.h>
+#	include <zircon/process.h>
+#	include <zircon/syscalls.h>
 #else
-	#include <errno.h>
-	#include <sys/mman.h>
-	#include <stdlib.h>
-	#include <unistd.h>
+#	include <errno.h>
+#	include <sys/mman.h>
+#	include <stdlib.h>
+#	include <unistd.h>
 #endif
 
 #include <memory.h>
@@ -38,8 +38,8 @@
 #undef allocate
 #undef deallocate
 
-#if(defined(__i386__) || defined(_M_IX86) || defined(__x86_64__) || defined (_M_X64)) && !defined(__x86__)
-#define __x86__
+#if(defined(__i386__) || defined(_M_IX86) || defined(__x86_64__) || defined(_M_X64)) && !defined(__x86__)
+#	define __x86__
 #endif
 
 namespace rr {
@@ -47,61 +47,62 @@
 
 struct Allocation
 {
-//	size_t bytes;
+	//	size_t bytes;
 	unsigned char *block;
 };
 
 void *allocateRaw(size_t bytes, size_t alignment)
 {
-	ASSERT((alignment & (alignment - 1)) == 0);   // Power of 2 alignment.
+	ASSERT((alignment & (alignment - 1)) == 0);  // Power of 2 alignment.
 
-	#if defined(LINUX_ENABLE_NAMED_MMAP)
-		if(alignment < sizeof(void*))
+#if defined(LINUX_ENABLE_NAMED_MMAP)
+	if(alignment < sizeof(void *))
+	{
+		return malloc(bytes);
+	}
+	else
+	{
+		void *allocation;
+		int result = posix_memalign(&allocation, alignment, bytes);
+		if(result != 0)
 		{
-			return malloc(bytes);
+			errno = result;
+			allocation = nullptr;
 		}
-		else
-		{
-			void *allocation;
-			int result = posix_memalign(&allocation, alignment, bytes);
-			if(result != 0)
-			{
-				errno = result;
-				allocation = nullptr;
-			}
-			return allocation;
-		}
-	#else
-		unsigned char *block = new unsigned char[bytes + sizeof(Allocation) + alignment];
-		unsigned char *aligned = nullptr;
+		return allocation;
+	}
+#else
+	unsigned char *block = new unsigned char[bytes + sizeof(Allocation) + alignment];
+	unsigned char *aligned = nullptr;
 
-		if(block)
-		{
-			aligned = (unsigned char*)((uintptr_t)(block + sizeof(Allocation) + alignment - 1) & -(intptr_t)alignment);
-			Allocation *allocation = (Allocation*)(aligned - sizeof(Allocation));
+	if(block)
+	{
+		aligned = (unsigned char *)((uintptr_t)(block + sizeof(Allocation) + alignment - 1) & -(intptr_t)alignment);
+		Allocation *allocation = (Allocation *)(aligned - sizeof(Allocation));
 
 		//	allocation->bytes = bytes;
-			allocation->block = block;
-		}
+		allocation->block = block;
+	}
 
-		return aligned;
-	#endif
+	return aligned;
+#endif
 }
 
 #if defined(_WIN32)
 DWORD permissionsToProtectMode(int permissions)
 {
-	switch(permissions) {
+	switch(permissions)
+	{
 		case PERMISSION_READ:
-		  return PAGE_READONLY;
+			return PAGE_READONLY;
 		case PERMISSION_EXECUTE:
-		  return PAGE_EXECUTE;
+			return PAGE_EXECUTE;
 		case PERMISSION_READ | PERMISSION_WRITE:
-		  return PAGE_READWRITE;
+			return PAGE_READWRITE;
 		case PERMISSION_READ | PERMISSION_EXECUTE:
-		  return PAGE_EXECUTE_READ;
+			return PAGE_EXECUTE_READ;
 		case PERMISSION_READ | PERMISSION_WRITE | PERMISSION_EXECUTE:
-		  return PAGE_EXECUTE_READWRITE;
+			return PAGE_EXECUTE_READWRITE;
 	}
 	return PAGE_NOACCESS;
 }
@@ -131,26 +132,26 @@
 // Create a file descriptor for anonymous memory with the given
 // name. Returns -1 on failure.
 // TODO: remove once libc wrapper exists.
-int memfd_create(const char* name, unsigned int flags)
+int memfd_create(const char *name, unsigned int flags)
 {
-	#if __aarch64__
-	#define __NR_memfd_create 279
-	#elif __arm__
-	#define __NR_memfd_create 279
-	#elif __powerpc64__
-	#define __NR_memfd_create 360
-	#elif __i386__
-	#define __NR_memfd_create 356
-	#elif __x86_64__
-	#define __NR_memfd_create 319
-	#endif /* __NR_memfd_create__ */
-	#ifdef __NR_memfd_create
-		// In the event of no system call this returns -1 with errno set
-		// as ENOSYS.
-		return syscall(__NR_memfd_create, name, flags);
-	#else
-		return -1;
-	#endif
+#	if __aarch64__
+#		define __NR_memfd_create 279
+#	elif __arm__
+#		define __NR_memfd_create 279
+#	elif __powerpc64__
+#		define __NR_memfd_create 360
+#	elif __i386__
+#		define __NR_memfd_create 356
+#	elif __x86_64__
+#		define __NR_memfd_create 319
+#	endif /* __NR_memfd_create__ */
+#	ifdef __NR_memfd_create
+	// In the event of no system call this returns -1 with errno set
+	// as ENOSYS.
+	return syscall(__NR_memfd_create, name, flags);
+#	else
+	return -1;
+#	endif
 }
 
 // Returns a file descriptor for use with an anonymous mmap, if
@@ -175,7 +176,8 @@
 #endif  // defined(LINUX_ENABLE_NAMED_MMAP)
 
 #if defined(__Fuchsia__)
-zx_vm_option_t permissionsToZxVmOptions(int permissions) {
+zx_vm_option_t permissionsToZxVmOptions(int permissions)
+{
 	zx_vm_option_t result = 0;
 	if(permissions & PERMISSION_READ)
 	{
@@ -201,13 +203,13 @@
 
 	if(pageSize == 0)
 	{
-		#if defined(_WIN32)
-			SYSTEM_INFO systemInfo;
-			GetSystemInfo(&systemInfo);
-			pageSize = systemInfo.dwPageSize;
-		#else
-			pageSize = sysconf(_SC_PAGESIZE);
-		#endif
+#if defined(_WIN32)
+		SYSTEM_INFO systemInfo;
+		GetSystemInfo(&systemInfo);
+		pageSize = systemInfo.dwPageSize;
+#else
+		pageSize = sysconf(_SC_PAGESIZE);
+#endif
 	}
 
 	return pageSize;
@@ -227,23 +229,23 @@
 
 void deallocate(void *memory)
 {
-	#if defined(LINUX_ENABLE_NAMED_MMAP)
-		free(memory);
-	#else
-		if(memory)
-		{
-			unsigned char *aligned = (unsigned char*)memory;
-			Allocation *allocation = (Allocation*)(aligned - sizeof(Allocation));
+#if defined(LINUX_ENABLE_NAMED_MMAP)
+	free(memory);
+#else
+	if(memory)
+	{
+		unsigned char *aligned = (unsigned char *)memory;
+		Allocation *allocation = (Allocation *)(aligned - sizeof(Allocation));
 
-			delete[] allocation->block;
-		}
-	#endif
+		delete[] allocation->block;
+	}
+#endif
 }
 
 // Rounds |x| up to a multiple of |m|, where |m| is a power of 2.
 inline uintptr_t roundUp(uintptr_t x, uintptr_t m)
 {
-	ASSERT(m > 0 && (m & (m - 1)) == 0); // |m| must be a power of 2.
+	ASSERT(m > 0 && (m & (m - 1)) == 0);  // |m| must be a power of 2.
 	return (x + m - 1) & ~(m - 1);
 }
 
@@ -253,74 +255,76 @@
 	size_t length = roundUp(bytes, pageSize);
 	void *mapping = nullptr;
 
-	#if defined(LINUX_ENABLE_NAMED_MMAP)
-		int flags = MAP_PRIVATE;
+#if defined(LINUX_ENABLE_NAMED_MMAP)
+	int flags = MAP_PRIVATE;
 
-		// Try to name the memory region for the executable code,
-		// to aid profilers.
-		int anonFd = anonymousFd();
-		if(anonFd == -1)
-		{
-			flags |= MAP_ANONYMOUS;
-		}
-		else
-		{
-			ensureAnonFileSize(anonFd, length);
-		}
+	// Try to name the memory region for the executable code,
+	// to aid profilers.
+	int anonFd = anonymousFd();
+	if(anonFd == -1)
+	{
+		flags |= MAP_ANONYMOUS;
+	}
+	else
+	{
+		ensureAnonFileSize(anonFd, length);
+	}
 
-		mapping = mmap(
-			nullptr, length, permissionsToMmapProt(permissions), flags, anonFd, 0);
+	mapping = mmap(
+	    nullptr, length, permissionsToMmapProt(permissions), flags, anonFd, 0);
 
-		if(mapping == MAP_FAILED)
-		{
-			mapping = nullptr;
-		}
-	#elif defined(__Fuchsia__)
-		zx_handle_t vmo;
-		if(zx_vmo_create(length, 0, &vmo) != ZX_OK) {
-			return nullptr;
-		}
-		if(need_exec &&
-		    zx_vmo_replace_as_executable(vmo, ZX_HANDLE_INVALID, &vmo) != ZX_OK)
-		{
-			return nullptr;
-		}
-		zx_vaddr_t reservation;
-		zx_status_t status = zx_vmar_map(
-			zx_vmar_root_self(), permissionsToZxVmOptions(permissions), 0, vmo,
-			0, length, &reservation);
-		zx_handle_close(vmo);
-		if(status != ZX_OK) {
-			return nullptr;
-		}
+	if(mapping == MAP_FAILED)
+	{
+		mapping = nullptr;
+	}
+#elif defined(__Fuchsia__)
+	zx_handle_t vmo;
+	if(zx_vmo_create(length, 0, &vmo) != ZX_OK)
+	{
+		return nullptr;
+	}
+	if(need_exec &&
+	   zx_vmo_replace_as_executable(vmo, ZX_HANDLE_INVALID, &vmo) != ZX_OK)
+	{
+		return nullptr;
+	}
+	zx_vaddr_t reservation;
+	zx_status_t status = zx_vmar_map(
+	    zx_vmar_root_self(), permissionsToZxVmOptions(permissions), 0, vmo,
+	    0, length, &reservation);
+	zx_handle_close(vmo);
+	if(status != ZX_OK)
+	{
+		return nullptr;
+	}
 
-		// zx_vmar_map() returns page-aligned address.
-		ASSERT(roundUp(reservation, pageSize) == reservation);
+	// zx_vmar_map() returns page-aligned address.
+	ASSERT(roundUp(reservation, pageSize) == reservation);
 
-		mapping = reinterpret_cast<void*>(reservation);
-	#elif defined(__APPLE__)
-		int prot = permissionsToMmapProt(permissions);
-		int flags = MAP_PRIVATE | MAP_ANONYMOUS;
-		// On macOS 10.14 and higher, executables that are code signed with the
-		// "runtime" option cannot execute writable memory by default. They can opt
-		// into this capability by specifying the "com.apple.security.cs.allow-jit"
-		// code signing entitlement and allocating the region with the MAP_JIT flag.
-		mapping = mmap(nullptr, length, prot, flags | MAP_JIT, -1, 0);
+	mapping = reinterpret_cast<void *>(reservation);
+#elif defined(__APPLE__)
+	int prot = permissionsToMmapProt(permissions);
+	int flags = MAP_PRIVATE | MAP_ANONYMOUS;
+	// On macOS 10.14 and higher, executables that are code signed with the
+	// "runtime" option cannot execute writable memory by default. They can opt
+	// into this capability by specifying the "com.apple.security.cs.allow-jit"
+	// code signing entitlement and allocating the region with the MAP_JIT flag.
+	mapping = mmap(nullptr, length, prot, flags | MAP_JIT, -1, 0);
 
-		if(mapping == MAP_FAILED)
-		{
-			// Retry without MAP_JIT (for older macOS versions).
-			mapping = mmap(nullptr, length, prot, flags, -1, 0);
-		}
+	if(mapping == MAP_FAILED)
+	{
+		// Retry without MAP_JIT (for older macOS versions).
+		mapping = mmap(nullptr, length, prot, flags, -1, 0);
+	}
 
-		if(mapping == MAP_FAILED)
-		{
-			mapping = nullptr;
-		}
-	#else
-		mapping = allocate(length, pageSize);
-		protectMemoryPages(mapping, length, permissions);
-	#endif
+	if(mapping == MAP_FAILED)
+	{
+		mapping = nullptr;
+	}
+#else
+	mapping = allocate(length, pageSize);
+	protectMemoryPages(mapping, length, permissions);
+#endif
 
 	return mapping;
 }
@@ -331,48 +335,48 @@
 		return;
 	bytes = roundUp(bytes, memoryPageSize());
 
-	#if defined(_WIN32)
-		unsigned long oldProtection;
-		BOOL result =
-			VirtualProtect(memory, bytes, permissionsToProtectMode(permissions),
-			               &oldProtection);
-		ASSERT(result);
-	#elif defined(__Fuchsia__)
-		zx_status_t status = zx_vmar_protect(
-			zx_vmar_root_self(), permissionsToZxVmOptions(permissions),
-			reinterpret_cast<zx_vaddr_t>(memory), bytes);
-		ASSERT(status == ZX_OK);
-	#else
-		int result =
-			mprotect(memory, bytes, permissionsToMmapProt(permissions));
-		ASSERT(result == 0);
-	#endif
+#if defined(_WIN32)
+	unsigned long oldProtection;
+	BOOL result =
+	    VirtualProtect(memory, bytes, permissionsToProtectMode(permissions),
+	                   &oldProtection);
+	ASSERT(result);
+#elif defined(__Fuchsia__)
+	zx_status_t status = zx_vmar_protect(
+	    zx_vmar_root_self(), permissionsToZxVmOptions(permissions),
+	    reinterpret_cast<zx_vaddr_t>(memory), bytes);
+	ASSERT(status == ZX_OK);
+#else
+	int result =
+	    mprotect(memory, bytes, permissionsToMmapProt(permissions));
+	ASSERT(result == 0);
+#endif
 }
 
 void deallocateMemoryPages(void *memory, size_t bytes)
 {
-	#if defined(_WIN32)
-		unsigned long oldProtection;
-		BOOL result =
-			VirtualProtect(memory, bytes, PAGE_READWRITE, &oldProtection);
-		ASSERT(result);
-		deallocate(memory);
-	#elif defined(LINUX_ENABLE_NAMED_MMAP) || defined(__APPLE__)
-		size_t pageSize = memoryPageSize();
-		size_t length = (bytes + pageSize - 1) & ~(pageSize - 1);
-		int result = munmap(memory, length);
-		ASSERT(result == 0);
-	#elif defined(__Fuchsia__)
-		size_t pageSize = memoryPageSize();
-		size_t length = roundUp(bytes, pageSize);
-		zx_status_t status =  zx_vmar_unmap(
-			zx_vmar_root_self(), reinterpret_cast<zx_vaddr_t>(memory), length);
-		ASSERT(status == ZX_OK);
-	#else
-		int result = mprotect(memory, bytes, PROT_READ | PROT_WRITE);
-		ASSERT(result == 0);
-		deallocate(memory);
-	#endif
+#if defined(_WIN32)
+	unsigned long oldProtection;
+	BOOL result =
+	    VirtualProtect(memory, bytes, PAGE_READWRITE, &oldProtection);
+	ASSERT(result);
+	deallocate(memory);
+#elif defined(LINUX_ENABLE_NAMED_MMAP) || defined(__APPLE__)
+	size_t pageSize = memoryPageSize();
+	size_t length = (bytes + pageSize - 1) & ~(pageSize - 1);
+	int result = munmap(memory, length);
+	ASSERT(result == 0);
+#elif defined(__Fuchsia__)
+	size_t pageSize = memoryPageSize();
+	size_t length = roundUp(bytes, pageSize);
+	zx_status_t status = zx_vmar_unmap(
+	    zx_vmar_root_self(), reinterpret_cast<zx_vaddr_t>(memory), length);
+	ASSERT(status == ZX_OK);
+#else
+	int result = mprotect(memory, bytes, PROT_READ | PROT_WRITE);
+	ASSERT(result == 0);
+	deallocate(memory);
+#endif
 }
 
 }  // namespace rr
diff --git a/src/Reactor/ExecutableMemory.hpp b/src/Reactor/ExecutableMemory.hpp
index b0ca05e..dbbe32a 100644
--- a/src/Reactor/ExecutableMemory.hpp
+++ b/src/Reactor/ExecutableMemory.hpp
@@ -23,7 +23,8 @@
 
 size_t memoryPageSize();
 
-enum MemoryPermission  {
+enum MemoryPermission
+{
 	PERMISSION_READ = 1,
 	PERMISSION_WRITE = 2,
 	PERMISSION_EXECUTE = 4,
@@ -31,7 +32,7 @@
 
 // Allocates memory with the specified permissions. If |need_exec| is true then
 // the allocate memory can be made marked executable using protectMemoryPages().
-void* allocateMemoryPages(size_t bytes, int permissions, bool need_exec);
+void *allocateMemoryPages(size_t bytes, int permissions, bool need_exec);
 
 // Sets permissions for memory allocated with allocateMemoryPages().
 void protectMemoryPages(void *memory, size_t bytes, int permissions);
@@ -58,7 +59,9 @@
 class unaligned_ref
 {
 public:
-	explicit unaligned_ref(void *ptr) : ptr((P*)ptr) {}
+	explicit unaligned_ref(void *ptr)
+	    : ptr((P *)ptr)
+	{}
 
 	template<typename V>
 	P operator=(V value)
@@ -69,7 +72,7 @@
 
 	operator P()
 	{
-		return unaligned_read((P*)ptr);
+		return unaligned_read((P *)ptr);
 	}
 
 private:
@@ -83,7 +86,9 @@
 	friend class unaligned_ptr;
 
 public:
-	unaligned_ptr(P *ptr) : ptr(ptr) {}
+	unaligned_ptr(P *ptr)
+	    : ptr(ptr)
+	{}
 
 	unaligned_ref<P> operator*()
 	{
@@ -102,4 +107,4 @@
 
 }  // namespace rr
 
-#endif   // rr_ExecutableMemory_hpp
+#endif  // rr_ExecutableMemory_hpp
diff --git a/src/Reactor/LLVMReactor.cpp b/src/Reactor/LLVMReactor.cpp
index 4b6bb77..7b06cb4 100644
--- a/src/Reactor/LLVMReactor.cpp
+++ b/src/Reactor/LLVMReactor.cpp
@@ -12,16 +12,16 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "Reactor.hpp"
-#include "Debug.hpp"
 #include "LLVMReactor.hpp"
+#include "Debug.hpp"
 #include "LLVMReactorDebugInfo.hpp"
+#include "Reactor.hpp"
 
-#include "x86.hpp"
 #include "CPUID.hpp"
-#include "Thread.hpp"
 #include "ExecutableMemory.hpp"
 #include "MutexLock.hpp"
+#include "Thread.hpp"
+#include "x86.hpp"
 
 #undef min
 #undef max
@@ -29,13 +29,13 @@
 #if defined(__clang__)
 // LLVM has occurances of the extra-semi warning in its headers, which will be
 // treated as an error in SwiftShader targets.
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wextra-semi"
+#	pragma clang diagnostic push
+#	pragma clang diagnostic ignored "-Wextra-semi"
 #endif  // defined(__clang__)
 
 #ifdef _MSC_VER
 __pragma(warning(push))
-__pragma(warning(disable : 4146)) // unary minus operator applied to unsigned type, result still unsigned
+    __pragma(warning(disable : 4146))  // unary minus operator applied to unsigned type, result still unsigned
 #endif
 
 #include "llvm/Analysis/LoopPass.h"
@@ -51,10 +51,10 @@
 #include "llvm/IR/DataLayout.h"
 #include "llvm/IR/Function.h"
 #include "llvm/IR/GlobalVariable.h"
-#include "llvm/IR/Intrinsics.h"
 #include "llvm/IR/IRBuilder.h"
-#include "llvm/IR/LegacyPassManager.h"
+#include "llvm/IR/Intrinsics.h"
 #include "llvm/IR/LLVMContext.h"
+#include "llvm/IR/LegacyPassManager.h"
 #include "llvm/IR/Mangler.h"
 #include "llvm/IR/Module.h"
 #include "llvm/IR/Verifier.h"
@@ -62,21 +62,24 @@
 #include "llvm/Support/TargetSelect.h"
 #include "llvm/Target/TargetOptions.h"
 #include "llvm/Transforms/Coroutines.h"
-#include "llvm/Transforms/InstCombine/InstCombine.h"
 #include "llvm/Transforms/IPO.h"
 #include "llvm/Transforms/IPO/PassManagerBuilder.h"
+#include "llvm/Transforms/InstCombine/InstCombine.h"
 #include "llvm/Transforms/Scalar.h"
 #include "llvm/Transforms/Scalar/GVN.h"
 
 #if defined(__clang__)
-#pragma clang diagnostic pop
-#endif // defined(__clang__)
+#	pragma clang diagnostic pop
+#endif  // defined(__clang__)
 
 #ifdef _MSC_VER
-__pragma(warning(pop))
+    __pragma(warning(pop))
 #endif
 
-#define ARGS(...) {__VA_ARGS__}
+#define ARGS(...)   \
+	{               \
+		__VA_ARGS__ \
+	}
 #define CreateCall2 CreateCall
 #define CreateCall3 CreateCall
 
@@ -89,27 +92,27 @@
 #include <thread>
 
 #if defined(__i386__) || defined(__x86_64__)
-#include <xmmintrin.h>
+#	include <xmmintrin.h>
 #endif
 
 #include <math.h>
 
 #if defined(__x86_64__) && defined(_WIN32)
-	extern "C" void X86CompilationCallback()
-	{
-		UNIMPLEMENTED("X86CompilationCallback");
-	}
+        extern "C" void X86CompilationCallback()
+{
+	UNIMPLEMENTED("X86CompilationCallback");
+}
 #endif
 
 #if defined(_WIN64)
-	extern "C" void __chkstk();
+extern "C" void __chkstk();
 #elif defined(_WIN32)
-	extern "C" void _chkstk();
+extern "C" void _chkstk();
 #endif
 
 namespace rr {
 
-void* resolveExternalSymbol(const char*);
+void *resolveExternalSymbol(const char *);
 
 }  // namespace rr
 
@@ -122,33 +125,34 @@
 	// This uses a static in a function to avoid the cost of a global static
 	// initializer. See http://neugierig.org/software/chromium/notes/2011/08/static-initializers.html
 	static rr::Config config = rr::Config::Edit()
-		.add(rr::Optimization::Pass::ScalarReplAggregates)
-		.add(rr::Optimization::Pass::InstructionCombining)
-		.apply({});
+	                               .add(rr::Optimization::Pass::ScalarReplAggregates)
+	                               .add(rr::Optimization::Pass::InstructionCombining)
+	                               .apply({});
 	return config;
 }
 
 // Cache provides a simple, thread-safe key-value store.
-template <typename KEY, typename VALUE>
+template<typename KEY, typename VALUE>
 class Cache
 {
 public:
 	Cache() = default;
-	Cache(const Cache& other);
+	Cache(const Cache &other);
 	VALUE getOrCreate(KEY key, std::function<VALUE()> create);
+
 private:
-	mutable std::mutex mutex; // mutable required for copy constructor.
+	mutable std::mutex mutex;  // mutable required for copy constructor.
 	std::unordered_map<KEY, VALUE> map;
 };
 
-template <typename KEY, typename VALUE>
-Cache<KEY, VALUE>::Cache(const Cache& other)
+template<typename KEY, typename VALUE>
+Cache<KEY, VALUE>::Cache(const Cache &other)
 {
 	std::unique_lock<std::mutex> lock(other.mutex);
 	map = other.map;
 }
 
-template <typename KEY, typename VALUE>
+template<typename KEY, typename VALUE>
 VALUE Cache<KEY, VALUE>::getOrCreate(KEY key, std::function<VALUE()> create)
 {
 	std::unique_lock<std::mutex> lock(mutex);
@@ -169,11 +173,11 @@
 public:
 	using TargetMachineSPtr = std::shared_ptr<llvm::TargetMachine>;
 
-	static JITGlobals * get();
+	static JITGlobals *get();
 
 	const std::string mcpu;
 	const std::vector<std::string> mattrs;
-	const char* const march;
+	const char *const march;
 	const llvm::TargetOptions targetOptions;
 	const llvm::DataLayout dataLayout;
 
@@ -187,7 +191,7 @@
 	           const char *march,
 	           const llvm::TargetOptions &targetOptions,
 	           const llvm::DataLayout &dataLayout);
-	JITGlobals(const JITGlobals&) = default;
+	JITGlobals(const JITGlobals &) = default;
 
 	// The cache key here is actually a rr::Optimization::Level. We use int
 	// as 'enum class' types do not provide builtin hash functions until
@@ -195,7 +199,7 @@
 	Cache<int, TargetMachineSPtr> targetMachines;
 };
 
-JITGlobals * JITGlobals::get()
+JITGlobals *JITGlobals::get()
 {
 	static JITGlobals instance = create();
 	return &instance;
@@ -206,15 +210,15 @@
 	return targetMachines.getOrCreate(static_cast<int>(optlevel), [&]() {
 		return TargetMachineSPtr(llvm::EngineBuilder()
 #ifdef ENABLE_RR_DEBUG_INFO
-			.setOptLevel(toLLVM(rr::Optimization::Level::None))
+		                             .setOptLevel(toLLVM(rr::Optimization::Level::None))
 #else
-			.setOptLevel(toLLVM(optlevel))
-#endif // ENABLE_RR_DEBUG_INFO
-			.setMCPU(mcpu)
-			.setMArch(march)
-			.setMAttrs(mattrs)
-			.setTargetOptions(targetOptions)
-			.selectTarget());
+		                                                                 .setOptLevel(toLLVM(optlevel))
+#endif  // ENABLE_RR_DEBUG_INFO
+		                             .setMCPU(mcpu)
+		                             .setMArch(march)
+		                             .setMAttrs(mattrs)
+		                             .setTargetOptions(targetOptions)
+		                             .selectTarget());
 	});
 }
 
@@ -237,10 +241,10 @@
 	bool ok = llvm::sys::getHostCPUFeatures(features);
 
 #if defined(__i386__) || defined(__x86_64__) || \
-(defined(__linux__) && (defined(__arm__) || defined(__aarch64__)))
+    (defined(__linux__) && (defined(__arm__) || defined(__aarch64__)))
 	ASSERT_MSG(ok, "llvm::sys::getHostCPUFeatures returned false");
 #else
-	(void) ok; // getHostCPUFeatures always returns false on other platforms
+	(void)ok;  // getHostCPUFeatures always returns false on other platforms
 #endif
 
 	std::vector<std::string> mattrs;
@@ -249,7 +253,7 @@
 		if(feature.second) { mattrs.push_back(feature.first()); }
 	}
 
-	const char* march = nullptr;
+	const char *march = nullptr;
 #if defined(__x86_64__)
 	march = "x86-64";
 #elif defined(__i386__)
@@ -259,28 +263,28 @@
 #elif defined(__arm__)
 	march = "arm";
 #elif defined(__mips__)
-#if defined(__mips64)
+#	if defined(__mips64)
 	march = "mips64el";
-#else
+#	else
 	march = "mipsel";
-#endif
+#	endif
 #elif defined(__powerpc64__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
 	march = "ppc64le";
 #else
-	#error "unknown architecture"
+#	error "unknown architecture"
 #endif
 
 	llvm::TargetOptions targetOptions;
 	targetOptions.UnsafeFPMath = false;
 
 	auto targetMachine = std::unique_ptr<llvm::TargetMachine>(
-		llvm::EngineBuilder()
-			.setOptLevel(llvm::CodeGenOpt::None)
-			.setMCPU(mcpu)
-			.setMArch(march)
-			.setMAttrs(mattrs)
-			.setTargetOptions(targetOptions)
-			.selectTarget());
+	    llvm::EngineBuilder()
+	        .setOptLevel(llvm::CodeGenOpt::None)
+	        .setMCPU(mcpu)
+	        .setMArch(march)
+	        .setMAttrs(mattrs)
+	        .setTargetOptions(targetOptions)
+	        .selectTarget());
 
 	auto dataLayout = targetMachine->createDataLayout();
 
@@ -291,25 +295,25 @@
 {
 	switch(level)
 	{
-		case rr::Optimization::Level::None:       return ::llvm::CodeGenOpt::None;
-		case rr::Optimization::Level::Less:       return ::llvm::CodeGenOpt::Less;
-		case rr::Optimization::Level::Default:    return ::llvm::CodeGenOpt::Default;
+		case rr::Optimization::Level::None: return ::llvm::CodeGenOpt::None;
+		case rr::Optimization::Level::Less: return ::llvm::CodeGenOpt::Less;
+		case rr::Optimization::Level::Default: return ::llvm::CodeGenOpt::Default;
 		case rr::Optimization::Level::Aggressive: return ::llvm::CodeGenOpt::Aggressive;
 		default: UNREACHABLE("Unknown Optimization Level %d", int(level));
 	}
 	return ::llvm::CodeGenOpt::Default;
 }
 
-JITGlobals::JITGlobals(const char* mcpu,
+JITGlobals::JITGlobals(const char *mcpu,
                        const std::vector<std::string> &mattrs,
-                       const char* march,
+                       const char *march,
                        const llvm::TargetOptions &targetOptions,
-                       const llvm::DataLayout &dataLayout) :
-		mcpu(mcpu),
-		mattrs(mattrs),
-		march(march),
-		targetOptions(targetOptions),
-		dataLayout(dataLayout)
+                       const llvm::DataLayout &dataLayout)
+    : mcpu(mcpu)
+    , mattrs(mattrs)
+    , march(march)
+    , targetOptions(targetOptions)
+    , dataLayout(dataLayout)
 {
 }
 
@@ -320,9 +324,10 @@
 	~MemoryMapper() final {}
 
 	llvm::sys::MemoryBlock allocateMappedMemory(
-			llvm::SectionMemoryManager::AllocationPurpose purpose,
-			size_t numBytes, const llvm::sys::MemoryBlock *const nearBlock,
-			unsigned flags, std::error_code &errorCode) final {
+	    llvm::SectionMemoryManager::AllocationPurpose purpose,
+	    size_t numBytes, const llvm::sys::MemoryBlock *const nearBlock,
+	    unsigned flags, std::error_code &errorCode) final
+	{
 		errorCode = std::error_code();
 
 		// Round up numBytes to page size.
@@ -330,37 +335,40 @@
 		numBytes = (numBytes + pageSize - 1) & ~(pageSize - 1);
 
 		bool need_exec =
-			purpose == llvm::SectionMemoryManager::AllocationPurpose::Code;
-		void* addr = rr::allocateMemoryPages(
-			numBytes, flagsToPermissions(flags), need_exec);
+		    purpose == llvm::SectionMemoryManager::AllocationPurpose::Code;
+		void *addr = rr::allocateMemoryPages(
+		    numBytes, flagsToPermissions(flags), need_exec);
 		if(!addr)
 			return llvm::sys::MemoryBlock();
 		return llvm::sys::MemoryBlock(addr, numBytes);
 	}
 
 	std::error_code protectMappedMemory(const llvm::sys::MemoryBlock &block,
-	                                    unsigned flags) {
+	                                    unsigned flags)
+	{
 		// Round down base address to align with a page boundary. This matches
 		// DefaultMMapper behavior.
-		void* addr = block.base();
+		void *addr = block.base();
 		size_t size = block.size();
 		size_t pageSize = rr::memoryPageSize();
-		addr = reinterpret_cast<void*>(
-			reinterpret_cast<uintptr_t>(addr) & ~(pageSize - 1));
+		addr = reinterpret_cast<void *>(
+		    reinterpret_cast<uintptr_t>(addr) & ~(pageSize - 1));
 		size += reinterpret_cast<uintptr_t>(block.base()) -
-			reinterpret_cast<uintptr_t>(addr);
+		        reinterpret_cast<uintptr_t>(addr);
 
 		rr::protectMemoryPages(addr, size, flagsToPermissions(flags));
 		return std::error_code();
 	}
 
-	std::error_code releaseMappedMemory(llvm::sys::MemoryBlock &block) {
+	std::error_code releaseMappedMemory(llvm::sys::MemoryBlock &block)
+	{
 		rr::deallocateMemoryPages(block.base(), block.size());
 		return std::error_code();
 	}
 
 private:
-	int flagsToPermissions(unsigned flags) {
+	int flagsToPermissions(unsigned flags)
+	{
 		int result = 0;
 		if(flags & llvm::sys::Memory::MF_READ)
 		{
@@ -376,7 +384,6 @@
 		}
 		return result;
 	}
-
 };
 
 // JITRoutine is a rr::Routine that holds a LLVM JIT session, compiler and
@@ -394,48 +401,47 @@
 
 public:
 	JITRoutine(
-			std::unique_ptr<llvm::Module> module,
-			llvm::Function **funcs,
-			size_t count,
-			const rr::Config &config) :
-		resolver(createLegacyLookupResolver(
-			session,
-			[&](const std::string &name) {
-				void *func = rr::resolveExternalSymbol(name.c_str());
-				if(func != nullptr)
-				{
-					return llvm::JITSymbol(
-						reinterpret_cast<uintptr_t>(func), llvm::JITSymbolFlags::Absolute);
-				}
-				return objLayer.findSymbol(name, true);
-			},
-			[](llvm::Error err) {
-				if(err)
-				{
-					// TODO: Log the symbol resolution errors.
-					return;
-				}
-			})),
-		targetMachine(JITGlobals::get()->getTargetMachine(config.getOptimization().getLevel())),
-		compileLayer(objLayer, llvm::orc::SimpleCompiler(*targetMachine)),
-		objLayer(
-			session,
-			[this](llvm::orc::VModuleKey) {
-				return ObjLayer::Resources{std::make_shared<llvm::SectionMemoryManager>(&memoryMapper), resolver};
-			},
-			ObjLayer::NotifyLoadedFtor(),
-			[](llvm::orc::VModuleKey, const llvm::object::ObjectFile &Obj, const llvm::RuntimeDyld::LoadedObjectInfo &L) {
+	    std::unique_ptr<llvm::Module> module,
+	    llvm::Function **funcs,
+	    size_t count,
+	    const rr::Config &config)
+	    : resolver(createLegacyLookupResolver(
+	          session,
+	          [&](const std::string &name) {
+		          void *func = rr::resolveExternalSymbol(name.c_str());
+		          if(func != nullptr)
+		          {
+			          return llvm::JITSymbol(
+			              reinterpret_cast<uintptr_t>(func), llvm::JITSymbolFlags::Absolute);
+		          }
+		          return objLayer.findSymbol(name, true);
+	          },
+	          [](llvm::Error err) {
+		          if(err)
+		          {
+			          // TODO: Log the symbol resolution errors.
+			          return;
+		          }
+	          }))
+	    , targetMachine(JITGlobals::get()->getTargetMachine(config.getOptimization().getLevel()))
+	    , compileLayer(objLayer, llvm::orc::SimpleCompiler(*targetMachine))
+	    , objLayer(
+	          session,
+	          [this](llvm::orc::VModuleKey) {
+		          return ObjLayer::Resources{ std::make_shared<llvm::SectionMemoryManager>(&memoryMapper), resolver };
+	          },
+	          ObjLayer::NotifyLoadedFtor(),
+	          [](llvm::orc::VModuleKey, const llvm::object::ObjectFile &Obj, const llvm::RuntimeDyld::LoadedObjectInfo &L) {
 #ifdef ENABLE_RR_DEBUG_INFO
-				rr::DebugInfo::NotifyObjectEmitted(Obj, L);
-#endif // ENABLE_RR_DEBUG_INFO
-			},
-			[](llvm::orc::VModuleKey, const llvm::object::ObjectFile &Obj) {
+		          rr::DebugInfo::NotifyObjectEmitted(Obj, L);
+#endif  // ENABLE_RR_DEBUG_INFO
+	          },
+	          [](llvm::orc::VModuleKey, const llvm::object::ObjectFile &Obj) {
 #ifdef ENABLE_RR_DEBUG_INFO
-				rr::DebugInfo::NotifyFreeingObject(Obj);
-#endif // ENABLE_RR_DEBUG_INFO
-			}
-		),
-		addresses(count)
+		          rr::DebugInfo::NotifyFreeingObject(Obj);
+#endif  // ENABLE_RR_DEBUG_INFO
+	          })
+	    , addresses(count)
 	{
 		std::vector<std::string> mangledNames(count);
 		for(size_t i = 0; i < count; i++)
@@ -490,10 +496,10 @@
 class JITBuilder
 {
 public:
-	JITBuilder(const rr::Config &config) :
-		config(config),
-		module(new llvm::Module("", context)),
-		builder(new llvm::IRBuilder<>(context))
+	JITBuilder(const rr::Config &config)
+	    : config(config)
+	    , module(new llvm::Module("", context))
+	    , builder(new llvm::IRBuilder<>(context))
 	{
 		module->setDataLayout(JITGlobals::get()->dataLayout);
 	}
@@ -504,30 +510,30 @@
 #ifdef ENABLE_RR_DEBUG_INFO
 		if(debugInfo != nullptr)
 		{
-			return; // Don't optimize if we're generating debug info.
+			return;  // Don't optimize if we're generating debug info.
 		}
-#endif // ENABLE_RR_DEBUG_INFO
+#endif  // ENABLE_RR_DEBUG_INFO
 
 		std::unique_ptr<llvm::legacy::PassManager> passManager(
-			new llvm::legacy::PassManager());
+		    new llvm::legacy::PassManager());
 
 		for(auto pass : cfg.getOptimization().getPasses())
 		{
 			switch(pass)
 			{
-			case rr::Optimization::Pass::Disabled:                                                                       break;
-			case rr::Optimization::Pass::CFGSimplification:    passManager->add(llvm::createCFGSimplificationPass());    break;
-			case rr::Optimization::Pass::LICM:                 passManager->add(llvm::createLICMPass());                 break;
-			case rr::Optimization::Pass::AggressiveDCE:        passManager->add(llvm::createAggressiveDCEPass());        break;
-			case rr::Optimization::Pass::GVN:                  passManager->add(llvm::createGVNPass());                  break;
-			case rr::Optimization::Pass::InstructionCombining: passManager->add(llvm::createInstructionCombiningPass()); break;
-			case rr::Optimization::Pass::Reassociate:          passManager->add(llvm::createReassociatePass());          break;
-			case rr::Optimization::Pass::DeadStoreElimination: passManager->add(llvm::createDeadStoreEliminationPass()); break;
-			case rr::Optimization::Pass::SCCP:                 passManager->add(llvm::createSCCPPass());                 break;
-			case rr::Optimization::Pass::ScalarReplAggregates: passManager->add(llvm::createSROAPass());                 break;
-			case rr::Optimization::Pass::EarlyCSEPass:         passManager->add(llvm::createEarlyCSEPass());             break;
-			default:
-				UNREACHABLE("pass: %d", int(pass));
+				case rr::Optimization::Pass::Disabled: break;
+				case rr::Optimization::Pass::CFGSimplification: passManager->add(llvm::createCFGSimplificationPass()); break;
+				case rr::Optimization::Pass::LICM: passManager->add(llvm::createLICMPass()); break;
+				case rr::Optimization::Pass::AggressiveDCE: passManager->add(llvm::createAggressiveDCEPass()); break;
+				case rr::Optimization::Pass::GVN: passManager->add(llvm::createGVNPass()); break;
+				case rr::Optimization::Pass::InstructionCombining: passManager->add(llvm::createInstructionCombiningPass()); break;
+				case rr::Optimization::Pass::Reassociate: passManager->add(llvm::createReassociatePass()); break;
+				case rr::Optimization::Pass::DeadStoreElimination: passManager->add(llvm::createDeadStoreEliminationPass()); break;
+				case rr::Optimization::Pass::SCCP: passManager->add(llvm::createSCCPPass()); break;
+				case rr::Optimization::Pass::ScalarReplAggregates: passManager->add(llvm::createSROAPass()); break;
+				case rr::Optimization::Pass::EarlyCSEPass: passManager->add(llvm::createEarlyCSEPass()); break;
+				default:
+					UNREACHABLE("pass: %d", int(pass));
 			}
 		}
 
@@ -570,38 +576,39 @@
 std::mutex codegenMutex;
 
 #ifdef ENABLE_RR_PRINT
-std::string replace(std::string str, const std::string& substr, const std::string& replacement)
+std::string replace(std::string str, const std::string &substr, const std::string &replacement)
 {
 	size_t pos = 0;
-	while((pos = str.find(substr, pos)) != std::string::npos) {
+	while((pos = str.find(substr, pos)) != std::string::npos)
+	{
 		str.replace(pos, substr.length(), replacement);
 		pos += replacement.length();
 	}
 	return str;
 }
-#endif // ENABLE_RR_PRINT
+#endif  // ENABLE_RR_PRINT
 
-template <typename T>
+template<typename T>
 T alignUp(T val, T alignment)
 {
 	return alignment * ((val + alignment - 1) / alignment);
 }
 
-void* alignedAlloc(size_t size, size_t alignment)
+void *alignedAlloc(size_t size, size_t alignment)
 {
 	ASSERT(alignment < 256);
 	auto allocation = new uint8_t[size + sizeof(uint8_t) + alignment];
 	auto aligned = allocation;
-	aligned += sizeof(uint8_t); // Make space for the base-address offset.
-	aligned = reinterpret_cast<uint8_t*>(alignUp(reinterpret_cast<uintptr_t>(aligned), alignment)); // align
+	aligned += sizeof(uint8_t);                                                                       // Make space for the base-address offset.
+	aligned = reinterpret_cast<uint8_t *>(alignUp(reinterpret_cast<uintptr_t>(aligned), alignment));  // align
 	auto offset = static_cast<uint8_t>(aligned - allocation);
 	aligned[-1] = offset;
 	return aligned;
 }
 
-void alignedFree(void* ptr)
+void alignedFree(void *ptr)
 {
-	auto aligned = reinterpret_cast<uint8_t*>(ptr);
+	auto aligned = reinterpret_cast<uint8_t *>(ptr);
 	auto offset = aligned[-1];
 	auto allocation = aligned - offset;
 	delete[] allocation;
@@ -612,7 +619,7 @@
 	llvm::VectorType *ty = llvm::cast<llvm::VectorType>(x->getType());
 
 	llvm::VectorType *extTy =
-		llvm::VectorType::getExtendedElementVectorType(ty);
+	    llvm::VectorType::getExtendedElementVectorType(ty);
 	x = jit->builder->CreateZExt(x, extTy);
 	y = jit->builder->CreateZExt(y, extTy);
 
@@ -670,7 +677,7 @@
 llvm::Value *lowerRound(llvm::Value *x)
 {
 	llvm::Function *nearbyint = llvm::Intrinsic::getDeclaration(
-		jit->module.get(), llvm::Intrinsic::nearbyint, {x->getType()});
+	    jit->module.get(), llvm::Intrinsic::nearbyint, { x->getType() });
 	return jit->builder->CreateCall(nearbyint, ARGS(x));
 }
 
@@ -682,14 +689,14 @@
 llvm::Value *lowerFloor(llvm::Value *x)
 {
 	llvm::Function *floor = llvm::Intrinsic::getDeclaration(
-		jit->module.get(), llvm::Intrinsic::floor, {x->getType()});
+	    jit->module.get(), llvm::Intrinsic::floor, { x->getType() });
 	return jit->builder->CreateCall(floor, ARGS(x));
 }
 
 llvm::Value *lowerTrunc(llvm::Value *x)
 {
 	llvm::Function *trunc = llvm::Intrinsic::getDeclaration(
-		jit->module.get(), llvm::Intrinsic::trunc, {x->getType()});
+	    jit->module.get(), llvm::Intrinsic::trunc, { x->getType() });
 	return jit->builder->CreateCall(trunc, ARGS(x));
 }
 
@@ -731,7 +738,7 @@
 llvm::Value *lowerSQRT(llvm::Value *x)
 {
 	llvm::Function *sqrt = llvm::Intrinsic::getDeclaration(
-		jit->module.get(), llvm::Intrinsic::sqrt, {x->getType()});
+	    jit->module.get(), llvm::Intrinsic::sqrt, { x->getType() });
 	return jit->builder->CreateCall(sqrt, ARGS(x));
 }
 
@@ -742,8 +749,8 @@
 	if(llvm::VectorType *vectorTy = llvm::dyn_cast<llvm::VectorType>(ty))
 	{
 		one = llvm::ConstantVector::getSplat(
-			vectorTy->getNumElements(),
-			llvm::ConstantFP::get(vectorTy->getElementType(), 1));
+		    vectorTy->getNumElements(),
+		    llvm::ConstantFP::get(vectorTy->getElementType(), 1));
 	}
 	else
 	{
@@ -761,8 +768,8 @@
 {
 	llvm::VectorType *ty = llvm::cast<llvm::VectorType>(x->getType());
 	llvm::Value *y = llvm::ConstantVector::getSplat(
-		ty->getNumElements(),
-		llvm::ConstantInt::get(ty->getElementType(), scalarY));
+	    ty->getNumElements(),
+	    llvm::ConstantInt::get(ty->getElementType(), scalarY));
 	return jit->builder->CreateShl(x, y);
 }
 
@@ -770,8 +777,8 @@
 {
 	llvm::VectorType *ty = llvm::cast<llvm::VectorType>(x->getType());
 	llvm::Value *y = llvm::ConstantVector::getSplat(
-		ty->getNumElements(),
-		llvm::ConstantInt::get(ty->getElementType(), scalarY));
+	    ty->getNumElements(),
+	    llvm::ConstantInt::get(ty->getElementType(), scalarY));
 	return jit->builder->CreateAShr(x, y);
 }
 
@@ -779,8 +786,8 @@
 {
 	llvm::VectorType *ty = llvm::cast<llvm::VectorType>(x->getType());
 	llvm::Value *y = llvm::ConstantVector::getSplat(
-		ty->getNumElements(),
-		llvm::ConstantInt::get(ty->getElementType(), scalarY));
+	    ty->getNumElements(),
+	    llvm::ConstantInt::get(ty->getElementType(), scalarY));
 	return jit->builder->CreateLShr(x, y);
 }
 
@@ -814,7 +821,7 @@
 	llvm::VectorType *dstTy = llvm::VectorType::getTruncatedElementVectorType(srcTy);
 
 	llvm::IntegerType *dstElemTy =
-		llvm::cast<llvm::IntegerType>(dstTy->getElementType());
+	    llvm::cast<llvm::IntegerType>(dstTy->getElementType());
 
 	uint64_t truncNumBits = dstElemTy->getIntegerBitWidth();
 	ASSERT_MSG(truncNumBits < 64, "shift 64 must be handled separately. truncNumBits: %d", int(truncNumBits));
@@ -851,11 +858,11 @@
 	llvm::Value *cmp = jit->builder->CreateICmpSLT(x, zero);
 
 	llvm::Value *ret = jit->builder->CreateZExt(
-		jit->builder->CreateExtractElement(cmp, static_cast<uint64_t>(0)), retTy);
+	    jit->builder->CreateExtractElement(cmp, static_cast<uint64_t>(0)), retTy);
 	for(uint64_t i = 1, n = ty->getNumElements(); i < n; ++i)
 	{
 		llvm::Value *elem = jit->builder->CreateZExt(
-			jit->builder->CreateExtractElement(cmp, i), retTy);
+		    jit->builder->CreateExtractElement(cmp, i), retTy);
 		ret = jit->builder->CreateOr(ret, jit->builder->CreateShl(elem, i));
 	}
 	return ret;
@@ -868,11 +875,11 @@
 	llvm::Value *cmp = jit->builder->CreateFCmpULT(x, zero);
 
 	llvm::Value *ret = jit->builder->CreateZExt(
-		jit->builder->CreateExtractElement(cmp, static_cast<uint64_t>(0)), retTy);
+	    jit->builder->CreateExtractElement(cmp, static_cast<uint64_t>(0)), retTy);
 	for(uint64_t i = 1, n = ty->getNumElements(); i < n; ++i)
 	{
 		llvm::Value *elem = jit->builder->CreateZExt(
-			jit->builder->CreateExtractElement(cmp, i), retTy);
+		    jit->builder->CreateExtractElement(cmp, i), retTy);
 		ret = jit->builder->CreateOr(ret, jit->builder->CreateShl(elem, i));
 	}
 	return ret;
@@ -882,38 +889,38 @@
 #if(LLVM_VERSION_MAJOR >= 8) || (!defined(__i386__) && !defined(__x86_64__))
 llvm::Value *lowerPUADDSAT(llvm::Value *x, llvm::Value *y)
 {
-	#if LLVM_VERSION_MAJOR >= 8
-		return jit->builder->CreateBinaryIntrinsic(llvm::Intrinsic::uadd_sat, x, y);
-	#else
-		return lowerPSAT(x, y, true, false);
-	#endif
+#	if LLVM_VERSION_MAJOR >= 8
+	return jit->builder->CreateBinaryIntrinsic(llvm::Intrinsic::uadd_sat, x, y);
+#	else
+	return lowerPSAT(x, y, true, false);
+#	endif
 }
 
 llvm::Value *lowerPSADDSAT(llvm::Value *x, llvm::Value *y)
 {
-	#if LLVM_VERSION_MAJOR >= 8
-		return jit->builder->CreateBinaryIntrinsic(llvm::Intrinsic::sadd_sat, x, y);
-	#else
-		return lowerPSAT(x, y, true, true);
-	#endif
+#	if LLVM_VERSION_MAJOR >= 8
+	return jit->builder->CreateBinaryIntrinsic(llvm::Intrinsic::sadd_sat, x, y);
+#	else
+	return lowerPSAT(x, y, true, true);
+#	endif
 }
 
 llvm::Value *lowerPUSUBSAT(llvm::Value *x, llvm::Value *y)
 {
-	#if LLVM_VERSION_MAJOR >= 8
-		return jit->builder->CreateBinaryIntrinsic(llvm::Intrinsic::usub_sat, x, y);
-	#else
-		return lowerPSAT(x, y, false, false);
-	#endif
+#	if LLVM_VERSION_MAJOR >= 8
+	return jit->builder->CreateBinaryIntrinsic(llvm::Intrinsic::usub_sat, x, y);
+#	else
+	return lowerPSAT(x, y, false, false);
+#	endif
 }
 
 llvm::Value *lowerPSSUBSAT(llvm::Value *x, llvm::Value *y)
 {
-	#if LLVM_VERSION_MAJOR >= 8
-		return jit->builder->CreateBinaryIntrinsic(llvm::Intrinsic::ssub_sat, x, y);
-	#else
-		return lowerPSAT(x, y, false, true);
-	#endif
+#	if LLVM_VERSION_MAJOR >= 8
+	return jit->builder->CreateBinaryIntrinsic(llvm::Intrinsic::ssub_sat, x, y);
+#	else
+	return lowerPSAT(x, y, false, true);
+#	endif
 }
 #endif  // (LLVM_VERSION_MAJOR >= 8) || (!defined(__i386__) && !defined(__x86_64__))
 
@@ -958,10 +965,10 @@
 	auto i8Base = jit->builder->CreatePointerCast(base, i8PtrTy);
 	auto i8Ptrs = jit->builder->CreateGEP(i8Base, offsets);
 	auto elPtrs = jit->builder->CreatePointerCast(i8Ptrs, elPtrVecTy);
-	auto i8Mask = jit->builder->CreateIntCast(mask, ::llvm::VectorType::get(i1Ty, numEls), false); // vec<int, int, ...> -> vec<bool, bool, ...>
+	auto i8Mask = jit->builder->CreateIntCast(mask, ::llvm::VectorType::get(i1Ty, numEls), false);  // vec<int, int, ...> -> vec<bool, bool, ...>
 	auto passthrough = zeroMaskedLanes ? ::llvm::Constant::getNullValue(elVecTy) : llvm::UndefValue::get(elVecTy);
 	auto align = ::llvm::ConstantInt::get(i32Ty, alignment);
-	auto func = ::llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::masked_gather, { elVecTy, elPtrVecTy } );
+	auto func = ::llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::masked_gather, { elVecTy, elPtrVecTy });
 	return jit->builder->CreateCall(func, { elPtrs, align, i8Mask, passthrough });
 }
 
@@ -984,32 +991,31 @@
 	auto i8Base = jit->builder->CreatePointerCast(base, i8PtrTy);
 	auto i8Ptrs = jit->builder->CreateGEP(i8Base, offsets);
 	auto elPtrs = jit->builder->CreatePointerCast(i8Ptrs, elPtrVecTy);
-	auto i8Mask = jit->builder->CreateIntCast(mask, ::llvm::VectorType::get(i1Ty, numEls), false); // vec<int, int, ...> -> vec<bool, bool, ...>
+	auto i8Mask = jit->builder->CreateIntCast(mask, ::llvm::VectorType::get(i1Ty, numEls), false);  // vec<int, int, ...> -> vec<bool, bool, ...>
 	auto align = ::llvm::ConstantInt::get(i32Ty, alignment);
-	auto func = ::llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::masked_scatter, { elVecTy, elPtrVecTy } );
+	auto func = ::llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::masked_scatter, { elVecTy, elPtrVecTy });
 	jit->builder->CreateCall(func, { val, elPtrs, align, i8Mask });
 }
-}
+}  // namespace
 
 namespace rr {
 
-const Capabilities Caps =
-{
-	true, // CoroutinesSupported
+const Capabilities Caps = {
+	true,  // CoroutinesSupported
 };
 
 static std::memory_order atomicOrdering(llvm::AtomicOrdering memoryOrder)
 {
 	switch(memoryOrder)
 	{
-	case llvm::AtomicOrdering::Monotonic: return std::memory_order_relaxed;  // https://llvm.org/docs/Atomics.html#monotonic
-	case llvm::AtomicOrdering::Acquire: return std::memory_order_acquire;
-	case llvm::AtomicOrdering::Release: return std::memory_order_release;
-	case llvm::AtomicOrdering::AcquireRelease: return std::memory_order_acq_rel;
-	case llvm::AtomicOrdering::SequentiallyConsistent: return std::memory_order_seq_cst;
-	default:
-		UNREACHABLE("memoryOrder: %d", int(memoryOrder));
-		return std::memory_order_acq_rel;
+		case llvm::AtomicOrdering::Monotonic: return std::memory_order_relaxed;  // https://llvm.org/docs/Atomics.html#monotonic
+		case llvm::AtomicOrdering::Acquire: return std::memory_order_acquire;
+		case llvm::AtomicOrdering::Release: return std::memory_order_release;
+		case llvm::AtomicOrdering::AcquireRelease: return std::memory_order_acq_rel;
+		case llvm::AtomicOrdering::SequentiallyConsistent: return std::memory_order_seq_cst;
+		default:
+			UNREACHABLE("memoryOrder: %d", int(memoryOrder));
+			return std::memory_order_acq_rel;
 	}
 }
 
@@ -1022,28 +1028,28 @@
 
 	switch(memoryOrder)
 	{
-	case std::memory_order_relaxed: return llvm::AtomicOrdering::Monotonic;  // https://llvm.org/docs/Atomics.html#monotonic
-	case std::memory_order_consume: return llvm::AtomicOrdering::Acquire;    // https://llvm.org/docs/Atomics.html#acquire: "It should also be used for C++11/C11 memory_order_consume."
-	case std::memory_order_acquire: return llvm::AtomicOrdering::Acquire;
-	case std::memory_order_release: return llvm::AtomicOrdering::Release;
-	case std::memory_order_acq_rel: return llvm::AtomicOrdering::AcquireRelease;
-	case std::memory_order_seq_cst: return llvm::AtomicOrdering::SequentiallyConsistent;
-	default:
-		UNREACHABLE("memoryOrder: %d", int(memoryOrder));
-		return llvm::AtomicOrdering::AcquireRelease;
+		case std::memory_order_relaxed: return llvm::AtomicOrdering::Monotonic;  // https://llvm.org/docs/Atomics.html#monotonic
+		case std::memory_order_consume: return llvm::AtomicOrdering::Acquire;    // https://llvm.org/docs/Atomics.html#acquire: "It should also be used for C++11/C11 memory_order_consume."
+		case std::memory_order_acquire: return llvm::AtomicOrdering::Acquire;
+		case std::memory_order_release: return llvm::AtomicOrdering::Release;
+		case std::memory_order_acq_rel: return llvm::AtomicOrdering::AcquireRelease;
+		case std::memory_order_seq_cst: return llvm::AtomicOrdering::SequentiallyConsistent;
+		default:
+			UNREACHABLE("memoryOrder: %d", int(memoryOrder));
+			return llvm::AtomicOrdering::AcquireRelease;
 	}
 }
 
-template <typename T>
+template<typename T>
 static void atomicLoad(void *ptr, void *ret, llvm::AtomicOrdering ordering)
 {
-	*reinterpret_cast<T*>(ret) = std::atomic_load_explicit<T>(reinterpret_cast<std::atomic<T>*>(ptr), atomicOrdering(ordering));
+	*reinterpret_cast<T *>(ret) = std::atomic_load_explicit<T>(reinterpret_cast<std::atomic<T> *>(ptr), atomicOrdering(ordering));
 }
 
-template <typename T>
+template<typename T>
 static void atomicStore(void *ptr, void *val, llvm::AtomicOrdering ordering)
 {
-	std::atomic_store_explicit<T>(reinterpret_cast<std::atomic<T>*>(ptr), *reinterpret_cast<T*>(val), atomicOrdering(ordering));
+	std::atomic_store_explicit<T>(reinterpret_cast<std::atomic<T> *>(ptr), *reinterpret_cast<T *>(val), atomicOrdering(ordering));
 }
 
 #ifdef __ANDROID__
@@ -1062,7 +1068,7 @@
 }
 #endif
 
-void* resolveExternalSymbol(const char* name)
+void *resolveExternalSymbol(const char *name)
 {
 	struct Atomic
 	{
@@ -1097,8 +1103,8 @@
 		static void nop() {}
 		static void neverCalled() { UNREACHABLE("Should never be called"); }
 
-		static void* coroutine_alloc_frame(size_t size) { return alignedAlloc(size, 16); }
-		static void coroutine_free_frame(void* ptr) { alignedFree(ptr); }
+		static void *coroutine_alloc_frame(size_t size) { return alignedAlloc(size, 16); }
+		static void coroutine_free_frame(void *ptr) { alignedFree(ptr); }
 
 #ifdef __ANDROID__
 		// forwarders since we can't take address of builtins
@@ -1111,10 +1117,22 @@
 		static uint32_t sync_lock_test_and_set_4(uint32_t *ptr, uint32_t val) { return __sync_lock_test_and_set_4(ptr, val); }
 		static uint32_t sync_val_compare_and_swap_4(uint32_t *ptr, uint32_t expected, uint32_t desired) { return __sync_val_compare_and_swap_4(ptr, expected, desired); }
 
-		static uint32_t sync_fetch_and_max_4(uint32_t *ptr, uint32_t val) { return sync_fetch_and_op(ptr, val, [](int32_t a, int32_t b) { return std::max(a,b);}); }
-		static uint32_t sync_fetch_and_min_4(uint32_t *ptr, uint32_t val) { return sync_fetch_and_op(ptr, val, [](int32_t a, int32_t b) { return std::min(a,b);}); }
-		static uint32_t sync_fetch_and_umax_4(uint32_t *ptr, uint32_t val) { return sync_fetch_and_op(ptr, val, [](uint32_t a, uint32_t b) { return std::max(a,b);}); }
-		static uint32_t sync_fetch_and_umin_4(uint32_t *ptr, uint32_t val) { return sync_fetch_and_op(ptr, val, [](uint32_t a, uint32_t b) { return std::min(a,b);}); }
+		static uint32_t sync_fetch_and_max_4(uint32_t *ptr, uint32_t val)
+		{
+			return sync_fetch_and_op(ptr, val, [](int32_t a, int32_t b) { return std::max(a, b); });
+		}
+		static uint32_t sync_fetch_and_min_4(uint32_t *ptr, uint32_t val)
+		{
+			return sync_fetch_and_op(ptr, val, [](int32_t a, int32_t b) { return std::min(a, b); });
+		}
+		static uint32_t sync_fetch_and_umax_4(uint32_t *ptr, uint32_t val)
+		{
+			return sync_fetch_and_op(ptr, val, [](uint32_t a, uint32_t b) { return std::max(a, b); });
+		}
+		static uint32_t sync_fetch_and_umin_4(uint32_t *ptr, uint32_t val)
+		{
+			return sync_fetch_and_op(ptr, val, [](uint32_t a, uint32_t b) { return std::min(a, b); });
+		}
 #endif
 	};
 
@@ -1127,81 +1145,81 @@
 
 		Resolver()
 		{
-			functions.emplace("nop", reinterpret_cast<void*>(F::nop));
-			functions.emplace("floorf", reinterpret_cast<void*>(floorf));
-			functions.emplace("nearbyintf", reinterpret_cast<void*>(nearbyintf));
-			functions.emplace("truncf", reinterpret_cast<void*>(truncf));
-			functions.emplace("printf", reinterpret_cast<void*>(printf));
-			functions.emplace("puts", reinterpret_cast<void*>(puts));
-			functions.emplace("fmodf", reinterpret_cast<void*>(fmodf));
+			functions.emplace("nop", reinterpret_cast<void *>(F::nop));
+			functions.emplace("floorf", reinterpret_cast<void *>(floorf));
+			functions.emplace("nearbyintf", reinterpret_cast<void *>(nearbyintf));
+			functions.emplace("truncf", reinterpret_cast<void *>(truncf));
+			functions.emplace("printf", reinterpret_cast<void *>(printf));
+			functions.emplace("puts", reinterpret_cast<void *>(puts));
+			functions.emplace("fmodf", reinterpret_cast<void *>(fmodf));
 
-			functions.emplace("sinf", reinterpret_cast<void*>(sinf));
-			functions.emplace("cosf", reinterpret_cast<void*>(cosf));
-			functions.emplace("asinf", reinterpret_cast<void*>(asinf));
-			functions.emplace("acosf", reinterpret_cast<void*>(acosf));
-			functions.emplace("atanf", reinterpret_cast<void*>(atanf));
-			functions.emplace("sinhf", reinterpret_cast<void*>(sinhf));
-			functions.emplace("coshf", reinterpret_cast<void*>(coshf));
-			functions.emplace("tanhf", reinterpret_cast<void*>(tanhf));
-			functions.emplace("asinhf", reinterpret_cast<void*>(asinhf));
-			functions.emplace("acoshf", reinterpret_cast<void*>(acoshf));
-			functions.emplace("atanhf", reinterpret_cast<void*>(atanhf));
-			functions.emplace("atan2f", reinterpret_cast<void*>(atan2f));
-			functions.emplace("powf", reinterpret_cast<void*>(powf));
-			functions.emplace("expf", reinterpret_cast<void*>(expf));
-			functions.emplace("logf", reinterpret_cast<void*>(logf));
-			functions.emplace("exp2f", reinterpret_cast<void*>(exp2f));
-			functions.emplace("log2f", reinterpret_cast<void*>(log2f));
+			functions.emplace("sinf", reinterpret_cast<void *>(sinf));
+			functions.emplace("cosf", reinterpret_cast<void *>(cosf));
+			functions.emplace("asinf", reinterpret_cast<void *>(asinf));
+			functions.emplace("acosf", reinterpret_cast<void *>(acosf));
+			functions.emplace("atanf", reinterpret_cast<void *>(atanf));
+			functions.emplace("sinhf", reinterpret_cast<void *>(sinhf));
+			functions.emplace("coshf", reinterpret_cast<void *>(coshf));
+			functions.emplace("tanhf", reinterpret_cast<void *>(tanhf));
+			functions.emplace("asinhf", reinterpret_cast<void *>(asinhf));
+			functions.emplace("acoshf", reinterpret_cast<void *>(acoshf));
+			functions.emplace("atanhf", reinterpret_cast<void *>(atanhf));
+			functions.emplace("atan2f", reinterpret_cast<void *>(atan2f));
+			functions.emplace("powf", reinterpret_cast<void *>(powf));
+			functions.emplace("expf", reinterpret_cast<void *>(expf));
+			functions.emplace("logf", reinterpret_cast<void *>(logf));
+			functions.emplace("exp2f", reinterpret_cast<void *>(exp2f));
+			functions.emplace("log2f", reinterpret_cast<void *>(log2f));
 
-			functions.emplace("sin", reinterpret_cast<void*>(static_cast<double(*)(double)>(sin)));
-			functions.emplace("cos", reinterpret_cast<void*>(static_cast<double(*)(double)>(cos)));
-			functions.emplace("asin", reinterpret_cast<void*>(static_cast<double(*)(double)>(asin)));
-			functions.emplace("acos", reinterpret_cast<void*>(static_cast<double(*)(double)>(acos)));
-			functions.emplace("atan", reinterpret_cast<void*>(static_cast<double(*)(double)>(atan)));
-			functions.emplace("sinh", reinterpret_cast<void*>(static_cast<double(*)(double)>(sinh)));
-			functions.emplace("cosh", reinterpret_cast<void*>(static_cast<double(*)(double)>(cosh)));
-			functions.emplace("tanh", reinterpret_cast<void*>(static_cast<double(*)(double)>(tanh)));
-			functions.emplace("asinh", reinterpret_cast<void*>(static_cast<double(*)(double)>(asinh)));
-			functions.emplace("acosh", reinterpret_cast<void*>(static_cast<double(*)(double)>(acosh)));
-			functions.emplace("atanh", reinterpret_cast<void*>(static_cast<double(*)(double)>(atanh)));
-			functions.emplace("atan2", reinterpret_cast<void*>(static_cast<double(*)(double,double)>(atan2)));
-			functions.emplace("pow", reinterpret_cast<void*>(static_cast<double(*)(double,double)>(pow)));
-			functions.emplace("exp", reinterpret_cast<void*>(static_cast<double(*)(double)>(exp)));
-			functions.emplace("log", reinterpret_cast<void*>(static_cast<double(*)(double)>(log)));
-			functions.emplace("exp2", reinterpret_cast<void*>(static_cast<double(*)(double)>(exp2)));
-			functions.emplace("log2", reinterpret_cast<void*>(static_cast<double(*)(double)>(log2)));
+			functions.emplace("sin", reinterpret_cast<void *>(static_cast<double (*)(double)>(sin)));
+			functions.emplace("cos", reinterpret_cast<void *>(static_cast<double (*)(double)>(cos)));
+			functions.emplace("asin", reinterpret_cast<void *>(static_cast<double (*)(double)>(asin)));
+			functions.emplace("acos", reinterpret_cast<void *>(static_cast<double (*)(double)>(acos)));
+			functions.emplace("atan", reinterpret_cast<void *>(static_cast<double (*)(double)>(atan)));
+			functions.emplace("sinh", reinterpret_cast<void *>(static_cast<double (*)(double)>(sinh)));
+			functions.emplace("cosh", reinterpret_cast<void *>(static_cast<double (*)(double)>(cosh)));
+			functions.emplace("tanh", reinterpret_cast<void *>(static_cast<double (*)(double)>(tanh)));
+			functions.emplace("asinh", reinterpret_cast<void *>(static_cast<double (*)(double)>(asinh)));
+			functions.emplace("acosh", reinterpret_cast<void *>(static_cast<double (*)(double)>(acosh)));
+			functions.emplace("atanh", reinterpret_cast<void *>(static_cast<double (*)(double)>(atanh)));
+			functions.emplace("atan2", reinterpret_cast<void *>(static_cast<double (*)(double, double)>(atan2)));
+			functions.emplace("pow", reinterpret_cast<void *>(static_cast<double (*)(double, double)>(pow)));
+			functions.emplace("exp", reinterpret_cast<void *>(static_cast<double (*)(double)>(exp)));
+			functions.emplace("log", reinterpret_cast<void *>(static_cast<double (*)(double)>(log)));
+			functions.emplace("exp2", reinterpret_cast<void *>(static_cast<double (*)(double)>(exp2)));
+			functions.emplace("log2", reinterpret_cast<void *>(static_cast<double (*)(double)>(log2)));
 
-			functions.emplace("atomic_load", reinterpret_cast<void*>(Atomic::load));
-			functions.emplace("atomic_store", reinterpret_cast<void*>(Atomic::store));
+			functions.emplace("atomic_load", reinterpret_cast<void *>(Atomic::load));
+			functions.emplace("atomic_store", reinterpret_cast<void *>(Atomic::store));
 
 			// FIXME (b/119409619): use an allocator here so we can control all memory allocations
-			functions.emplace("coroutine_alloc_frame", reinterpret_cast<void*>(F::coroutine_alloc_frame));
-			functions.emplace("coroutine_free_frame", reinterpret_cast<void*>(F::coroutine_free_frame));
+			functions.emplace("coroutine_alloc_frame", reinterpret_cast<void *>(F::coroutine_alloc_frame));
+			functions.emplace("coroutine_free_frame", reinterpret_cast<void *>(F::coroutine_free_frame));
 
 #ifdef __APPLE__
-			functions.emplace("sincosf_stret", reinterpret_cast<void*>(__sincosf_stret));
+			functions.emplace("sincosf_stret", reinterpret_cast<void *>(__sincosf_stret));
 #elif defined(__linux__)
-			functions.emplace("sincosf", reinterpret_cast<void*>(sincosf));
+			functions.emplace("sincosf", reinterpret_cast<void *>(sincosf));
 #elif defined(_WIN64)
-			functions.emplace("chkstk", reinterpret_cast<void*>(__chkstk));
+			functions.emplace("chkstk", reinterpret_cast<void *>(__chkstk));
 #elif defined(_WIN32)
-			functions.emplace("chkstk", reinterpret_cast<void*>(_chkstk));
+			functions.emplace("chkstk", reinterpret_cast<void *>(_chkstk));
 #endif
 
 #ifdef __ANDROID__
-			functions.emplace("aeabi_unwind_cpp_pr0", reinterpret_cast<void*>(F::neverCalled));
-			functions.emplace("sync_synchronize", reinterpret_cast<void*>(F::sync_synchronize));
-			functions.emplace("sync_fetch_and_add_4", reinterpret_cast<void*>(F::sync_fetch_and_add_4));
-			functions.emplace("sync_fetch_and_and_4", reinterpret_cast<void*>(F::sync_fetch_and_and_4));
-			functions.emplace("sync_fetch_and_or_4", reinterpret_cast<void*>(F::sync_fetch_and_or_4));
-			functions.emplace("sync_fetch_and_xor_4", reinterpret_cast<void*>(F::sync_fetch_and_xor_4));
-			functions.emplace("sync_fetch_and_sub_4", reinterpret_cast<void*>(F::sync_fetch_and_sub_4));
-			functions.emplace("sync_lock_test_and_set_4", reinterpret_cast<void*>(F::sync_lock_test_and_set_4));
-			functions.emplace("sync_val_compare_and_swap_4", reinterpret_cast<void*>(F::sync_val_compare_and_swap_4));
-			functions.emplace("sync_fetch_and_max_4", reinterpret_cast<void*>(F::sync_fetch_and_max_4));
-			functions.emplace("sync_fetch_and_min_4", reinterpret_cast<void*>(F::sync_fetch_and_min_4));
-			functions.emplace("sync_fetch_and_umax_4", reinterpret_cast<void*>(F::sync_fetch_and_umax_4));
-			functions.emplace("sync_fetch_and_umin_4", reinterpret_cast<void*>(F::sync_fetch_and_umin_4));
+			functions.emplace("aeabi_unwind_cpp_pr0", reinterpret_cast<void *>(F::neverCalled));
+			functions.emplace("sync_synchronize", reinterpret_cast<void *>(F::sync_synchronize));
+			functions.emplace("sync_fetch_and_add_4", reinterpret_cast<void *>(F::sync_fetch_and_add_4));
+			functions.emplace("sync_fetch_and_and_4", reinterpret_cast<void *>(F::sync_fetch_and_and_4));
+			functions.emplace("sync_fetch_and_or_4", reinterpret_cast<void *>(F::sync_fetch_and_or_4));
+			functions.emplace("sync_fetch_and_xor_4", reinterpret_cast<void *>(F::sync_fetch_and_xor_4));
+			functions.emplace("sync_fetch_and_sub_4", reinterpret_cast<void *>(F::sync_fetch_and_sub_4));
+			functions.emplace("sync_lock_test_and_set_4", reinterpret_cast<void *>(F::sync_lock_test_and_set_4));
+			functions.emplace("sync_val_compare_and_swap_4", reinterpret_cast<void *>(F::sync_val_compare_and_swap_4));
+			functions.emplace("sync_fetch_and_max_4", reinterpret_cast<void *>(F::sync_fetch_and_max_4));
+			functions.emplace("sync_fetch_and_min_4", reinterpret_cast<void *>(F::sync_fetch_and_min_4));
+			functions.emplace("sync_fetch_and_umax_4", reinterpret_cast<void *>(F::sync_fetch_and_umax_4));
+			functions.emplace("sync_fetch_and_umin_4", reinterpret_cast<void *>(F::sync_fetch_and_umin_4));
 #endif
 		}
 	};
@@ -1210,7 +1228,7 @@
 
 	// Trim off any underscores from the start of the symbol. LLVM likes
 	// to append these on macOS.
-	const char* trimmed = name;
+	const char *trimmed = name;
 	while(trimmed[0] == '_') { trimmed++; }
 
 	auto it = resolver.functions.find(trimmed);
@@ -1250,56 +1268,56 @@
 	// Use 128-bit vectors to implement logically shorter ones.
 	switch(asInternalType(t))
 	{
-	case Type_v2i32: return T(Int4::getType());
-	case Type_v4i16: return T(Short8::getType());
-	case Type_v2i16: return T(Short8::getType());
-	case Type_v8i8:  return T(Byte16::getType());
-	case Type_v4i8:  return T(Byte16::getType());
-	case Type_v2f32: return T(Float4::getType());
-	case Type_LLVM:  return reinterpret_cast<llvm::Type*>(t);
-	default:
-		UNREACHABLE("asInternalType(t): %d", int(asInternalType(t)));
-		return nullptr;
+		case Type_v2i32: return T(Int4::getType());
+		case Type_v4i16: return T(Short8::getType());
+		case Type_v2i16: return T(Short8::getType());
+		case Type_v8i8: return T(Byte16::getType());
+		case Type_v4i8: return T(Byte16::getType());
+		case Type_v2f32: return T(Float4::getType());
+		case Type_LLVM: return reinterpret_cast<llvm::Type *>(t);
+		default:
+			UNREACHABLE("asInternalType(t): %d", int(asInternalType(t)));
+			return nullptr;
 	}
 }
 
 Type *T(InternalType t)
 {
-	return reinterpret_cast<Type*>(t);
+	return reinterpret_cast<Type *>(t);
 }
 
-inline std::vector<llvm::Type*> &T(std::vector<Type*> &t)
+inline std::vector<llvm::Type *> &T(std::vector<Type *> &t)
 {
-	return reinterpret_cast<std::vector<llvm::Type*>&>(t);
+	return reinterpret_cast<std::vector<llvm::Type *> &>(t);
 }
 
 inline llvm::BasicBlock *B(BasicBlock *t)
 {
-	return reinterpret_cast<llvm::BasicBlock*>(t);
+	return reinterpret_cast<llvm::BasicBlock *>(t);
 }
 
 inline BasicBlock *B(llvm::BasicBlock *t)
 {
-	return reinterpret_cast<BasicBlock*>(t);
+	return reinterpret_cast<BasicBlock *>(t);
 }
 
 static size_t typeSize(Type *type)
 {
 	switch(asInternalType(type))
 	{
-	case Type_v2i32: return 8;
-	case Type_v4i16: return 8;
-	case Type_v2i16: return 4;
-	case Type_v8i8:  return 8;
-	case Type_v4i8:  return 4;
-	case Type_v2f32: return 8;
-	case Type_LLVM:
+		case Type_v2i32: return 8;
+		case Type_v4i16: return 8;
+		case Type_v2i16: return 4;
+		case Type_v8i8: return 8;
+		case Type_v4i8: return 4;
+		case Type_v2f32: return 8;
+		case Type_LLVM:
 		{
 			llvm::Type *t = T(type);
 
 			if(t->isPointerTy())
 			{
-				return sizeof(void*);
+				return sizeof(void *);
 			}
 
 			// At this point we should only have LLVM 'primitive' types.
@@ -1312,9 +1330,9 @@
 			return (bits + 7) / 8;
 		}
 		break;
-	default:
-		UNREACHABLE("asInternalType(type): %d", int(asInternalType(type)));
-		return 0;
+		default:
+			UNREACHABLE("asInternalType(type): %d", int(asInternalType(type)));
+			return 0;
 	}
 }
 
@@ -1322,20 +1340,20 @@
 {
 	switch(asInternalType(type))
 	{
-	case Type_v2i32: return 2;
-	case Type_v4i16: return 4;
-	case Type_v2i16: return 2;
-	case Type_v8i8:  return 8;
-	case Type_v4i8:  return 4;
-	case Type_v2f32: return 2;
-	case Type_LLVM:  return llvm::cast<llvm::VectorType>(T(type))->getNumElements();
-	default:
-		UNREACHABLE("asInternalType(type): %d", int(asInternalType(type)));
-		return 0;
+		case Type_v2i32: return 2;
+		case Type_v4i16: return 4;
+		case Type_v2i16: return 2;
+		case Type_v8i8: return 8;
+		case Type_v4i8: return 4;
+		case Type_v2f32: return 2;
+		case Type_LLVM: return llvm::cast<llvm::VectorType>(T(type))->getNumElements();
+		default:
+			UNREACHABLE("asInternalType(type): %d", int(asInternalType(type)));
+			return 0;
 	}
 }
 
-static ::llvm::Function* createFunction(const char *name, ::llvm::Type *retTy, const std::vector<::llvm::Type*> &params)
+static ::llvm::Function *createFunction(const char *name, ::llvm::Type *retTy, const std::vector<::llvm::Type *> &params)
 {
 	llvm::FunctionType *functionType = llvm::FunctionType::get(retTy, params, false);
 	auto func = llvm::Function::Create(functionType, llvm::GlobalValue::InternalLinkage, name, jit->module.get());
@@ -1346,7 +1364,7 @@
 
 Nucleus::Nucleus()
 {
-	::codegenMutex.lock();   // Reactor and LLVM are currently not thread safe
+	::codegenMutex.lock();  // Reactor and LLVM are currently not thread safe
 
 	ASSERT(jit == nullptr);
 	jit.reset(new JITBuilder(Nucleus::getDefaultConfig()));
@@ -1400,7 +1418,7 @@
 	{
 		jit->debugInfo->Finalize();
 	}
-#endif // ENABLE_RR_DEBUG_INFO
+#endif  // ENABLE_RR_DEBUG_INFO
 
 	if(false)
 	{
@@ -1415,7 +1433,7 @@
 		pm.add(llvm::createVerifierPass());
 		pm.run(*jit->module);
 	}
-#endif // defined(ENABLE_RR_LLVM_IR_VERIFICATION) || !defined(NDEBUG)
+#endif  // defined(ENABLE_RR_LLVM_IR_VERIFICATION) || !defined(NDEBUG)
 
 	jit->optimize(cfg);
 
@@ -1445,7 +1463,7 @@
 	}
 	else
 	{
-		declaration = new llvm::AllocaInst(T(type), 0, (llvm::Value*)nullptr);
+		declaration = new llvm::AllocaInst(T(type), 0, (llvm::Value *)nullptr);
 	}
 
 	entryBlock.getInstList().push_front(declaration);
@@ -1465,20 +1483,20 @@
 
 void Nucleus::setInsertBlock(BasicBlock *basicBlock)
 {
-//	assert(jit->builder->GetInsertBlock()->back().isTerminator());
+	//	assert(jit->builder->GetInsertBlock()->back().isTerminator());
 
 	Variable::materializeAll();
 
 	jit->builder->SetInsertPoint(B(basicBlock));
 }
 
-void Nucleus::createFunction(Type *ReturnType, std::vector<Type*> &Params)
+void Nucleus::createFunction(Type *ReturnType, std::vector<Type *> &Params)
 {
 	jit->function = rr::createFunction("", T(ReturnType), T(Params));
 
 #ifdef ENABLE_RR_DEBUG_INFO
 	jit->debugInfo = std::unique_ptr<DebugInfo>(new DebugInfo(jit->builder.get(), &jit->context, jit->module.get(), jit->function));
-#endif // ENABLE_RR_DEBUG_INFO
+#endif  // ENABLE_RR_DEBUG_INFO
 
 	jit->builder->SetInsertPoint(llvm::BasicBlock::Create(jit->context, "", jit->function));
 }
@@ -1670,28 +1688,28 @@
 	RR_DEBUG_INFO_UPDATE_LOC();
 	switch(asInternalType(type))
 	{
-	case Type_v2i32:
-	case Type_v4i16:
-	case Type_v8i8:
-	case Type_v2f32:
-		return createBitCast(
-			createInsertElement(
-				V(llvm::UndefValue::get(llvm::VectorType::get(T(Long::getType()), 2))),
-				createLoad(createBitCast(ptr, Pointer<Long>::getType()), Long::getType(), isVolatile, alignment, atomic, memoryOrder),
-				0),
-			type);
-	case Type_v2i16:
-	case Type_v4i8:
-		if(alignment != 0)   // Not a local variable (all vectors are 128-bit).
-		{
-			Value *u = V(llvm::UndefValue::get(llvm::VectorType::get(T(Long::getType()), 2)));
-			Value *i = createLoad(createBitCast(ptr, Pointer<Int>::getType()), Int::getType(), isVolatile, alignment, atomic, memoryOrder);
-			i = createZExt(i, Long::getType());
-			Value *v = createInsertElement(u, i, 0);
-			return createBitCast(v, type);
-		}
-		// Fallthrough to non-emulated case.
-	case Type_LLVM:
+		case Type_v2i32:
+		case Type_v4i16:
+		case Type_v8i8:
+		case Type_v2f32:
+			return createBitCast(
+			    createInsertElement(
+			        V(llvm::UndefValue::get(llvm::VectorType::get(T(Long::getType()), 2))),
+			        createLoad(createBitCast(ptr, Pointer<Long>::getType()), Long::getType(), isVolatile, alignment, atomic, memoryOrder),
+			        0),
+			    type);
+		case Type_v2i16:
+		case Type_v4i8:
+			if(alignment != 0)  // Not a local variable (all vectors are 128-bit).
+			{
+				Value *u = V(llvm::UndefValue::get(llvm::VectorType::get(T(Long::getType()), 2)));
+				Value *i = createLoad(createBitCast(ptr, Pointer<Int>::getType()), Int::getType(), isVolatile, alignment, atomic, memoryOrder);
+				i = createZExt(i, Long::getType());
+				Value *v = createInsertElement(u, i, 0);
+				return createBitCast(v, type);
+			}
+			// Fallthrough to non-emulated case.
+		case Type_LLVM:
 		{
 			auto elTy = T(type);
 			ASSERT(V(ptr)->getType()->getContainedType(0) == elTy);
@@ -1730,22 +1748,22 @@
 				auto i8Ty = ::llvm::Type::getInt8Ty(jit->context);
 				auto i8PtrTy = i8Ty->getPointerTo();
 				auto voidTy = ::llvm::Type::getVoidTy(jit->context);
-				auto funcTy = ::llvm::FunctionType::get(voidTy, {sizetTy, i8PtrTy, i8PtrTy, intTy}, false);
+				auto funcTy = ::llvm::FunctionType::get(voidTy, { sizetTy, i8PtrTy, i8PtrTy, intTy }, false);
 				auto func = jit->module->getOrInsertFunction("__atomic_load", funcTy);
 				auto size = jit->module->getDataLayout().getTypeStoreSize(elTy);
 				auto out = allocateStackVariable(type);
 				jit->builder->CreateCall(func, {
-					::llvm::ConstantInt::get(sizetTy, size),
-					jit->builder->CreatePointerCast(V(ptr), i8PtrTy),
-					jit->builder->CreatePointerCast(V(out), i8PtrTy),
-					::llvm::ConstantInt::get(intTy, uint64_t(atomicOrdering(true, memoryOrder))),
-				 });
-				 return V(jit->builder->CreateLoad(V(out)));
+				                                   ::llvm::ConstantInt::get(sizetTy, size),
+				                                   jit->builder->CreatePointerCast(V(ptr), i8PtrTy),
+				                                   jit->builder->CreatePointerCast(V(out), i8PtrTy),
+				                                   ::llvm::ConstantInt::get(intTy, uint64_t(atomicOrdering(true, memoryOrder))),
+				                               });
+				return V(jit->builder->CreateLoad(V(out)));
 			}
 		}
-	default:
-		UNREACHABLE("asInternalType(type): %d", int(asInternalType(type)));
-		return nullptr;
+		default:
+			UNREACHABLE("asInternalType(type): %d", int(asInternalType(type)));
+			return nullptr;
 	}
 }
 
@@ -1754,28 +1772,28 @@
 	RR_DEBUG_INFO_UPDATE_LOC();
 	switch(asInternalType(type))
 	{
-	case Type_v2i32:
-	case Type_v4i16:
-	case Type_v8i8:
-	case Type_v2f32:
-		createStore(
-			createExtractElement(
-				createBitCast(value, T(llvm::VectorType::get(T(Long::getType()), 2))), Long::getType(), 0),
-			createBitCast(ptr, Pointer<Long>::getType()),
-			Long::getType(), isVolatile, alignment, atomic, memoryOrder);
-		return value;
-	case Type_v2i16:
-	case Type_v4i8:
-		if(alignment != 0)   // Not a local variable (all vectors are 128-bit).
-		{
+		case Type_v2i32:
+		case Type_v4i16:
+		case Type_v8i8:
+		case Type_v2f32:
 			createStore(
-				createExtractElement(createBitCast(value, Int4::getType()), Int::getType(), 0),
-				createBitCast(ptr, Pointer<Int>::getType()),
-				Int::getType(), isVolatile, alignment, atomic, memoryOrder);
+			    createExtractElement(
+			        createBitCast(value, T(llvm::VectorType::get(T(Long::getType()), 2))), Long::getType(), 0),
+			    createBitCast(ptr, Pointer<Long>::getType()),
+			    Long::getType(), isVolatile, alignment, atomic, memoryOrder);
 			return value;
-		}
-		// Fallthrough to non-emulated case.
-	case Type_LLVM:
+		case Type_v2i16:
+		case Type_v4i8:
+			if(alignment != 0)  // Not a local variable (all vectors are 128-bit).
+			{
+				createStore(
+				    createExtractElement(createBitCast(value, Int4::getType()), Int::getType(), 0),
+				    createBitCast(ptr, Pointer<Int>::getType()),
+				    Int::getType(), isVolatile, alignment, atomic, memoryOrder);
+				return value;
+			}
+			// Fallthrough to non-emulated case.
+		case Type_LLVM:
 		{
 			auto elTy = T(type);
 			ASSERT(V(ptr)->getType()->getContainedType(0) == elTy);
@@ -1812,24 +1830,24 @@
 				auto i8Ty = ::llvm::Type::getInt8Ty(jit->context);
 				auto i8PtrTy = i8Ty->getPointerTo();
 				auto voidTy = ::llvm::Type::getVoidTy(jit->context);
-				auto funcTy = ::llvm::FunctionType::get(voidTy, {sizetTy, i8PtrTy, i8PtrTy, intTy}, false);
+				auto funcTy = ::llvm::FunctionType::get(voidTy, { sizetTy, i8PtrTy, i8PtrTy, intTy }, false);
 				auto func = jit->module->getOrInsertFunction("__atomic_store", funcTy);
 				auto size = jit->module->getDataLayout().getTypeStoreSize(elTy);
 				auto copy = allocateStackVariable(type);
 				jit->builder->CreateStore(V(value), V(copy));
 				jit->builder->CreateCall(func, {
-					::llvm::ConstantInt::get(sizetTy, size),
-					jit->builder->CreatePointerCast(V(ptr), i8PtrTy),
-					jit->builder->CreatePointerCast(V(copy), i8PtrTy),
-					::llvm::ConstantInt::get(intTy, uint64_t(atomicOrdering(true, memoryOrder))),
-				 });
+				                                   ::llvm::ConstantInt::get(sizetTy, size),
+				                                   jit->builder->CreatePointerCast(V(ptr), i8PtrTy),
+				                                   jit->builder->CreatePointerCast(V(copy), i8PtrTy),
+				                                   ::llvm::ConstantInt::get(intTy, uint64_t(atomicOrdering(true, memoryOrder))),
+				                               });
 			}
 
 			return value;
 		}
-	default:
-		UNREACHABLE("asInternalType(type): %d", int(asInternalType(type)));
-		return nullptr;
+		default:
+			UNREACHABLE("asInternalType(type): %d", int(asInternalType(type)));
+			return nullptr;
 	}
 }
 
@@ -1843,10 +1861,10 @@
 	auto i32Ty = ::llvm::Type::getInt32Ty(jit->context);
 	auto elVecTy = ::llvm::VectorType::get(T(elTy), numEls);
 	auto elVecPtrTy = elVecTy->getPointerTo();
-	auto i8Mask = jit->builder->CreateIntCast(V(mask), ::llvm::VectorType::get(i1Ty, numEls), false); // vec<int, int, ...> -> vec<bool, bool, ...>
+	auto i8Mask = jit->builder->CreateIntCast(V(mask), ::llvm::VectorType::get(i1Ty, numEls), false);  // vec<int, int, ...> -> vec<bool, bool, ...>
 	auto passthrough = zeroMaskedLanes ? ::llvm::Constant::getNullValue(elVecTy) : llvm::UndefValue::get(elVecTy);
 	auto align = ::llvm::ConstantInt::get(i32Ty, alignment);
-	auto func = ::llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::masked_load, { elVecTy, elVecPtrTy } );
+	auto func = ::llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::masked_load, { elVecTy, elVecPtrTy });
 	return V(jit->builder->CreateCall(func, { V(ptr), align, i8Mask, passthrough }));
 }
 
@@ -1861,9 +1879,9 @@
 	auto i32Ty = ::llvm::Type::getInt32Ty(jit->context);
 	auto elVecTy = V(val)->getType();
 	auto elVecPtrTy = elVecTy->getPointerTo();
-	auto i8Mask = jit->builder->CreateIntCast(V(mask), ::llvm::VectorType::get(i1Ty, numEls), false); // vec<int, int, ...> -> vec<bool, bool, ...>
+	auto i8Mask = jit->builder->CreateIntCast(V(mask), ::llvm::VectorType::get(i1Ty, numEls), false);  // vec<int, int, ...> -> vec<bool, bool, ...>
 	auto align = ::llvm::ConstantInt::get(i32Ty, alignment);
-	auto func = ::llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::masked_store, { elVecTy, elVecPtrTy } );
+	auto func = ::llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::masked_store, { elVecTy, elVecPtrTy });
 	jit->builder->CreateCall(func, { V(val), V(ptr), align, i8Mask });
 }
 
@@ -1896,7 +1914,7 @@
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
 	ASSERT(V(ptr)->getType()->getContainedType(0) == T(type));
-	if(sizeof(void*) == 8)
+	if(sizeof(void *) == 8)
 	{
 		// LLVM manual: "When indexing into an array, pointer or vector,
 		// integers of any width are allowed, and they are not required to
@@ -1911,9 +1929,7 @@
 		// x86 supports automatic zero-extending of 32-bit registers to
 		// 64-bit. Thus when indexing into an array using a uint32 is
 		// actually faster than an int32.
-		index = unsignedIndex ?
-			createZExt(index, Long::getType()) :
-			createSExt(index, Long::getType());
+		index = unsignedIndex ? createZExt(index, Long::getType()) : createSExt(index, Long::getType());
 	}
 
 	// For non-emulated types we can rely on LLVM's GEP to calculate the
@@ -1925,15 +1941,13 @@
 
 	// For emulated types we have to multiply the index by the intended
 	// type size ourselves to obain the byte offset.
-	index = (sizeof(void*) == 8) ?
-		createMul(index, createConstantLong((int64_t)typeSize(type))) :
-		createMul(index, createConstantInt((int)typeSize(type)));
+	index = (sizeof(void *) == 8) ? createMul(index, createConstantLong((int64_t)typeSize(type))) : createMul(index, createConstantInt((int)typeSize(type)));
 
 	// Cast to a byte pointer, apply the byte offset, and cast back to the
 	// original pointer type.
 	return createBitCast(
-		V(jit->builder->CreateGEP(V(createBitCast(ptr, T(llvm::PointerType::get(T(Byte::getType()), 0)))), V(index))),
-		T(llvm::PointerType::get(T(type), 0)));
+	    V(jit->builder->CreateGEP(V(createBitCast(ptr, T(llvm::PointerType::get(T(Byte::getType()), 0)))), V(index))),
+	    T(llvm::PointerType::get(T(type), 0)));
 }
 
 Value *Nucleus::createAtomicAdd(Value *ptr, Value *value, std::memory_order memoryOrder)
@@ -1990,7 +2004,6 @@
 	return V(jit->builder->CreateAtomicRMW(llvm::AtomicRMWInst::UMax, V(ptr), V(value), atomicOrdering(true, memoryOrder)));
 }
 
-
 Value *Nucleus::createAtomicExchange(Value *ptr, Value *value, std::memory_order memoryOrder)
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
@@ -2002,8 +2015,8 @@
 	RR_DEBUG_INFO_UPDATE_LOC();
 	// Note: AtomicCmpXchgInstruction returns a 2-member struct containing {result, success-flag}, not the result directly.
 	return V(jit->builder->CreateExtractValue(
-			jit->builder->CreateAtomicCmpXchg(V(ptr), V(compare), V(value), atomicOrdering(true, memoryOrderEqual), atomicOrdering(true, memoryOrderUnequal)),
-			llvm::ArrayRef<unsigned>(0u)));
+	    jit->builder->CreateAtomicCmpXchg(V(ptr), V(compare), V(value), atomicOrdering(true, memoryOrderEqual), atomicOrdering(true, memoryOrderUnequal)),
+	    llvm::ArrayRef<unsigned>(0u)));
 }
 
 Value *Nucleus::createTrunc(Value *v, Type *destType)
@@ -2255,7 +2268,7 @@
 		swizzle[i] = llvm::ConstantInt::get(llvm::Type::getInt32Ty(jit->context), select[i]);
 	}
 
-	llvm::Value *shuffle = llvm::ConstantVector::get(llvm::ArrayRef<llvm::Constant*>(swizzle, size));
+	llvm::Value *shuffle = llvm::ConstantVector::get(llvm::ArrayRef<llvm::Constant *>(swizzle, size));
 
 	return V(jit->builder->CreateShuffleVector(V(v1), V(v2), shuffle));
 }
@@ -2269,7 +2282,7 @@
 SwitchCases *Nucleus::createSwitch(Value *control, BasicBlock *defaultBranch, unsigned numCases)
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
-	return reinterpret_cast<SwitchCases*>(jit->builder->CreateSwitch(V(control), B(defaultBranch), numCases));
+	return reinterpret_cast<SwitchCases *>(jit->builder->CreateSwitch(V(control), B(defaultBranch), numCases));
 }
 
 void Nucleus::addSwitchCase(SwitchCases *switchCases, int label, BasicBlock *branch)
@@ -2359,8 +2372,8 @@
 Value *Nucleus::createConstantVector(const int64_t *constants, Type *type)
 {
 	ASSERT(llvm::isa<llvm::VectorType>(T(type)));
-	const int numConstants = elementCount(type);                                       // Number of provided constants for the (emulated) type.
-	const int numElements = llvm::cast<llvm::VectorType>(T(type))->getNumElements();   // Number of elements of the underlying vector type.
+	const int numConstants = elementCount(type);                                      // Number of provided constants for the (emulated) type.
+	const int numElements = llvm::cast<llvm::VectorType>(T(type))->getNumElements();  // Number of elements of the underlying vector type.
 	ASSERT(numElements <= 16 && numConstants <= numElements);
 	llvm::Constant *constantVector[16];
 
@@ -2369,14 +2382,14 @@
 		constantVector[i] = llvm::ConstantInt::get(T(type)->getContainedType(0), constants[i % numConstants]);
 	}
 
-	return V(llvm::ConstantVector::get(llvm::ArrayRef<llvm::Constant*>(constantVector, numElements)));
+	return V(llvm::ConstantVector::get(llvm::ArrayRef<llvm::Constant *>(constantVector, numElements)));
 }
 
 Value *Nucleus::createConstantVector(const double *constants, Type *type)
 {
 	ASSERT(llvm::isa<llvm::VectorType>(T(type)));
-	const int numConstants = elementCount(type);                                       // Number of provided constants for the (emulated) type.
-	const int numElements = llvm::cast<llvm::VectorType>(T(type))->getNumElements();   // Number of elements of the underlying vector type.
+	const int numConstants = elementCount(type);                                      // Number of provided constants for the (emulated) type.
+	const int numElements = llvm::cast<llvm::VectorType>(T(type))->getNumElements();  // Number of elements of the underlying vector type.
 	ASSERT(numElements <= 8 && numConstants <= numElements);
 	llvm::Constant *constantVector[8];
 
@@ -2385,7 +2398,7 @@
 		constantVector[i] = llvm::ConstantFP::get(T(type)->getContainedType(0), constants[i % numConstants]);
 	}
 
-	return V(llvm::ConstantVector::get(llvm::ArrayRef<llvm::Constant*>(constantVector, numElements)));
+	return V(llvm::ConstantVector::get(llvm::ArrayRef<llvm::Constant *>(constantVector, numElements)));
 }
 
 Type *Void::getType()
@@ -2560,7 +2573,7 @@
 Short4::Short4(RValue<Int4> cast)
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
-	int select[8] = {0, 2, 4, 6, 0, 2, 4, 6};
+	int select[8] = { 0, 2, 4, 6, 0, 2, 4, 6 };
 	Value *short8 = Nucleus::createBitCast(cast.value, Short8::getType());
 
 	Value *packed = Nucleus::createShuffleVector(short8, short8, select);
@@ -2591,7 +2604,7 @@
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
 #if defined(__i386__) || defined(__x86_64__)
-//	return RValue<Short4>(Nucleus::createShl(lhs.value, rhs.value));
+	//	return RValue<Short4>(Nucleus::createShl(lhs.value, rhs.value));
 
 	return x86::psllw(lhs, rhs);
 #else
@@ -2724,7 +2737,7 @@
 #if defined(__i386__) || defined(__x86_64__)
 		if(CPUID::supportsSSE4_1())
 		{
-			Int4 int4(Min(cast, Float4(0xFFFF)));   // packusdw takes care of 0x0000 saturation
+			Int4 int4(Min(cast, Float4(0xFFFF)));  // packusdw takes care of 0x0000 saturation
 			*this = As<Short4>(PackUnsigned(int4, int4));
 		}
 		else
@@ -2743,7 +2756,7 @@
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
 #if defined(__i386__) || defined(__x86_64__)
-//	return RValue<Short4>(Nucleus::createShl(lhs.value, rhs.value));
+	//	return RValue<Short4>(Nucleus::createShl(lhs.value, rhs.value));
 
 	return As<UShort4>(x86::psllw(As<Short4>(lhs), rhs));
 #else
@@ -2755,7 +2768,7 @@
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
 #if defined(__i386__) || defined(__x86_64__)
-//	return RValue<Short4>(Nucleus::createLShr(lhs.value, rhs.value));
+	//	return RValue<Short4>(Nucleus::createLShr(lhs.value, rhs.value));
 
 	return x86::psrlw(lhs, rhs);
 #else
@@ -2879,7 +2892,7 @@
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
 #if defined(__i386__) || defined(__x86_64__)
-	return x86::psrlw(lhs, rhs);   // FIXME: Fallback required
+	return x86::psrlw(lhs, rhs);  // FIXME: Fallback required
 #else
 	return As<UShort8>(V(lowerVectorLShr(V(lhs.value), rhs)));
 #endif
@@ -2888,8 +2901,7 @@
 RValue<UShort8> Swizzle(RValue<UShort8> x, char select0, char select1, char select2, char select3, char select4, char select5, char select6, char select7)
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
-	int pshufb[16] =
-	{
+	int pshufb[16] = {
 		select0 + 0,
 		select0 + 1,
 		select1 + 0,
@@ -2930,7 +2942,7 @@
 	return T(llvm::VectorType::get(T(UShort::getType()), 8));
 }
 
-RValue<Int> operator++(Int &val, int)   // Post-increment
+RValue<Int> operator++(Int &val, int)  // Post-increment
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
 	RValue<Int> res = val;
@@ -2941,7 +2953,7 @@
 	return res;
 }
 
-const Int &operator++(Int &val)   // Pre-increment
+const Int &operator++(Int &val)  // Pre-increment
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
 	Value *inc = Nucleus::createAdd(val.loadValue(), Nucleus::createConstantInt(1));
@@ -2950,7 +2962,7 @@
 	return val;
 }
 
-RValue<Int> operator--(Int &val, int)   // Post-decrement
+RValue<Int> operator--(Int &val, int)  // Post-decrement
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
 	RValue<Int> res = val;
@@ -2961,7 +2973,7 @@
 	return res;
 }
 
-const Int &operator--(Int &val)   // Pre-decrement
+const Int &operator--(Int &val)  // Pre-decrement
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
 	Value *inc = Nucleus::createSub(val.loadValue(), Nucleus::createConstantInt(1));
@@ -2997,7 +3009,7 @@
 	storeValue(integer);
 }
 
-RValue<UInt> operator++(UInt &val, int)   // Post-increment
+RValue<UInt> operator++(UInt &val, int)  // Post-increment
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
 	RValue<UInt> res = val;
@@ -3008,7 +3020,7 @@
 	return res;
 }
 
-const UInt &operator++(UInt &val)   // Pre-increment
+const UInt &operator++(UInt &val)  // Pre-increment
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
 	Value *inc = Nucleus::createAdd(val.loadValue(), Nucleus::createConstantInt(1));
@@ -3017,7 +3029,7 @@
 	return val;
 }
 
-RValue<UInt> operator--(UInt &val, int)   // Post-decrement
+RValue<UInt> operator--(UInt &val, int)  // Post-decrement
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
 	RValue<UInt> res = val;
@@ -3028,7 +3040,7 @@
 	return res;
 }
 
-const UInt &operator--(UInt &val)   // Pre-decrement
+const UInt &operator--(UInt &val)  // Pre-decrement
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
 	Value *inc = Nucleus::createSub(val.loadValue(), Nucleus::createConstantInt(1));
@@ -3066,7 +3078,7 @@
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
 #if defined(__i386__) || defined(__x86_64__)
-//	return RValue<Int2>(Nucleus::createShl(lhs.value, rhs.value));
+	//	return RValue<Int2>(Nucleus::createShl(lhs.value, rhs.value));
 
 	return x86::pslld(lhs, rhs);
 #else
@@ -3078,7 +3090,7 @@
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
 #if defined(__i386__) || defined(__x86_64__)
-//	return RValue<Int2>(Nucleus::createAShr(lhs.value, rhs.value));
+	//	return RValue<Int2>(Nucleus::createAShr(lhs.value, rhs.value));
 
 	return x86::psrad(lhs, rhs);
 #else
@@ -3095,7 +3107,7 @@
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
 #if defined(__i386__) || defined(__x86_64__)
-//	return RValue<UInt2>(Nucleus::createShl(lhs.value, rhs.value));
+	//	return RValue<UInt2>(Nucleus::createShl(lhs.value, rhs.value));
 
 	return As<UInt2>(x86::pslld(As<Int2>(lhs), rhs));
 #else
@@ -3107,7 +3119,7 @@
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
 #if defined(__i386__) || defined(__x86_64__)
-//	return RValue<UInt2>(Nucleus::createLShr(lhs.value, rhs.value));
+	//	return RValue<UInt2>(Nucleus::createLShr(lhs.value, rhs.value));
 
 	return x86::psrld(lhs, rhs);
 #else
@@ -3120,7 +3132,8 @@
 	return T(Type_v2i32);
 }
 
-Int4::Int4(RValue<Byte4> cast) : XYZW(this)
+Int4::Int4(RValue<Byte4> cast)
+    : XYZW(this)
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
 #if defined(__i386__) || defined(__x86_64__)
@@ -3131,11 +3144,11 @@
 	else
 #endif
 	{
-		int swizzle[16] = {0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23};
+		int swizzle[16] = { 0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23 };
 		Value *a = Nucleus::createBitCast(cast.value, Byte16::getType());
 		Value *b = Nucleus::createShuffleVector(a, Nucleus::createNullValue(Byte16::getType()), swizzle);
 
-		int swizzle2[8] = {0, 8, 1, 9, 2, 10, 3, 11};
+		int swizzle2[8] = { 0, 8, 1, 9, 2, 10, 3, 11 };
 		Value *c = Nucleus::createBitCast(b, Short8::getType());
 		Value *d = Nucleus::createShuffleVector(c, Nucleus::createNullValue(Short8::getType()), swizzle2);
 
@@ -3143,7 +3156,8 @@
 	}
 }
 
-Int4::Int4(RValue<SByte4> cast) : XYZW(this)
+Int4::Int4(RValue<SByte4> cast)
+    : XYZW(this)
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
 #if defined(__i386__) || defined(__x86_64__)
@@ -3154,11 +3168,11 @@
 	else
 #endif
 	{
-		int swizzle[16] = {0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7};
+		int swizzle[16] = { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7 };
 		Value *a = Nucleus::createBitCast(cast.value, Byte16::getType());
 		Value *b = Nucleus::createShuffleVector(a, a, swizzle);
 
-		int swizzle2[8] = {0, 0, 1, 1, 2, 2, 3, 3};
+		int swizzle2[8] = { 0, 0, 1, 1, 2, 2, 3, 3 };
 		Value *c = Nucleus::createBitCast(b, Short8::getType());
 		Value *d = Nucleus::createShuffleVector(c, c, swizzle2);
 
@@ -3166,7 +3180,8 @@
 	}
 }
 
-Int4::Int4(RValue<Short4> cast) : XYZW(this)
+Int4::Int4(RValue<Short4> cast)
+    : XYZW(this)
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
 #if defined(__i386__) || defined(__x86_64__)
@@ -3177,13 +3192,14 @@
 	else
 #endif
 	{
-		int swizzle[8] = {0, 0, 1, 1, 2, 2, 3, 3};
+		int swizzle[8] = { 0, 0, 1, 1, 2, 2, 3, 3 };
 		Value *c = Nucleus::createShuffleVector(cast.value, cast.value, swizzle);
 		*this = As<Int4>(c) >> 16;
 	}
 }
 
-Int4::Int4(RValue<UShort4> cast) : XYZW(this)
+Int4::Int4(RValue<UShort4> cast)
+    : XYZW(this)
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
 #if defined(__i386__) || defined(__x86_64__)
@@ -3194,19 +3210,20 @@
 	else
 #endif
 	{
-		int swizzle[8] = {0, 8, 1, 9, 2, 10, 3, 11};
+		int swizzle[8] = { 0, 8, 1, 9, 2, 10, 3, 11 };
 		Value *c = Nucleus::createShuffleVector(cast.value, Short8(0, 0, 0, 0, 0, 0, 0, 0).loadValue(), swizzle);
 		*this = As<Int4>(c);
 	}
 }
 
-Int4::Int4(RValue<Int> rhs) : XYZW(this)
+Int4::Int4(RValue<Int> rhs)
+    : XYZW(this)
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
 	Value *vector = loadValue();
 	Value *insert = Nucleus::createInsertElement(vector, rhs.value, 0);
 
-	int swizzle[4] = {0, 0, 0, 0};
+	int swizzle[4] = { 0, 0, 0, 0 };
 	Value *replicate = Nucleus::createShuffleVector(insert, insert, swizzle);
 
 	storeValue(replicate);
@@ -3359,20 +3376,22 @@
 	return T(llvm::VectorType::get(T(Int::getType()), 4));
 }
 
-UInt4::UInt4(RValue<Float4> cast) : XYZW(this)
+UInt4::UInt4(RValue<Float4> cast)
+    : XYZW(this)
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
 	Value *xyzw = Nucleus::createFPToUI(cast.value, UInt4::getType());
 	storeValue(xyzw);
 }
 
-UInt4::UInt4(RValue<UInt> rhs) : XYZW(this)
+UInt4::UInt4(RValue<UInt> rhs)
+    : XYZW(this)
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
 	Value *vector = loadValue();
 	Value *insert = Nucleus::createInsertElement(vector, rhs.value, 0);
 
-	int swizzle[4] = {0, 0, 0, 0};
+	int swizzle[4] = { 0, 0, 0, 0 };
 	Value *replicate = Nucleus::createShuffleVector(insert, insert, swizzle);
 
 	storeValue(replicate);
@@ -3539,7 +3558,7 @@
 	}
 	else
 	{
-		return Float(Int(x));   // Rounded toward zero
+		return Float(Int(x));  // Rounded toward zero
 	}
 #else
 	return RValue<Float>(V(lowerTrunc(V(x.value))));
@@ -3609,23 +3628,24 @@
 
 RValue<Float> Exp2(RValue<Float> v)
 {
-	auto func = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::exp2, { T(Float::getType()) } );
+	auto func = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::exp2, { T(Float::getType()) });
 	return RValue<Float>(V(jit->builder->CreateCall(func, V(v.value))));
 }
 
 RValue<Float> Log2(RValue<Float> v)
 {
-	auto func = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::log2, { T(Float::getType()) } );
+	auto func = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::log2, { T(Float::getType()) });
 	return RValue<Float>(V(jit->builder->CreateCall(func, V(v.value))));
 }
 
-Float4::Float4(RValue<Float> rhs) : XYZW(this)
+Float4::Float4(RValue<Float> rhs)
+    : XYZW(this)
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
 	Value *vector = loadValue();
 	Value *insert = Nucleus::createInsertElement(vector, rhs.value, 0);
 
-	int swizzle[4] = {0, 0, 0, 0};
+	int swizzle[4] = { 0, 0, 0, 0 };
 	Value *replicate = Nucleus::createShuffleVector(insert, insert, swizzle);
 
 	storeValue(replicate);
@@ -3700,42 +3720,42 @@
 RValue<Int4> CmpEQ(RValue<Float4> x, RValue<Float4> y)
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
-//	return As<Int4>(x86::cmpeqps(x, y));
+	//	return As<Int4>(x86::cmpeqps(x, y));
 	return RValue<Int4>(Nucleus::createSExt(Nucleus::createFCmpOEQ(x.value, y.value), Int4::getType()));
 }
 
 RValue<Int4> CmpLT(RValue<Float4> x, RValue<Float4> y)
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
-//	return As<Int4>(x86::cmpltps(x, y));
+	//	return As<Int4>(x86::cmpltps(x, y));
 	return RValue<Int4>(Nucleus::createSExt(Nucleus::createFCmpOLT(x.value, y.value), Int4::getType()));
 }
 
 RValue<Int4> CmpLE(RValue<Float4> x, RValue<Float4> y)
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
-//	return As<Int4>(x86::cmpleps(x, y));
+	//	return As<Int4>(x86::cmpleps(x, y));
 	return RValue<Int4>(Nucleus::createSExt(Nucleus::createFCmpOLE(x.value, y.value), Int4::getType()));
 }
 
 RValue<Int4> CmpNEQ(RValue<Float4> x, RValue<Float4> y)
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
-//	return As<Int4>(x86::cmpneqps(x, y));
+	//	return As<Int4>(x86::cmpneqps(x, y));
 	return RValue<Int4>(Nucleus::createSExt(Nucleus::createFCmpONE(x.value, y.value), Int4::getType()));
 }
 
 RValue<Int4> CmpNLT(RValue<Float4> x, RValue<Float4> y)
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
-//	return As<Int4>(x86::cmpnltps(x, y));
+	//	return As<Int4>(x86::cmpnltps(x, y));
 	return RValue<Int4>(Nucleus::createSExt(Nucleus::createFCmpOGE(x.value, y.value), Int4::getType()));
 }
 
 RValue<Int4> CmpNLE(RValue<Float4> x, RValue<Float4> y)
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
-//	return As<Int4>(x86::cmpnleps(x, y));
+	//	return As<Int4>(x86::cmpnleps(x, y));
 	return RValue<Int4>(Nucleus::createSExt(Nucleus::createFCmpOGT(x.value, y.value), Int4::getType()));
 }
 
@@ -3821,9 +3841,9 @@
 	}
 	else
 	{
-		frc = x - Float4(Int4(x));   // Signed fractional part.
+		frc = x - Float4(Int4(x));  // Signed fractional part.
 
-		frc += As<Float4>(As<Int4>(CmpNLE(Float4(0.0f), frc)) & As<Int4>(Float4(1.0f)));   // Add 1.0 if negative.
+		frc += As<Float4>(As<Int4>(CmpNLE(Float4(0.0f), frc)) & As<Int4>(Float4(1.0f)));  // Add 1.0 if negative.
 	}
 #else
 	frc = x - Floor(x);
@@ -3868,13 +3888,13 @@
 
 RValue<Float4> Sin(RValue<Float4> v)
 {
-	auto func = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::sin, { V(v.value)->getType() } );
+	auto func = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::sin, { V(v.value)->getType() });
 	return RValue<Float4>(V(jit->builder->CreateCall(func, V(v.value))));
 }
 
 RValue<Float4> Cos(RValue<Float4> v)
 {
-	auto func = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::cos, { V(v.value)->getType() } );
+	auto func = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::cos, { V(v.value)->getType() });
 	return RValue<Float4>(V(jit->builder->CreateCall(func, V(v.value))));
 }
 
@@ -3883,9 +3903,9 @@
 	return Sin(v) / Cos(v);
 }
 
-static RValue<Float4> TransformFloat4PerElement(RValue<Float4> v, const char* name)
+static RValue<Float4> TransformFloat4PerElement(RValue<Float4> v, const char *name)
 {
-	auto funcTy = ::llvm::FunctionType::get(T(Float::getType()), ::llvm::ArrayRef<llvm::Type*>(T(Float::getType())), false);
+	auto funcTy = ::llvm::FunctionType::get(T(Float::getType()), ::llvm::ArrayRef<llvm::Type *>(T(Float::getType())), false);
 	auto func = jit->module->getOrInsertFunction(name, funcTy);
 	llvm::Value *out = ::llvm::UndefValue::get(T(Float4::getType()));
 	for(uint64_t i = 0; i < 4; i++)
@@ -3943,7 +3963,7 @@
 
 RValue<Float4> Atan2(RValue<Float4> x, RValue<Float4> y)
 {
-	::llvm::SmallVector<::llvm::Type*, 2> paramTys;
+	::llvm::SmallVector<::llvm::Type *, 2> paramTys;
 	paramTys.push_back(T(Float::getType()));
 	paramTys.push_back(T(Float::getType()));
 	auto funcTy = ::llvm::FunctionType::get(T(Float::getType()), paramTys, false);
@@ -3952,9 +3972,8 @@
 	for(uint64_t i = 0; i < 4; i++)
 	{
 		auto el = jit->builder->CreateCall2(func, ARGS(
-				V(Nucleus::createExtractElement(x.value, Float::getType(), i)),
-				V(Nucleus::createExtractElement(y.value, Float::getType(), i))
-			));
+		                                              V(Nucleus::createExtractElement(x.value, Float::getType(), i)),
+		                                              V(Nucleus::createExtractElement(y.value, Float::getType(), i))));
 		out = V(Nucleus::createInsertElement(V(out), V(el), i));
 	}
 	return RValue<Float4>(V(out));
@@ -3968,62 +3987,58 @@
 
 RValue<Float4> Exp(RValue<Float4> v)
 {
-	auto func = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::exp, { T(Float4::getType()) } );
+	auto func = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::exp, { T(Float4::getType()) });
 	return RValue<Float4>(V(jit->builder->CreateCall(func, V(v.value))));
 }
 
 RValue<Float4> Log(RValue<Float4> v)
 {
-	auto func = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::log, { T(Float4::getType()) } );
+	auto func = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::log, { T(Float4::getType()) });
 	return RValue<Float4>(V(jit->builder->CreateCall(func, V(v.value))));
 }
 
 RValue<Float4> Exp2(RValue<Float4> v)
 {
-	auto func = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::exp2, { T(Float4::getType()) } );
+	auto func = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::exp2, { T(Float4::getType()) });
 	return RValue<Float4>(V(jit->builder->CreateCall(func, V(v.value))));
 }
 
 RValue<Float4> Log2(RValue<Float4> v)
 {
-	auto func = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::log2, { T(Float4::getType()) } );
+	auto func = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::log2, { T(Float4::getType()) });
 	return RValue<Float4>(V(jit->builder->CreateCall(func, V(v.value))));
 }
 
 RValue<UInt> Ctlz(RValue<UInt> v, bool isZeroUndef)
 {
-	auto func = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::ctlz, { T(UInt::getType()) } );
+	auto func = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::ctlz, { T(UInt::getType()) });
 	return RValue<UInt>(V(jit->builder->CreateCall2(func, ARGS(
-		V(v.value),
-		isZeroUndef ? ::llvm::ConstantInt::getTrue(jit->context) : ::llvm::ConstantInt::getFalse(jit->context)
-	))));
+	                                                          V(v.value),
+	                                                          isZeroUndef ? ::llvm::ConstantInt::getTrue(jit->context) : ::llvm::ConstantInt::getFalse(jit->context)))));
 }
 
 RValue<UInt4> Ctlz(RValue<UInt4> v, bool isZeroUndef)
 {
-	auto func = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::ctlz, { T(UInt4::getType()) } );
+	auto func = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::ctlz, { T(UInt4::getType()) });
 	return RValue<UInt4>(V(jit->builder->CreateCall2(func, ARGS(
-		V(v.value),
-		isZeroUndef ? ::llvm::ConstantInt::getTrue(jit->context) : ::llvm::ConstantInt::getFalse(jit->context)
-	))));
+	                                                           V(v.value),
+	                                                           isZeroUndef ? ::llvm::ConstantInt::getTrue(jit->context) : ::llvm::ConstantInt::getFalse(jit->context)))));
 }
 
 RValue<UInt> Cttz(RValue<UInt> v, bool isZeroUndef)
 {
-	auto func = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::cttz, { T(UInt::getType()) } );
+	auto func = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::cttz, { T(UInt::getType()) });
 	return RValue<UInt>(V(jit->builder->CreateCall2(func, ARGS(
-		V(v.value),
-		isZeroUndef ? ::llvm::ConstantInt::getTrue(jit->context) : ::llvm::ConstantInt::getFalse(jit->context)
-	))));
+	                                                          V(v.value),
+	                                                          isZeroUndef ? ::llvm::ConstantInt::getTrue(jit->context) : ::llvm::ConstantInt::getFalse(jit->context)))));
 }
 
 RValue<UInt4> Cttz(RValue<UInt4> v, bool isZeroUndef)
 {
-	auto func = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::cttz, { T(UInt4::getType()) } );
+	auto func = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::cttz, { T(UInt4::getType()) });
 	return RValue<UInt4>(V(jit->builder->CreateCall2(func, ARGS(
-		V(v.value),
-		isZeroUndef ? ::llvm::ConstantInt::getTrue(jit->context) : ::llvm::ConstantInt::getFalse(jit->context)
-	))));
+	                                                           V(v.value),
+	                                                           isZeroUndef ? ::llvm::ConstantInt::getTrue(jit->context) : ::llvm::ConstantInt::getFalse(jit->context)))));
 }
 
 Type *Float4::getType()
@@ -4039,7 +4054,7 @@
 	return RValue<Long>(V(jit->builder->CreateCall(rdtsc)));
 }
 
-RValue<Pointer<Byte>> ConstantPointer(void const * ptr)
+RValue<Pointer<Byte>> ConstantPointer(void const *ptr)
 {
 	// Note: this should work for 32-bit pointers as well because 'inttoptr'
 	// is defined to truncate (and zero extend) if necessary.
@@ -4047,23 +4062,23 @@
 	return RValue<Pointer<Byte>>(V(jit->builder->CreateIntToPtr(ptrAsInt, T(Pointer<Byte>::getType()))));
 }
 
-RValue<Pointer<Byte>> ConstantData(void const * data, size_t size)
+RValue<Pointer<Byte>> ConstantData(void const *data, size_t size)
 {
-	auto str = ::llvm::StringRef(reinterpret_cast<const char*>(data), size);
+	auto str = ::llvm::StringRef(reinterpret_cast<const char *>(data), size);
 	auto ptr = jit->builder->CreateGlobalStringPtr(str);
 	return RValue<Pointer<Byte>>(V(ptr));
 }
 
-Value* Call(RValue<Pointer<Byte>> fptr, Type* retTy, std::initializer_list<Value*> args, std::initializer_list<Type*> argTys)
+Value *Call(RValue<Pointer<Byte>> fptr, Type *retTy, std::initializer_list<Value *> args, std::initializer_list<Type *> argTys)
 {
-	::llvm::SmallVector<::llvm::Type*, 8> paramTys;
+	::llvm::SmallVector<::llvm::Type *, 8> paramTys;
 	for(auto ty : argTys) { paramTys.push_back(T(ty)); }
 	auto funcTy = ::llvm::FunctionType::get(T(retTy), paramTys, false);
 
 	auto funcPtrTy = funcTy->getPointerTo();
 	auto funcPtr = jit->builder->CreatePointerCast(V(fptr.value), funcPtrTy);
 
-	::llvm::SmallVector<::llvm::Value*, 8> arguments;
+	::llvm::SmallVector<::llvm::Value *, 8> arguments;
 	for(auto arg : args) { arguments.push_back(V(arg)); }
 	return V(jit->builder->CreateCall(funcPtr, arguments));
 }
@@ -4110,7 +4125,7 @@
 
 RValue<Float> sqrtss(RValue<Float> val)
 {
-	llvm::Function *sqrt = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::sqrt, {V(val.value)->getType()});
+	llvm::Function *sqrt = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::sqrt, { V(val.value)->getType() });
 	return RValue<Float>(V(jit->builder->CreateCall(sqrt, ARGS(V(val.value)))));
 }
 
@@ -4132,7 +4147,7 @@
 
 RValue<Float4> sqrtps(RValue<Float4> val)
 {
-	llvm::Function *sqrtps = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::sqrt, {V(val.value)->getType()});
+	llvm::Function *sqrtps = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::sqrt, { V(val.value)->getType() });
 
 	return RValue<Float4>(V(jit->builder->CreateCall(sqrtps, ARGS(V(val.value)))));
 }
@@ -4202,90 +4217,90 @@
 
 RValue<Short4> paddsw(RValue<Short4> x, RValue<Short4> y)
 {
-	#if LLVM_VERSION_MAJOR >= 8
-		return As<Short4>(V(lowerPSADDSAT(V(x.value), V(y.value))));
-	#else
-		llvm::Function *paddsw = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::x86_sse2_padds_w);
+#	if LLVM_VERSION_MAJOR >= 8
+	return As<Short4>(V(lowerPSADDSAT(V(x.value), V(y.value))));
+#	else
+	llvm::Function *paddsw = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::x86_sse2_padds_w);
 
-		return As<Short4>(V(jit->builder->CreateCall2(paddsw, ARGS(V(x.value), V(y.value)))));
-	#endif
+	return As<Short4>(V(jit->builder->CreateCall2(paddsw, ARGS(V(x.value), V(y.value)))));
+#	endif
 }
 
 RValue<Short4> psubsw(RValue<Short4> x, RValue<Short4> y)
 {
-	#if LLVM_VERSION_MAJOR >= 8
-		return As<Short4>(V(lowerPSSUBSAT(V(x.value), V(y.value))));
-	#else
-		llvm::Function *psubsw = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::x86_sse2_psubs_w);
+#	if LLVM_VERSION_MAJOR >= 8
+	return As<Short4>(V(lowerPSSUBSAT(V(x.value), V(y.value))));
+#	else
+	llvm::Function *psubsw = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::x86_sse2_psubs_w);
 
-		return As<Short4>(V(jit->builder->CreateCall2(psubsw, ARGS(V(x.value), V(y.value)))));
-	#endif
+	return As<Short4>(V(jit->builder->CreateCall2(psubsw, ARGS(V(x.value), V(y.value)))));
+#	endif
 }
 
 RValue<UShort4> paddusw(RValue<UShort4> x, RValue<UShort4> y)
 {
-	#if LLVM_VERSION_MAJOR >= 8
-		return As<UShort4>(V(lowerPUADDSAT(V(x.value), V(y.value))));
-	#else
-		llvm::Function *paddusw = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::x86_sse2_paddus_w);
+#	if LLVM_VERSION_MAJOR >= 8
+	return As<UShort4>(V(lowerPUADDSAT(V(x.value), V(y.value))));
+#	else
+	llvm::Function *paddusw = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::x86_sse2_paddus_w);
 
-		return As<UShort4>(V(jit->builder->CreateCall2(paddusw, ARGS(V(x.value), V(y.value)))));
-	#endif
+	return As<UShort4>(V(jit->builder->CreateCall2(paddusw, ARGS(V(x.value), V(y.value)))));
+#	endif
 }
 
 RValue<UShort4> psubusw(RValue<UShort4> x, RValue<UShort4> y)
 {
-	#if LLVM_VERSION_MAJOR >= 8
-		return As<UShort4>(V(lowerPUSUBSAT(V(x.value), V(y.value))));
-	#else
-		llvm::Function *psubusw = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::x86_sse2_psubus_w);
+#	if LLVM_VERSION_MAJOR >= 8
+	return As<UShort4>(V(lowerPUSUBSAT(V(x.value), V(y.value))));
+#	else
+	llvm::Function *psubusw = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::x86_sse2_psubus_w);
 
-		return As<UShort4>(V(jit->builder->CreateCall2(psubusw, ARGS(V(x.value), V(y.value)))));
-	#endif
+	return As<UShort4>(V(jit->builder->CreateCall2(psubusw, ARGS(V(x.value), V(y.value)))));
+#	endif
 }
 
 RValue<SByte8> paddsb(RValue<SByte8> x, RValue<SByte8> y)
 {
-	#if LLVM_VERSION_MAJOR >= 8
-		return As<SByte8>(V(lowerPSADDSAT(V(x.value), V(y.value))));
-	#else
-		llvm::Function *paddsb = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::x86_sse2_padds_b);
+#	if LLVM_VERSION_MAJOR >= 8
+	return As<SByte8>(V(lowerPSADDSAT(V(x.value), V(y.value))));
+#	else
+	llvm::Function *paddsb = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::x86_sse2_padds_b);
 
-		return As<SByte8>(V(jit->builder->CreateCall2(paddsb, ARGS(V(x.value), V(y.value)))));
-	#endif
+	return As<SByte8>(V(jit->builder->CreateCall2(paddsb, ARGS(V(x.value), V(y.value)))));
+#	endif
 }
 
 RValue<SByte8> psubsb(RValue<SByte8> x, RValue<SByte8> y)
 {
-	#if LLVM_VERSION_MAJOR >= 8
-		return As<SByte8>(V(lowerPSSUBSAT(V(x.value), V(y.value))));
-	#else
-		llvm::Function *psubsb = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::x86_sse2_psubs_b);
+#	if LLVM_VERSION_MAJOR >= 8
+	return As<SByte8>(V(lowerPSSUBSAT(V(x.value), V(y.value))));
+#	else
+	llvm::Function *psubsb = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::x86_sse2_psubs_b);
 
-		return As<SByte8>(V(jit->builder->CreateCall2(psubsb, ARGS(V(x.value), V(y.value)))));
-	#endif
+	return As<SByte8>(V(jit->builder->CreateCall2(psubsb, ARGS(V(x.value), V(y.value)))));
+#	endif
 }
 
 RValue<Byte8> paddusb(RValue<Byte8> x, RValue<Byte8> y)
 {
-	#if LLVM_VERSION_MAJOR >= 8
-		return As<Byte8>(V(lowerPUADDSAT(V(x.value), V(y.value))));
-	#else
-		llvm::Function *paddusb = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::x86_sse2_paddus_b);
+#	if LLVM_VERSION_MAJOR >= 8
+	return As<Byte8>(V(lowerPUADDSAT(V(x.value), V(y.value))));
+#	else
+	llvm::Function *paddusb = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::x86_sse2_paddus_b);
 
-		return As<Byte8>(V(jit->builder->CreateCall2(paddusb, ARGS(V(x.value), V(y.value)))));
-	#endif
+	return As<Byte8>(V(jit->builder->CreateCall2(paddusb, ARGS(V(x.value), V(y.value)))));
+#	endif
 }
 
 RValue<Byte8> psubusb(RValue<Byte8> x, RValue<Byte8> y)
 {
-	#if LLVM_VERSION_MAJOR >= 8
-		return As<Byte8>(V(lowerPUSUBSAT(V(x.value), V(y.value))));
-	#else
-		llvm::Function *psubusb = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::x86_sse2_psubus_b);
+#	if LLVM_VERSION_MAJOR >= 8
+	return As<Byte8>(V(lowerPUSUBSAT(V(x.value), V(y.value))));
+#	else
+	llvm::Function *psubusb = llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::x86_sse2_psubus_b);
 
-		return As<Byte8>(V(jit->builder->CreateCall2(psubusb, ARGS(V(x.value), V(y.value)))));
-	#endif
+	return As<Byte8>(V(jit->builder->CreateCall2(psubusb, ARGS(V(x.value), V(y.value)))));
+#	endif
 }
 
 RValue<UShort4> pavgw(RValue<UShort4> x, RValue<UShort4> y)
@@ -4554,9 +4569,9 @@
 #ifdef ENABLE_RR_PRINT
 // extractAll returns a vector containing the extracted n scalar value of
 // the vector vec.
-static std::vector<Value*> extractAll(Value* vec, int n)
+static std::vector<Value *> extractAll(Value *vec, int n)
 {
-	std::vector<Value*> elements;
+	std::vector<Value *> elements;
 	elements.reserve(n);
 	for(int i = 0; i < n; i++)
 	{
@@ -4568,10 +4583,10 @@
 
 // toInt returns all the integer values in vals extended to a native width
 // integer.
-static std::vector<Value*> toInt(const std::vector<Value*>& vals, bool isSigned)
+static std::vector<Value *> toInt(const std::vector<Value *> &vals, bool isSigned)
 {
-	auto intTy = ::llvm::Type::getIntNTy(jit->context, sizeof(int) * 8); // Natural integer width.
-	std::vector<Value*> elements;
+	auto intTy = ::llvm::Type::getIntNTy(jit->context, sizeof(int) * 8);  // Natural integer width.
+	std::vector<Value *> elements;
 	elements.reserve(vals.size());
 	for(auto v : vals)
 	{
@@ -4588,10 +4603,10 @@
 }
 
 // toDouble returns all the float values in vals extended to doubles.
-static std::vector<Value*> toDouble(const std::vector<Value*>& vals)
+static std::vector<Value *> toDouble(const std::vector<Value *> &vals)
 {
 	auto doubleTy = ::llvm::Type::getDoubleTy(jit->context);
-	std::vector<Value*> elements;
+	std::vector<Value *> elements;
 	elements.reserve(vals.size());
 	for(auto v : vals)
 	{
@@ -4600,29 +4615,74 @@
 	return elements;
 }
 
-std::vector<Value*> PrintValue::Ty<Byte>::val(const RValue<Byte>& v) { return toInt({v.value}, false); }
-std::vector<Value*> PrintValue::Ty<Byte4>::val(const RValue<Byte4>& v) { return toInt(extractAll(v.value, 4), false); }
-std::vector<Value*> PrintValue::Ty<Int>::val(const RValue<Int>& v) { return toInt({v.value}, true); }
-std::vector<Value*> PrintValue::Ty<Int2>::val(const RValue<Int2>& v) { return toInt(extractAll(v.value, 2), true); }
-std::vector<Value*> PrintValue::Ty<Int4>::val(const RValue<Int4>& v) { return toInt(extractAll(v.value, 4), true); }
-std::vector<Value*> PrintValue::Ty<UInt>::val(const RValue<UInt>& v) { return toInt({v.value}, false); }
-std::vector<Value*> PrintValue::Ty<UInt2>::val(const RValue<UInt2>& v) { return toInt(extractAll(v.value, 2), false); }
-std::vector<Value*> PrintValue::Ty<UInt4>::val(const RValue<UInt4>& v) { return toInt(extractAll(v.value, 4), false); }
-std::vector<Value*> PrintValue::Ty<Short>::val(const RValue<Short>& v) { return toInt({v.value}, true); }
-std::vector<Value*> PrintValue::Ty<Short4>::val(const RValue<Short4>& v) { return toInt(extractAll(v.value, 4), true); }
-std::vector<Value*> PrintValue::Ty<UShort>::val(const RValue<UShort>& v) { return toInt({v.value}, false); }
-std::vector<Value*> PrintValue::Ty<UShort4>::val(const RValue<UShort4>& v) { return toInt(extractAll(v.value, 4), false); }
-std::vector<Value*> PrintValue::Ty<Float>::val(const RValue<Float>& v) { return toDouble({v.value}); }
-std::vector<Value*> PrintValue::Ty<Float4>::val(const RValue<Float4>& v) { return toDouble(extractAll(v.value, 4)); }
-std::vector<Value*> PrintValue::Ty<const char*>::val(const char* v) { return {V(jit->builder->CreateGlobalStringPtr(v))}; }
+std::vector<Value *> PrintValue::Ty<Byte>::val(const RValue<Byte> &v)
+{
+	return toInt({ v.value }, false);
+}
+std::vector<Value *> PrintValue::Ty<Byte4>::val(const RValue<Byte4> &v)
+{
+	return toInt(extractAll(v.value, 4), false);
+}
+std::vector<Value *> PrintValue::Ty<Int>::val(const RValue<Int> &v)
+{
+	return toInt({ v.value }, true);
+}
+std::vector<Value *> PrintValue::Ty<Int2>::val(const RValue<Int2> &v)
+{
+	return toInt(extractAll(v.value, 2), true);
+}
+std::vector<Value *> PrintValue::Ty<Int4>::val(const RValue<Int4> &v)
+{
+	return toInt(extractAll(v.value, 4), true);
+}
+std::vector<Value *> PrintValue::Ty<UInt>::val(const RValue<UInt> &v)
+{
+	return toInt({ v.value }, false);
+}
+std::vector<Value *> PrintValue::Ty<UInt2>::val(const RValue<UInt2> &v)
+{
+	return toInt(extractAll(v.value, 2), false);
+}
+std::vector<Value *> PrintValue::Ty<UInt4>::val(const RValue<UInt4> &v)
+{
+	return toInt(extractAll(v.value, 4), false);
+}
+std::vector<Value *> PrintValue::Ty<Short>::val(const RValue<Short> &v)
+{
+	return toInt({ v.value }, true);
+}
+std::vector<Value *> PrintValue::Ty<Short4>::val(const RValue<Short4> &v)
+{
+	return toInt(extractAll(v.value, 4), true);
+}
+std::vector<Value *> PrintValue::Ty<UShort>::val(const RValue<UShort> &v)
+{
+	return toInt({ v.value }, false);
+}
+std::vector<Value *> PrintValue::Ty<UShort4>::val(const RValue<UShort4> &v)
+{
+	return toInt(extractAll(v.value, 4), false);
+}
+std::vector<Value *> PrintValue::Ty<Float>::val(const RValue<Float> &v)
+{
+	return toDouble({ v.value });
+}
+std::vector<Value *> PrintValue::Ty<Float4>::val(const RValue<Float4> &v)
+{
+	return toDouble(extractAll(v.value, 4));
+}
+std::vector<Value *> PrintValue::Ty<const char *>::val(const char *v)
+{
+	return { V(jit->builder->CreateGlobalStringPtr(v)) };
+}
 
-void Printv(const char* function, const char* file, int line, const char* fmt, std::initializer_list<PrintValue> args)
+void Printv(const char *function, const char *file, int line, const char *fmt, std::initializer_list<PrintValue> args)
 {
 	// LLVM types used below.
 	auto i32Ty = ::llvm::Type::getInt32Ty(jit->context);
-	auto intTy = ::llvm::Type::getIntNTy(jit->context, sizeof(int) * 8); // Natural integer width.
+	auto intTy = ::llvm::Type::getIntNTy(jit->context, sizeof(int) * 8);  // Natural integer width.
 	auto i8PtrTy = ::llvm::Type::getInt8PtrTy(jit->context);
-	auto funcTy = ::llvm::FunctionType::get(i32Ty, {i8PtrTy}, true);
+	auto funcTy = ::llvm::FunctionType::get(i32Ty, { i8PtrTy }, true);
 
 	auto func = jit->module->getOrInsertFunction("printf", funcTy);
 
@@ -4635,12 +4695,12 @@
 	// Perform subsitution on all '{n}' bracketed indices in the format
 	// message.
 	int i = 0;
-	for(const PrintValue& arg : args)
+	for(const PrintValue &arg : args)
 	{
 		str = replace(str, "{" + std::to_string(i++) + "}", arg.format);
 	}
 
-	::llvm::SmallVector<::llvm::Value*, 8> vals;
+	::llvm::SmallVector<::llvm::Value *, 8> vals;
 
 	// The format message is always the first argument.
 	vals.push_back(jit->builder->CreateGlobalStringPtr(str));
@@ -4660,7 +4720,7 @@
 	}
 
 	// Add all format arguments.
-	for(const PrintValue& arg : args)
+	for(const PrintValue &arg : args)
 	{
 		for(auto val : arg.values)
 		{
@@ -4670,7 +4730,7 @@
 
 	jit->builder->CreateCall(func, vals);
 }
-#endif // ENABLE_RR_PRINT
+#endif  // ENABLE_RR_PRINT
 
 void Nop()
 {
@@ -4687,17 +4747,17 @@
 	{
 		jit->debugInfo->EmitLocation();
 	}
-#endif // ENABLE_RR_DEBUG_INFO
+#endif  // ENABLE_RR_DEBUG_INFO
 }
 
-void EmitDebugVariable(Value* value)
+void EmitDebugVariable(Value *value)
 {
 #ifdef ENABLE_RR_DEBUG_INFO
 	if(jit->debugInfo != nullptr)
 	{
 		jit->debugInfo->EmitVariable(value);
 	}
-#endif // ENABLE_RR_DEBUG_INFO
+#endif  // ENABLE_RR_DEBUG_INFO
 }
 
 void FlushDebug()
@@ -4707,7 +4767,7 @@
 	{
 		jit->debugInfo->Flush();
 	}
-#endif // ENABLE_RR_DEBUG_INFO
+#endif  // ENABLE_RR_DEBUG_INFO
 }
 
 }  // namespace rr
@@ -4740,7 +4800,7 @@
 
 	// LLVM intrinsics
 	auto coro_id = ::llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::coro_id);
-	auto coro_size = ::llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::coro_size, {i32Ty});
+	auto coro_size = ::llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::coro_size, { i32Ty });
 	auto coro_begin = ::llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::coro_begin);
 	auto coro_resume = ::llvm::Intrinsic::getDeclaration(jit->module.get(), ::llvm::Intrinsic::coro_resume);
 	auto coro_end = ::llvm::Intrinsic::getDeclaration(jit->module.get(), ::llvm::Intrinsic::coro_end);
@@ -4750,9 +4810,9 @@
 	auto coro_done = ::llvm::Intrinsic::getDeclaration(jit->module.get(), ::llvm::Intrinsic::coro_done);
 	auto coro_suspend = ::llvm::Intrinsic::getDeclaration(jit->module.get(), ::llvm::Intrinsic::coro_suspend);
 
-	auto allocFrameTy = ::llvm::FunctionType::get(i8PtrTy, {i32Ty}, false);
+	auto allocFrameTy = ::llvm::FunctionType::get(i8PtrTy, { i32Ty }, false);
 	auto allocFrame = jit->module->getOrInsertFunction("coroutine_alloc_frame", allocFrameTy);
-	auto freeFrameTy = ::llvm::FunctionType::get(voidTy, {i8PtrTy}, false);
+	auto freeFrameTy = ::llvm::FunctionType::get(voidTy, { i8PtrTy }, false);
 	auto freeFrame = jit->module->getOrInsertFunction("coroutine_free_frame", freeFrameTy);
 
 	auto oldInsertionPoint = jit->builder->saveIP();
@@ -4781,18 +4841,18 @@
 		auto doneBlock = llvm::BasicBlock::Create(jit->context, "done", jit->coroutine.await);
 		auto resumeBlock = llvm::BasicBlock::Create(jit->context, "resume", jit->coroutine.await);
 
-		auto done = jit->builder->CreateCall(coro_done, {handle}, "done");
+		auto done = jit->builder->CreateCall(coro_done, { handle }, "done");
 		jit->builder->CreateCondBr(done, doneBlock, resumeBlock);
 
 		jit->builder->SetInsertPoint(doneBlock);
 		jit->builder->CreateRet(::llvm::ConstantInt::getFalse(i1Ty));
 
 		jit->builder->SetInsertPoint(resumeBlock);
-		auto promiseAlignment = ::llvm::ConstantInt::get(i32Ty, 4); // TODO: Get correct alignment.
-		auto promisePtr = jit->builder->CreateCall(coro_promise, {handle, promiseAlignment, ::llvm::ConstantInt::get(i1Ty, 0)});
+		auto promiseAlignment = ::llvm::ConstantInt::get(i32Ty, 4);  // TODO: Get correct alignment.
+		auto promisePtr = jit->builder->CreateCall(coro_promise, { handle, promiseAlignment, ::llvm::ConstantInt::get(i1Ty, 0) });
 		auto promise = jit->builder->CreateLoad(jit->builder->CreatePointerCast(promisePtr, promisePtrTy));
 		jit->builder->CreateStore(promise, outPtr);
-		jit->builder->CreateCall(coro_resume, {handle});
+		jit->builder->CreateCall(coro_resume, { handle });
 		jit->builder->CreateRet(::llvm::ConstantInt::getTrue(i1Ty));
 	}
 
@@ -4806,7 +4866,7 @@
 	{
 		auto handle = jit->coroutine.destroy->arg_begin();
 		jit->builder->SetInsertPoint(llvm::BasicBlock::Create(jit->context, "", jit->coroutine.destroy));
-		jit->builder->CreateCall(coro_destroy, {handle});
+		jit->builder->CreateCall(coro_destroy, { handle });
 		jit->builder->CreateRetVoid();
 	}
 
@@ -4845,7 +4905,7 @@
 
 #ifdef ENABLE_RR_DEBUG_INFO
 	jit->debugInfo = std::unique_ptr<rr::DebugInfo>(new rr::DebugInfo(jit->builder.get(), &jit->context, jit->module.get(), jit->function));
-#endif // ENABLE_RR_DEBUG_INFO
+#endif  // ENABLE_RR_DEBUG_INFO
 
 	jit->coroutine.suspendBlock = llvm::BasicBlock::Create(jit->context, "suspend", jit->function);
 	jit->coroutine.endBlock = llvm::BasicBlock::Create(jit->context, "end", jit->function);
@@ -4854,45 +4914,45 @@
 	jit->builder->SetInsertPoint(jit->coroutine.entryBlock, jit->coroutine.entryBlock->begin());
 	jit->coroutine.promise = jit->builder->CreateAlloca(promiseTy, nullptr, "promise");
 	jit->coroutine.id = jit->builder->CreateCall(coro_id, {
-		::llvm::ConstantInt::get(i32Ty, 0),
-		jit->builder->CreatePointerCast(jit->coroutine.promise, i8PtrTy),
-		::llvm::ConstantPointerNull::get(i8PtrTy),
-		::llvm::ConstantPointerNull::get(i8PtrTy),
-	});
+	                                                          ::llvm::ConstantInt::get(i32Ty, 0),
+	                                                          jit->builder->CreatePointerCast(jit->coroutine.promise, i8PtrTy),
+	                                                          ::llvm::ConstantPointerNull::get(i8PtrTy),
+	                                                          ::llvm::ConstantPointerNull::get(i8PtrTy),
+	                                                      });
 	auto size = jit->builder->CreateCall(coro_size, {});
-	auto frame = jit->builder->CreateCall(allocFrame, {size});
-	jit->coroutine.handle = jit->builder->CreateCall(coro_begin, {jit->coroutine.id, frame});
+	auto frame = jit->builder->CreateCall(allocFrame, { size });
+	jit->coroutine.handle = jit->builder->CreateCall(coro_begin, { jit->coroutine.id, frame });
 
 	// Build the suspend block
 	jit->builder->SetInsertPoint(jit->coroutine.suspendBlock);
-	jit->builder->CreateCall(coro_end, {jit->coroutine.handle, ::llvm::ConstantInt::get(i1Ty, 0)});
+	jit->builder->CreateCall(coro_end, { jit->coroutine.handle, ::llvm::ConstantInt::get(i1Ty, 0) });
 	jit->builder->CreateRet(jit->coroutine.handle);
 
 	// Build the end block
 	jit->builder->SetInsertPoint(jit->coroutine.endBlock);
 	auto action = jit->builder->CreateCall(coro_suspend, {
-		::llvm::ConstantTokenNone::get(jit->context),
-		::llvm::ConstantInt::get(i1Ty, 1), // final: true
-	});
+	                                                         ::llvm::ConstantTokenNone::get(jit->context),
+	                                                         ::llvm::ConstantInt::get(i1Ty, 1),  // final: true
+	                                                     });
 	auto switch_ = jit->builder->CreateSwitch(action, jit->coroutine.suspendBlock, 3);
 	// switch_->addCase(::llvm::ConstantInt::get(i8Ty, SuspendActionResume), trapBlock); // TODO: Trap attempting to resume after final suspend
 	switch_->addCase(::llvm::ConstantInt::get(i8Ty, SuspendActionDestroy), jit->coroutine.destroyBlock);
 
 	// Build the destroy block
 	jit->builder->SetInsertPoint(jit->coroutine.destroyBlock);
-	auto memory = jit->builder->CreateCall(coro_free, {jit->coroutine.id, jit->coroutine.handle});
-	jit->builder->CreateCall(freeFrame, {memory});
+	auto memory = jit->builder->CreateCall(coro_free, { jit->coroutine.id, jit->coroutine.handle });
+	jit->builder->CreateCall(freeFrame, { memory });
 	jit->builder->CreateBr(jit->coroutine.suspendBlock);
 
 	// Switch back to original insert point to continue building the coroutine.
 	jit->builder->restoreIP(oldInsertionPoint);
 }
 
-} // anonymous namespace
+}  // anonymous namespace
 
 namespace rr {
 
-void Nucleus::createCoroutine(Type *YieldType, std::vector<Type*> &Params)
+void Nucleus::createCoroutine(Type *YieldType, std::vector<Type *> &Params)
 {
 	// Coroutines are initially created as a regular function.
 	// Upon the first call to Yield(), the function is promoted to a true
@@ -4906,15 +4966,15 @@
 	auto promisePtrTy = promiseTy->getPointerTo();
 
 	jit->function = rr::createFunction("coroutine_begin", handleTy, T(Params));
-	jit->coroutine.await = rr::createFunction("coroutine_await", boolTy, {handleTy, promisePtrTy});
-	jit->coroutine.destroy = rr::createFunction("coroutine_destroy", voidTy, {handleTy});
+	jit->coroutine.await = rr::createFunction("coroutine_await", boolTy, { handleTy, promisePtrTy });
+	jit->coroutine.destroy = rr::createFunction("coroutine_destroy", voidTy, { handleTy });
 	jit->coroutine.yieldType = promiseTy;
 	jit->coroutine.entryBlock = llvm::BasicBlock::Create(jit->context, "function", jit->function);
 
 	jit->builder->SetInsertPoint(jit->coroutine.entryBlock);
 }
 
-void Nucleus::yield(Value* val)
+void Nucleus::yield(Value *val)
 {
 	if(jit->coroutine.id == nullptr)
 	{
@@ -4955,9 +5015,9 @@
 	// Store the promise (yield value)
 	jit->builder->CreateStore(V(val), jit->coroutine.promise);
 	auto action = jit->builder->CreateCall(coro_suspend, {
-		::llvm::ConstantTokenNone::get(jit->context),
-		::llvm::ConstantInt::get(i1Ty, 0), // final: true
-	});
+	                                                         ::llvm::ConstantTokenNone::get(jit->context),
+	                                                         ::llvm::ConstantInt::get(i1Ty, 0),  // final: true
+	                                                     });
 	auto switch_ = jit->builder->CreateSwitch(action, jit->coroutine.suspendBlock, 3);
 	switch_->addCase(::llvm::ConstantInt::get(i8Ty, SuspendActionResume), resumeBlock);
 	switch_->addCase(::llvm::ConstantInt::get(i8Ty, SuspendActionDestroy), jit->coroutine.destroyBlock);
@@ -4992,7 +5052,7 @@
 	{
 		jit->debugInfo->Finalize();
 	}
-#endif // ENABLE_RR_DEBUG_INFO
+#endif  // ENABLE_RR_DEBUG_INFO
 
 	if(false)
 	{
@@ -5019,7 +5079,7 @@
 		pm.add(llvm::createVerifierPass());
 		pm.run(*jit->module);
 	}
-#endif // defined(ENABLE_RR_LLVM_IR_VERIFICATION) || !defined(NDEBUG)
+#endif  // defined(ENABLE_RR_LLVM_IR_VERIFICATION) || !defined(NDEBUG)
 
 	auto cfg = cfgEdit.apply(jit->config);
 	jit->optimize(cfg);
@@ -5041,4 +5101,4 @@
 	return routine;
 }
 
-} // namespace rr
\ No newline at end of file
+}  // namespace rr
\ No newline at end of file
diff --git a/src/Reactor/LLVMReactor.hpp b/src/Reactor/LLVMReactor.hpp
index bbf3332..0b91ef8 100644
--- a/src/Reactor/LLVMReactor.hpp
+++ b/src/Reactor/LLVMReactor.hpp
@@ -31,17 +31,17 @@
 
 inline Type *T(llvm::Type *t)
 {
-	return reinterpret_cast<Type*>(t);
+	return reinterpret_cast<Type *>(t);
 }
 
 inline llvm::Value *V(Value *t)
 {
-	return reinterpret_cast<llvm::Value*>(t);
+	return reinterpret_cast<llvm::Value *>(t);
 }
 
 inline Value *V(llvm::Value *t)
 {
-	return reinterpret_cast<Value*>(t);
+	return reinterpret_cast<Value *>(t);
 }
 
 // Emits a no-op instruction that will not be optimized away.
@@ -51,4 +51,4 @@
 
 }  // namespace rr
 
-#endif // rr_LLVMReactor_hpp
+#endif  // rr_LLVMReactor_hpp
diff --git a/src/Reactor/LLVMReactorDebugInfo.cpp b/src/Reactor/LLVMReactorDebugInfo.cpp
index db97080..0cf4723 100644
--- a/src/Reactor/LLVMReactorDebugInfo.cpp
+++ b/src/Reactor/LLVMReactorDebugInfo.cpp
@@ -16,52 +16,55 @@
 
 #ifdef ENABLE_RR_DEBUG_INFO
 
-#include "Reactor.hpp"
-#include "LLVMReactor.hpp"
+#	include "LLVMReactor.hpp"
+#	include "Reactor.hpp"
 
-#include "boost/stacktrace.hpp"
+#	include "boost/stacktrace.hpp"
 
-#include "llvm/Demangle/Demangle.h"
-#include "llvm/ExecutionEngine/JITEventListener.h"
-#include "llvm/IR/DIBuilder.h"
-#include "llvm/IR/Intrinsics.h"
-#include "llvm/IR/IRBuilder.h"
+#	include "llvm/Demangle/Demangle.h"
+#	include "llvm/ExecutionEngine/JITEventListener.h"
+#	include "llvm/IR/DIBuilder.h"
+#	include "llvm/IR/IRBuilder.h"
+#	include "llvm/IR/Intrinsics.h"
 
-#include <cctype>
-#include <fstream>
-#include <mutex>
-#include <regex>
-#include <sstream>
-#include <string>
+#	include <cctype>
+#	include <fstream>
+#	include <mutex>
+#	include <regex>
+#	include <sstream>
+#	include <string>
 
-#if 0
-#define LOG(msg, ...) printf(msg "\n", ##__VA_ARGS__)
-#else
-#define LOG(msg, ...)
-#endif
+#	if 0
+#		define LOG(msg, ...) printf(msg "\n", ##__VA_ARGS__)
+#	else
+#		define LOG(msg, ...)
+#	endif
 
 namespace {
 
-std::pair<llvm::StringRef, llvm::StringRef> splitPath(const char* path)
+std::pair<llvm::StringRef, llvm::StringRef> splitPath(const char *path)
 {
 	return llvm::StringRef(path).rsplit('/');
 }
 
 // Note: createGDBRegistrationListener() returns a pointer to a singleton.
 // Nothing is actually created.
-auto jitEventListener = llvm::JITEventListener::createGDBRegistrationListener(); // guarded by jitEventListenerMutex
+auto jitEventListener = llvm::JITEventListener::createGDBRegistrationListener();  // guarded by jitEventListenerMutex
 std::mutex jitEventListenerMutex;
 
-}  // anonymous namespaces
+}  // namespace
 
 namespace rr {
 
 DebugInfo::DebugInfo(
-		llvm::IRBuilder<> *builder,
-		llvm::LLVMContext *context,
-		llvm::Module *module,
-		llvm::Function *function)
-	: builder(builder), context(context), module(module), function(function)
+    llvm::IRBuilder<> *builder,
+    llvm::LLVMContext *context,
+    llvm::Module *module,
+    llvm::Function *function)
+    : builder(builder)
+    , context(context)
+    , module(module)
+    , function(function)
 {
 	using namespace ::llvm;
 
@@ -70,10 +73,10 @@
 	auto fileAndDir = splitPath(location.function.file.c_str());
 	diBuilder.reset(new llvm::DIBuilder(*module));
 	diCU = diBuilder->createCompileUnit(
-		llvm::dwarf::DW_LANG_C,
-		diBuilder->createFile(fileAndDir.first, fileAndDir.second),
-		"Reactor",
-		0, "", 0);
+	    llvm::dwarf::DW_LANG_C,
+	    diBuilder->createFile(fileAndDir.first, fileAndDir.second),
+	    "Reactor",
+	    0, "", 0);
 
 	registerBasicTypes();
 
@@ -82,17 +85,17 @@
 
 	auto file = getOrCreateFile(location.function.file.c_str());
 	auto sp = diBuilder->createFunction(
-		file,                   // scope
-		"ReactorFunction",      // function name
-		"ReactorFunction",      // linkage
-		file,                   // file
-		location.line,          // line
-		funcTy,                 // type
-		false,                  // internal linkage
-		true,                   // definition
-		location.line,          // scope line
-		DINode::FlagPrototyped, // flags
-		false                   // is optimized
+	    file,                    // scope
+	    "ReactorFunction",       // function name
+	    "ReactorFunction",       // linkage
+	    file,                    // file
+	    location.line,           // line
+	    funcTy,                  // type
+	    false,                   // internal linkage
+	    true,                    // definition
+	    location.line,           // scope line
+	    DINode::FlagPrototyped,  // flags
+	    false                    // is optimized
 	);
 	diSubprogram = sp;
 	function->setSubprogram(sp);
@@ -114,11 +117,11 @@
 
 void DebugInfo::EmitLocation()
 {
-	auto const& backtrace = getCallerBacktrace();
+	auto const &backtrace = getCallerBacktrace();
 	syncScope(backtrace);
 	builder->SetCurrentDebugLocation(getLocation(backtrace, backtrace.size() - 1));
 
-#ifdef ENABLE_RR_EMIT_PRINT_LOCATION
+#	ifdef ENABLE_RR_EMIT_PRINT_LOCATION
 	static Location lastLocation;
 	if(backtrace.size() == 0)
 	{
@@ -130,7 +133,7 @@
 		rr::Print("rr> {0} [{1}:{2}]\n", currLocation.function.name.c_str(), currLocation.function.file.c_str(), currLocation.line);
 		lastLocation = std::move(currLocation);
 	}
-#endif // ENABLE_RR_EMIT_PRINT_LOCATION
+#	endif  // ENABLE_RR_EMIT_PRINT_LOCATION
 }
 
 void DebugInfo::Flush()
@@ -138,17 +141,16 @@
 	emitPending(diScope.back(), builder);
 }
 
-void DebugInfo::syncScope(Backtrace const& backtrace)
+void DebugInfo::syncScope(Backtrace const &backtrace)
 {
-	auto shrink = [this](size_t newsize)
-	{
+	auto shrink = [this](size_t newsize) {
 		while(diScope.size() > newsize)
 		{
 			auto &scope = diScope.back();
 			LOG("- STACK(%d): di: %p, location: %s:%d",
-				int(diScope.size() - 1), scope.di,
-				scope.location.function.file.c_str(),
-				int(scope.location.line));
+			    int(diScope.size() - 1), scope.di,
+			    scope.location.function.file.c_str(),
+			    int(scope.location.line));
 			emitPending(scope, builder);
 			diScope.pop_back();
 		}
@@ -168,7 +170,7 @@
 		if(oldLocation.function != newLocation.function)
 		{
 			LOG("  STACK(%d): Changed function %s -> %s", int(i),
-				oldLocation.function.name.c_str(), newLocation.function.name.c_str());
+			    oldLocation.function.name.c_str(), newLocation.function.name.c_str());
 			shrink(i);
 			break;
 		}
@@ -179,10 +181,10 @@
 			auto file = getOrCreateFile(newLocation.function.file.c_str());
 			auto di = diBuilder->createLexicalBlock(scope.di, file, newLocation.line, 0);
 			LOG("  STACK(%d): Jumped backwards %d -> %d. di: %p -> %p", int(i),
-				oldLocation.line, newLocation.line, scope.di, di);
+			    oldLocation.line, newLocation.line, scope.di, di);
 			emitPending(scope, builder);
-			scope = {newLocation, di};
-			shrink(i+1);
+			scope = { newLocation, di };
+			shrink(i + 1);
 			break;
 		}
 
@@ -203,40 +205,39 @@
 		auto name = "jit!" + (status == 0 ? std::string(buf) : location.function.name);
 
 		auto func = diBuilder->createFunction(
-			file,                           // scope
-			name,                           // function name
-			"",                             // linkage
-			file,                           // file
-			location.line,                  // line
-			funcTy,                         // type
-			false,                          // internal linkage
-			true,                           // definition
-			location.line,                  // scope line
-			llvm::DINode::FlagPrototyped,   // flags
-			false                           // is optimized
+		    file,                          // scope
+		    name,                          // function name
+		    "",                            // linkage
+		    file,                          // file
+		    location.line,                 // line
+		    funcTy,                        // type
+		    false,                         // internal linkage
+		    true,                          // definition
+		    location.line,                 // scope line
+		    llvm::DINode::FlagPrototyped,  // flags
+		    false                          // is optimized
 		);
-		diScope.push_back({location, func});
+		diScope.push_back({ location, func });
 		LOG("+ STACK(%d): di: %p, location: %s:%d", int(i), di,
-			location.function.file.c_str(), int(location.line));
+		    location.function.file.c_str(), int(location.line));
 	}
 }
 
-llvm::DILocation* DebugInfo::getLocation(const Backtrace &backtrace, size_t i)
+llvm::DILocation *DebugInfo::getLocation(const Backtrace &backtrace, size_t i)
 {
 	if(backtrace.size() == 0) { return nullptr; }
 	assert(backtrace.size() == diScope.size());
 	return llvm::DILocation::get(
-		*context,
-		backtrace[i].line,
-		0,
-		diScope[i].di,
-		i > 0 ? getLocation(backtrace, i - 1) : diRootLocation
-	);
+	    *context,
+	    backtrace[i].line,
+	    0,
+	    diScope[i].di,
+	    i > 0 ? getLocation(backtrace, i - 1) : diRootLocation);
 }
 
 void DebugInfo::EmitVariable(Value *variable)
 {
-	auto const& backtrace = getCallerBacktrace();
+	auto const &backtrace = getCallerBacktrace();
 	syncScope(backtrace);
 
 	for(int i = backtrace.size() - 1; i >= 0; i--)
@@ -321,7 +322,7 @@
 	bool isAlloca = llvm::isa<llvm::AllocaInst>(pending.value);
 
 	LOG("  EMIT(%s): di: %p, location: %s:%d, isAlloca: %s", pending.name.c_str(), scope.di,
-		pending.location.function.file.c_str(), pending.location.line, isAlloca ? "true" : "false");
+	    pending.location.function.file.c_str(), pending.location.line, isAlloca ? "true" : "false");
 
 	auto value = pending.value;
 
@@ -367,12 +368,11 @@
 	if(pending.addNopOnNextLine)
 	{
 		builder->SetCurrentDebugLocation(llvm::DILocation::get(
-			*context,
-			pending.diLocation->getLine() + 1,
-			0,
-			pending.diLocation->getScope(),
-			pending.diLocation->getInlinedAt()
-		));
+		    *context,
+		    pending.diLocation->getLine() + 1,
+		    0,
+		    pending.diLocation->getScope(),
+		    pending.diLocation->getInlinedAt()));
 		Nop();
 	}
 
@@ -382,7 +382,7 @@
 void DebugInfo::NotifyObjectEmitted(const llvm::object::ObjectFile &Obj, const llvm::LoadedObjectInfo &L)
 {
 	std::unique_lock<std::mutex> lock(jitEventListenerMutex);
-	jitEventListener->NotifyObjectEmitted(Obj, static_cast<const llvm::RuntimeDyld::LoadedObjectInfo&>(L));
+	jitEventListener->NotifyObjectEmitted(Obj, static_cast<const llvm::RuntimeDyld::LoadedObjectInfo &>(L));
 }
 
 void DebugInfo::NotifyFreeingObject(const llvm::object::ObjectFile &Obj)
@@ -411,24 +411,24 @@
 	diTypes.emplace(T(Half::getType()), diBuilder->createBasicType("Half", 16, dwarf::DW_ATE_float));
 	diTypes.emplace(T(Float::getType()), diBuilder->createBasicType("Float", 32, dwarf::DW_ATE_float));
 
-	diTypes.emplace(T(Byte4::getType()), diBuilder->createVectorType(128, 128, diTypes[T(Byte::getType())], {vec16}));
-	diTypes.emplace(T(SByte4::getType()), diBuilder->createVectorType(128, 128, diTypes[T(SByte::getType())], {vec16}));
-	diTypes.emplace(T(Byte8::getType()), diBuilder->createVectorType(128, 128, diTypes[T(Byte::getType())], {vec16}));
-	diTypes.emplace(T(SByte8::getType()), diBuilder->createVectorType(128, 128, diTypes[T(SByte::getType())], {vec16}));
-	diTypes.emplace(T(Byte16::getType()), diBuilder->createVectorType(128, 128, diTypes[T(Byte::getType())], {vec16}));
-	diTypes.emplace(T(SByte16::getType()), diBuilder->createVectorType(128, 128, diTypes[T(SByte::getType())], {vec16}));
-	diTypes.emplace(T(Short2::getType()), diBuilder->createVectorType(128, 128, diTypes[T(Short::getType())], {vec8}));
-	diTypes.emplace(T(UShort2::getType()), diBuilder->createVectorType(128, 128, diTypes[T(UShort::getType())], {vec8}));
-	diTypes.emplace(T(Short4::getType()), diBuilder->createVectorType(128, 128, diTypes[T(Short::getType())], {vec8}));
-	diTypes.emplace(T(UShort4::getType()), diBuilder->createVectorType(128, 128, diTypes[T(UShort::getType())], {vec8}));
-	diTypes.emplace(T(Short8::getType()), diBuilder->createVectorType(128, 128, diTypes[T(Short::getType())], {vec8}));
-	diTypes.emplace(T(UShort8::getType()), diBuilder->createVectorType(128, 128, diTypes[T(UShort::getType())], {vec8}));
-	diTypes.emplace(T(Int2::getType()), diBuilder->createVectorType(128, 128, diTypes[T(Int::getType())], {vec4}));
-	diTypes.emplace(T(UInt2::getType()), diBuilder->createVectorType(128, 128, diTypes[T(UInt::getType())], {vec4}));
-	diTypes.emplace(T(Int4::getType()), diBuilder->createVectorType(128, 128, diTypes[T(Int::getType())], {vec4}));
-	diTypes.emplace(T(UInt4::getType()), diBuilder->createVectorType(128, 128, diTypes[T(UInt::getType())], {vec4}));
-	diTypes.emplace(T(Float2::getType()), diBuilder->createVectorType(128, 128, diTypes[T(Float::getType())], {vec4}));
-	diTypes.emplace(T(Float4::getType()), diBuilder->createVectorType(128, 128, diTypes[T(Float::getType())], {vec4}));
+	diTypes.emplace(T(Byte4::getType()), diBuilder->createVectorType(128, 128, diTypes[T(Byte::getType())], { vec16 }));
+	diTypes.emplace(T(SByte4::getType()), diBuilder->createVectorType(128, 128, diTypes[T(SByte::getType())], { vec16 }));
+	diTypes.emplace(T(Byte8::getType()), diBuilder->createVectorType(128, 128, diTypes[T(Byte::getType())], { vec16 }));
+	diTypes.emplace(T(SByte8::getType()), diBuilder->createVectorType(128, 128, diTypes[T(SByte::getType())], { vec16 }));
+	diTypes.emplace(T(Byte16::getType()), diBuilder->createVectorType(128, 128, diTypes[T(Byte::getType())], { vec16 }));
+	diTypes.emplace(T(SByte16::getType()), diBuilder->createVectorType(128, 128, diTypes[T(SByte::getType())], { vec16 }));
+	diTypes.emplace(T(Short2::getType()), diBuilder->createVectorType(128, 128, diTypes[T(Short::getType())], { vec8 }));
+	diTypes.emplace(T(UShort2::getType()), diBuilder->createVectorType(128, 128, diTypes[T(UShort::getType())], { vec8 }));
+	diTypes.emplace(T(Short4::getType()), diBuilder->createVectorType(128, 128, diTypes[T(Short::getType())], { vec8 }));
+	diTypes.emplace(T(UShort4::getType()), diBuilder->createVectorType(128, 128, diTypes[T(UShort::getType())], { vec8 }));
+	diTypes.emplace(T(Short8::getType()), diBuilder->createVectorType(128, 128, diTypes[T(Short::getType())], { vec8 }));
+	diTypes.emplace(T(UShort8::getType()), diBuilder->createVectorType(128, 128, diTypes[T(UShort::getType())], { vec8 }));
+	diTypes.emplace(T(Int2::getType()), diBuilder->createVectorType(128, 128, diTypes[T(Int::getType())], { vec4 }));
+	diTypes.emplace(T(UInt2::getType()), diBuilder->createVectorType(128, 128, diTypes[T(UInt::getType())], { vec4 }));
+	diTypes.emplace(T(Int4::getType()), diBuilder->createVectorType(128, 128, diTypes[T(Int::getType())], { vec4 }));
+	diTypes.emplace(T(UInt4::getType()), diBuilder->createVectorType(128, 128, diTypes[T(UInt::getType())], { vec4 }));
+	diTypes.emplace(T(Float2::getType()), diBuilder->createVectorType(128, 128, diTypes[T(Float::getType())], { vec4 }));
+	diTypes.emplace(T(Float4::getType()), diBuilder->createVectorType(128, 128, diTypes[T(Float::getType())], { vec4 }));
 }
 
 DebugInfo::Location DebugInfo::getCallerLocation() const
@@ -439,11 +439,11 @@
 DebugInfo::Backtrace DebugInfo::getCallerBacktrace(size_t limit /* = 0 */) const
 {
 	auto shouldSkipFile = [](llvm::StringRef fileSR) {
-			return fileSR.empty() ||
-				fileSR.endswith_lower("ReactorDebugInfo.cpp") ||
-				fileSR.endswith_lower("Reactor.cpp") ||
-				fileSR.endswith_lower("Reactor.hpp") ||
-				fileSR.endswith_lower("stacktrace.hpp");
+		return fileSR.empty() ||
+		       fileSR.endswith_lower("ReactorDebugInfo.cpp") ||
+		       fileSR.endswith_lower("Reactor.cpp") ||
+		       fileSR.endswith_lower("Reactor.hpp") ||
+		       fileSR.endswith_lower("stacktrace.hpp");
 	};
 
 	std::vector<DebugInfo::Location> locations;
@@ -475,7 +475,7 @@
 	return locations;
 }
 
-llvm::DIType *DebugInfo::getOrCreateType(llvm::Type* type)
+llvm::DIType *DebugInfo::getOrCreateType(llvm::Type *type)
 {
 	auto it = diTypes.find(type);
 	if(it != diTypes.end()) { return it->second; }
@@ -483,8 +483,8 @@
 	if(type->isPointerTy())
 	{
 		auto dbgTy = diBuilder->createPointerType(
-			getOrCreateType(type->getPointerElementType()),
-			sizeof(void*)*8, alignof(void*)*8);
+		    getOrCreateType(type->getPointerElementType()),
+		    sizeof(void *) * 8, alignof(void *) * 8);
 		diTypes.emplace(type, dbgTy);
 		return dbgTy;
 	}
@@ -493,7 +493,7 @@
 	return nullptr;
 }
 
-llvm::DIFile *DebugInfo::getOrCreateFile(const char* path)
+llvm::DIFile *DebugInfo::getOrCreateFile(const char *path)
 {
 	auto it = diFiles.find(path);
 	if(it != diFiles.end()) { return it->second; }
@@ -503,17 +503,17 @@
 	return file;
 }
 
-DebugInfo::LineTokens const *DebugInfo::getOrParseFileTokens(const char* path)
+DebugInfo::LineTokens const *DebugInfo::getOrParseFileTokens(const char *path)
 {
 	static std::regex reLocalDecl(
-		"^" // line start
-		"\\s*" // initial whitespace
-		"(?:For\\s*\\(\\s*)?" // optional 'For('
-		"((?:\\w+(?:<[^>]+>)?)(?:::\\w+(?:<[^>]+>)?)*)" // type (match group 1)
-		"\\s+" // whitespace between type and name
-		"(\\w+)" // identifier (match group 2)
-		"\\s*" // whitespace after identifier
-		"(\\[.*\\])?"); // optional array suffix (match group 3)
+	    "^"                                              // line start
+	    "\\s*"                                           // initial whitespace
+	    "(?:For\\s*\\(\\s*)?"                            // optional 'For('
+	    "((?:\\w+(?:<[^>]+>)?)(?:::\\w+(?:<[^>]+>)?)*)"  // type (match group 1)
+	    "\\s+"                                           // whitespace between type and name
+	    "(\\w+)"                                         // identifier (match group 2)
+	    "\\s*"                                           // whitespace after identifier
+	    "(\\[.*\\])?");                                  // optional array suffix (match group 3)
 
 	auto it = fileTokens.find(path);
 	if(it != fileTokens.end())
@@ -533,15 +533,15 @@
 		if(std::regex_search(line, match, reLocalDecl) && match.size() > 3)
 		{
 			bool isArray = match.str(3) != "";
-			if(!isArray) // Cannot deal with C-arrays of values.
+			if(!isArray)  // Cannot deal with C-arrays of values.
 			{
 				if(match.str(1) == "return")
 				{
-					(*tokens)[lineCount] = Token{Token::Return};
+					(*tokens)[lineCount] = Token{ Token::Return };
 				}
 				else
 				{
-					(*tokens)[lineCount] = Token{Token::Identifier, match.str(2)};
+					(*tokens)[lineCount] = Token{ Token::Identifier, match.str(2) };
 				}
 			}
 		}
@@ -554,4 +554,4 @@
 
 }  // namespace rr
 
-#endif // ENABLE_RR_DEBUG_INFO
+#endif  // ENABLE_RR_DEBUG_INFO
diff --git a/src/Reactor/LLVMReactorDebugInfo.hpp b/src/Reactor/LLVMReactorDebugInfo.hpp
index f97e3d0..6f320aa 100644
--- a/src/Reactor/LLVMReactorDebugInfo.hpp
+++ b/src/Reactor/LLVMReactorDebugInfo.hpp
@@ -19,10 +19,10 @@
 
 #ifdef ENABLE_RR_DEBUG_INFO
 
-#include <unordered_set>
-#include <unordered_map>
-#include <vector>
-#include <memory>
+#	include <memory>
+#	include <unordered_map>
+#	include <unordered_set>
+#	include <vector>
 
 // Forward declarations
 namespace llvm {
@@ -46,12 +46,12 @@
 class Type;
 class Value;
 
-namespace object
-{
-	class ObjectFile;
+namespace object {
+class ObjectFile;
 }
 
-template <typename T, typename Inserter> class IRBuilder;
+template<typename T, typename Inserter>
+class IRBuilder;
 
 }  // namespace llvm
 
@@ -68,9 +68,9 @@
 	using IRBuilder = llvm::IRBuilder<llvm::ConstantFolder, llvm::IRBuilderDefaultInserter>;
 
 	DebugInfo(IRBuilder *builder,
-			llvm::LLVMContext *context,
-			llvm::Module *module,
-			llvm::Function *function);
+	          llvm::LLVMContext *context,
+	          llvm::Module *module,
+	          llvm::Function *function);
 
 	~DebugInfo();
 
@@ -116,15 +116,15 @@
 		std::string name;
 		std::string file;
 
-		bool operator == (const FunctionLocation &rhs) const { return name == rhs.name && file == rhs.file; }
-		bool operator != (const FunctionLocation &rhs) const { return !(*this == rhs); }
+		bool operator==(const FunctionLocation &rhs) const { return name == rhs.name && file == rhs.file; }
+		bool operator!=(const FunctionLocation &rhs) const { return !(*this == rhs); }
 
 		struct Hash
 		{
 			std::size_t operator()(const FunctionLocation &l) const noexcept
 			{
 				return std::hash<std::string>()(l.file) * 31 +
-						std::hash<std::string>()(l.name);
+				       std::hash<std::string>()(l.name);
 			}
 		};
 	};
@@ -134,15 +134,15 @@
 		FunctionLocation function;
 		unsigned int line = 0;
 
-		bool operator == (const Location &rhs) const { return function == rhs.function && line == rhs.line; }
-		bool operator != (const Location &rhs) const { return !(*this == rhs); }
+		bool operator==(const Location &rhs) const { return function == rhs.function && line == rhs.line; }
+		bool operator!=(const Location &rhs) const { return !(*this == rhs); }
 
 		struct Hash
 		{
 			std::size_t operator()(const Location &l) const noexcept
 			{
 				return FunctionLocation::Hash()(l.function) * 31 +
-						std::hash<unsigned int>()(l.line);
+				       std::hash<unsigned int>()(l.line);
 			}
 		};
 	};
@@ -181,14 +181,14 @@
 	// frames will be returned.
 	Backtrace getCallerBacktrace(size_t limit = 0) const;
 
-	llvm::DILocation* getLocation(const Backtrace &backtrace, size_t i);
+	llvm::DILocation *getLocation(const Backtrace &backtrace, size_t i);
 
-	llvm::DIType *getOrCreateType(llvm::Type* type);
-	llvm::DIFile *getOrCreateFile(const char* path);
-	LineTokens const *getOrParseFileTokens(const char* path);
+	llvm::DIType *getOrCreateType(llvm::Type *type);
+	llvm::DIFile *getOrCreateFile(const char *path);
+	LineTokens const *getOrParseFileTokens(const char *path);
 
 	// Synchronizes diScope with the current backtrace.
-	void syncScope(Backtrace const& backtrace);
+	void syncScope(Backtrace const &backtrace);
 
 	IRBuilder *builder;
 	llvm::LLVMContext *context;
@@ -200,14 +200,14 @@
 	llvm::DISubprogram *diSubprogram;
 	llvm::DILocation *diRootLocation;
 	std::vector<Scope> diScope;
-	std::unordered_map<std::string, llvm::DIFile*> diFiles;
-	std::unordered_map<llvm::Type*, llvm::DIType*> diTypes;
+	std::unordered_map<std::string, llvm::DIFile *> diFiles;
+	std::unordered_map<llvm::Type *, llvm::DIType *> diTypes;
 	std::unordered_map<std::string, std::unique_ptr<LineTokens>> fileTokens;
-	std::vector<void const*> pushed;
+	std::vector<void const *> pushed;
 };
 
 }  // namespace rr
 
-#endif // ENABLE_RR_DEBUG_INFO
+#endif  // ENABLE_RR_DEBUG_INFO
 
-#endif // rr_LLVMReactorDebugInfo_hpp
+#endif  // rr_LLVMReactorDebugInfo_hpp
diff --git a/src/Reactor/MutexLock.hpp b/src/Reactor/MutexLock.hpp
index 000819a..94b37f0 100644
--- a/src/Reactor/MutexLock.hpp
+++ b/src/Reactor/MutexLock.hpp
@@ -20,7 +20,7 @@
 #if defined(__linux__)
 // Use a pthread mutex on Linux. Since many processes may use Reactor
 // at the same time it's best to just have the scheduler overhead.
-#include <pthread.h>
+#	include <pthread.h>
 
 namespace rr {
 
@@ -58,9 +58,9 @@
 
 }  // namespace rr
 
-#else   // !__linux__
+#else  // !__linux__
 
-#include <atomic>
+#	include <atomic>
 
 namespace rr {
 
@@ -174,6 +174,6 @@
 
 }  // namespace rr
 
-#endif   // !__linux__
+#endif  // !__linux__
 
-#endif   // rr_MutexLock_hpp
+#endif  // rr_MutexLock_hpp
diff --git a/src/Reactor/Nucleus.hpp b/src/Reactor/Nucleus.hpp
index 67e990f..4239973 100644
--- a/src/Reactor/Nucleus.hpp
+++ b/src/Reactor/Nucleus.hpp
@@ -23,7 +23,7 @@
 #include <vector>
 
 #ifdef None
-#undef None  // TODO(b/127920555)
+#	undef None  // TODO(b/127920555)
 #endif
 
 static_assert(sizeof(short) == 2, "Reactor's 'Short' type is 16-bit, and requires the C++ 'short' to match that.");
@@ -68,18 +68,19 @@
 
 	using Passes = std::vector<Pass>;
 
-	Optimization(Level level = Level::Default, const Passes& passes = {})
-		: level(level), passes(passes)
+	Optimization(Level level = Level::Default, const Passes &passes = {})
+	    : level(level)
+	    , passes(passes)
 	{
-		#if defined(REACTOR_DEFAULT_OPT_LEVEL)
+#if defined(REACTOR_DEFAULT_OPT_LEVEL)
 		{
 			this->level = Level::REACTOR_DEFAULT_OPT_LEVEL;
 		}
-		#endif
+#endif
 	}
 
 	Level getLevel() const { return level; }
-	const Passes & getPasses() const { return passes; }
+	const Passes &getPasses() const { return passes; }
 
 private:
 	Level level = Level::Default;
@@ -98,19 +99,41 @@
 	public:
 		static const Edit None;
 
-		Edit & set(Optimization::Level level) { optLevel = level; optLevelChanged = true; return *this; }
-		Edit & add(Optimization::Pass pass) { optPassEdits.push_back({ListEdit::Add, pass}); return *this; }
-		Edit & remove(Optimization::Pass pass) { optPassEdits.push_back({ListEdit::Remove, pass}); return *this; }
-		Edit & clearOptimizationPasses() { optPassEdits.push_back({ListEdit::Clear, Optimization::Pass::Disabled}); return *this; }
+		Edit &set(Optimization::Level level)
+		{
+			optLevel = level;
+			optLevelChanged = true;
+			return *this;
+		}
+		Edit &add(Optimization::Pass pass)
+		{
+			optPassEdits.push_back({ ListEdit::Add, pass });
+			return *this;
+		}
+		Edit &remove(Optimization::Pass pass)
+		{
+			optPassEdits.push_back({ ListEdit::Remove, pass });
+			return *this;
+		}
+		Edit &clearOptimizationPasses()
+		{
+			optPassEdits.push_back({ ListEdit::Clear, Optimization::Pass::Disabled });
+			return *this;
+		}
 
 		Config apply(const Config &cfg) const;
 
 	private:
-		enum class ListEdit { Add, Remove, Clear };
+		enum class ListEdit
+		{
+			Add,
+			Remove,
+			Clear
+		};
 		using OptPassesEdit = std::pair<ListEdit, Optimization::Pass>;
 
-		template <typename T>
-		void apply(const std::vector<std::pair<ListEdit, T>> & edits, std::vector<T>& list) const;
+		template<typename T>
+		void apply(const std::vector<std::pair<ListEdit, T>> &edits, std::vector<T> &list) const;
 
 		Optimization::Level optLevel;
 		bool optLevelChanged = false;
@@ -118,9 +141,11 @@
 	};
 
 	Config() = default;
-	Config(const Optimization & optimization) : optimization(optimization) {}
+	Config(const Optimization &optimization)
+	    : optimization(optimization)
+	{}
 
-	const Optimization & getOptimization() const { return optimization; }
+	const Optimization &getOptimization() const { return optimization; }
 
 private:
 	Optimization optimization;
@@ -146,15 +171,15 @@
 	static BasicBlock *getInsertBlock();
 	static void setInsertBlock(BasicBlock *basicBlock);
 
-	static void createFunction(Type *ReturnType, std::vector<Type*> &Params);
+	static void createFunction(Type *ReturnType, std::vector<Type *> &Params);
 	static Value *getArgument(unsigned int index);
 
 	// Coroutines
-	using CoroutineHandle = void*;
+	using CoroutineHandle = void *;
 
-	template <typename... ARGS>
+	template<typename... ARGS>
 	using CoroutineBegin = CoroutineHandle(ARGS...);
-	using CoroutineAwait = bool(CoroutineHandle, void* yieldValue);
+	using CoroutineAwait = bool(CoroutineHandle, void *yieldValue);
 	using CoroutineDestroy = void(CoroutineHandle);
 
 	enum CoroutineEntries
@@ -165,9 +190,9 @@
 		CoroutineEntryCount
 	};
 
-	static void createCoroutine(Type *ReturnType, std::vector<Type*> &Params);
+	static void createCoroutine(Type *ReturnType, std::vector<Type *> &Params);
 	std::shared_ptr<Routine> acquireCoroutine(const char *name, const Config::Edit &cfg = Config::Edit::None);
-	static void yield(Value*);
+	static void yield(Value *);
 
 	// Terminators
 	static void createRetVoid();
@@ -201,7 +226,7 @@
 	static Value *createNot(Value *V);
 
 	// Memory instructions
-	static Value *createLoad(Value *ptr, Type *type, bool isVolatile = false, unsigned int alignment = 0, bool atomic = false , std::memory_order memoryOrder = std::memory_order_relaxed);
+	static Value *createLoad(Value *ptr, Type *type, bool isVolatile = false, unsigned int alignment = 0, bool atomic = false, std::memory_order memoryOrder = std::memory_order_relaxed);
 	static Value *createStore(Value *value, Value *ptr, Type *type, bool isVolatile = false, unsigned int aligment = 0, bool atomic = false, std::memory_order memoryOrder = std::memory_order_relaxed);
 	static Value *createGEP(Value *ptr, Type *type, Value *index, bool unsignedIndex);
 
@@ -294,4 +319,4 @@
 
 }  // namespace rr
 
-#endif   // rr_Nucleus_hpp
+#endif  // rr_Nucleus_hpp
diff --git a/src/Reactor/Optimizer.cpp b/src/Reactor/Optimizer.cpp
index 8b74f82..86cface 100644
--- a/src/Reactor/Optimizer.cpp
+++ b/src/Reactor/Optimizer.cpp
@@ -50,45 +50,45 @@
 	Ice::Cfg *function;
 	Ice::GlobalContext *context;
 
-	struct Uses : std::vector<Ice::Inst*>
+	struct Uses : std::vector<Ice::Inst *>
 	{
 		bool areOnlyLoadStore() const;
 		void insert(Ice::Operand *value, Ice::Inst *instruction);
 		void erase(Ice::Inst *instruction);
 
-		std::vector<Ice::Inst*> loads;
-		std::vector<Ice::Inst*> stores;
+		std::vector<Ice::Inst *> loads;
+		std::vector<Ice::Inst *> stores;
 	};
 
 	struct LoadStoreInst
 	{
-		LoadStoreInst(Ice::Inst* inst, bool isStore)
-		  : inst(inst),
-		    address(isStore ? storeAddress(inst) : loadAddress(inst)),
-		    isStore(isStore)
+		LoadStoreInst(Ice::Inst *inst, bool isStore)
+		    : inst(inst)
+		    , address(isStore ? storeAddress(inst) : loadAddress(inst))
+		    , isStore(isStore)
 		{
 		}
 
-		Ice::Inst* inst;
+		Ice::Inst *inst;
 		Ice::Operand *address;
 		bool isStore;
 	};
 
-	Optimizer::Uses* getUses(Ice::Operand*);
-	void setUses(Ice::Operand*, Optimizer::Uses*);
-	bool hasUses(Ice::Operand*) const;
+	Optimizer::Uses *getUses(Ice::Operand *);
+	void setUses(Ice::Operand *, Optimizer::Uses *);
+	bool hasUses(Ice::Operand *) const;
 
-	Ice::CfgNode* getNode(Ice::Inst*);
-	void setNode(Ice::Inst*, Ice::CfgNode*);
+	Ice::CfgNode *getNode(Ice::Inst *);
+	void setNode(Ice::Inst *, Ice::CfgNode *);
 
-	Ice::Inst* getDefinition(Ice::Variable*);
-	void setDefinition(Ice::Variable*, Ice::Inst*);
+	Ice::Inst *getDefinition(Ice::Variable *);
+	void setDefinition(Ice::Variable *, Ice::Inst *);
 
-	const std::vector<LoadStoreInst>& getLoadStoreInsts(Ice::CfgNode*);
-	void setLoadStoreInsts(Ice::CfgNode*, std::vector<LoadStoreInst>*);
-	bool hasLoadStoreInsts(Ice::CfgNode* node) const;
+	const std::vector<LoadStoreInst> &getLoadStoreInsts(Ice::CfgNode *);
+	void setLoadStoreInsts(Ice::CfgNode *, std::vector<LoadStoreInst> *);
+	bool hasLoadStoreInsts(Ice::CfgNode *node) const;
 
-	std::vector<Optimizer::Uses*> allocatedUses;
+	std::vector<Optimizer::Uses *> allocatedUses;
 };
 
 void Optimizer::run(Ice::Cfg *function)
@@ -133,8 +133,7 @@
 				}
 			}
 		}
-	}
-	while(modified);
+	} while(modified);
 }
 
 void Optimizer::eliminateUnitializedLoads()
@@ -150,7 +149,7 @@
 
 		if(!llvm::isa<Ice::InstAlloca>(alloca))
 		{
-			break;   // Allocas are all at the top
+			break;  // Allocas are all at the top
 		}
 
 		Ice::Operand *address = alloca.getDest();
@@ -213,7 +212,7 @@
 
 		if(!llvm::isa<Ice::InstAlloca>(alloca))
 		{
-			break;   // Allocas are all at the top
+			break;  // Allocas are all at the top
 		}
 
 		Ice::Operand *address = alloca.getDest();
@@ -313,7 +312,7 @@
 {
 	Ice::CfgNode *entryBlock = function->getEntryNode();
 
-	std::vector<std::vector<LoadStoreInst>* > allocatedVectors;
+	std::vector<std::vector<LoadStoreInst> *> allocatedVectors;
 
 	for(Ice::Inst &alloca : entryBlock->getInsts())
 	{
@@ -324,7 +323,7 @@
 
 		if(!llvm::isa<Ice::InstAlloca>(alloca))
 		{
-			break;   // Allocas are all at the top
+			break;  // Allocas are all at the top
 		}
 
 		Ice::Operand *address = alloca.getDest();
@@ -357,7 +356,7 @@
 		{
 			if(!hasLoadStoreInsts(singleBasicBlock))
 			{
-				std::vector<LoadStoreInst>* loadStoreInstVector = new std::vector<LoadStoreInst>();
+				std::vector<LoadStoreInst> *loadStoreInstVector = new std::vector<LoadStoreInst>();
 				setLoadStoreInsts(singleBasicBlock, loadStoreInstVector);
 				allocatedVectors.push_back(loadStoreInstVector);
 				for(Ice::Inst &inst : singleBasicBlock->getInsts())
@@ -381,9 +380,9 @@
 			Ice::Operand *storeValue = nullptr;
 			bool unmatchedLoads = false;
 
-			for(auto& loadStoreInst : getLoadStoreInsts(singleBasicBlock))
+			for(auto &loadStoreInst : getLoadStoreInsts(singleBasicBlock))
 			{
-				Ice::Inst* inst = loadStoreInst.inst;
+				Ice::Inst *inst = loadStoreInst.inst;
 
 				if((loadStoreInst.address != address) || inst->isDeleted())
 				{
@@ -478,7 +477,7 @@
 	{
 		for(Ice::Inst *use : *getUses(oldValue))
 		{
-			assert(!use->isDeleted());   // Should have been removed from uses already
+			assert(!use->isDeleted());  // Should have been removed from uses already
 
 			for(Ice::SizeT i = 0; i < use->getSrcSize(); i++)
 			{
@@ -547,12 +546,12 @@
 			{
 				if(hasUses(address))
 				{
-					Optimizer::Uses* uses = getUses(address);
-					return uses->size() == uses->stores.size();   // Dead if all uses are stores
+					Optimizer::Uses *uses = getUses(address);
+					return uses->size() == uses->stores.size();  // Dead if all uses are stores
 				}
 				else
 				{
-					return true; // No uses
+					return true;  // No uses
 				}
 			}
 		}
@@ -700,16 +699,16 @@
 			// Check for matching type and sub-vector width.
 			return storeSubVector->getSrc(1)->getType() == loadSubVector->getDest()->getType() &&
 			       llvm::cast<Ice::ConstantInteger32>(storeSubVector->getSrc(3))->getValue() ==
-			       llvm::cast<Ice::ConstantInteger32>(loadSubVector->getSrc(2))->getValue();
+			           llvm::cast<Ice::ConstantInteger32>(loadSubVector->getSrc(2))->getValue();
 		}
 	}
 
 	return false;
 }
 
-Optimizer::Uses* Optimizer::getUses(Ice::Operand* operand)
+Optimizer::Uses *Optimizer::getUses(Ice::Operand *operand)
 {
-	Optimizer::Uses* uses = (Optimizer::Uses*)operand->Ice::Operand::getExternalData();
+	Optimizer::Uses *uses = (Optimizer::Uses *)operand->Ice::Operand::getExternalData();
 	if(!uses)
 	{
 		uses = new Optimizer::Uses;
@@ -719,47 +718,47 @@
 	return uses;
 }
 
-void Optimizer::setUses(Ice::Operand* operand, Optimizer::Uses* uses)
+void Optimizer::setUses(Ice::Operand *operand, Optimizer::Uses *uses)
 {
 	operand->Ice::Operand::setExternalData(uses);
 }
 
-bool Optimizer::hasUses(Ice::Operand* operand) const
+bool Optimizer::hasUses(Ice::Operand *operand) const
 {
 	return operand->Ice::Operand::getExternalData() != nullptr;
 }
 
-Ice::CfgNode* Optimizer::getNode(Ice::Inst* inst)
+Ice::CfgNode *Optimizer::getNode(Ice::Inst *inst)
 {
-	return (Ice::CfgNode*)inst->Ice::Inst::getExternalData();
+	return (Ice::CfgNode *)inst->Ice::Inst::getExternalData();
 }
 
-void Optimizer::setNode(Ice::Inst* inst, Ice::CfgNode* node)
+void Optimizer::setNode(Ice::Inst *inst, Ice::CfgNode *node)
 {
 	inst->Ice::Inst::setExternalData(node);
 }
 
-Ice::Inst* Optimizer::getDefinition(Ice::Variable* var)
+Ice::Inst *Optimizer::getDefinition(Ice::Variable *var)
 {
-	return (Ice::Inst*)var->Ice::Variable::getExternalData();
+	return (Ice::Inst *)var->Ice::Variable::getExternalData();
 }
 
-void Optimizer::setDefinition(Ice::Variable* var, Ice::Inst* inst)
+void Optimizer::setDefinition(Ice::Variable *var, Ice::Inst *inst)
 {
 	var->Ice::Variable::setExternalData(inst);
 }
 
-const std::vector<Optimizer::LoadStoreInst>& Optimizer::getLoadStoreInsts(Ice::CfgNode* node)
+const std::vector<Optimizer::LoadStoreInst> &Optimizer::getLoadStoreInsts(Ice::CfgNode *node)
 {
-	return *((const std::vector<LoadStoreInst>*)node->Ice::CfgNode::getExternalData());
+	return *((const std::vector<LoadStoreInst> *)node->Ice::CfgNode::getExternalData());
 }
 
-void Optimizer::setLoadStoreInsts(Ice::CfgNode* node, std::vector<LoadStoreInst>* insts)
+void Optimizer::setLoadStoreInsts(Ice::CfgNode *node, std::vector<LoadStoreInst> *insts)
 {
 	node->Ice::CfgNode::setExternalData(insts);
 }
 
-bool Optimizer::hasLoadStoreInsts(Ice::CfgNode* node) const
+bool Optimizer::hasLoadStoreInsts(Ice::CfgNode *node) const
 {
 	return node->Ice::CfgNode::getExternalData() != nullptr;
 }
@@ -825,7 +824,7 @@
 	}
 }
 
-}  // anonymous namespace 
+}  // anonymous namespace
 
 namespace rr {
 
diff --git a/src/Reactor/Optimizer.hpp b/src/Reactor/Optimizer.hpp
index 8aa2019..b51c74a 100644
--- a/src/Reactor/Optimizer.hpp
+++ b/src/Reactor/Optimizer.hpp
@@ -23,4 +23,4 @@
 
 }  // namespace rr
 
-#endif   // rr_Optimizer_hpp
+#endif  // rr_Optimizer_hpp
diff --git a/src/Reactor/Print.hpp b/src/Reactor/Print.hpp
index ff4ad81..a0dee69 100644
--- a/src/Reactor/Print.hpp
+++ b/src/Reactor/Print.hpp
@@ -16,15 +16,15 @@
 #define rr_Print_hpp
 
 #if !defined(NDEBUG)
-#define ENABLE_RR_PRINT 1 // Enables RR_PRINT(), RR_WATCH()
-#endif // !defined(NDEBUG)
+#	define ENABLE_RR_PRINT 1  // Enables RR_PRINT(), RR_WATCH()
+#endif                         // !defined(NDEBUG)
 
 #ifdef ENABLE_RR_PRINT
 
-#include "Reactor.hpp"
+#	include "Reactor.hpp"
 
-#include <string>
-#include <vector>
+#	include <string>
+#	include <vector>
 
 namespace rr {
 
@@ -45,16 +45,18 @@
 	//    printf format specifier.
 	//  * A 'static std::vector<rr::Value*> val(const T& v)' method that
 	//    returns all the printf format values.
-	template <typename T> struct Ty
+	template<typename T>
+	struct Ty
 	{
 		// static std::string fmt(const T& v);
 		// static std::vector<rr::Value*> val(const T& v);
 	};
 
 	// returns the printf values for all the values in the given array.
-	template <typename T>
-	static std::vector<Value*> val(const T* list, int count) {
-		std::vector<Value*> values;
+	template<typename T>
+	static std::vector<Value *> val(const T *list, int count)
+	{
+		std::vector<Value *> values;
 		values.reserve(count);
 		for(int i = 0; i < count; i++)
 		{
@@ -66,8 +68,8 @@
 
 	// fmt returns the comma-delimited list of printf format strings for
 	// every element in the provided list, all enclosed in square brackets.
-	template <typename T>
-	static std::string fmt(const T* list, int count)
+	template<typename T>
+	static std::string fmt(const T *list, int count)
 	{
 		std::string out = "[";
 		for(int i = 0; i < count; i++)
@@ -78,7 +80,7 @@
 		return out + "]";
 	}
 
-	static std::string addr(const void* ptr)
+	static std::string addr(const void *ptr)
 	{
 		char buf[32];
 		snprintf(buf, sizeof(buf), "%p", ptr);
@@ -87,36 +89,69 @@
 
 public:
 	const std::string format;
-	const std::vector<Value*> values;
+	const std::vector<Value *> values;
 
 	// Constructs a PrintValue for the given value.
-	template <typename T>
-	PrintValue(const T& v) : format(fmt(v)), values(val(v)) {}
+	template<typename T>
+	PrintValue(const T &v)
+	    : format(fmt(v))
+	    , values(val(v))
+	{}
 
 	// Constructs a PrintValue for the given static array.
-	template <typename T, int N>
-	PrintValue(const T (&v)[N]) : format(fmt(&v[0], N)), values(val(&v[0], N)) {}
+	template<typename T, int N>
+	PrintValue(const T (&v)[N])
+	    : format(fmt(&v[0], N))
+	    , values(val(&v[0], N))
+	{}
 
 	// Constructs a PrintValue for the given array starting at arr of length
 	// len.
-	template <typename T>
-	PrintValue(const T* arr, int len) : format(fmt(arr, len)), values(val(arr, len)) {}
+	template<typename T>
+	PrintValue(const T *arr, int len)
+	    : format(fmt(arr, len))
+	    , values(val(arr, len))
+	{}
 
 	// PrintValue constructors for plain-old-data values.
-	PrintValue(bool v) : format(v ? "true" : "false") {}
-	PrintValue(int8_t v) : format(std::to_string(v)) {}
-	PrintValue(uint8_t v) : format(std::to_string(v)) {}
-	PrintValue(int16_t v) : format(std::to_string(v)) {}
-	PrintValue(uint16_t v) : format(std::to_string(v)) {}
-	PrintValue(int32_t v) : format(std::to_string(v)) {}
-	PrintValue(uint32_t v) : format(std::to_string(v)) {}
-	PrintValue(int64_t v) : format(std::to_string(v)) {}
-	PrintValue(uint64_t v) : format(std::to_string(v)) {}
-	PrintValue(float v) : format(std::to_string(v)) {}
-	PrintValue(double v) : format(std::to_string(v)) {}
+	PrintValue(bool v)
+	    : format(v ? "true" : "false")
+	{}
+	PrintValue(int8_t v)
+	    : format(std::to_string(v))
+	{}
+	PrintValue(uint8_t v)
+	    : format(std::to_string(v))
+	{}
+	PrintValue(int16_t v)
+	    : format(std::to_string(v))
+	{}
+	PrintValue(uint16_t v)
+	    : format(std::to_string(v))
+	{}
+	PrintValue(int32_t v)
+	    : format(std::to_string(v))
+	{}
+	PrintValue(uint32_t v)
+	    : format(std::to_string(v))
+	{}
+	PrintValue(int64_t v)
+	    : format(std::to_string(v))
+	{}
+	PrintValue(uint64_t v)
+	    : format(std::to_string(v))
+	{}
+	PrintValue(float v)
+	    : format(std::to_string(v))
+	{}
+	PrintValue(double v)
+	    : format(std::to_string(v))
+	{}
 
-	template <typename T>
-	PrintValue(const T* v) : format(addr(v)) {}
+	template<typename T>
+	PrintValue(const T *v)
+	    : format(addr(v))
+	{}
 
 	// vals is a helper to build composite value lists.
 	// vals returns the full, sequential list of printf argument values used
@@ -144,12 +179,12 @@
 	//			}
 	//		};
 	//	}
-	template<typename ... ARGS>
-	static std::vector<Value*> vals(ARGS... v)
+	template<typename... ARGS>
+	static std::vector<Value *> vals(ARGS... v)
 	{
-		std::vector< std::vector<Value*> > lists = {val(v)...};
-		std::vector<Value*> joined;
-		for(const auto& list : lists)
+		std::vector<std::vector<Value *>> lists = { val(v)... };
+		std::vector<Value *> joined;
+		for(const auto &list : lists)
 		{
 			joined.insert(joined.end(), list.begin(), list.end());
 		}
@@ -158,128 +193,155 @@
 
 	// returns the printf format specifier for the given type via the
 	// PrintValue::Ty<T> specialization.
-	template <typename T>
-	static std::string fmt(const T& v) { return Ty<T>::fmt(v); }
+	template<typename T>
+	static std::string fmt(const T &v)
+	{
+		return Ty<T>::fmt(v);
+	}
 
 	// returns the printf value for the given type with a
 	// PrintValue::Ty<T> specialization.
-	template <typename T>
-	static std::vector<Value*> val(const T& v) { return Ty<T>::val(v); }
+	template<typename T>
+	static std::vector<Value *> val(const T &v)
+	{
+		return Ty<T>::val(v);
+	}
 };
 
 // PrintValue::Ty<T> specializations for basic types.
-template <> struct PrintValue::Ty<const char*>
+template<>
+struct PrintValue::Ty<const char *>
 {
-	static std::string fmt(const char* v) { return "%s"; }
-	static std::vector<Value*> val(const char* v);
+	static std::string fmt(const char *v) { return "%s"; }
+	static std::vector<Value *> val(const char *v);
 };
-template <> struct PrintValue::Ty<std::string>
+template<>
+struct PrintValue::Ty<std::string>
 {
-	static std::string fmt(const std::string& v) { return PrintValue::Ty<const char*>::fmt(v.c_str()); }
-	static std::vector<Value*> val(const std::string& v) { return PrintValue::Ty<const char*>::val(v.c_str()); }
+	static std::string fmt(const std::string &v) { return PrintValue::Ty<const char *>::fmt(v.c_str()); }
+	static std::vector<Value *> val(const std::string &v) { return PrintValue::Ty<const char *>::val(v.c_str()); }
 };
 
 // PrintValue::Ty<T> specializations for standard Reactor types.
-template <> struct PrintValue::Ty<Bool>
+template<>
+struct PrintValue::Ty<Bool>
 {
-	static std::string fmt(const RValue<Bool>& v) { return "%d"; }
-	static std::vector<Value*> val(const RValue<Bool>& v) { return {v.value}; }
+	static std::string fmt(const RValue<Bool> &v) { return "%d"; }
+	static std::vector<Value *> val(const RValue<Bool> &v) { return { v.value }; }
 };
-template <> struct PrintValue::Ty<Byte>
+template<>
+struct PrintValue::Ty<Byte>
 {
-	static std::string fmt(const RValue<Byte>& v) { return "%d"; }
-	static std::vector<Value*> val(const RValue<Byte>& v);
+	static std::string fmt(const RValue<Byte> &v) { return "%d"; }
+	static std::vector<Value *> val(const RValue<Byte> &v);
 };
-template <> struct PrintValue::Ty<Byte4>
+template<>
+struct PrintValue::Ty<Byte4>
 {
-	static std::string fmt(const RValue<Byte4>& v) { return "[%d, %d, %d, %d]"; }
-	static std::vector<Value*> val(const RValue<Byte4>& v);
+	static std::string fmt(const RValue<Byte4> &v) { return "[%d, %d, %d, %d]"; }
+	static std::vector<Value *> val(const RValue<Byte4> &v);
 };
-template <> struct PrintValue::Ty<Int>
+template<>
+struct PrintValue::Ty<Int>
 {
-	static std::string fmt(const RValue<Int>& v) { return "%d"; }
-	static std::vector<Value*> val(const RValue<Int>& v);
+	static std::string fmt(const RValue<Int> &v) { return "%d"; }
+	static std::vector<Value *> val(const RValue<Int> &v);
 };
-template <> struct PrintValue::Ty<Int2>
+template<>
+struct PrintValue::Ty<Int2>
 {
-	static std::string fmt(const RValue<Int>& v) { return "[%d, %d]"; }
-	static std::vector<Value*> val(const RValue<Int2>& v);
+	static std::string fmt(const RValue<Int> &v) { return "[%d, %d]"; }
+	static std::vector<Value *> val(const RValue<Int2> &v);
 };
-template <> struct PrintValue::Ty<Int4>
+template<>
+struct PrintValue::Ty<Int4>
 {
-	static std::string fmt(const RValue<Int4>& v) { return "[%d, %d, %d, %d]"; }
-	static std::vector<Value*> val(const RValue<Int4>& v);
+	static std::string fmt(const RValue<Int4> &v) { return "[%d, %d, %d, %d]"; }
+	static std::vector<Value *> val(const RValue<Int4> &v);
 };
-template <> struct PrintValue::Ty<UInt>
+template<>
+struct PrintValue::Ty<UInt>
 {
-	static std::string fmt(const RValue<UInt>& v) { return "%u"; }
-	static std::vector<Value*> val(const RValue<UInt>& v);
+	static std::string fmt(const RValue<UInt> &v) { return "%u"; }
+	static std::vector<Value *> val(const RValue<UInt> &v);
 };
-template <> struct PrintValue::Ty<UInt2>
+template<>
+struct PrintValue::Ty<UInt2>
 {
-	static std::string fmt(const RValue<UInt>& v) { return "[%u, %u]"; }
-	static std::vector<Value*> val(const RValue<UInt2>& v);
+	static std::string fmt(const RValue<UInt> &v) { return "[%u, %u]"; }
+	static std::vector<Value *> val(const RValue<UInt2> &v);
 };
-template <> struct PrintValue::Ty<UInt4>
+template<>
+struct PrintValue::Ty<UInt4>
 {
-	static std::string fmt(const RValue<UInt4>& v) { return "[%u, %u, %u, %u]"; }
-	static std::vector<Value*> val(const RValue<UInt4>& v);
+	static std::string fmt(const RValue<UInt4> &v) { return "[%u, %u, %u, %u]"; }
+	static std::vector<Value *> val(const RValue<UInt4> &v);
 };
-template <> struct PrintValue::Ty<Short>
+template<>
+struct PrintValue::Ty<Short>
 {
-	static std::string fmt(const RValue<Short>& v) { return "%d"; }
-	static std::vector<Value*> val(const RValue<Short>& v);
+	static std::string fmt(const RValue<Short> &v) { return "%d"; }
+	static std::vector<Value *> val(const RValue<Short> &v);
 };
-template <> struct PrintValue::Ty<Short4>
+template<>
+struct PrintValue::Ty<Short4>
 {
-	static std::string fmt(const RValue<Short4>& v) { return "[%d, %d, %d, %d]"; }
-	static std::vector<Value*> val(const RValue<Short4>& v);
+	static std::string fmt(const RValue<Short4> &v) { return "[%d, %d, %d, %d]"; }
+	static std::vector<Value *> val(const RValue<Short4> &v);
 };
-template <> struct PrintValue::Ty<UShort>
+template<>
+struct PrintValue::Ty<UShort>
 {
-	static std::string fmt(const RValue<UShort>& v) { return "%u"; }
-	static std::vector<Value*> val(const RValue<UShort>& v);
+	static std::string fmt(const RValue<UShort> &v) { return "%u"; }
+	static std::vector<Value *> val(const RValue<UShort> &v);
 };
-template <> struct PrintValue::Ty<UShort4>
+template<>
+struct PrintValue::Ty<UShort4>
 {
-	static std::string fmt(const RValue<UShort4>& v) { return "[%u, %u, %u, %u]"; }
-	static std::vector<Value*> val(const RValue<UShort4>& v);
+	static std::string fmt(const RValue<UShort4> &v) { return "[%u, %u, %u, %u]"; }
+	static std::vector<Value *> val(const RValue<UShort4> &v);
 };
-template <> struct PrintValue::Ty<Float>
+template<>
+struct PrintValue::Ty<Float>
 {
-	static std::string fmt(const RValue<Float>& v) { return "[%f]"; }
-	static std::vector<Value*> val(const RValue<Float>& v);
+	static std::string fmt(const RValue<Float> &v) { return "[%f]"; }
+	static std::vector<Value *> val(const RValue<Float> &v);
 };
-template <> struct PrintValue::Ty<Float4>
+template<>
+struct PrintValue::Ty<Float4>
 {
-	static std::string fmt(const RValue<Float4>& v) { return "[%f, %f, %f, %f]"; }
-	static std::vector<Value*> val(const RValue<Float4>& v);
+	static std::string fmt(const RValue<Float4> &v) { return "[%f, %f, %f, %f]"; }
+	static std::vector<Value *> val(const RValue<Float4> &v);
 };
-template <> struct PrintValue::Ty<Long>
+template<>
+struct PrintValue::Ty<Long>
 {
-	static std::string fmt(const RValue<Long>& v) { return "%lld"; }
-	static std::vector<Value*> val(const RValue<Long>& v) { return {v.value}; }
+	static std::string fmt(const RValue<Long> &v) { return "%lld"; }
+	static std::vector<Value *> val(const RValue<Long> &v) { return { v.value }; }
 };
-template <typename T> struct PrintValue::Ty< Pointer<T> >
+template<typename T>
+struct PrintValue::Ty<Pointer<T>>
 {
-	static std::string fmt(const RValue<Pointer<T>>& v) { return "%p"; }
-	static std::vector<Value*> val(const RValue<Pointer<T>>& v) { return {v.value}; }
+	static std::string fmt(const RValue<Pointer<T>> &v) { return "%p"; }
+	static std::vector<Value *> val(const RValue<Pointer<T>> &v) { return { v.value }; }
 };
-template <typename T> struct PrintValue::Ty< Reference<T> >
+template<typename T>
+struct PrintValue::Ty<Reference<T>>
 {
-	static std::string fmt(const Reference<T>& v) { return PrintValue::Ty<T>::fmt(v); }
-	static std::vector<Value*> val(const Reference<T>& v) { return PrintValue::Ty<T>::val(v); }
+	static std::string fmt(const Reference<T> &v) { return PrintValue::Ty<T>::fmt(v); }
+	static std::vector<Value *> val(const Reference<T> &v) { return PrintValue::Ty<T>::val(v); }
 };
-template <typename T> struct PrintValue::Ty< RValue<T> >
+template<typename T>
+struct PrintValue::Ty<RValue<T>>
 {
-	static std::string fmt(const RValue<T>& v) { return PrintValue::Ty<T>::fmt(v); }
-	static std::vector<Value*> val(const RValue<T>& v) { return PrintValue::Ty<T>::val(v); }
+	static std::string fmt(const RValue<T> &v) { return PrintValue::Ty<T>::fmt(v); }
+	static std::vector<Value *> val(const RValue<T> &v) { return PrintValue::Ty<T>::val(v); }
 };
 
 // Printv emits a call to printf() using the function, file and line,
 // message and optional values.
 // See Printv below.
-void Printv(const char* function, const char* file, int line, const char* msg, std::initializer_list<PrintValue> vals);
+void Printv(const char *function, const char *file, int line, const char *msg, std::initializer_list<PrintValue> vals);
 
 // Printv emits a call to printf() using the provided message and optional
 // values.
@@ -291,22 +353,25 @@
 //   "red and green"
 // Arguments can be indexed in any order.
 // Invalid indices are not substituted.
-inline void Printv(const char* msg, std::initializer_list<PrintValue> vals)
+inline void Printv(const char *msg, std::initializer_list<PrintValue> vals)
 {
 	Printv(nullptr, nullptr, 0, msg, vals);
 }
 
 // Print is a wrapper over Printv that wraps the variadic arguments into an
 // initializer_list before calling Printv.
-template <typename ... ARGS>
-void Print(const char* msg, const ARGS& ... vals) { Printv(msg, {vals...}); }
+template<typename... ARGS>
+void Print(const char *msg, const ARGS &... vals)
+{
+	Printv(msg, { vals... });
+}
 
 // Print is a wrapper over Printv that wraps the variadic arguments into an
 // initializer_list before calling Printv.
-template <typename ... ARGS>
-void Print(const char* function, const char* file, int line, const char* msg, const ARGS& ... vals)
+template<typename... ARGS>
+void Print(const char *function, const char *file, int line, const char *msg, const ARGS &... vals)
 {
-	Printv(function, file, line, msg, {vals...});
+	Printv(function, file, line, msg, { vals... });
 }
 
 // RR_LOG is a macro that calls Print(), automatically populating the
@@ -314,19 +379,19 @@
 //
 // RR_LOG() is intended to be used for debugging JIT compiled code, and is
 // not intended for production use.
-#if defined(_WIN32)
-	#define RR_LOG(msg, ...) Print(__FUNCSIG__, __FILE__, static_cast<int>(__LINE__), msg "\n", ##__VA_ARGS__)
-#else
-	#define RR_LOG(msg, ...) Print(__PRETTY_FUNCTION__, __FILE__, static_cast<int>(__LINE__), msg "\n", ##__VA_ARGS__)
-#endif
+#	if defined(_WIN32)
+#		define RR_LOG(msg, ...) Print(__FUNCSIG__, __FILE__, static_cast<int>(__LINE__), msg "\n", ##__VA_ARGS__)
+#	else
+#		define RR_LOG(msg, ...) Print(__PRETTY_FUNCTION__, __FILE__, static_cast<int>(__LINE__), msg "\n", ##__VA_ARGS__)
+#	endif
 
 // Macro magic to perform variadic dispatch.
 // See: https://renenyffenegger.ch/notes/development/languages/C-C-plus-plus/preprocessor/macros/__VA_ARGS__/count-arguments
 // Note, this doesn't attempt to use the ##__VA_ARGS__ trick to handle 0
-#define RR_MSVC_EXPAND_BUG(X) X // Helper macro to force expanding __VA_ARGS__ to satisfy MSVC compiler.
-#define RR_GET_NTH_ARG(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, N, ...) N
-#define RR_COUNT_ARGUMENTS(...) RR_MSVC_EXPAND_BUG(RR_GET_NTH_ARG(__VA_ARGS__, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0))
-static_assert(1 == RR_COUNT_ARGUMENTS(a), "RR_COUNT_ARGUMENTS broken"); // Sanity checks.
+#	define RR_MSVC_EXPAND_BUG(X) X  // Helper macro to force expanding __VA_ARGS__ to satisfy MSVC compiler.
+#	define RR_GET_NTH_ARG(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, N, ...) N
+#	define RR_COUNT_ARGUMENTS(...) RR_MSVC_EXPAND_BUG(RR_GET_NTH_ARG(__VA_ARGS__, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0))
+static_assert(1 == RR_COUNT_ARGUMENTS(a), "RR_COUNT_ARGUMENTS broken");  // Sanity checks.
 static_assert(2 == RR_COUNT_ARGUMENTS(a, b), "RR_COUNT_ARGUMENTS broken");
 static_assert(3 == RR_COUNT_ARGUMENTS(a, b, c), "RR_COUNT_ARGUMENTS broken");
 
@@ -336,21 +401,43 @@
 //
 // RR_WATCH_FMT(...) uses the RR_COUNT_ARGUMENTS helper macro to delegate to a
 // corresponding RR_WATCH_FMT_n specialization macro below.
-#define RR_WATCH_CONCAT(a, b) a ## b
-#define RR_WATCH_CONCAT2(a, b) RR_WATCH_CONCAT(a, b)
-#define RR_WATCH_FMT(...) RR_MSVC_EXPAND_BUG(RR_WATCH_CONCAT2(RR_WATCH_FMT_, RR_COUNT_ARGUMENTS(__VA_ARGS__))(__VA_ARGS__))
-#define RR_WATCH_FMT_1(_1) "\n  " #_1 ": {0}"
-#define RR_WATCH_FMT_2(_1, _2)                                             RR_WATCH_FMT_1(_1) "\n  " #_2 ": {1}"
-#define RR_WATCH_FMT_3(_1, _2, _3)                                         RR_WATCH_FMT_2(_1, _2) "\n  " #_3 ": {2}"
-#define RR_WATCH_FMT_4(_1, _2, _3, _4)                                     RR_WATCH_FMT_3(_1, _2, _3) "\n  " #_4 ": {3}"
-#define RR_WATCH_FMT_5(_1, _2, _3, _4, _5)                                 RR_WATCH_FMT_4(_1, _2, _3, _4) "\n  " #_5 ": {4}"
-#define RR_WATCH_FMT_6(_1, _2, _3, _4, _5, _6)                             RR_WATCH_FMT_5(_1, _2, _3, _4, _5) "\n  " #_6 ": {5}"
-#define RR_WATCH_FMT_7(_1, _2, _3, _4, _5, _6, _7)                         RR_WATCH_FMT_6(_1, _2, _3, _4, _5, _6) "\n  " #_7 ": {6}"
-#define RR_WATCH_FMT_8(_1, _2, _3, _4, _5, _6, _7, _8)                     RR_WATCH_FMT_7(_1, _2, _3, _4, _5, _6, _7) "\n  " #_8 ": {7}"
-#define RR_WATCH_FMT_9(_1, _2, _3, _4, _5, _6, _7, _8, _9)                 RR_WATCH_FMT_8(_1, _2, _3, _4, _5, _6, _7, _8) "\n  " #_9 ": {8}"
-#define RR_WATCH_FMT_10(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10)           RR_WATCH_FMT_9(_1, _2, _3, _4, _5, _6, _7, _8, _9) "\n  " #_10 ": {9}"
-#define RR_WATCH_FMT_11(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11)      RR_WATCH_FMT_10(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10) "\n  " #_11 ": {10}"
-#define RR_WATCH_FMT_12(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) RR_WATCH_FMT_11(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) "\n  " #_12 ": {11}"
+#	define RR_WATCH_CONCAT(a, b) a##b
+#	define RR_WATCH_CONCAT2(a, b) RR_WATCH_CONCAT(a, b)
+#	define RR_WATCH_FMT(...) RR_MSVC_EXPAND_BUG(RR_WATCH_CONCAT2(RR_WATCH_FMT_, RR_COUNT_ARGUMENTS(__VA_ARGS__))(__VA_ARGS__))
+#	define RR_WATCH_FMT_1(_1) "\n  " #    _1 ": {0}"
+#	define RR_WATCH_FMT_2(_1, _2) \
+		RR_WATCH_FMT_1(_1)         \
+		"\n  " #_2 ": {1}"
+#	define RR_WATCH_FMT_3(_1, _2, _3) \
+		RR_WATCH_FMT_2(_1, _2)         \
+		"\n  " #_3 ": {2}"
+#	define RR_WATCH_FMT_4(_1, _2, _3, _4) \
+		RR_WATCH_FMT_3(_1, _2, _3)         \
+		"\n  " #_4 ": {3}"
+#	define RR_WATCH_FMT_5(_1, _2, _3, _4, _5) \
+		RR_WATCH_FMT_4(_1, _2, _3, _4)         \
+		"\n  " #_5 ": {4}"
+#	define RR_WATCH_FMT_6(_1, _2, _3, _4, _5, _6) \
+		RR_WATCH_FMT_5(_1, _2, _3, _4, _5)         \
+		"\n  " #_6 ": {5}"
+#	define RR_WATCH_FMT_7(_1, _2, _3, _4, _5, _6, _7) \
+		RR_WATCH_FMT_6(_1, _2, _3, _4, _5, _6)         \
+		"\n  " #_7 ": {6}"
+#	define RR_WATCH_FMT_8(_1, _2, _3, _4, _5, _6, _7, _8) \
+		RR_WATCH_FMT_7(_1, _2, _3, _4, _5, _6, _7)         \
+		"\n  " #_8 ": {7}"
+#	define RR_WATCH_FMT_9(_1, _2, _3, _4, _5, _6, _7, _8, _9) \
+		RR_WATCH_FMT_8(_1, _2, _3, _4, _5, _6, _7, _8)         \
+		"\n  " #_9 ": {8}"
+#	define RR_WATCH_FMT_10(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10) \
+		RR_WATCH_FMT_9(_1, _2, _3, _4, _5, _6, _7, _8, _9)           \
+		"\n  " #_10 ": {9}"
+#	define RR_WATCH_FMT_11(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) \
+		RR_WATCH_FMT_10(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10)          \
+		"\n  " #_11 ": {10}"
+#	define RR_WATCH_FMT_12(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) \
+		RR_WATCH_FMT_11(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11)          \
+		"\n  " #_12 ": {11}"
 
 // RR_WATCH() is a helper that prints the name and value of all the supplied
 // arguments.
@@ -362,7 +449,7 @@
 //
 // RR_WATCH() is intended to be used for debugging JIT compiled code, and
 // is not intended for production use.
-#define RR_WATCH(...) RR_LOG(RR_WATCH_FMT(__VA_ARGS__), __VA_ARGS__)
+#	define RR_WATCH(...) RR_LOG(RR_WATCH_FMT(__VA_ARGS__), __VA_ARGS__)
 
 }  // namespace rr
 
diff --git a/src/Reactor/Reactor.cpp b/src/Reactor/Reactor.cpp
index c088e7b..fe8e103 100644
--- a/src/Reactor/Reactor.cpp
+++ b/src/Reactor/Reactor.cpp
@@ -20,19 +20,21 @@
 // Define REACTOR_MATERIALIZE_LVALUES_ON_DEFINITION to non-zero to ensure all
 // variables have a stack location obtained throuch alloca().
 #ifndef REACTOR_MATERIALIZE_LVALUES_ON_DEFINITION
-#define REACTOR_MATERIALIZE_LVALUES_ON_DEFINITION 0
+#	define REACTOR_MATERIALIZE_LVALUES_ON_DEFINITION 0
 #endif
 
 namespace {
 
 // Introduced in C++20.
-template <class ForwardIterator, class UnaryPredicate>
+template<class ForwardIterator, class UnaryPredicate>
 ForwardIterator remove_if(ForwardIterator first, ForwardIterator last,
-							UnaryPredicate pred)
+                          UnaryPredicate pred)
 {
 	ForwardIterator result = first;
-	while(first!=last) {
-		if(!pred(*first)) {
+	while(first != last)
+	{
+		if(!pred(*first))
+		{
 			*result = std::move(*first);
 			++result;
 		}
@@ -54,39 +56,41 @@
 	auto level = optLevelChanged ? optLevel : cfg.optimization.getLevel();
 	auto passes = cfg.optimization.getPasses();
 	apply(optPassEdits, passes);
-	return Config{ Optimization{level, passes} };
+	return Config{ Optimization{ level, passes } };
 }
 
-template <typename T>
-void rr::Config::Edit::apply(const std::vector<std::pair<ListEdit, T>> & edits, std::vector<T>& list) const
+template<typename T>
+void rr::Config::Edit::apply(const std::vector<std::pair<ListEdit, T>> &edits, std::vector<T> &list) const
 {
-	for(auto & edit : edits)
+	for(auto &edit : edits)
 	{
 		switch(edit.first)
 		{
-		case ListEdit::Add:
-			list.push_back(edit.second);
-			break;
-		case ListEdit::Remove:
-			::remove_if(list.begin(), list.end(), [&](T item) { return item == edit.second; });
-			break;
-		case ListEdit::Clear:
-			list.clear();
-			break;
+			case ListEdit::Add:
+				list.push_back(edit.second);
+				break;
+			case ListEdit::Remove:
+				::remove_if(list.begin(), list.end(), [&](T item) { return item == edit.second; });
+				break;
+			case ListEdit::Clear:
+				list.clear();
+				break;
 		}
 	}
 }
 
 // Set of variables that do not have a stack location yet.
-std::unordered_set<Variable*> Variable::unmaterializedVariables;
+std::unordered_set<Variable *> Variable::unmaterializedVariables;
 
-Variable::Variable(Type *type, int arraySize) : arraySize(arraySize), type(type)
+Variable::Variable(Type *type, int arraySize)
+    : arraySize(arraySize)
+    , type(type)
 {
-	#if REACTOR_MATERIALIZE_LVALUES_ON_DEFINITION
-		materialize();
-	#else
-		unmaterializedVariables.emplace(this);
-	#endif
+#if REACTOR_MATERIALIZE_LVALUES_ON_DEFINITION
+	materialize();
+#else
+	unmaterializedVariables.emplace(this);
+#endif
 }
 
 Variable::~Variable()
@@ -126,12 +130,11 @@
 //
 static Value *createBlend4(Value *lhs, Value *rhs, uint16_t select)
 {
-	int swizzle[4] =
-	{
+	int swizzle[4] = {
 		(select >> 12) & 0x07,
-		(select >> 8)  & 0x07,
-		(select >> 4)  & 0x07,
-		(select >> 0)  & 0x07,
+		(select >> 8) & 0x07,
+		(select >> 4) & 0x07,
+		(select >> 0) & 0x07,
 	};
 
 	return Nucleus::createShuffleVector(lhs, rhs, swizzle);
@@ -153,12 +156,11 @@
 //
 static Value *createSwizzle4(Value *val, uint16_t select)
 {
-	int swizzle[4] =
-	{
+	int swizzle[4] = {
 		(select >> 12) & 0x03,
-		(select >> 8)  & 0x03,
-		(select >> 4)  & 0x03,
-		(select >> 0)  & 0x03,
+		(select >> 8) & 0x03,
+		(select >> 4) & 0x03,
+		(select >> 0) & 0x03,
 	};
 
 	return Nucleus::createShuffleVector(val, val, swizzle);
@@ -166,15 +168,14 @@
 
 static Value *createMask4(Value *lhs, Value *rhs, uint16_t select)
 {
-	bool mask[4] = {false, false, false, false};
+	bool mask[4] = { false, false, false, false };
 
 	mask[(select >> 12) & 0x03] = true;
-	mask[(select >> 8)  & 0x03] = true;
-	mask[(select >> 4)  & 0x03] = true;
-	mask[(select >> 0)  & 0x03] = true;
+	mask[(select >> 8) & 0x03] = true;
+	mask[(select >> 4) & 0x03] = true;
+	mask[(select >> 0) & 0x03] = true;
 
-	int swizzle[4] =
-	{
+	int swizzle[4] = {
 		mask[0] ? 4 : 0,
 		mask[1] ? 5 : 1,
 		mask[2] ? 6 : 2,
@@ -450,7 +451,7 @@
 	return RValue<Byte>(Nucleus::createNot(val.value));
 }
 
-RValue<Byte> operator++(Byte &val, int)   // Post-increment
+RValue<Byte> operator++(Byte &val, int)  // Post-increment
 {
 	RValue<Byte> res = val;
 
@@ -460,7 +461,7 @@
 	return res;
 }
 
-const Byte &operator++(Byte &val)   // Pre-increment
+const Byte &operator++(Byte &val)  // Pre-increment
 {
 	Value *inc = Nucleus::createAdd(val.loadValue(), Nucleus::createConstantByte((unsigned char)1));
 	val.storeValue(inc);
@@ -468,7 +469,7 @@
 	return val;
 }
 
-RValue<Byte> operator--(Byte &val, int)   // Post-decrement
+RValue<Byte> operator--(Byte &val, int)  // Post-decrement
 {
 	RValue<Byte> res = val;
 
@@ -478,7 +479,7 @@
 	return res;
 }
 
-const Byte &operator--(Byte &val)   // Pre-decrement
+const Byte &operator--(Byte &val)  // Pre-decrement
 {
 	Value *inc = Nucleus::createSub(val.loadValue(), Nucleus::createConstantByte((unsigned char)1));
 	val.storeValue(inc);
@@ -695,7 +696,7 @@
 	return RValue<SByte>(Nucleus::createNot(val.value));
 }
 
-RValue<SByte> operator++(SByte &val, int)   // Post-increment
+RValue<SByte> operator++(SByte &val, int)  // Post-increment
 {
 	RValue<SByte> res = val;
 
@@ -705,7 +706,7 @@
 	return res;
 }
 
-const SByte &operator++(SByte &val)   // Pre-increment
+const SByte &operator++(SByte &val)  // Pre-increment
 {
 	Value *inc = Nucleus::createAdd(val.loadValue(), Nucleus::createConstantByte((signed char)1));
 	val.storeValue(inc);
@@ -713,7 +714,7 @@
 	return val;
 }
 
-RValue<SByte> operator--(SByte &val, int)   // Post-decrement
+RValue<SByte> operator--(SByte &val, int)  // Post-decrement
 {
 	RValue<SByte> res = val;
 
@@ -723,7 +724,7 @@
 	return res;
 }
 
-const SByte &operator--(SByte &val)   // Pre-decrement
+const SByte &operator--(SByte &val)  // Pre-decrement
 {
 	Value *inc = Nucleus::createSub(val.loadValue(), Nucleus::createConstantByte((signed char)1));
 	val.storeValue(inc);
@@ -933,7 +934,7 @@
 	return RValue<Short>(Nucleus::createNot(val.value));
 }
 
-RValue<Short> operator++(Short &val, int)   // Post-increment
+RValue<Short> operator++(Short &val, int)  // Post-increment
 {
 	RValue<Short> res = val;
 
@@ -943,7 +944,7 @@
 	return res;
 }
 
-const Short &operator++(Short &val)   // Pre-increment
+const Short &operator++(Short &val)  // Pre-increment
 {
 	Value *inc = Nucleus::createAdd(val.loadValue(), Nucleus::createConstantShort((short)1));
 	val.storeValue(inc);
@@ -951,7 +952,7 @@
 	return val;
 }
 
-RValue<Short> operator--(Short &val, int)   // Post-decrement
+RValue<Short> operator--(Short &val, int)  // Post-decrement
 {
 	RValue<Short> res = val;
 
@@ -961,7 +962,7 @@
 	return res;
 }
 
-const Short &operator--(Short &val)   // Pre-decrement
+const Short &operator--(Short &val)  // Pre-decrement
 {
 	Value *inc = Nucleus::createSub(val.loadValue(), Nucleus::createConstantShort((short)1));
 	val.storeValue(inc);
@@ -1178,7 +1179,7 @@
 	return RValue<UShort>(Nucleus::createNot(val.value));
 }
 
-RValue<UShort> operator++(UShort &val, int)   // Post-increment
+RValue<UShort> operator++(UShort &val, int)  // Post-increment
 {
 	RValue<UShort> res = val;
 
@@ -1188,7 +1189,7 @@
 	return res;
 }
 
-const UShort &operator++(UShort &val)   // Pre-increment
+const UShort &operator++(UShort &val)  // Pre-increment
 {
 	Value *inc = Nucleus::createAdd(val.loadValue(), Nucleus::createConstantShort((unsigned short)1));
 	val.storeValue(inc);
@@ -1196,7 +1197,7 @@
 	return val;
 }
 
-RValue<UShort> operator--(UShort &val, int)   // Post-decrement
+RValue<UShort> operator--(UShort &val, int)  // Post-decrement
 {
 	RValue<UShort> res = val;
 
@@ -1206,7 +1207,7 @@
 	return res;
 }
 
-const UShort &operator--(UShort &val)   // Pre-decrement
+const UShort &operator--(UShort &val)  // Pre-decrement
 {
 	Value *inc = Nucleus::createSub(val.loadValue(), Nucleus::createConstantShort((unsigned short)1));
 	val.storeValue(inc);
@@ -1257,7 +1258,7 @@
 
 Byte8::Byte8(uint8_t x0, uint8_t x1, uint8_t x2, uint8_t x3, uint8_t x4, uint8_t x5, uint8_t x6, uint8_t x7)
 {
-	int64_t constantVector[8] = {x0, x1, x2, x3, x4, x5, x6, x7};
+	int64_t constantVector[8] = { x0, x1, x2, x3, x4, x5, x6, x7 };
 	storeValue(Nucleus::createConstantVector(constantVector, getType()));
 }
 
@@ -1418,7 +1419,7 @@
 
 RValue<Short4> Unpack(RValue<Byte4> x)
 {
-	int shuffle[16] = {0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7};   // Real type is v16i8
+	int shuffle[16] = { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7 };  // Real type is v16i8
 	return As<Short4>(Nucleus::createShuffleVector(x.value, x.value, shuffle));
 }
 
@@ -1429,20 +1430,20 @@
 
 RValue<Short4> UnpackLow(RValue<Byte8> x, RValue<Byte8> y)
 {
-	int shuffle[16] = {0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23};   // Real type is v16i8
+	int shuffle[16] = { 0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23 };  // Real type is v16i8
 	return As<Short4>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
 }
 
 RValue<Short4> UnpackHigh(RValue<Byte8> x, RValue<Byte8> y)
 {
-	int shuffle[16] = {0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23};   // Real type is v16i8
+	int shuffle[16] = { 0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23 };  // Real type is v16i8
 	auto lowHigh = RValue<Byte16>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
 	return As<Short4>(Swizzle(As<Int4>(lowHigh), 0x2323));
 }
 
 SByte8::SByte8(uint8_t x0, uint8_t x1, uint8_t x2, uint8_t x3, uint8_t x4, uint8_t x5, uint8_t x6, uint8_t x7)
 {
-	int64_t constantVector[8] = {x0, x1, x2, x3, x4, x5, x6, x7};
+	int64_t constantVector[8] = { x0, x1, x2, x3, x4, x5, x6, x7 };
 	Value *vector = Nucleus::createConstantVector(constantVector, getType());
 
 	storeValue(Nucleus::createBitCast(vector, getType()));
@@ -1605,13 +1606,13 @@
 
 RValue<Short4> UnpackLow(RValue<SByte8> x, RValue<SByte8> y)
 {
-	int shuffle[16] = {0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23};   // Real type is v16i8
+	int shuffle[16] = { 0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23 };  // Real type is v16i8
 	return As<Short4>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
 }
 
 RValue<Short4> UnpackHigh(RValue<SByte8> x, RValue<SByte8> y)
 {
-	int shuffle[16] = {0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23};   // Real type is v16i8
+	int shuffle[16] = { 0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23 };  // Real type is v16i8
 	auto lowHigh = RValue<Byte16>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
 	return As<Short4>(Swizzle(As<Int4>(lowHigh), 0x2323));
 }
@@ -1682,13 +1683,13 @@
 
 Short4::Short4(short xyzw)
 {
-	int64_t constantVector[4] = {xyzw, xyzw, xyzw, xyzw};
+	int64_t constantVector[4] = { xyzw, xyzw, xyzw, xyzw };
 	storeValue(Nucleus::createConstantVector(constantVector, getType()));
 }
 
 Short4::Short4(short x, short y, short z, short w)
 {
-	int64_t constantVector[4] = {x, y, z, w};
+	int64_t constantVector[4] = { x, y, z, w };
 	storeValue(Nucleus::createConstantVector(constantVector, getType()));
 }
 
@@ -1883,13 +1884,13 @@
 
 RValue<Int2> UnpackLow(RValue<Short4> x, RValue<Short4> y)
 {
-	int shuffle[8] = {0, 8, 1, 9, 2, 10, 3, 11};   // Real type is v8i16
+	int shuffle[8] = { 0, 8, 1, 9, 2, 10, 3, 11 };  // Real type is v8i16
 	return As<Int2>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
 }
 
 RValue<Int2> UnpackHigh(RValue<Short4> x, RValue<Short4> y)
 {
-	int shuffle[8] = {0, 8, 1, 9, 2, 10, 3, 11};   // Real type is v8i16
+	int shuffle[8] = { 0, 8, 1, 9, 2, 10, 3, 11 };  // Real type is v8i16
 	auto lowHigh = RValue<Short8>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
 	return As<Int2>(Swizzle(As<Int4>(lowHigh), 0x2323));
 }
@@ -1897,16 +1898,15 @@
 RValue<Short4> Swizzle(RValue<Short4> x, uint16_t select)
 {
 	// Real type is v8i16
-	int shuffle[8] =
-	{
+	int shuffle[8] = {
 		(select >> 12) & 0x03,
-		(select >>  8) & 0x03,
-		(select >>  4) & 0x03,
-		(select >>  0) & 0x03,
+		(select >> 8) & 0x03,
+		(select >> 4) & 0x03,
+		(select >> 0) & 0x03,
 		(select >> 12) & 0x03,
-		(select >>  8) & 0x03,
-		(select >>  4) & 0x03,
-		(select >>  0) & 0x03,
+		(select >> 8) & 0x03,
+		(select >> 4) & 0x03,
+		(select >> 0) & 0x03,
 	};
 
 	return As<Short4>(Nucleus::createShuffleVector(x.value, x.value, shuffle));
@@ -1929,13 +1929,13 @@
 
 UShort4::UShort4(unsigned short xyzw)
 {
-	int64_t constantVector[4] = {xyzw, xyzw, xyzw, xyzw};
+	int64_t constantVector[4] = { xyzw, xyzw, xyzw, xyzw };
 	storeValue(Nucleus::createConstantVector(constantVector, getType()));
 }
 
 UShort4::UShort4(unsigned short x, unsigned short y, unsigned short z, unsigned short w)
 {
-	int64_t constantVector[4] = {x, y, z, w};
+	int64_t constantVector[4] = { x, y, z, w };
 	storeValue(Nucleus::createConstantVector(constantVector, getType()));
 }
 
@@ -2066,13 +2066,13 @@
 
 Short8::Short8(short c)
 {
-	int64_t constantVector[8] = {c, c, c, c, c, c, c, c};
+	int64_t constantVector[8] = { c, c, c, c, c, c, c, c };
 	storeValue(Nucleus::createConstantVector(constantVector, getType()));
 }
 
 Short8::Short8(short c0, short c1, short c2, short c3, short c4, short c5, short c6, short c7)
 {
-	int64_t constantVector[8] = {c0, c1, c2, c3, c4, c5, c6, c7};
+	int64_t constantVector[8] = { c0, c1, c2, c3, c4, c5, c6, c7 };
 	storeValue(Nucleus::createConstantVector(constantVector, getType()));
 }
 
@@ -2089,7 +2089,7 @@
 
 Short8::Short8(RValue<Short4> lo, RValue<Short4> hi)
 {
-	int shuffle[8] = {0, 1, 2, 3, 8, 9, 10, 11};   // Real type is v8i16
+	int shuffle[8] = { 0, 1, 2, 3, 8, 9, 10, 11 };  // Real type is v8i16
 	Value *packed = Nucleus::createShuffleVector(lo.value, hi.value, shuffle);
 
 	storeValue(packed);
@@ -2137,13 +2137,13 @@
 
 UShort8::UShort8(unsigned short c)
 {
-	int64_t constantVector[8] = {c, c, c, c, c, c, c, c};
+	int64_t constantVector[8] = { c, c, c, c, c, c, c, c };
 	storeValue(Nucleus::createConstantVector(constantVector, getType()));
 }
 
 UShort8::UShort8(unsigned short c0, unsigned short c1, unsigned short c2, unsigned short c3, unsigned short c4, unsigned short c5, unsigned short c6, unsigned short c7)
 {
-	int64_t constantVector[8] = {c0, c1, c2, c3, c4, c5, c6, c7};
+	int64_t constantVector[8] = { c0, c1, c2, c3, c4, c5, c6, c7 };
 	storeValue(Nucleus::createConstantVector(constantVector, getType()));
 }
 
@@ -2160,7 +2160,7 @@
 
 UShort8::UShort8(RValue<UShort4> lo, RValue<UShort4> hi)
 {
-	int shuffle[8] = {0, 1, 2, 3, 8, 9, 10, 11};   // Real type is v8i16
+	int shuffle[8] = { 0, 1, 2, 3, 8, 9, 10, 11 };  // Real type is v8i16
 	Value *packed = Nucleus::createShuffleVector(lo.value, hi.value, shuffle);
 
 	storeValue(packed);
@@ -2593,62 +2593,62 @@
 	return lhs = lhs - rhs;
 }
 
-RValue<Long> AddAtomic(RValue<Pointer<Long> > x, RValue<Long> y)
+RValue<Long> AddAtomic(RValue<Pointer<Long>> x, RValue<Long> y)
 {
 	return RValue<Long>(Nucleus::createAtomicAdd(x.value, y.value));
 }
 
-RValue<UInt> AddAtomic(RValue<Pointer<UInt> > x, RValue<UInt> y, std::memory_order memoryOrder)
+RValue<UInt> AddAtomic(RValue<Pointer<UInt>> x, RValue<UInt> y, std::memory_order memoryOrder)
 {
 	return RValue<UInt>(Nucleus::createAtomicAdd(x.value, y.value, memoryOrder));
 }
 
-RValue<UInt> SubAtomic(RValue<Pointer<UInt> > x, RValue<UInt> y, std::memory_order memoryOrder)
+RValue<UInt> SubAtomic(RValue<Pointer<UInt>> x, RValue<UInt> y, std::memory_order memoryOrder)
 {
 	return RValue<UInt>(Nucleus::createAtomicSub(x.value, y.value, memoryOrder));
 }
 
-RValue<UInt> AndAtomic(RValue<Pointer<UInt> > x, RValue<UInt> y, std::memory_order memoryOrder)
+RValue<UInt> AndAtomic(RValue<Pointer<UInt>> x, RValue<UInt> y, std::memory_order memoryOrder)
 {
 	return RValue<UInt>(Nucleus::createAtomicAnd(x.value, y.value, memoryOrder));
 }
 
-RValue<UInt> OrAtomic(RValue<Pointer<UInt> > x, RValue<UInt> y, std::memory_order memoryOrder)
+RValue<UInt> OrAtomic(RValue<Pointer<UInt>> x, RValue<UInt> y, std::memory_order memoryOrder)
 {
 	return RValue<UInt>(Nucleus::createAtomicOr(x.value, y.value, memoryOrder));
 }
 
-RValue<UInt> XorAtomic(RValue<Pointer<UInt> > x, RValue<UInt> y, std::memory_order memoryOrder)
+RValue<UInt> XorAtomic(RValue<Pointer<UInt>> x, RValue<UInt> y, std::memory_order memoryOrder)
 {
 	return RValue<UInt>(Nucleus::createAtomicXor(x.value, y.value, memoryOrder));
 }
 
-RValue<Int> MinAtomic(RValue<Pointer<Int> > x, RValue<Int> y, std::memory_order memoryOrder)
+RValue<Int> MinAtomic(RValue<Pointer<Int>> x, RValue<Int> y, std::memory_order memoryOrder)
 {
 	return RValue<Int>(Nucleus::createAtomicMin(x.value, y.value, memoryOrder));
 }
 
-RValue<UInt> MinAtomic(RValue<Pointer<UInt> > x, RValue<UInt> y, std::memory_order memoryOrder)
+RValue<UInt> MinAtomic(RValue<Pointer<UInt>> x, RValue<UInt> y, std::memory_order memoryOrder)
 {
 	return RValue<UInt>(Nucleus::createAtomicUMin(x.value, y.value, memoryOrder));
 }
 
-RValue<Int> MaxAtomic(RValue<Pointer<Int> > x, RValue<Int> y, std::memory_order memoryOrder)
+RValue<Int> MaxAtomic(RValue<Pointer<Int>> x, RValue<Int> y, std::memory_order memoryOrder)
 {
 	return RValue<Int>(Nucleus::createAtomicMax(x.value, y.value, memoryOrder));
 }
 
-RValue<UInt> MaxAtomic(RValue<Pointer<UInt> > x, RValue<UInt> y, std::memory_order memoryOrder)
+RValue<UInt> MaxAtomic(RValue<Pointer<UInt>> x, RValue<UInt> y, std::memory_order memoryOrder)
 {
 	return RValue<UInt>(Nucleus::createAtomicUMax(x.value, y.value, memoryOrder));
 }
 
-RValue<UInt> ExchangeAtomic(RValue<Pointer<UInt> > x, RValue<UInt> y, std::memory_order memoryOrder)
+RValue<UInt> ExchangeAtomic(RValue<Pointer<UInt>> x, RValue<UInt> y, std::memory_order memoryOrder)
 {
 	return RValue<UInt>(Nucleus::createAtomicExchange(x.value, y.value, memoryOrder));
 }
 
-RValue<UInt> CompareExchangeAtomic(RValue<Pointer<UInt> > x, RValue<UInt> y, RValue<UInt> compare, std::memory_order memoryOrderEqual, std::memory_order memoryOrderUnequal)
+RValue<UInt> CompareExchangeAtomic(RValue<Pointer<UInt>> x, RValue<UInt> y, RValue<UInt> compare, std::memory_order memoryOrderEqual, std::memory_order memoryOrderUnequal)
 {
 	return RValue<UInt>(Nucleus::createAtomicCompareExchange(x.value, y.value, compare.value, memoryOrderEqual, memoryOrderUnequal));
 }
@@ -2934,7 +2934,7 @@
 
 Int2::Int2(int x, int y)
 {
-	int64_t constantVector[2] = {x, y};
+	int64_t constantVector[2] = { x, y };
 	storeValue(Nucleus::createConstantVector(constantVector, getType()));
 }
 
@@ -2957,7 +2957,7 @@
 
 Int2::Int2(RValue<Int> lo, RValue<Int> hi)
 {
-	int shuffle[4] = {0, 4, 1, 5};
+	int shuffle[4] = { 0, 4, 1, 5 };
 	Value *packed = Nucleus::createShuffleVector(Int4(lo).loadValue(), Int4(hi).loadValue(), shuffle);
 
 	storeValue(Nucleus::createBitCast(packed, Int2::getType()));
@@ -3093,13 +3093,13 @@
 
 RValue<Short4> UnpackLow(RValue<Int2> x, RValue<Int2> y)
 {
-	int shuffle[4] = {0, 4, 1, 5};   // Real type is v4i32
+	int shuffle[4] = { 0, 4, 1, 5 };  // Real type is v4i32
 	return As<Short4>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
 }
 
 RValue<Short4> UnpackHigh(RValue<Int2> x, RValue<Int2> y)
 {
-	int shuffle[4] = {0, 4, 1, 5};   // Real type is v4i32
+	int shuffle[4] = { 0, 4, 1, 5 };  // Real type is v4i32
 	auto lowHigh = RValue<Int4>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
 	return As<Short4>(Swizzle(lowHigh, 0x2323));
 }
@@ -3116,7 +3116,7 @@
 
 UInt2::UInt2(unsigned int x, unsigned int y)
 {
-	int64_t constantVector[2] = {x, y};
+	int64_t constantVector[2] = { x, y };
 	storeValue(Nucleus::createConstantVector(constantVector, getType()));
 }
 
@@ -3275,91 +3275,106 @@
 	return RValue<UInt2>(Nucleus::createInsertElement(val.value, element.value, i));
 }
 
-Int4::Int4() : XYZW(this)
+Int4::Int4()
+    : XYZW(this)
 {
 }
 
-Int4::Int4(RValue<Float4> cast) : XYZW(this)
+Int4::Int4(RValue<Float4> cast)
+    : XYZW(this)
 {
 	Value *xyzw = Nucleus::createFPToSI(cast.value, Int4::getType());
 
 	storeValue(xyzw);
 }
 
-Int4::Int4(int xyzw) : XYZW(this)
+Int4::Int4(int xyzw)
+    : XYZW(this)
 {
 	constant(xyzw, xyzw, xyzw, xyzw);
 }
 
-Int4::Int4(int x, int yzw) : XYZW(this)
+Int4::Int4(int x, int yzw)
+    : XYZW(this)
 {
 	constant(x, yzw, yzw, yzw);
 }
 
-Int4::Int4(int x, int y, int zw) : XYZW(this)
+Int4::Int4(int x, int y, int zw)
+    : XYZW(this)
 {
 	constant(x, y, zw, zw);
 }
 
-Int4::Int4(int x, int y, int z, int w) : XYZW(this)
+Int4::Int4(int x, int y, int z, int w)
+    : XYZW(this)
 {
 	constant(x, y, z, w);
 }
 
 void Int4::constant(int x, int y, int z, int w)
 {
-	int64_t constantVector[4] = {x, y, z, w};
+	int64_t constantVector[4] = { x, y, z, w };
 	storeValue(Nucleus::createConstantVector(constantVector, getType()));
 }
 
-Int4::Int4(RValue<Int4> rhs) : XYZW(this)
+Int4::Int4(RValue<Int4> rhs)
+    : XYZW(this)
 {
 	storeValue(rhs.value);
 }
 
-Int4::Int4(const Int4 &rhs) : XYZW(this)
+Int4::Int4(const Int4 &rhs)
+    : XYZW(this)
 {
 	Value *value = rhs.loadValue();
 	storeValue(value);
 }
 
-Int4::Int4(const Reference<Int4> &rhs) : XYZW(this)
+Int4::Int4(const Reference<Int4> &rhs)
+    : XYZW(this)
 {
 	Value *value = rhs.loadValue();
 	storeValue(value);
 }
 
-Int4::Int4(RValue<UInt4> rhs) : XYZW(this)
+Int4::Int4(RValue<UInt4> rhs)
+    : XYZW(this)
 {
 	storeValue(rhs.value);
 }
 
-Int4::Int4(const UInt4 &rhs) : XYZW(this)
+Int4::Int4(const UInt4 &rhs)
+    : XYZW(this)
 {
 	Value *value = rhs.loadValue();
 	storeValue(value);
 }
 
-Int4::Int4(const Reference<UInt4> &rhs) : XYZW(this)
+Int4::Int4(const Reference<UInt4> &rhs)
+    : XYZW(this)
 {
 	Value *value = rhs.loadValue();
 	storeValue(value);
 }
 
-Int4::Int4(RValue<Int2> lo, RValue<Int2> hi) : XYZW(this)
+Int4::Int4(RValue<Int2> lo, RValue<Int2> hi)
+    : XYZW(this)
 {
-	int shuffle[4] = {0, 1, 4, 5};   // Real type is v4i32
+	int shuffle[4] = { 0, 1, 4, 5 };  // Real type is v4i32
 	Value *packed = Nucleus::createShuffleVector(lo.value, hi.value, shuffle);
 
 	storeValue(packed);
 }
 
-Int4::Int4(const Int &rhs) : XYZW(this)
+Int4::Int4(const Int &rhs)
+    : XYZW(this)
 {
 	*this = RValue<Int>(rhs.loadValue());
 }
 
-Int4::Int4(const Reference<Int> &rhs) : XYZW(this)
+Int4::Int4(const Reference<Int> &rhs)
+    : XYZW(this)
 {
 	*this = RValue<Int>(rhs.loadValue());
 }
@@ -3522,84 +3537,98 @@
 	return RValue<Int4>(createBlend4(x.value, y.value, select));
 }
 
-UInt4::UInt4() : XYZW(this)
+UInt4::UInt4()
+    : XYZW(this)
 {
 }
 
-UInt4::UInt4(int xyzw) : XYZW(this)
+UInt4::UInt4(int xyzw)
+    : XYZW(this)
 {
 	constant(xyzw, xyzw, xyzw, xyzw);
 }
 
-UInt4::UInt4(int x, int yzw) : XYZW(this)
+UInt4::UInt4(int x, int yzw)
+    : XYZW(this)
 {
 	constant(x, yzw, yzw, yzw);
 }
 
-UInt4::UInt4(int x, int y, int zw) : XYZW(this)
+UInt4::UInt4(int x, int y, int zw)
+    : XYZW(this)
 {
 	constant(x, y, zw, zw);
 }
 
-UInt4::UInt4(int x, int y, int z, int w) : XYZW(this)
+UInt4::UInt4(int x, int y, int z, int w)
+    : XYZW(this)
 {
 	constant(x, y, z, w);
 }
 
 void UInt4::constant(int x, int y, int z, int w)
 {
-	int64_t constantVector[4] = {x, y, z, w};
+	int64_t constantVector[4] = { x, y, z, w };
 	storeValue(Nucleus::createConstantVector(constantVector, getType()));
 }
 
-UInt4::UInt4(RValue<UInt4> rhs) : XYZW(this)
+UInt4::UInt4(RValue<UInt4> rhs)
+    : XYZW(this)
 {
 	storeValue(rhs.value);
 }
 
-UInt4::UInt4(const UInt4 &rhs) : XYZW(this)
+UInt4::UInt4(const UInt4 &rhs)
+    : XYZW(this)
 {
 	Value *value = rhs.loadValue();
 	storeValue(value);
 }
 
-UInt4::UInt4(const Reference<UInt4> &rhs) : XYZW(this)
+UInt4::UInt4(const Reference<UInt4> &rhs)
+    : XYZW(this)
 {
 	Value *value = rhs.loadValue();
 	storeValue(value);
 }
 
-UInt4::UInt4(RValue<Int4> rhs) : XYZW(this)
+UInt4::UInt4(RValue<Int4> rhs)
+    : XYZW(this)
 {
 	storeValue(rhs.value);
 }
 
-UInt4::UInt4(const Int4 &rhs) : XYZW(this)
+UInt4::UInt4(const Int4 &rhs)
+    : XYZW(this)
 {
 	Value *value = rhs.loadValue();
 	storeValue(value);
 }
 
-UInt4::UInt4(const Reference<Int4> &rhs) : XYZW(this)
+UInt4::UInt4(const Reference<Int4> &rhs)
+    : XYZW(this)
 {
 	Value *value = rhs.loadValue();
 	storeValue(value);
 }
 
-UInt4::UInt4(RValue<UInt2> lo, RValue<UInt2> hi) : XYZW(this)
+UInt4::UInt4(RValue<UInt2> lo, RValue<UInt2> hi)
+    : XYZW(this)
 {
-	int shuffle[4] = {0, 1, 4, 5};   // Real type is v4i32
+	int shuffle[4] = { 0, 1, 4, 5 };  // Real type is v4i32
 	Value *packed = Nucleus::createShuffleVector(lo.value, hi.value, shuffle);
 
 	storeValue(packed);
 }
 
-UInt4::UInt4(const UInt &rhs) : XYZW(this)
+UInt4::UInt4(const UInt &rhs)
+    : XYZW(this)
 {
 	*this = RValue<UInt>(rhs.loadValue());
 }
 
-UInt4::UInt4(const Reference<UInt> &rhs) : XYZW(this)
+UInt4::UInt4(const Reference<UInt> &rhs)
+    : XYZW(this)
 {
 	*this = RValue<UInt>(rhs.loadValue());
 }
@@ -3766,15 +3795,15 @@
 {
 	UInt fp32i = As<UInt>(cast);
 	UInt abs = fp32i & 0x7FFFFFFF;
-	UShort fp16i((fp32i & 0x80000000) >> 16); // sign
+	UShort fp16i((fp32i & 0x80000000) >> 16);  // sign
 
-	If(abs > 0x47FFEFFF) // Infinity
+	If(abs > 0x47FFEFFF)  // Infinity
 	{
 		fp16i |= UShort(0x7FFF);
 	}
 	Else
 	{
-		If(abs < 0x38800000) // Denormal
+		If(abs < 0x38800000)  // Denormal
 		{
 			Int mantissa = (abs & 0x007FFFFF) | 0x00800000;
 			Int e = 113 - (abs >> 23);
@@ -4004,7 +4033,8 @@
 	storeValue(Nucleus::createBitCast(cast.value, getType()));
 }
 
-Float4::Float4(RValue<Byte4> cast) : XYZW(this)
+Float4::Float4(RValue<Byte4> cast)
+    : XYZW(this)
 {
 	Value *a = Int4(cast).loadValue();
 	Value *xyzw = Nucleus::createSIToFP(a, Float4::getType());
@@ -4012,7 +4042,8 @@
 	storeValue(xyzw);
 }
 
-Float4::Float4(RValue<SByte4> cast) : XYZW(this)
+Float4::Float4(RValue<SByte4> cast)
+    : XYZW(this)
 {
 	Value *a = Int4(cast).loadValue();
 	Value *xyzw = Nucleus::createSIToFP(a, Float4::getType());
@@ -4020,26 +4051,30 @@
 	storeValue(xyzw);
 }
 
-Float4::Float4(RValue<Short4> cast) : XYZW(this)
+Float4::Float4(RValue<Short4> cast)
+    : XYZW(this)
 {
 	Int4 c(cast);
 	storeValue(Nucleus::createSIToFP(RValue<Int4>(c).value, Float4::getType()));
 }
 
-Float4::Float4(RValue<UShort4> cast) : XYZW(this)
+Float4::Float4(RValue<UShort4> cast)
+    : XYZW(this)
 {
 	Int4 c(cast);
 	storeValue(Nucleus::createSIToFP(RValue<Int4>(c).value, Float4::getType()));
 }
 
-Float4::Float4(RValue<Int4> cast) : XYZW(this)
+Float4::Float4(RValue<Int4> cast)
+    : XYZW(this)
 {
 	Value *xyzw = Nucleus::createSIToFP(cast.value, Float4::getType());
 
 	storeValue(xyzw);
 }
 
-Float4::Float4(RValue<UInt4> cast) : XYZW(this)
+Float4::Float4(RValue<UInt4> cast)
+    : XYZW(this)
 {
 	RValue<Float4> result = Float4(Int4(cast & UInt4(0x7FFFFFFF))) +
 	                        As<Float4>((As<Int4>(cast) >> 31) & As<Int4>(Float4(0x80000000u)));
@@ -4047,26 +4082,31 @@
 	storeValue(result.value);
 }
 
-Float4::Float4() : XYZW(this)
+Float4::Float4()
+    : XYZW(this)
 {
 }
 
-Float4::Float4(float xyzw) : XYZW(this)
+Float4::Float4(float xyzw)
+    : XYZW(this)
 {
 	constant(xyzw, xyzw, xyzw, xyzw);
 }
 
-Float4::Float4(float x, float yzw) : XYZW(this)
+Float4::Float4(float x, float yzw)
+    : XYZW(this)
 {
 	constant(x, yzw, yzw, yzw);
 }
 
-Float4::Float4(float x, float y, float zw) : XYZW(this)
+Float4::Float4(float x, float y, float zw)
+    : XYZW(this)
 {
 	constant(x, y, zw, zw);
 }
 
-Float4::Float4(float x, float y, float z, float w) : XYZW(this)
+Float4::Float4(float x, float y, float z, float w)
+    : XYZW(this)
 {
 	constant(x, y, z, w);
 }
@@ -4088,7 +4128,7 @@
 void Float4::infinity_constant(bool negative)
 {
 	double inf = negative ? -INFINITY : INFINITY;
-	double constantVector[4] = {inf, inf, inf, inf};
+	double constantVector[4] = { inf, inf, inf, inf };
 	storeValue(Nucleus::createConstantVector(constantVector, getType()));
 }
 
@@ -4097,33 +4137,38 @@
 	// See Float(float) constructor for the rationale behind this assert.
 	ASSERT(std::isfinite(x) && std::isfinite(y) && std::isfinite(z) && std::isfinite(w));
 
-	double constantVector[4] = {x, y, z, w};
+	double constantVector[4] = { x, y, z, w };
 	storeValue(Nucleus::createConstantVector(constantVector, getType()));
 }
 
-Float4::Float4(RValue<Float4> rhs) : XYZW(this)
+Float4::Float4(RValue<Float4> rhs)
+    : XYZW(this)
 {
 	storeValue(rhs.value);
 }
 
-Float4::Float4(const Float4 &rhs) : XYZW(this)
+Float4::Float4(const Float4 &rhs)
+    : XYZW(this)
 {
 	Value *value = rhs.loadValue();
 	storeValue(value);
 }
 
-Float4::Float4(const Reference<Float4> &rhs) : XYZW(this)
+Float4::Float4(const Reference<Float4> &rhs)
+    : XYZW(this)
 {
 	Value *value = rhs.loadValue();
 	storeValue(value);
 }
 
-Float4::Float4(const Float &rhs) : XYZW(this)
+Float4::Float4(const Float &rhs)
+    : XYZW(this)
 {
 	*this = RValue<Float>(rhs.loadValue());
 }
 
-Float4::Float4(const Reference<Float> &rhs) : XYZW(this)
+Float4::Float4(const Reference<Float> &rhs)
+    : XYZW(this)
 {
 	*this = RValue<Float>(rhs.loadValue());
 }
@@ -4235,7 +4280,7 @@
 {
 	// TODO: Optimize.
 	Value *vector = Nucleus::createBitCast(x.value, Int4::getType());
-	int64_t constantVector[4] = {0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF};
+	int64_t constantVector[4] = { 0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF };
 	Value *result = Nucleus::createAnd(vector, Nucleus::createConstantVector(constantVector, Int4::getType()));
 
 	return As<Float4>(result);
@@ -4263,12 +4308,11 @@
 
 RValue<Float4> ShuffleLowHigh(RValue<Float4> x, RValue<Float4> y, uint16_t imm)
 {
-	int shuffle[4] =
-	{
+	int shuffle[4] = {
 		((imm >> 12) & 0x03) + 0,
-		((imm >>  8) & 0x03) + 0,
-		((imm >>  4) & 0x03) + 4,
-		((imm >>  0) & 0x03) + 4,
+		((imm >> 8) & 0x03) + 0,
+		((imm >> 4) & 0x03) + 4,
+		((imm >> 0) & 0x03) + 4,
 	};
 
 	return RValue<Float4>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
@@ -4276,13 +4320,13 @@
 
 RValue<Float4> UnpackLow(RValue<Float4> x, RValue<Float4> y)
 {
-	int shuffle[4] = {0, 4, 1, 5};
+	int shuffle[4] = { 0, 4, 1, 5 };
 	return RValue<Float4>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
 }
 
 RValue<Float4> UnpackHigh(RValue<Float4> x, RValue<Float4> y)
 {
-	int shuffle[4] = {2, 6, 3, 7};
+	int shuffle[4] = { 2, 6, 3, 7 };
 	return RValue<Float4>(Nucleus::createShuffleVector(x.value, y.value, shuffle));
 }
 
@@ -4401,22 +4445,49 @@
 void Fence(std::memory_order memoryOrder)
 {
 	ASSERT_MSG(memoryOrder == std::memory_order_acquire ||
-		memoryOrder == std::memory_order_release ||
-		memoryOrder == std::memory_order_acq_rel ||
-		memoryOrder == std::memory_order_seq_cst,
-		"Unsupported memoryOrder: %d", int(memoryOrder));
+	               memoryOrder == std::memory_order_release ||
+	               memoryOrder == std::memory_order_acq_rel ||
+	               memoryOrder == std::memory_order_seq_cst,
+	           "Unsupported memoryOrder: %d", int(memoryOrder));
 	Nucleus::createFence(memoryOrder);
 }
 
-Bool          CToReactor<bool>::cast(bool v)               { return type(v); }
-Byte          CToReactor<uint8_t>::cast(uint8_t v)         { return type(v); }
-SByte         CToReactor<int8_t>::cast(int8_t v)           { return type(v); }
-Short         CToReactor<int16_t>::cast(int16_t v)         { return type(v); }
-UShort        CToReactor<uint16_t>::cast(uint16_t v)       { return type(v); }
-Int           CToReactor<int32_t>::cast(int32_t v)         { return type(v); }
-UInt          CToReactor<uint32_t>::cast(uint32_t v)       { return type(v); }
-Float         CToReactor<float>::cast(float v)             { return type(v); }
-Float4        CToReactor<float[4]>::cast(float v[4])       { return type(v[0], v[1], v[2], v[3]); }
+Bool CToReactor<bool>::cast(bool v)
+{
+	return type(v);
+}
+Byte CToReactor<uint8_t>::cast(uint8_t v)
+{
+	return type(v);
+}
+SByte CToReactor<int8_t>::cast(int8_t v)
+{
+	return type(v);
+}
+Short CToReactor<int16_t>::cast(int16_t v)
+{
+	return type(v);
+}
+UShort CToReactor<uint16_t>::cast(uint16_t v)
+{
+	return type(v);
+}
+Int CToReactor<int32_t>::cast(int32_t v)
+{
+	return type(v);
+}
+UInt CToReactor<uint32_t>::cast(uint32_t v)
+{
+	return type(v);
+}
+Float CToReactor<float>::cast(float v)
+{
+	return type(v);
+}
+Float4 CToReactor<float[4]>::cast(float v[4])
+{
+	return type(v[0], v[1], v[2], v[3]);
+}
 
 // TODO: Long has no constructor that takes a uint64_t
 // Long          CToReactor<uint64_t>::cast(uint64_t v)       { return type(v); }
diff --git a/src/Reactor/Reactor.hpp b/src/Reactor/Reactor.hpp
index fc55c51..59b3d0a 100644
--- a/src/Reactor/Reactor.hpp
+++ b/src/Reactor/Reactor.hpp
@@ -26,34 +26,33 @@
 #include <tuple>
 #include <unordered_set>
 
-#undef Bool // b/127920555
+#undef Bool  // b/127920555
 
 #ifdef ENABLE_RR_DEBUG_INFO
-	// Functions used for generating JIT debug info.
-	// See docs/ReactorDebugInfo.md for more information.
-	namespace rr
-	{
-		// Update the current source location for debug.
-		void EmitDebugLocation();
-		// Bind value to its symbolic name taken from the backtrace.
-		void EmitDebugVariable(class Value* value);
-		// Flush any pending variable bindings before the line ends.
-		void FlushDebug();
-	}
-	#define RR_DEBUG_INFO_UPDATE_LOC()    rr::EmitDebugLocation()
-	#define RR_DEBUG_INFO_EMIT_VAR(value) rr::EmitDebugVariable(value)
-	#define RR_DEBUG_INFO_FLUSH()         rr::FlushDebug()
+// Functions used for generating JIT debug info.
+// See docs/ReactorDebugInfo.md for more information.
+namespace rr {
+// Update the current source location for debug.
+void EmitDebugLocation();
+// Bind value to its symbolic name taken from the backtrace.
+void EmitDebugVariable(class Value *value);
+// Flush any pending variable bindings before the line ends.
+void FlushDebug();
+}  // namespace rr
+#	define RR_DEBUG_INFO_UPDATE_LOC() rr::EmitDebugLocation()
+#	define RR_DEBUG_INFO_EMIT_VAR(value) rr::EmitDebugVariable(value)
+#	define RR_DEBUG_INFO_FLUSH() rr::FlushDebug()
 #else
-	#define RR_DEBUG_INFO_UPDATE_LOC()
-	#define RR_DEBUG_INFO_EMIT_VAR(value)
-	#define RR_DEBUG_INFO_FLUSH()
-#endif // ENABLE_RR_DEBUG_INFO
+#	define RR_DEBUG_INFO_UPDATE_LOC()
+#	define RR_DEBUG_INFO_EMIT_VAR(value)
+#	define RR_DEBUG_INFO_FLUSH()
+#endif  // ENABLE_RR_DEBUG_INFO
 
 namespace rr {
 
 struct Capabilities
 {
-	bool CoroutinesSupported; // Support for rr::Coroutine<F>
+	bool CoroutinesSupported;  // Support for rr::Coroutine<F>
 };
 extern const Capabilities Caps;
 
@@ -109,7 +108,7 @@
 	friend class PrintValue;
 
 	Variable() = delete;
-	Variable &operator=(const Variable&) = delete;
+	Variable &operator=(const Variable &) = delete;
 
 public:
 	void materialize() const;
@@ -122,7 +121,7 @@
 
 protected:
 	Variable(Type *type, int arraySize);
-	Variable(const Variable&) = default;
+	Variable(const Variable &) = default;
 
 	~Variable();
 
@@ -132,7 +131,7 @@
 	static void materializeAll();
 	static void killUnmaterialized();
 
-	static std::unordered_set<Variable*> unmaterializedVariables;
+	static std::unordered_set<Variable *> unmaterializedVariables;
 
 	Type *const type;
 	mutable Value *rvalue = nullptr;
@@ -154,7 +153,7 @@
 
 	// self() returns the this pointer to this LValue<T> object.
 	// This function exists because operator&() is overloaded.
-	inline LValue<T>* self() { return this; }
+	inline LValue<T> *self() { return this; }
 };
 
 template<class T>
@@ -239,7 +238,7 @@
 
 #ifdef ENABLE_RR_DEBUG_INFO
 	RValue(const RValue<T> &rvalue);
-#endif // ENABLE_RR_DEBUG_INFO
+#endif  // ENABLE_RR_DEBUG_INFO
 
 	RValue(const T &lvalue);
 	RValue(typename BoolLiteral<T>::type i);
@@ -247,15 +246,17 @@
 	RValue(typename FloatLiteral<T>::type f);
 	RValue(const Reference<T> &rhs);
 
-	RValue<T> &operator=(const RValue<T>&) = delete;
+	RValue<T> &operator=(const RValue<T> &) = delete;
 
-	Value *value;   // FIXME: Make private
+	Value *value;  // FIXME: Make private
 };
 
 template<typename T>
 struct Argument
 {
-	explicit Argument(Value *value) : value(value) {}
+	explicit Argument(Value *value)
+	    : value(value)
+	{}
 
 	Value *value;
 };
@@ -271,7 +272,7 @@
 	Bool(const Bool &rhs);
 	Bool(const Reference<Bool> &rhs);
 
-//	RValue<Bool> operator=(bool rhs);   // FIXME: Implement
+	//	RValue<Bool> operator=(bool rhs);   // FIXME: Implement
 	RValue<Bool> operator=(RValue<Bool> rhs);
 	RValue<Bool> operator=(const Bool &rhs);
 	RValue<Bool> operator=(const Reference<Bool> &rhs);
@@ -301,7 +302,7 @@
 	Byte(const Byte &rhs);
 	Byte(const Reference<Byte> &rhs);
 
-//	RValue<Byte> operator=(unsigned char rhs);   // FIXME: Implement
+	//	RValue<Byte> operator=(unsigned char rhs);   // FIXME: Implement
 	RValue<Byte> operator=(RValue<Byte> rhs);
 	RValue<Byte> operator=(const Byte &rhs);
 	RValue<Byte> operator=(const Reference<Byte> &rhs);
@@ -332,10 +333,10 @@
 RValue<Byte> operator+(RValue<Byte> val);
 RValue<Byte> operator-(RValue<Byte> val);
 RValue<Byte> operator~(RValue<Byte> val);
-RValue<Byte> operator++(Byte &val, int);   // Post-increment
-const Byte &operator++(Byte &val);   // Pre-increment
-RValue<Byte> operator--(Byte &val, int);   // Post-decrement
-const Byte &operator--(Byte &val);   // Pre-decrement
+RValue<Byte> operator++(Byte &val, int);  // Post-increment
+const Byte &operator++(Byte &val);        // Pre-increment
+RValue<Byte> operator--(Byte &val, int);  // Post-decrement
+const Byte &operator--(Byte &val);        // Pre-decrement
 RValue<Bool> operator<(RValue<Byte> lhs, RValue<Byte> rhs);
 RValue<Bool> operator<=(RValue<Byte> lhs, RValue<Byte> rhs);
 RValue<Bool> operator>(RValue<Byte> lhs, RValue<Byte> rhs);
@@ -357,7 +358,7 @@
 	SByte(const SByte &rhs);
 	SByte(const Reference<SByte> &rhs);
 
-//	RValue<SByte> operator=(signed char rhs);   // FIXME: Implement
+	//	RValue<SByte> operator=(signed char rhs);   // FIXME: Implement
 	RValue<SByte> operator=(RValue<SByte> rhs);
 	RValue<SByte> operator=(const SByte &rhs);
 	RValue<SByte> operator=(const Reference<SByte> &rhs);
@@ -388,10 +389,10 @@
 RValue<SByte> operator+(RValue<SByte> val);
 RValue<SByte> operator-(RValue<SByte> val);
 RValue<SByte> operator~(RValue<SByte> val);
-RValue<SByte> operator++(SByte &val, int);   // Post-increment
-const SByte &operator++(SByte &val);   // Pre-increment
-RValue<SByte> operator--(SByte &val, int);   // Post-decrement
-const SByte &operator--(SByte &val);   // Pre-decrement
+RValue<SByte> operator++(SByte &val, int);  // Post-increment
+const SByte &operator++(SByte &val);        // Pre-increment
+RValue<SByte> operator--(SByte &val, int);  // Post-decrement
+const SByte &operator--(SByte &val);        // Pre-decrement
 RValue<Bool> operator<(RValue<SByte> lhs, RValue<SByte> rhs);
 RValue<Bool> operator<=(RValue<SByte> lhs, RValue<SByte> rhs);
 RValue<Bool> operator>(RValue<SByte> lhs, RValue<SByte> rhs);
@@ -412,7 +413,7 @@
 	Short(const Short &rhs);
 	Short(const Reference<Short> &rhs);
 
-//	RValue<Short> operator=(short rhs);   // FIXME: Implement
+	//	RValue<Short> operator=(short rhs);   // FIXME: Implement
 	RValue<Short> operator=(RValue<Short> rhs);
 	RValue<Short> operator=(const Short &rhs);
 	RValue<Short> operator=(const Reference<Short> &rhs);
@@ -443,10 +444,10 @@
 RValue<Short> operator+(RValue<Short> val);
 RValue<Short> operator-(RValue<Short> val);
 RValue<Short> operator~(RValue<Short> val);
-RValue<Short> operator++(Short &val, int);   // Post-increment
-const Short &operator++(Short &val);   // Pre-increment
-RValue<Short> operator--(Short &val, int);   // Post-decrement
-const Short &operator--(Short &val);   // Pre-decrement
+RValue<Short> operator++(Short &val, int);  // Post-increment
+const Short &operator++(Short &val);        // Pre-increment
+RValue<Short> operator--(Short &val, int);  // Post-decrement
+const Short &operator--(Short &val);        // Pre-decrement
 RValue<Bool> operator<(RValue<Short> lhs, RValue<Short> rhs);
 RValue<Bool> operator<=(RValue<Short> lhs, RValue<Short> rhs);
 RValue<Bool> operator>(RValue<Short> lhs, RValue<Short> rhs);
@@ -468,7 +469,7 @@
 	UShort(const UShort &rhs);
 	UShort(const Reference<UShort> &rhs);
 
-//	RValue<UShort> operator=(unsigned short rhs);   // FIXME: Implement
+	//	RValue<UShort> operator=(unsigned short rhs);   // FIXME: Implement
 	RValue<UShort> operator=(RValue<UShort> rhs);
 	RValue<UShort> operator=(const UShort &rhs);
 	RValue<UShort> operator=(const Reference<UShort> &rhs);
@@ -499,10 +500,10 @@
 RValue<UShort> operator+(RValue<UShort> val);
 RValue<UShort> operator-(RValue<UShort> val);
 RValue<UShort> operator~(RValue<UShort> val);
-RValue<UShort> operator++(UShort &val, int);   // Post-increment
-const UShort &operator++(UShort &val);   // Pre-increment
-RValue<UShort> operator--(UShort &val, int);   // Post-decrement
-const UShort &operator--(UShort &val);   // Pre-decrement
+RValue<UShort> operator++(UShort &val, int);  // Post-increment
+const UShort &operator++(UShort &val);        // Pre-increment
+RValue<UShort> operator--(UShort &val, int);  // Post-decrement
+const UShort &operator--(UShort &val);        // Pre-decrement
 RValue<Bool> operator<(RValue<UShort> lhs, RValue<UShort> rhs);
 RValue<Bool> operator<=(RValue<UShort> lhs, RValue<UShort> rhs);
 RValue<Bool> operator>(RValue<UShort> lhs, RValue<UShort> rhs);
@@ -516,14 +517,14 @@
 	explicit Byte4(RValue<Byte8> cast);
 
 	Byte4() = default;
-//	Byte4(int x, int y, int z, int w);
-//	Byte4(RValue<Byte4> rhs);
-//	Byte4(const Byte4 &rhs);
+	//	Byte4(int x, int y, int z, int w);
+	//	Byte4(RValue<Byte4> rhs);
+	//	Byte4(const Byte4 &rhs);
 	Byte4(const Reference<Byte4> &rhs);
 
-//	RValue<Byte4> operator=(RValue<Byte4> rhs);
-//	RValue<Byte4> operator=(const Byte4 &rhs);
-//	RValue<Byte4> operator=(const Reference<Byte4> &rhs);
+	//	RValue<Byte4> operator=(RValue<Byte4> rhs);
+	//	RValue<Byte4> operator=(const Byte4 &rhs);
+	//	RValue<Byte4> operator=(const Reference<Byte4> &rhs);
 
 	static Type *getType();
 };
@@ -560,14 +561,14 @@
 {
 public:
 	SByte4() = default;
-//	SByte4(int x, int y, int z, int w);
-//	SByte4(RValue<SByte4> rhs);
-//	SByte4(const SByte4 &rhs);
-//	SByte4(const Reference<SByte4> &rhs);
+	//	SByte4(int x, int y, int z, int w);
+	//	SByte4(RValue<SByte4> rhs);
+	//	SByte4(const SByte4 &rhs);
+	//	SByte4(const Reference<SByte4> &rhs);
 
-//	RValue<SByte4> operator=(RValue<SByte4> rhs);
-//	RValue<SByte4> operator=(const SByte4 &rhs);
-//	RValue<SByte4> operator=(const Reference<SByte4> &rhs);
+	//	RValue<SByte4> operator=(RValue<SByte4> rhs);
+	//	RValue<SByte4> operator=(const SByte4 &rhs);
+	//	RValue<SByte4> operator=(const Reference<SByte4> &rhs);
 
 	static Type *getType();
 };
@@ -710,7 +711,7 @@
 {
 public:
 	Byte16() = default;
-//	Byte16(int x, int y, int z, int w);
+	//	Byte16(int x, int y, int z, int w);
 	Byte16(RValue<Byte16> rhs);
 	Byte16(const Byte16 &rhs);
 	Byte16(const Reference<Byte16> &rhs);
@@ -754,14 +755,14 @@
 {
 public:
 	SByte16() = default;
-//	SByte16(int x, int y, int z, int w);
-//	SByte16(RValue<SByte16> rhs);
-//	SByte16(const SByte16 &rhs);
-//	SByte16(const Reference<SByte16> &rhs);
+	//	SByte16(int x, int y, int z, int w);
+	//	SByte16(RValue<SByte16> rhs);
+	//	SByte16(const SByte16 &rhs);
+	//	SByte16(const Reference<SByte16> &rhs);
 
-//	RValue<SByte16> operator=(RValue<SByte16> rhs);
-//	RValue<SByte16> operator=(const SByte16 &rhs);
-//	RValue<SByte16> operator=(const Reference<SByte16> &rhs);
+	//	RValue<SByte16> operator=(RValue<SByte16> rhs);
+	//	RValue<SByte16> operator=(const SByte16 &rhs);
+	//	RValue<SByte16> operator=(const Reference<SByte16> &rhs);
 
 	static Type *getType();
 };
@@ -815,7 +816,7 @@
 public:
 	explicit Short4(RValue<Int> cast);
 	explicit Short4(RValue<Int4> cast);
-//	explicit Short4(RValue<Float> cast);
+	//	explicit Short4(RValue<Float> cast);
 	explicit Short4(RValue<Float4> cast);
 
 	Short4() = default;
@@ -957,7 +958,7 @@
 	Short8(short c);
 	Short8(short c0, short c1, short c2, short c3, short c4, short c5, short c6, short c7);
 	Short8(RValue<Short8> rhs);
-//	Short8(const Short8 &rhs);
+	//	Short8(const Short8 &rhs);
 	Short8(const Reference<Short8> &rhs);
 	Short8(RValue<Short4> lo, RValue<Short4> hi);
 
@@ -1015,7 +1016,7 @@
 	UShort8(unsigned short c);
 	UShort8(unsigned short c0, unsigned short c1, unsigned short c2, unsigned short c3, unsigned short c4, unsigned short c5, unsigned short c6, unsigned short c7);
 	UShort8(RValue<UShort8> rhs);
-//	UShort8(const UShort8 &rhs);
+	//	UShort8(const UShort8 &rhs);
 	UShort8(const Reference<UShort8> &rhs);
 	UShort8(RValue<UShort4> lo, RValue<UShort4> hi);
 
@@ -1121,10 +1122,10 @@
 RValue<Int> operator+(RValue<Int> val);
 RValue<Int> operator-(RValue<Int> val);
 RValue<Int> operator~(RValue<Int> val);
-RValue<Int> operator++(Int &val, int);   // Post-increment
-const Int &operator++(Int &val);   // Pre-increment
-RValue<Int> operator--(Int &val, int);   // Post-decrement
-const Int &operator--(Int &val);   // Pre-decrement
+RValue<Int> operator++(Int &val, int);  // Post-increment
+const Int &operator++(Int &val);        // Pre-increment
+RValue<Int> operator--(Int &val, int);  // Post-decrement
+const Int &operator--(Int &val);        // Pre-decrement
 RValue<Bool> operator<(RValue<Int> lhs, RValue<Int> rhs);
 RValue<Bool> operator<=(RValue<Int> lhs, RValue<Int> rhs);
 RValue<Bool> operator>(RValue<Int> lhs, RValue<Int> rhs);
@@ -1140,30 +1141,30 @@
 class Long : public LValue<Long>
 {
 public:
-//	Long(Argument<Long> argument);
+	//	Long(Argument<Long> argument);
 
-//	explicit Long(RValue<Short> cast);
-//	explicit Long(RValue<UShort> cast);
+	//	explicit Long(RValue<Short> cast);
+	//	explicit Long(RValue<UShort> cast);
 	explicit Long(RValue<Int> cast);
 	explicit Long(RValue<UInt> cast);
-//	explicit Long(RValue<Float> cast);
+	//	explicit Long(RValue<Float> cast);
 
 	Long() = default;
-//	Long(qword x);
+	//	Long(qword x);
 	Long(RValue<Long> rhs);
-//	Long(RValue<ULong> rhs);
-//	Long(const Long &rhs);
-//	Long(const Reference<Long> &rhs);
-//	Long(const ULong &rhs);
-//	Long(const Reference<ULong> &rhs);
+	//	Long(RValue<ULong> rhs);
+	//	Long(const Long &rhs);
+	//	Long(const Reference<Long> &rhs);
+	//	Long(const ULong &rhs);
+	//	Long(const Reference<ULong> &rhs);
 
 	RValue<Long> operator=(int64_t rhs);
 	RValue<Long> operator=(RValue<Long> rhs);
-//	RValue<Long> operator=(RValue<ULong> rhs);
+	//	RValue<Long> operator=(RValue<ULong> rhs);
 	RValue<Long> operator=(const Long &rhs);
 	RValue<Long> operator=(const Reference<Long> &rhs);
-//	RValue<Long> operator=(const ULong &rhs);
-//	RValue<Long> operator=(const Reference<ULong> &rhs);
+	//	RValue<Long> operator=(const ULong &rhs);
+	//	RValue<Long> operator=(const Reference<ULong> &rhs);
 
 	static Type *getType();
 };
@@ -1203,7 +1204,7 @@
 //	RValue<Bool> operator==(RValue<Long> lhs, RValue<Long> rhs);
 
 //	RValue<Long> RoundLong(RValue<Float> cast);
-RValue<Long> AddAtomic( RValue<Pointer<Long>> x, RValue<Long> y);
+RValue<Long> AddAtomic(RValue<Pointer<Long>> x, RValue<Long> y);
 
 class UInt : public LValue<UInt>
 {
@@ -1258,10 +1259,10 @@
 RValue<UInt> operator+(RValue<UInt> val);
 RValue<UInt> operator-(RValue<UInt> val);
 RValue<UInt> operator~(RValue<UInt> val);
-RValue<UInt> operator++(UInt &val, int);   // Post-increment
-const UInt &operator++(UInt &val);   // Pre-increment
-RValue<UInt> operator--(UInt &val, int);   // Post-decrement
-const UInt &operator--(UInt &val);   // Pre-decrement
+RValue<UInt> operator++(UInt &val, int);  // Post-increment
+const UInt &operator++(UInt &val);        // Pre-increment
+RValue<UInt> operator--(UInt &val, int);  // Post-decrement
+const UInt &operator--(UInt &val);        // Pre-decrement
 RValue<Bool> operator<(RValue<UInt> lhs, RValue<UInt> rhs);
 RValue<Bool> operator<=(RValue<UInt> lhs, RValue<UInt> rhs);
 RValue<Bool> operator>(RValue<UInt> lhs, RValue<UInt> rhs);
@@ -1290,7 +1291,7 @@
 class Int2 : public LValue<Int2>
 {
 public:
-//	explicit Int2(RValue<Int> cast);
+	//	explicit Int2(RValue<Int> cast);
 	explicit Int2(RValue<Int4> cast);
 
 	Int2() = default;
@@ -1509,342 +1510,342 @@
 		SwizzleMask1<Vector4, 0x1111> y;
 		SwizzleMask1<Vector4, 0x2222> z;
 		SwizzleMask1<Vector4, 0x3333> w;
-		Swizzle2<Vector4, 0x0000>     xx;
-		Swizzle2<Vector4, 0x1000>     yx;
-		Swizzle2<Vector4, 0x2000>     zx;
-		Swizzle2<Vector4, 0x3000>     wx;
+		Swizzle2<Vector4, 0x0000> xx;
+		Swizzle2<Vector4, 0x1000> yx;
+		Swizzle2<Vector4, 0x2000> zx;
+		Swizzle2<Vector4, 0x3000> wx;
 		SwizzleMask2<Vector4, 0x0111> xy;
-		Swizzle2<Vector4, 0x1111>     yy;
-		Swizzle2<Vector4, 0x2111>     zy;
-		Swizzle2<Vector4, 0x3111>     wy;
+		Swizzle2<Vector4, 0x1111> yy;
+		Swizzle2<Vector4, 0x2111> zy;
+		Swizzle2<Vector4, 0x3111> wy;
 		SwizzleMask2<Vector4, 0x0222> xz;
 		SwizzleMask2<Vector4, 0x1222> yz;
-		Swizzle2<Vector4, 0x2222>     zz;
-		Swizzle2<Vector4, 0x3222>     wz;
+		Swizzle2<Vector4, 0x2222> zz;
+		Swizzle2<Vector4, 0x3222> wz;
 		SwizzleMask2<Vector4, 0x0333> xw;
 		SwizzleMask2<Vector4, 0x1333> yw;
 		SwizzleMask2<Vector4, 0x2333> zw;
-		Swizzle2<Vector4, 0x3333>     ww;
-		Swizzle4<Vector4, 0x0000>     xxx;
-		Swizzle4<Vector4, 0x1000>     yxx;
-		Swizzle4<Vector4, 0x2000>     zxx;
-		Swizzle4<Vector4, 0x3000>     wxx;
-		Swizzle4<Vector4, 0x0100>     xyx;
-		Swizzle4<Vector4, 0x1100>     yyx;
-		Swizzle4<Vector4, 0x2100>     zyx;
-		Swizzle4<Vector4, 0x3100>     wyx;
-		Swizzle4<Vector4, 0x0200>     xzx;
-		Swizzle4<Vector4, 0x1200>     yzx;
-		Swizzle4<Vector4, 0x2200>     zzx;
-		Swizzle4<Vector4, 0x3200>     wzx;
-		Swizzle4<Vector4, 0x0300>     xwx;
-		Swizzle4<Vector4, 0x1300>     ywx;
-		Swizzle4<Vector4, 0x2300>     zwx;
-		Swizzle4<Vector4, 0x3300>     wwx;
-		Swizzle4<Vector4, 0x0011>     xxy;
-		Swizzle4<Vector4, 0x1011>     yxy;
-		Swizzle4<Vector4, 0x2011>     zxy;
-		Swizzle4<Vector4, 0x3011>     wxy;
-		Swizzle4<Vector4, 0x0111>     xyy;
-		Swizzle4<Vector4, 0x1111>     yyy;
-		Swizzle4<Vector4, 0x2111>     zyy;
-		Swizzle4<Vector4, 0x3111>     wyy;
-		Swizzle4<Vector4, 0x0211>     xzy;
-		Swizzle4<Vector4, 0x1211>     yzy;
-		Swizzle4<Vector4, 0x2211>     zzy;
-		Swizzle4<Vector4, 0x3211>     wzy;
-		Swizzle4<Vector4, 0x0311>     xwy;
-		Swizzle4<Vector4, 0x1311>     ywy;
-		Swizzle4<Vector4, 0x2311>     zwy;
-		Swizzle4<Vector4, 0x3311>     wwy;
-		Swizzle4<Vector4, 0x0022>     xxz;
-		Swizzle4<Vector4, 0x1022>     yxz;
-		Swizzle4<Vector4, 0x2022>     zxz;
-		Swizzle4<Vector4, 0x3022>     wxz;
+		Swizzle2<Vector4, 0x3333> ww;
+		Swizzle4<Vector4, 0x0000> xxx;
+		Swizzle4<Vector4, 0x1000> yxx;
+		Swizzle4<Vector4, 0x2000> zxx;
+		Swizzle4<Vector4, 0x3000> wxx;
+		Swizzle4<Vector4, 0x0100> xyx;
+		Swizzle4<Vector4, 0x1100> yyx;
+		Swizzle4<Vector4, 0x2100> zyx;
+		Swizzle4<Vector4, 0x3100> wyx;
+		Swizzle4<Vector4, 0x0200> xzx;
+		Swizzle4<Vector4, 0x1200> yzx;
+		Swizzle4<Vector4, 0x2200> zzx;
+		Swizzle4<Vector4, 0x3200> wzx;
+		Swizzle4<Vector4, 0x0300> xwx;
+		Swizzle4<Vector4, 0x1300> ywx;
+		Swizzle4<Vector4, 0x2300> zwx;
+		Swizzle4<Vector4, 0x3300> wwx;
+		Swizzle4<Vector4, 0x0011> xxy;
+		Swizzle4<Vector4, 0x1011> yxy;
+		Swizzle4<Vector4, 0x2011> zxy;
+		Swizzle4<Vector4, 0x3011> wxy;
+		Swizzle4<Vector4, 0x0111> xyy;
+		Swizzle4<Vector4, 0x1111> yyy;
+		Swizzle4<Vector4, 0x2111> zyy;
+		Swizzle4<Vector4, 0x3111> wyy;
+		Swizzle4<Vector4, 0x0211> xzy;
+		Swizzle4<Vector4, 0x1211> yzy;
+		Swizzle4<Vector4, 0x2211> zzy;
+		Swizzle4<Vector4, 0x3211> wzy;
+		Swizzle4<Vector4, 0x0311> xwy;
+		Swizzle4<Vector4, 0x1311> ywy;
+		Swizzle4<Vector4, 0x2311> zwy;
+		Swizzle4<Vector4, 0x3311> wwy;
+		Swizzle4<Vector4, 0x0022> xxz;
+		Swizzle4<Vector4, 0x1022> yxz;
+		Swizzle4<Vector4, 0x2022> zxz;
+		Swizzle4<Vector4, 0x3022> wxz;
 		SwizzleMask4<Vector4, 0x0122> xyz;
-		Swizzle4<Vector4, 0x1122>     yyz;
-		Swizzle4<Vector4, 0x2122>     zyz;
-		Swizzle4<Vector4, 0x3122>     wyz;
-		Swizzle4<Vector4, 0x0222>     xzz;
-		Swizzle4<Vector4, 0x1222>     yzz;
-		Swizzle4<Vector4, 0x2222>     zzz;
-		Swizzle4<Vector4, 0x3222>     wzz;
-		Swizzle4<Vector4, 0x0322>     xwz;
-		Swizzle4<Vector4, 0x1322>     ywz;
-		Swizzle4<Vector4, 0x2322>     zwz;
-		Swizzle4<Vector4, 0x3322>     wwz;
-		Swizzle4<Vector4, 0x0033>     xxw;
-		Swizzle4<Vector4, 0x1033>     yxw;
-		Swizzle4<Vector4, 0x2033>     zxw;
-		Swizzle4<Vector4, 0x3033>     wxw;
+		Swizzle4<Vector4, 0x1122> yyz;
+		Swizzle4<Vector4, 0x2122> zyz;
+		Swizzle4<Vector4, 0x3122> wyz;
+		Swizzle4<Vector4, 0x0222> xzz;
+		Swizzle4<Vector4, 0x1222> yzz;
+		Swizzle4<Vector4, 0x2222> zzz;
+		Swizzle4<Vector4, 0x3222> wzz;
+		Swizzle4<Vector4, 0x0322> xwz;
+		Swizzle4<Vector4, 0x1322> ywz;
+		Swizzle4<Vector4, 0x2322> zwz;
+		Swizzle4<Vector4, 0x3322> wwz;
+		Swizzle4<Vector4, 0x0033> xxw;
+		Swizzle4<Vector4, 0x1033> yxw;
+		Swizzle4<Vector4, 0x2033> zxw;
+		Swizzle4<Vector4, 0x3033> wxw;
 		SwizzleMask4<Vector4, 0x0133> xyw;
-		Swizzle4<Vector4, 0x1133>     yyw;
-		Swizzle4<Vector4, 0x2133>     zyw;
-		Swizzle4<Vector4, 0x3133>     wyw;
+		Swizzle4<Vector4, 0x1133> yyw;
+		Swizzle4<Vector4, 0x2133> zyw;
+		Swizzle4<Vector4, 0x3133> wyw;
 		SwizzleMask4<Vector4, 0x0233> xzw;
 		SwizzleMask4<Vector4, 0x1233> yzw;
-		Swizzle4<Vector4, 0x2233>     zzw;
-		Swizzle4<Vector4, 0x3233>     wzw;
-		Swizzle4<Vector4, 0x0333>     xww;
-		Swizzle4<Vector4, 0x1333>     yww;
-		Swizzle4<Vector4, 0x2333>     zww;
-		Swizzle4<Vector4, 0x3333>     www;
-		Swizzle4<Vector4, 0x0000>     xxxx;
-		Swizzle4<Vector4, 0x1000>     yxxx;
-		Swizzle4<Vector4, 0x2000>     zxxx;
-		Swizzle4<Vector4, 0x3000>     wxxx;
-		Swizzle4<Vector4, 0x0100>     xyxx;
-		Swizzle4<Vector4, 0x1100>     yyxx;
-		Swizzle4<Vector4, 0x2100>     zyxx;
-		Swizzle4<Vector4, 0x3100>     wyxx;
-		Swizzle4<Vector4, 0x0200>     xzxx;
-		Swizzle4<Vector4, 0x1200>     yzxx;
-		Swizzle4<Vector4, 0x2200>     zzxx;
-		Swizzle4<Vector4, 0x3200>     wzxx;
-		Swizzle4<Vector4, 0x0300>     xwxx;
-		Swizzle4<Vector4, 0x1300>     ywxx;
-		Swizzle4<Vector4, 0x2300>     zwxx;
-		Swizzle4<Vector4, 0x3300>     wwxx;
-		Swizzle4<Vector4, 0x0010>     xxyx;
-		Swizzle4<Vector4, 0x1010>     yxyx;
-		Swizzle4<Vector4, 0x2010>     zxyx;
-		Swizzle4<Vector4, 0x3010>     wxyx;
-		Swizzle4<Vector4, 0x0110>     xyyx;
-		Swizzle4<Vector4, 0x1110>     yyyx;
-		Swizzle4<Vector4, 0x2110>     zyyx;
-		Swizzle4<Vector4, 0x3110>     wyyx;
-		Swizzle4<Vector4, 0x0210>     xzyx;
-		Swizzle4<Vector4, 0x1210>     yzyx;
-		Swizzle4<Vector4, 0x2210>     zzyx;
-		Swizzle4<Vector4, 0x3210>     wzyx;
-		Swizzle4<Vector4, 0x0310>     xwyx;
-		Swizzle4<Vector4, 0x1310>     ywyx;
-		Swizzle4<Vector4, 0x2310>     zwyx;
-		Swizzle4<Vector4, 0x3310>     wwyx;
-		Swizzle4<Vector4, 0x0020>     xxzx;
-		Swizzle4<Vector4, 0x1020>     yxzx;
-		Swizzle4<Vector4, 0x2020>     zxzx;
-		Swizzle4<Vector4, 0x3020>     wxzx;
-		Swizzle4<Vector4, 0x0120>     xyzx;
-		Swizzle4<Vector4, 0x1120>     yyzx;
-		Swizzle4<Vector4, 0x2120>     zyzx;
-		Swizzle4<Vector4, 0x3120>     wyzx;
-		Swizzle4<Vector4, 0x0220>     xzzx;
-		Swizzle4<Vector4, 0x1220>     yzzx;
-		Swizzle4<Vector4, 0x2220>     zzzx;
-		Swizzle4<Vector4, 0x3220>     wzzx;
-		Swizzle4<Vector4, 0x0320>     xwzx;
-		Swizzle4<Vector4, 0x1320>     ywzx;
-		Swizzle4<Vector4, 0x2320>     zwzx;
-		Swizzle4<Vector4, 0x3320>     wwzx;
-		Swizzle4<Vector4, 0x0030>     xxwx;
-		Swizzle4<Vector4, 0x1030>     yxwx;
-		Swizzle4<Vector4, 0x2030>     zxwx;
-		Swizzle4<Vector4, 0x3030>     wxwx;
-		Swizzle4<Vector4, 0x0130>     xywx;
-		Swizzle4<Vector4, 0x1130>     yywx;
-		Swizzle4<Vector4, 0x2130>     zywx;
-		Swizzle4<Vector4, 0x3130>     wywx;
-		Swizzle4<Vector4, 0x0230>     xzwx;
-		Swizzle4<Vector4, 0x1230>     yzwx;
-		Swizzle4<Vector4, 0x2230>     zzwx;
-		Swizzle4<Vector4, 0x3230>     wzwx;
-		Swizzle4<Vector4, 0x0330>     xwwx;
-		Swizzle4<Vector4, 0x1330>     ywwx;
-		Swizzle4<Vector4, 0x2330>     zwwx;
-		Swizzle4<Vector4, 0x3330>     wwwx;
-		Swizzle4<Vector4, 0x0001>     xxxy;
-		Swizzle4<Vector4, 0x1001>     yxxy;
-		Swizzle4<Vector4, 0x2001>     zxxy;
-		Swizzle4<Vector4, 0x3001>     wxxy;
-		Swizzle4<Vector4, 0x0101>     xyxy;
-		Swizzle4<Vector4, 0x1101>     yyxy;
-		Swizzle4<Vector4, 0x2101>     zyxy;
-		Swizzle4<Vector4, 0x3101>     wyxy;
-		Swizzle4<Vector4, 0x0201>     xzxy;
-		Swizzle4<Vector4, 0x1201>     yzxy;
-		Swizzle4<Vector4, 0x2201>     zzxy;
-		Swizzle4<Vector4, 0x3201>     wzxy;
-		Swizzle4<Vector4, 0x0301>     xwxy;
-		Swizzle4<Vector4, 0x1301>     ywxy;
-		Swizzle4<Vector4, 0x2301>     zwxy;
-		Swizzle4<Vector4, 0x3301>     wwxy;
-		Swizzle4<Vector4, 0x0011>     xxyy;
-		Swizzle4<Vector4, 0x1011>     yxyy;
-		Swizzle4<Vector4, 0x2011>     zxyy;
-		Swizzle4<Vector4, 0x3011>     wxyy;
-		Swizzle4<Vector4, 0x0111>     xyyy;
-		Swizzle4<Vector4, 0x1111>     yyyy;
-		Swizzle4<Vector4, 0x2111>     zyyy;
-		Swizzle4<Vector4, 0x3111>     wyyy;
-		Swizzle4<Vector4, 0x0211>     xzyy;
-		Swizzle4<Vector4, 0x1211>     yzyy;
-		Swizzle4<Vector4, 0x2211>     zzyy;
-		Swizzle4<Vector4, 0x3211>     wzyy;
-		Swizzle4<Vector4, 0x0311>     xwyy;
-		Swizzle4<Vector4, 0x1311>     ywyy;
-		Swizzle4<Vector4, 0x2311>     zwyy;
-		Swizzle4<Vector4, 0x3311>     wwyy;
-		Swizzle4<Vector4, 0x0021>     xxzy;
-		Swizzle4<Vector4, 0x1021>     yxzy;
-		Swizzle4<Vector4, 0x2021>     zxzy;
-		Swizzle4<Vector4, 0x3021>     wxzy;
-		Swizzle4<Vector4, 0x0121>     xyzy;
-		Swizzle4<Vector4, 0x1121>     yyzy;
-		Swizzle4<Vector4, 0x2121>     zyzy;
-		Swizzle4<Vector4, 0x3121>     wyzy;
-		Swizzle4<Vector4, 0x0221>     xzzy;
-		Swizzle4<Vector4, 0x1221>     yzzy;
-		Swizzle4<Vector4, 0x2221>     zzzy;
-		Swizzle4<Vector4, 0x3221>     wzzy;
-		Swizzle4<Vector4, 0x0321>     xwzy;
-		Swizzle4<Vector4, 0x1321>     ywzy;
-		Swizzle4<Vector4, 0x2321>     zwzy;
-		Swizzle4<Vector4, 0x3321>     wwzy;
-		Swizzle4<Vector4, 0x0031>     xxwy;
-		Swizzle4<Vector4, 0x1031>     yxwy;
-		Swizzle4<Vector4, 0x2031>     zxwy;
-		Swizzle4<Vector4, 0x3031>     wxwy;
-		Swizzle4<Vector4, 0x0131>     xywy;
-		Swizzle4<Vector4, 0x1131>     yywy;
-		Swizzle4<Vector4, 0x2131>     zywy;
-		Swizzle4<Vector4, 0x3131>     wywy;
-		Swizzle4<Vector4, 0x0231>     xzwy;
-		Swizzle4<Vector4, 0x1231>     yzwy;
-		Swizzle4<Vector4, 0x2231>     zzwy;
-		Swizzle4<Vector4, 0x3231>     wzwy;
-		Swizzle4<Vector4, 0x0331>     xwwy;
-		Swizzle4<Vector4, 0x1331>     ywwy;
-		Swizzle4<Vector4, 0x2331>     zwwy;
-		Swizzle4<Vector4, 0x3331>     wwwy;
-		Swizzle4<Vector4, 0x0002>     xxxz;
-		Swizzle4<Vector4, 0x1002>     yxxz;
-		Swizzle4<Vector4, 0x2002>     zxxz;
-		Swizzle4<Vector4, 0x3002>     wxxz;
-		Swizzle4<Vector4, 0x0102>     xyxz;
-		Swizzle4<Vector4, 0x1102>     yyxz;
-		Swizzle4<Vector4, 0x2102>     zyxz;
-		Swizzle4<Vector4, 0x3102>     wyxz;
-		Swizzle4<Vector4, 0x0202>     xzxz;
-		Swizzle4<Vector4, 0x1202>     yzxz;
-		Swizzle4<Vector4, 0x2202>     zzxz;
-		Swizzle4<Vector4, 0x3202>     wzxz;
-		Swizzle4<Vector4, 0x0302>     xwxz;
-		Swizzle4<Vector4, 0x1302>     ywxz;
-		Swizzle4<Vector4, 0x2302>     zwxz;
-		Swizzle4<Vector4, 0x3302>     wwxz;
-		Swizzle4<Vector4, 0x0012>     xxyz;
-		Swizzle4<Vector4, 0x1012>     yxyz;
-		Swizzle4<Vector4, 0x2012>     zxyz;
-		Swizzle4<Vector4, 0x3012>     wxyz;
-		Swizzle4<Vector4, 0x0112>     xyyz;
-		Swizzle4<Vector4, 0x1112>     yyyz;
-		Swizzle4<Vector4, 0x2112>     zyyz;
-		Swizzle4<Vector4, 0x3112>     wyyz;
-		Swizzle4<Vector4, 0x0212>     xzyz;
-		Swizzle4<Vector4, 0x1212>     yzyz;
-		Swizzle4<Vector4, 0x2212>     zzyz;
-		Swizzle4<Vector4, 0x3212>     wzyz;
-		Swizzle4<Vector4, 0x0312>     xwyz;
-		Swizzle4<Vector4, 0x1312>     ywyz;
-		Swizzle4<Vector4, 0x2312>     zwyz;
-		Swizzle4<Vector4, 0x3312>     wwyz;
-		Swizzle4<Vector4, 0x0022>     xxzz;
-		Swizzle4<Vector4, 0x1022>     yxzz;
-		Swizzle4<Vector4, 0x2022>     zxzz;
-		Swizzle4<Vector4, 0x3022>     wxzz;
-		Swizzle4<Vector4, 0x0122>     xyzz;
-		Swizzle4<Vector4, 0x1122>     yyzz;
-		Swizzle4<Vector4, 0x2122>     zyzz;
-		Swizzle4<Vector4, 0x3122>     wyzz;
-		Swizzle4<Vector4, 0x0222>     xzzz;
-		Swizzle4<Vector4, 0x1222>     yzzz;
-		Swizzle4<Vector4, 0x2222>     zzzz;
-		Swizzle4<Vector4, 0x3222>     wzzz;
-		Swizzle4<Vector4, 0x0322>     xwzz;
-		Swizzle4<Vector4, 0x1322>     ywzz;
-		Swizzle4<Vector4, 0x2322>     zwzz;
-		Swizzle4<Vector4, 0x3322>     wwzz;
-		Swizzle4<Vector4, 0x0032>     xxwz;
-		Swizzle4<Vector4, 0x1032>     yxwz;
-		Swizzle4<Vector4, 0x2032>     zxwz;
-		Swizzle4<Vector4, 0x3032>     wxwz;
-		Swizzle4<Vector4, 0x0132>     xywz;
-		Swizzle4<Vector4, 0x1132>     yywz;
-		Swizzle4<Vector4, 0x2132>     zywz;
-		Swizzle4<Vector4, 0x3132>     wywz;
-		Swizzle4<Vector4, 0x0232>     xzwz;
-		Swizzle4<Vector4, 0x1232>     yzwz;
-		Swizzle4<Vector4, 0x2232>     zzwz;
-		Swizzle4<Vector4, 0x3232>     wzwz;
-		Swizzle4<Vector4, 0x0332>     xwwz;
-		Swizzle4<Vector4, 0x1332>     ywwz;
-		Swizzle4<Vector4, 0x2332>     zwwz;
-		Swizzle4<Vector4, 0x3332>     wwwz;
-		Swizzle4<Vector4, 0x0003>     xxxw;
-		Swizzle4<Vector4, 0x1003>     yxxw;
-		Swizzle4<Vector4, 0x2003>     zxxw;
-		Swizzle4<Vector4, 0x3003>     wxxw;
-		Swizzle4<Vector4, 0x0103>     xyxw;
-		Swizzle4<Vector4, 0x1103>     yyxw;
-		Swizzle4<Vector4, 0x2103>     zyxw;
-		Swizzle4<Vector4, 0x3103>     wyxw;
-		Swizzle4<Vector4, 0x0203>     xzxw;
-		Swizzle4<Vector4, 0x1203>     yzxw;
-		Swizzle4<Vector4, 0x2203>     zzxw;
-		Swizzle4<Vector4, 0x3203>     wzxw;
-		Swizzle4<Vector4, 0x0303>     xwxw;
-		Swizzle4<Vector4, 0x1303>     ywxw;
-		Swizzle4<Vector4, 0x2303>     zwxw;
-		Swizzle4<Vector4, 0x3303>     wwxw;
-		Swizzle4<Vector4, 0x0013>     xxyw;
-		Swizzle4<Vector4, 0x1013>     yxyw;
-		Swizzle4<Vector4, 0x2013>     zxyw;
-		Swizzle4<Vector4, 0x3013>     wxyw;
-		Swizzle4<Vector4, 0x0113>     xyyw;
-		Swizzle4<Vector4, 0x1113>     yyyw;
-		Swizzle4<Vector4, 0x2113>     zyyw;
-		Swizzle4<Vector4, 0x3113>     wyyw;
-		Swizzle4<Vector4, 0x0213>     xzyw;
-		Swizzle4<Vector4, 0x1213>     yzyw;
-		Swizzle4<Vector4, 0x2213>     zzyw;
-		Swizzle4<Vector4, 0x3213>     wzyw;
-		Swizzle4<Vector4, 0x0313>     xwyw;
-		Swizzle4<Vector4, 0x1313>     ywyw;
-		Swizzle4<Vector4, 0x2313>     zwyw;
-		Swizzle4<Vector4, 0x3313>     wwyw;
-		Swizzle4<Vector4, 0x0023>     xxzw;
-		Swizzle4<Vector4, 0x1023>     yxzw;
-		Swizzle4<Vector4, 0x2023>     zxzw;
-		Swizzle4<Vector4, 0x3023>     wxzw;
+		Swizzle4<Vector4, 0x2233> zzw;
+		Swizzle4<Vector4, 0x3233> wzw;
+		Swizzle4<Vector4, 0x0333> xww;
+		Swizzle4<Vector4, 0x1333> yww;
+		Swizzle4<Vector4, 0x2333> zww;
+		Swizzle4<Vector4, 0x3333> www;
+		Swizzle4<Vector4, 0x0000> xxxx;
+		Swizzle4<Vector4, 0x1000> yxxx;
+		Swizzle4<Vector4, 0x2000> zxxx;
+		Swizzle4<Vector4, 0x3000> wxxx;
+		Swizzle4<Vector4, 0x0100> xyxx;
+		Swizzle4<Vector4, 0x1100> yyxx;
+		Swizzle4<Vector4, 0x2100> zyxx;
+		Swizzle4<Vector4, 0x3100> wyxx;
+		Swizzle4<Vector4, 0x0200> xzxx;
+		Swizzle4<Vector4, 0x1200> yzxx;
+		Swizzle4<Vector4, 0x2200> zzxx;
+		Swizzle4<Vector4, 0x3200> wzxx;
+		Swizzle4<Vector4, 0x0300> xwxx;
+		Swizzle4<Vector4, 0x1300> ywxx;
+		Swizzle4<Vector4, 0x2300> zwxx;
+		Swizzle4<Vector4, 0x3300> wwxx;
+		Swizzle4<Vector4, 0x0010> xxyx;
+		Swizzle4<Vector4, 0x1010> yxyx;
+		Swizzle4<Vector4, 0x2010> zxyx;
+		Swizzle4<Vector4, 0x3010> wxyx;
+		Swizzle4<Vector4, 0x0110> xyyx;
+		Swizzle4<Vector4, 0x1110> yyyx;
+		Swizzle4<Vector4, 0x2110> zyyx;
+		Swizzle4<Vector4, 0x3110> wyyx;
+		Swizzle4<Vector4, 0x0210> xzyx;
+		Swizzle4<Vector4, 0x1210> yzyx;
+		Swizzle4<Vector4, 0x2210> zzyx;
+		Swizzle4<Vector4, 0x3210> wzyx;
+		Swizzle4<Vector4, 0x0310> xwyx;
+		Swizzle4<Vector4, 0x1310> ywyx;
+		Swizzle4<Vector4, 0x2310> zwyx;
+		Swizzle4<Vector4, 0x3310> wwyx;
+		Swizzle4<Vector4, 0x0020> xxzx;
+		Swizzle4<Vector4, 0x1020> yxzx;
+		Swizzle4<Vector4, 0x2020> zxzx;
+		Swizzle4<Vector4, 0x3020> wxzx;
+		Swizzle4<Vector4, 0x0120> xyzx;
+		Swizzle4<Vector4, 0x1120> yyzx;
+		Swizzle4<Vector4, 0x2120> zyzx;
+		Swizzle4<Vector4, 0x3120> wyzx;
+		Swizzle4<Vector4, 0x0220> xzzx;
+		Swizzle4<Vector4, 0x1220> yzzx;
+		Swizzle4<Vector4, 0x2220> zzzx;
+		Swizzle4<Vector4, 0x3220> wzzx;
+		Swizzle4<Vector4, 0x0320> xwzx;
+		Swizzle4<Vector4, 0x1320> ywzx;
+		Swizzle4<Vector4, 0x2320> zwzx;
+		Swizzle4<Vector4, 0x3320> wwzx;
+		Swizzle4<Vector4, 0x0030> xxwx;
+		Swizzle4<Vector4, 0x1030> yxwx;
+		Swizzle4<Vector4, 0x2030> zxwx;
+		Swizzle4<Vector4, 0x3030> wxwx;
+		Swizzle4<Vector4, 0x0130> xywx;
+		Swizzle4<Vector4, 0x1130> yywx;
+		Swizzle4<Vector4, 0x2130> zywx;
+		Swizzle4<Vector4, 0x3130> wywx;
+		Swizzle4<Vector4, 0x0230> xzwx;
+		Swizzle4<Vector4, 0x1230> yzwx;
+		Swizzle4<Vector4, 0x2230> zzwx;
+		Swizzle4<Vector4, 0x3230> wzwx;
+		Swizzle4<Vector4, 0x0330> xwwx;
+		Swizzle4<Vector4, 0x1330> ywwx;
+		Swizzle4<Vector4, 0x2330> zwwx;
+		Swizzle4<Vector4, 0x3330> wwwx;
+		Swizzle4<Vector4, 0x0001> xxxy;
+		Swizzle4<Vector4, 0x1001> yxxy;
+		Swizzle4<Vector4, 0x2001> zxxy;
+		Swizzle4<Vector4, 0x3001> wxxy;
+		Swizzle4<Vector4, 0x0101> xyxy;
+		Swizzle4<Vector4, 0x1101> yyxy;
+		Swizzle4<Vector4, 0x2101> zyxy;
+		Swizzle4<Vector4, 0x3101> wyxy;
+		Swizzle4<Vector4, 0x0201> xzxy;
+		Swizzle4<Vector4, 0x1201> yzxy;
+		Swizzle4<Vector4, 0x2201> zzxy;
+		Swizzle4<Vector4, 0x3201> wzxy;
+		Swizzle4<Vector4, 0x0301> xwxy;
+		Swizzle4<Vector4, 0x1301> ywxy;
+		Swizzle4<Vector4, 0x2301> zwxy;
+		Swizzle4<Vector4, 0x3301> wwxy;
+		Swizzle4<Vector4, 0x0011> xxyy;
+		Swizzle4<Vector4, 0x1011> yxyy;
+		Swizzle4<Vector4, 0x2011> zxyy;
+		Swizzle4<Vector4, 0x3011> wxyy;
+		Swizzle4<Vector4, 0x0111> xyyy;
+		Swizzle4<Vector4, 0x1111> yyyy;
+		Swizzle4<Vector4, 0x2111> zyyy;
+		Swizzle4<Vector4, 0x3111> wyyy;
+		Swizzle4<Vector4, 0x0211> xzyy;
+		Swizzle4<Vector4, 0x1211> yzyy;
+		Swizzle4<Vector4, 0x2211> zzyy;
+		Swizzle4<Vector4, 0x3211> wzyy;
+		Swizzle4<Vector4, 0x0311> xwyy;
+		Swizzle4<Vector4, 0x1311> ywyy;
+		Swizzle4<Vector4, 0x2311> zwyy;
+		Swizzle4<Vector4, 0x3311> wwyy;
+		Swizzle4<Vector4, 0x0021> xxzy;
+		Swizzle4<Vector4, 0x1021> yxzy;
+		Swizzle4<Vector4, 0x2021> zxzy;
+		Swizzle4<Vector4, 0x3021> wxzy;
+		Swizzle4<Vector4, 0x0121> xyzy;
+		Swizzle4<Vector4, 0x1121> yyzy;
+		Swizzle4<Vector4, 0x2121> zyzy;
+		Swizzle4<Vector4, 0x3121> wyzy;
+		Swizzle4<Vector4, 0x0221> xzzy;
+		Swizzle4<Vector4, 0x1221> yzzy;
+		Swizzle4<Vector4, 0x2221> zzzy;
+		Swizzle4<Vector4, 0x3221> wzzy;
+		Swizzle4<Vector4, 0x0321> xwzy;
+		Swizzle4<Vector4, 0x1321> ywzy;
+		Swizzle4<Vector4, 0x2321> zwzy;
+		Swizzle4<Vector4, 0x3321> wwzy;
+		Swizzle4<Vector4, 0x0031> xxwy;
+		Swizzle4<Vector4, 0x1031> yxwy;
+		Swizzle4<Vector4, 0x2031> zxwy;
+		Swizzle4<Vector4, 0x3031> wxwy;
+		Swizzle4<Vector4, 0x0131> xywy;
+		Swizzle4<Vector4, 0x1131> yywy;
+		Swizzle4<Vector4, 0x2131> zywy;
+		Swizzle4<Vector4, 0x3131> wywy;
+		Swizzle4<Vector4, 0x0231> xzwy;
+		Swizzle4<Vector4, 0x1231> yzwy;
+		Swizzle4<Vector4, 0x2231> zzwy;
+		Swizzle4<Vector4, 0x3231> wzwy;
+		Swizzle4<Vector4, 0x0331> xwwy;
+		Swizzle4<Vector4, 0x1331> ywwy;
+		Swizzle4<Vector4, 0x2331> zwwy;
+		Swizzle4<Vector4, 0x3331> wwwy;
+		Swizzle4<Vector4, 0x0002> xxxz;
+		Swizzle4<Vector4, 0x1002> yxxz;
+		Swizzle4<Vector4, 0x2002> zxxz;
+		Swizzle4<Vector4, 0x3002> wxxz;
+		Swizzle4<Vector4, 0x0102> xyxz;
+		Swizzle4<Vector4, 0x1102> yyxz;
+		Swizzle4<Vector4, 0x2102> zyxz;
+		Swizzle4<Vector4, 0x3102> wyxz;
+		Swizzle4<Vector4, 0x0202> xzxz;
+		Swizzle4<Vector4, 0x1202> yzxz;
+		Swizzle4<Vector4, 0x2202> zzxz;
+		Swizzle4<Vector4, 0x3202> wzxz;
+		Swizzle4<Vector4, 0x0302> xwxz;
+		Swizzle4<Vector4, 0x1302> ywxz;
+		Swizzle4<Vector4, 0x2302> zwxz;
+		Swizzle4<Vector4, 0x3302> wwxz;
+		Swizzle4<Vector4, 0x0012> xxyz;
+		Swizzle4<Vector4, 0x1012> yxyz;
+		Swizzle4<Vector4, 0x2012> zxyz;
+		Swizzle4<Vector4, 0x3012> wxyz;
+		Swizzle4<Vector4, 0x0112> xyyz;
+		Swizzle4<Vector4, 0x1112> yyyz;
+		Swizzle4<Vector4, 0x2112> zyyz;
+		Swizzle4<Vector4, 0x3112> wyyz;
+		Swizzle4<Vector4, 0x0212> xzyz;
+		Swizzle4<Vector4, 0x1212> yzyz;
+		Swizzle4<Vector4, 0x2212> zzyz;
+		Swizzle4<Vector4, 0x3212> wzyz;
+		Swizzle4<Vector4, 0x0312> xwyz;
+		Swizzle4<Vector4, 0x1312> ywyz;
+		Swizzle4<Vector4, 0x2312> zwyz;
+		Swizzle4<Vector4, 0x3312> wwyz;
+		Swizzle4<Vector4, 0x0022> xxzz;
+		Swizzle4<Vector4, 0x1022> yxzz;
+		Swizzle4<Vector4, 0x2022> zxzz;
+		Swizzle4<Vector4, 0x3022> wxzz;
+		Swizzle4<Vector4, 0x0122> xyzz;
+		Swizzle4<Vector4, 0x1122> yyzz;
+		Swizzle4<Vector4, 0x2122> zyzz;
+		Swizzle4<Vector4, 0x3122> wyzz;
+		Swizzle4<Vector4, 0x0222> xzzz;
+		Swizzle4<Vector4, 0x1222> yzzz;
+		Swizzle4<Vector4, 0x2222> zzzz;
+		Swizzle4<Vector4, 0x3222> wzzz;
+		Swizzle4<Vector4, 0x0322> xwzz;
+		Swizzle4<Vector4, 0x1322> ywzz;
+		Swizzle4<Vector4, 0x2322> zwzz;
+		Swizzle4<Vector4, 0x3322> wwzz;
+		Swizzle4<Vector4, 0x0032> xxwz;
+		Swizzle4<Vector4, 0x1032> yxwz;
+		Swizzle4<Vector4, 0x2032> zxwz;
+		Swizzle4<Vector4, 0x3032> wxwz;
+		Swizzle4<Vector4, 0x0132> xywz;
+		Swizzle4<Vector4, 0x1132> yywz;
+		Swizzle4<Vector4, 0x2132> zywz;
+		Swizzle4<Vector4, 0x3132> wywz;
+		Swizzle4<Vector4, 0x0232> xzwz;
+		Swizzle4<Vector4, 0x1232> yzwz;
+		Swizzle4<Vector4, 0x2232> zzwz;
+		Swizzle4<Vector4, 0x3232> wzwz;
+		Swizzle4<Vector4, 0x0332> xwwz;
+		Swizzle4<Vector4, 0x1332> ywwz;
+		Swizzle4<Vector4, 0x2332> zwwz;
+		Swizzle4<Vector4, 0x3332> wwwz;
+		Swizzle4<Vector4, 0x0003> xxxw;
+		Swizzle4<Vector4, 0x1003> yxxw;
+		Swizzle4<Vector4, 0x2003> zxxw;
+		Swizzle4<Vector4, 0x3003> wxxw;
+		Swizzle4<Vector4, 0x0103> xyxw;
+		Swizzle4<Vector4, 0x1103> yyxw;
+		Swizzle4<Vector4, 0x2103> zyxw;
+		Swizzle4<Vector4, 0x3103> wyxw;
+		Swizzle4<Vector4, 0x0203> xzxw;
+		Swizzle4<Vector4, 0x1203> yzxw;
+		Swizzle4<Vector4, 0x2203> zzxw;
+		Swizzle4<Vector4, 0x3203> wzxw;
+		Swizzle4<Vector4, 0x0303> xwxw;
+		Swizzle4<Vector4, 0x1303> ywxw;
+		Swizzle4<Vector4, 0x2303> zwxw;
+		Swizzle4<Vector4, 0x3303> wwxw;
+		Swizzle4<Vector4, 0x0013> xxyw;
+		Swizzle4<Vector4, 0x1013> yxyw;
+		Swizzle4<Vector4, 0x2013> zxyw;
+		Swizzle4<Vector4, 0x3013> wxyw;
+		Swizzle4<Vector4, 0x0113> xyyw;
+		Swizzle4<Vector4, 0x1113> yyyw;
+		Swizzle4<Vector4, 0x2113> zyyw;
+		Swizzle4<Vector4, 0x3113> wyyw;
+		Swizzle4<Vector4, 0x0213> xzyw;
+		Swizzle4<Vector4, 0x1213> yzyw;
+		Swizzle4<Vector4, 0x2213> zzyw;
+		Swizzle4<Vector4, 0x3213> wzyw;
+		Swizzle4<Vector4, 0x0313> xwyw;
+		Swizzle4<Vector4, 0x1313> ywyw;
+		Swizzle4<Vector4, 0x2313> zwyw;
+		Swizzle4<Vector4, 0x3313> wwyw;
+		Swizzle4<Vector4, 0x0023> xxzw;
+		Swizzle4<Vector4, 0x1023> yxzw;
+		Swizzle4<Vector4, 0x2023> zxzw;
+		Swizzle4<Vector4, 0x3023> wxzw;
 		SwizzleMask4<Vector4, 0x0123> xyzw;
-		Swizzle4<Vector4, 0x1123>     yyzw;
-		Swizzle4<Vector4, 0x2123>     zyzw;
-		Swizzle4<Vector4, 0x3123>     wyzw;
-		Swizzle4<Vector4, 0x0223>     xzzw;
-		Swizzle4<Vector4, 0x1223>     yzzw;
-		Swizzle4<Vector4, 0x2223>     zzzw;
-		Swizzle4<Vector4, 0x3223>     wzzw;
-		Swizzle4<Vector4, 0x0323>     xwzw;
-		Swizzle4<Vector4, 0x1323>     ywzw;
-		Swizzle4<Vector4, 0x2323>     zwzw;
-		Swizzle4<Vector4, 0x3323>     wwzw;
-		Swizzle4<Vector4, 0x0033>     xxww;
-		Swizzle4<Vector4, 0x1033>     yxww;
-		Swizzle4<Vector4, 0x2033>     zxww;
-		Swizzle4<Vector4, 0x3033>     wxww;
-		Swizzle4<Vector4, 0x0133>     xyww;
-		Swizzle4<Vector4, 0x1133>     yyww;
-		Swizzle4<Vector4, 0x2133>     zyww;
-		Swizzle4<Vector4, 0x3133>     wyww;
-		Swizzle4<Vector4, 0x0233>     xzww;
-		Swizzle4<Vector4, 0x1233>     yzww;
-		Swizzle4<Vector4, 0x2233>     zzww;
-		Swizzle4<Vector4, 0x3233>     wzww;
-		Swizzle4<Vector4, 0x0333>     xwww;
-		Swizzle4<Vector4, 0x1333>     ywww;
-		Swizzle4<Vector4, 0x2333>     zwww;
-		Swizzle4<Vector4, 0x3333>     wwww;
+		Swizzle4<Vector4, 0x1123> yyzw;
+		Swizzle4<Vector4, 0x2123> zyzw;
+		Swizzle4<Vector4, 0x3123> wyzw;
+		Swizzle4<Vector4, 0x0223> xzzw;
+		Swizzle4<Vector4, 0x1223> yzzw;
+		Swizzle4<Vector4, 0x2223> zzzw;
+		Swizzle4<Vector4, 0x3223> wzzw;
+		Swizzle4<Vector4, 0x0323> xwzw;
+		Swizzle4<Vector4, 0x1323> ywzw;
+		Swizzle4<Vector4, 0x2323> zwzw;
+		Swizzle4<Vector4, 0x3323> wwzw;
+		Swizzle4<Vector4, 0x0033> xxww;
+		Swizzle4<Vector4, 0x1033> yxww;
+		Swizzle4<Vector4, 0x2033> zxww;
+		Swizzle4<Vector4, 0x3033> wxww;
+		Swizzle4<Vector4, 0x0133> xyww;
+		Swizzle4<Vector4, 0x1133> yyww;
+		Swizzle4<Vector4, 0x2133> zyww;
+		Swizzle4<Vector4, 0x3133> wyww;
+		Swizzle4<Vector4, 0x0233> xzww;
+		Swizzle4<Vector4, 0x1233> yzww;
+		Swizzle4<Vector4, 0x2233> zzww;
+		Swizzle4<Vector4, 0x3233> wzww;
+		Swizzle4<Vector4, 0x0333> xwww;
+		Swizzle4<Vector4, 0x1333> ywww;
+		Swizzle4<Vector4, 0x2333> zwww;
+		Swizzle4<Vector4, 0x3333> wwww;
 	};
 };
 
@@ -1935,8 +1936,14 @@
 RValue<Int4> CmpNEQ(RValue<Int4> x, RValue<Int4> y);
 RValue<Int4> CmpNLT(RValue<Int4> x, RValue<Int4> y);
 RValue<Int4> CmpNLE(RValue<Int4> x, RValue<Int4> y);
-inline RValue<Int4> CmpGT(RValue<Int4> x, RValue<Int4> y) { return CmpNLE(x, y); }
-inline RValue<Int4> CmpGE(RValue<Int4> x, RValue<Int4> y) { return CmpNLT(x, y); }
+inline RValue<Int4> CmpGT(RValue<Int4> x, RValue<Int4> y)
+{
+	return CmpNLE(x, y);
+}
+inline RValue<Int4> CmpGE(RValue<Int4> x, RValue<Int4> y)
+{
+	return CmpNLT(x, y);
+}
 RValue<Int4> Max(RValue<Int4> x, RValue<Int4> y);
 RValue<Int4> Min(RValue<Int4> x, RValue<Int4> y);
 RValue<Int4> RoundInt(RValue<Float4> cast);
@@ -2022,8 +2029,14 @@
 RValue<UInt4> CmpNEQ(RValue<UInt4> x, RValue<UInt4> y);
 RValue<UInt4> CmpNLT(RValue<UInt4> x, RValue<UInt4> y);
 RValue<UInt4> CmpNLE(RValue<UInt4> x, RValue<UInt4> y);
-inline RValue<UInt4> CmpGT(RValue<UInt4> x, RValue<UInt4> y) { return CmpNLE(x, y); }
-inline RValue<UInt4> CmpGE(RValue<UInt4> x, RValue<UInt4> y) { return CmpNLT(x, y); }
+inline RValue<UInt4> CmpGT(RValue<UInt4> x, RValue<UInt4> y)
+{
+	return CmpNLE(x, y);
+}
+inline RValue<UInt4> CmpGE(RValue<UInt4> x, RValue<UInt4> y)
+{
+	return CmpNLT(x, y);
+}
 RValue<UInt4> Max(RValue<UInt4> x, RValue<UInt4> y);
 RValue<UInt4> Min(RValue<UInt4> x, RValue<UInt4> y);
 RValue<UInt4> MulHigh(RValue<UInt4> x, RValue<UInt4> y);
@@ -2058,7 +2071,7 @@
 	template<int T>
 	Float(const SwizzleMask1<Float4, T> &rhs);
 
-//	RValue<Float> operator=(float rhs);   // FIXME: Implement
+	//	RValue<Float> operator=(float rhs);   // FIXME: Implement
 	RValue<Float> operator=(RValue<Float> rhs);
 	RValue<Float> operator=(const Float &rhs);
 	RValue<Float> operator=(const Reference<Float> &rhs);
@@ -2128,35 +2141,35 @@
 class Float2 : public LValue<Float2>
 {
 public:
-//	explicit Float2(RValue<Byte2> cast);
-//	explicit Float2(RValue<Short2> cast);
-//	explicit Float2(RValue<UShort2> cast);
-//	explicit Float2(RValue<Int2> cast);
-//	explicit Float2(RValue<UInt2> cast);
+	//	explicit Float2(RValue<Byte2> cast);
+	//	explicit Float2(RValue<Short2> cast);
+	//	explicit Float2(RValue<UShort2> cast);
+	//	explicit Float2(RValue<Int2> cast);
+	//	explicit Float2(RValue<UInt2> cast);
 	explicit Float2(RValue<Float4> cast);
 
 	Float2() = default;
-//	Float2(float x, float y);
-//	Float2(RValue<Float2> rhs);
-//	Float2(const Float2 &rhs);
-//	Float2(const Reference<Float2> &rhs);
-//	Float2(RValue<Float> rhs);
-//	Float2(const Float &rhs);
-//	Float2(const Reference<Float> &rhs);
+	//	Float2(float x, float y);
+	//	Float2(RValue<Float2> rhs);
+	//	Float2(const Float2 &rhs);
+	//	Float2(const Reference<Float2> &rhs);
+	//	Float2(RValue<Float> rhs);
+	//	Float2(const Float &rhs);
+	//	Float2(const Reference<Float> &rhs);
 
-//	template<int T>
-//	Float2(const SwizzleMask1<T> &rhs);
+	//	template<int T>
+	//	Float2(const SwizzleMask1<T> &rhs);
 
-//	RValue<Float2> operator=(float replicate);
-//	RValue<Float2> operator=(RValue<Float2> rhs);
-//	RValue<Float2> operator=(const Float2 &rhs);
-//	RValue<Float2> operator=(const Reference<Float2> &rhs);
-//	RValue<Float2> operator=(RValue<Float> rhs);
-//	RValue<Float2> operator=(const Float &rhs);
-//	RValue<Float2> operator=(const Reference<Float> &rhs);
+	//	RValue<Float2> operator=(float replicate);
+	//	RValue<Float2> operator=(RValue<Float2> rhs);
+	//	RValue<Float2> operator=(const Float2 &rhs);
+	//	RValue<Float2> operator=(const Reference<Float2> &rhs);
+	//	RValue<Float2> operator=(RValue<Float> rhs);
+	//	RValue<Float2> operator=(const Float &rhs);
+	//	RValue<Float2> operator=(const Reference<Float> &rhs);
 
-//	template<int T>
-//	RValue<Float2> operator=(const SwizzleMask1<T> &rhs);
+	//	template<int T>
+	//	RValue<Float2> operator=(const SwizzleMask1<T> &rhs);
 
 	static Type *getType();
 };
@@ -2231,6 +2244,7 @@
 	static Type *getType();
 	static Float4 negative_inf();
 	static Float4 positive_inf();
+
 private:
 	void constant(float x, float y, float z, float w);
 	void infinity_constant(bool negative);
@@ -2272,8 +2286,14 @@
 RValue<Int4> CmpNEQ(RValue<Float4> x, RValue<Float4> y);
 RValue<Int4> CmpNLT(RValue<Float4> x, RValue<Float4> y);
 RValue<Int4> CmpNLE(RValue<Float4> x, RValue<Float4> y);
-inline RValue<Int4> CmpGT(RValue<Float4> x, RValue<Float4> y) { return CmpNLE(x, y); }
-inline RValue<Int4> CmpGE(RValue<Float4> x, RValue<Float4> y) { return CmpNLT(x, y); }
+inline RValue<Int4> CmpGT(RValue<Float4> x, RValue<Float4> y)
+{
+	return CmpNLE(x, y);
+}
+inline RValue<Int4> CmpGE(RValue<Float4> x, RValue<Float4> y)
+{
+	return CmpNLT(x, y);
+}
 
 // Unordered comparison functions
 RValue<Int4> CmpUEQ(RValue<Float4> x, RValue<Float4> y);
@@ -2282,8 +2302,14 @@
 RValue<Int4> CmpUNEQ(RValue<Float4> x, RValue<Float4> y);
 RValue<Int4> CmpUNLT(RValue<Float4> x, RValue<Float4> y);
 RValue<Int4> CmpUNLE(RValue<Float4> x, RValue<Float4> y);
-inline RValue<Int4> CmpUGT(RValue<Float4> x, RValue<Float4> y) { return CmpUNLE(x, y); }
-inline RValue<Int4> CmpUGE(RValue<Float4> x, RValue<Float4> y) { return CmpUNLT(x, y); }
+inline RValue<Int4> CmpUGT(RValue<Float4> x, RValue<Float4> y)
+{
+	return CmpUNLE(x, y);
+}
+inline RValue<Int4> CmpUGE(RValue<Float4> x, RValue<Float4> y)
+{
+	return CmpUNLT(x, y);
+}
 
 RValue<Int4> IsInf(RValue<Float4> x);
 RValue<Int4> IsNan(RValue<Float4> x);
@@ -2337,14 +2363,16 @@
 {
 public:
 	template<class S>
-	Pointer(RValue<Pointer<S>> pointerS, int alignment = 1) : alignment(alignment)
+	Pointer(RValue<Pointer<S>> pointerS, int alignment = 1)
+	    : alignment(alignment)
 	{
 		Value *pointerT = Nucleus::createBitCast(pointerS.value, Nucleus::getPointerType(T::getType()));
 		LValue<Pointer<T>>::storeValue(pointerT);
 	}
 
 	template<class S>
-	Pointer(const Pointer<S> &pointer, int alignment = 1) : alignment(alignment)
+	Pointer(const Pointer<S> &pointer, int alignment = 1)
+	    : alignment(alignment)
 	{
 		Value *pointerS = pointer.loadValue();
 		Value *pointerT = Nucleus::createBitCast(pointerS, Nucleus::getPointerType(T::getType()));
@@ -2390,7 +2418,7 @@
 RValue<Pointer<Byte>> operator-=(Pointer<Byte> &lhs, RValue<Int> offset);
 RValue<Pointer<Byte>> operator-=(Pointer<Byte> &lhs, RValue<UInt> offset);
 
-template <typename T>
+template<typename T>
 RValue<Bool> operator==(const Pointer<T> &lhs, const Pointer<T> &rhs)
 {
 	return RValue<Bool>(Nucleus::createPtrEQ(lhs.loadValue(), rhs.loadValue()));
@@ -2456,7 +2484,7 @@
 
 	// self() returns the this pointer to this Array object.
 	// This function exists because operator&() is overloaded by LValue<T>.
-	inline Array* self() { return this; }
+	inline Array *self() { return this; }
 };
 
 //	RValue<Array<T>> operator++(Array<T> &val, int);   // Post-increment
@@ -2468,8 +2496,8 @@
 
 // ValueOf returns a rr::Value* for the given C-type, RValue<T>, LValue<T>
 // or Reference<T>.
-template <typename T>
-inline Value* ValueOf(const T &v)
+template<typename T>
+inline Value *ValueOf(const T &v)
 {
 	return ReactorType<T>::cast(v).loadValue();
 }
@@ -2479,7 +2507,7 @@
 template<class T>
 void Return(const T &ret)
 {
-	static_assert(CanBeUsedAsReturn< ReactorTypeT<T> >::value, "Unsupported type for Return()");
+	static_assert(CanBeUsedAsReturn<ReactorTypeT<T>>::value, "Unsupported type for Return()");
 	Nucleus::createRet(ValueOf<T>(ret));
 	// Place any unreachable instructions in an unreferenced block.
 	Nucleus::setInsertBlock(Nucleus::createBasicBlock());
@@ -2513,7 +2541,7 @@
 
 protected:
 	Nucleus *core;
-	std::vector<Type*> arguments;
+	std::vector<Type *> arguments;
 };
 
 template<typename Return>
@@ -2543,12 +2571,12 @@
 
 	// Hide base implementations of operator()
 
-	RoutineType operator()(const char* name, ...)
+	RoutineType operator()(const char *name, ...)
 	{
 		return RoutineType(BaseType::operator()(name));
 	}
 
-	RoutineType operator()(const Config::Edit& cfg, const char* name, ...)
+	RoutineType operator()(const Config::Edit &cfg, const char *name, ...)
 	{
 		return RoutineType(BaseType::operator()(cfg, name));
 	}
@@ -2563,11 +2591,12 @@
 namespace rr {
 
 template<class T>
-LValue<T>::LValue(int arraySize) : Variable(T::getType(), arraySize)
+LValue<T>::LValue(int arraySize)
+    : Variable(T::getType(), arraySize)
 {
 #ifdef ENABLE_RR_DEBUG_INFO
 	materialize();
-#endif // ENABLE_RR_DEBUG_INFO
+#endif  // ENABLE_RR_DEBUG_INFO
 }
 
 inline void Variable::materialize() const
@@ -2632,7 +2661,8 @@
 }
 
 template<class T>
-Reference<T>::Reference(Value *pointer, int alignment) : alignment(alignment)
+Reference<T>::Reference(Value *pointer, int alignment)
+    : alignment(alignment)
 {
 	address = pointer;
 }
@@ -2674,16 +2704,17 @@
 
 #ifdef ENABLE_RR_DEBUG_INFO
 template<class T>
-RValue<T>::RValue(const RValue<T> &rvalue) : value(rvalue.value)
+RValue<T>::RValue(const RValue<T> &rvalue)
+    : value(rvalue.value)
 {
 	RR_DEBUG_INFO_EMIT_VAR(value);
 }
-#endif // ENABLE_RR_DEBUG_INFO
+#endif  // ENABLE_RR_DEBUG_INFO
 
 template<class T>
 RValue<T>::RValue(Value *rvalue)
 {
-	assert(Nucleus::createBitCast(rvalue, T::getType()) == rvalue);   // Run-time type should match T, so bitcast is no-op.
+	assert(Nucleus::createBitCast(rvalue, T::getType()) == rvalue);  // Run-time type should match T, so bitcast is no-op.
 
 	value = rvalue;
 	RR_DEBUG_INFO_EMIT_VAR(value);
@@ -2766,7 +2797,7 @@
 }
 
 template<class Vector4, int T>
-SwizzleMask1<Vector4, T>::operator RValue<typename Scalar<Vector4>::Type>() const   // FIXME: Call a non-template function
+SwizzleMask1<Vector4, T>::operator RValue<typename Scalar<Vector4>::Type>() const  // FIXME: Call a non-template function
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
 	return Extract(*parent, T & 0x3);
@@ -2796,7 +2827,7 @@
 }
 
 template<class Vector4, int T>
-RValue<Vector4> SwizzleMask1<Vector4, T>::operator=(RValue<typename Scalar<Vector4>::Type> rhs)   // FIXME: Call a non-template function
+RValue<Vector4> SwizzleMask1<Vector4, T>::operator=(RValue<typename Scalar<Vector4>::Type> rhs)  // FIXME: Call a non-template function
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
 	return *parent = Insert(*parent, rhs, T & 0x3);
@@ -2831,40 +2862,46 @@
 }
 
 template<int T>
-Float4::Float4(const SwizzleMask1<Float4, T> &rhs) : XYZW(this)
+Float4::Float4(const SwizzleMask1<Float4, T> &rhs)
+    : XYZW(this)
 {
 	*this = rhs.operator RValue<Float4>();
 }
 
 template<int T>
-Float4::Float4(const Swizzle4<Float4, T> &rhs) : XYZW(this)
+Float4::Float4(const Swizzle4<Float4, T> &rhs)
+    : XYZW(this)
 {
 	*this = rhs.operator RValue<Float4>();
 }
 
 template<int X, int Y>
-Float4::Float4(const Swizzle2<Float4, X> &x, const Swizzle2<Float4, Y> &y) : XYZW(this)
+Float4::Float4(const Swizzle2<Float4, X> &x, const Swizzle2<Float4, Y> &y)
+    : XYZW(this)
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
 	*this = ShuffleLowHigh(*x.parent, *y.parent, (uint16_t(X) & 0xFF00u) | (uint16_t(Y >> 8) & 0x00FFu));
 }
 
 template<int X, int Y>
-Float4::Float4(const SwizzleMask2<Float4, X> &x, const Swizzle2<Float4, Y> &y) : XYZW(this)
+Float4::Float4(const SwizzleMask2<Float4, X> &x, const Swizzle2<Float4, Y> &y)
+    : XYZW(this)
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
 	*this = ShuffleLowHigh(*x.parent, *y.parent, (uint16_t(X) & 0xFF00u) | (uint16_t(Y >> 8) & 0x00FFu));
 }
 
 template<int X, int Y>
-Float4::Float4(const Swizzle2<Float4, X> &x, const SwizzleMask2<Float4, Y> &y) : XYZW(this)
+Float4::Float4(const Swizzle2<Float4, X> &x, const SwizzleMask2<Float4, Y> &y)
+    : XYZW(this)
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
 	*this = ShuffleLowHigh(*x.parent, *y.parent, (uint16_t(X) & 0xFF00u) | (uint16_t(Y >> 8) & 0x00FFu));
 }
 
 template<int X, int Y>
-Float4::Float4(const SwizzleMask2<Float4, X> &x, const SwizzleMask2<Float4, Y> &y) : XYZW(this)
+Float4::Float4(const SwizzleMask2<Float4, X> &x, const SwizzleMask2<Float4, Y> &y)
+    : XYZW(this)
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
 	*this = ShuffleLowHigh(*x.parent, *y.parent, (uint16_t(X) & 0xFF00u) | (uint16_t(Y >> 8) & 0x00FFu));
@@ -2883,42 +2920,49 @@
 }
 
 // Returns a reactor pointer to the fixed-address ptr.
-RValue<Pointer<Byte>> ConstantPointer(void const * ptr);
+RValue<Pointer<Byte>> ConstantPointer(void const *ptr);
 
 // Returns a reactor pointer to an immutable copy of the data of size bytes.
-RValue<Pointer<Byte>> ConstantData(void const * data, size_t size);
+RValue<Pointer<Byte>> ConstantData(void const *data, size_t size);
 
 template<class T>
-Pointer<T>::Pointer(Argument<Pointer<T>> argument) : alignment(1)
+Pointer<T>::Pointer(Argument<Pointer<T>> argument)
+    : alignment(1)
 {
 	LValue<Pointer<T>>::storeValue(argument.value);
 }
 
 template<class T>
-Pointer<T>::Pointer() : alignment(1) {}
+Pointer<T>::Pointer()
+    : alignment(1)
+{}
 
 template<class T>
-Pointer<T>::Pointer(RValue<Pointer<T>> rhs) : alignment(1)
+Pointer<T>::Pointer(RValue<Pointer<T>> rhs)
+    : alignment(1)
 {
 	LValue<Pointer<T>>::storeValue(rhs.value);
 }
 
 template<class T>
-Pointer<T>::Pointer(const Pointer<T> &rhs) : alignment(rhs.alignment)
+Pointer<T>::Pointer(const Pointer<T> &rhs)
+    : alignment(rhs.alignment)
 {
 	Value *value = rhs.loadValue();
 	LValue<Pointer<T>>::storeValue(value);
 }
 
 template<class T>
-Pointer<T>::Pointer(const Reference<Pointer<T>> &rhs) : alignment(rhs.getAlignment())
+Pointer<T>::Pointer(const Reference<Pointer<T>> &rhs)
+    : alignment(rhs.getAlignment())
 {
 	Value *value = rhs.loadValue();
 	LValue<Pointer<T>>::storeValue(value);
 }
 
 template<class T>
-Pointer<T>::Pointer(std::nullptr_t) : alignment(1)
+Pointer<T>::Pointer(std::nullptr_t)
+    : alignment(1)
 {
 	Value *value = Nucleus::createNullPointer(T::getType());
 	LValue<Pointer<T>>::storeValue(value);
@@ -3008,7 +3052,8 @@
 }
 
 template<class T, int S>
-Array<T, S>::Array(int size) : LValue<T>(size)
+Array<T, S>::Array(int size)
+    : LValue<T>(size)
 {
 }
 
@@ -3110,7 +3155,7 @@
 {
 	core = new Nucleus();
 
-	Type *types[] = {Arguments::getType()...};
+	Type *types[] = { Arguments::getType()... };
 	for(Type *type : types)
 	{
 		if(type != Void::getType())
@@ -3204,12 +3249,13 @@
 // Calls the function pointer fptr with the given arguments, return type
 // and parameter types. Returns the call's return value if the function has
 // a non-void return type.
-Value* Call(RValue<Pointer<Byte>> fptr, Type* retTy, std::initializer_list<Value*> args, std::initializer_list<Type*> paramTys);
+Value *Call(RValue<Pointer<Byte>> fptr, Type *retTy, std::initializer_list<Value *> args, std::initializer_list<Type *> paramTys);
 
-template <typename F>
-class CallHelper {};
+template<typename F>
+class CallHelper
+{};
 
-template<typename Return, typename ... Arguments>
+template<typename Return, typename... Arguments>
 class CallHelper<Return(Arguments...)>
 {
 public:
@@ -3218,74 +3264,77 @@
 	static inline RReturn Call(Return(fptr)(Arguments...), CToReactorT<Arguments>... args)
 	{
 		return RValue<RReturn>(rr::Call(
-			ConstantPointer(reinterpret_cast<void*>(fptr)),
-			RReturn::getType(),
-			{ ValueOf(args) ... },
-			{ CToReactorT<Arguments>::getType() ... }));
+		    ConstantPointer(reinterpret_cast<void *>(fptr)),
+		    RReturn::getType(),
+		    { ValueOf(args)... },
+		    { CToReactorT<Arguments>::getType()... }));
 	}
 
 	static inline RReturn Call(Pointer<Byte> fptr, CToReactorT<Arguments>... args)
 	{
 		return RValue<RReturn>(rr::Call(
-			fptr,
-			RReturn::getType(),
-			{ ValueOf(args) ... },
-			{ CToReactorT<Arguments>::getType() ... }));
+		    fptr,
+		    RReturn::getType(),
+		    { ValueOf(args)... },
+		    { CToReactorT<Arguments>::getType()... }));
 	}
 };
 
-template<typename ... Arguments>
+template<typename... Arguments>
 class CallHelper<void(Arguments...)>
 {
 public:
 	static inline void Call(void(fptr)(Arguments...), CToReactorT<Arguments>... args)
 	{
-		rr::Call(ConstantPointer(reinterpret_cast<void*>(fptr)),
-			Void::getType(),
-			{ ValueOf(args) ... },
-			{ CToReactorT<Arguments>::getType() ... });
+		rr::Call(ConstantPointer(reinterpret_cast<void *>(fptr)),
+		         Void::getType(),
+		         { ValueOf(args)... },
+		         { CToReactorT<Arguments>::getType()... });
 	}
 
 	static inline void Call(Pointer<Byte> fptr, CToReactorT<Arguments>... args)
 	{
 		rr::Call(fptr,
-			Void::getType(),
-			{ ValueOf(args) ... },
-			{ CToReactorT<Arguments>::getType() ... });
+		         Void::getType(),
+		         { ValueOf(args)... },
+		         { CToReactorT<Arguments>::getType()... });
 	}
 };
 
-template <typename T>
-inline ReactorTypeT<T> CastToReactor(const T& v) { return ReactorType<T>::cast(v); }
+template<typename T>
+inline ReactorTypeT<T> CastToReactor(const T &v)
+{
+	return ReactorType<T>::cast(v);
+}
 
 // Calls the static function pointer fptr with the given arguments args.
-template<typename Return, typename ... CArgs, typename ... RArgs>
-inline CToReactorT<Return> Call(Return(fptr)(CArgs...), RArgs&&... args)
+template<typename Return, typename... CArgs, typename... RArgs>
+inline CToReactorT<Return> Call(Return(fptr)(CArgs...), RArgs &&... args)
 {
 	return CallHelper<Return(CArgs...)>::Call(fptr, CastToReactor(std::forward<RArgs>(args))...);
 }
 
 // Calls the static function pointer fptr with the given arguments args.
 // Overload for calling functions with void return type.
-template<typename ... CArgs, typename ... RArgs>
-inline void Call(void(fptr)(CArgs...), RArgs&&... args)
+template<typename... CArgs, typename... RArgs>
+inline void Call(void(fptr)(CArgs...), RArgs &&... args)
 {
 	CallHelper<void(CArgs...)>::Call(fptr, CastToReactor(std::forward<RArgs>(args))...);
 }
 
 // Calls the member function pointer fptr with the given arguments args.
 // object can be a Class*, or a Pointer<Byte>.
-template<typename Return, typename Class, typename C, typename ... CArgs, typename ... RArgs>
-inline CToReactorT<Return> Call(Return(Class::* fptr)(CArgs...), C&& object, RArgs&&... args)
+template<typename Return, typename Class, typename C, typename... CArgs, typename... RArgs>
+inline CToReactorT<Return> Call(Return (Class::*fptr)(CArgs...), C &&object, RArgs &&... args)
 {
-	using Helper = CallHelper<Return(Class*, void*, CArgs...)>;
+	using Helper = CallHelper<Return(Class *, void *, CArgs...)>;
 	using fptrTy = decltype(fptr);
 
 	struct Static
 	{
-		static inline Return Call(Class* object, void* fptrptr, CArgs... args)
+		static inline Return Call(Class *object, void *fptrptr, CArgs... args)
 		{
-			auto fptr = *reinterpret_cast<fptrTy*>(fptrptr);
+			auto fptr = *reinterpret_cast<fptrTy *>(fptrptr);
 			return (object->*fptr)(std::forward<CArgs>(args)...);
 		}
 	};
@@ -3299,17 +3348,17 @@
 // Calls the member function pointer fptr with the given arguments args.
 // Overload for calling functions with void return type.
 // object can be a Class*, or a Pointer<Byte>.
-template<typename Class, typename C, typename ... CArgs, typename ... RArgs>
-inline void Call(void(Class::* fptr)(CArgs...), C&& object, RArgs&&... args)
+template<typename Class, typename C, typename... CArgs, typename... RArgs>
+inline void Call(void (Class::*fptr)(CArgs...), C &&object, RArgs &&... args)
 {
-	using Helper = CallHelper<void(Class*, void*, CArgs...)>;
+	using Helper = CallHelper<void(Class *, void *, CArgs...)>;
 	using fptrTy = decltype(fptr);
 
 	struct Static
 	{
-		static inline void Call(Class* object, void* fptrptr, CArgs... args)
+		static inline void Call(Class *object, void *fptrptr, CArgs... args)
 		{
-			auto fptr = *reinterpret_cast<fptrTy*>(fptrptr);
+			auto fptr = *reinterpret_cast<fptrTy *>(fptrptr);
 			(object->*fptr)(std::forward<CArgs>(args)...);
 		}
 	};
@@ -3322,8 +3371,8 @@
 
 // Calls the Reactor function pointer fptr with the signature
 // FUNCTION_SIGNATURE and arguments.
-template<typename FUNCTION_SIGNATURE, typename ... RArgs>
-inline void Call(Pointer<Byte> fptr, RArgs&& ... args)
+template<typename FUNCTION_SIGNATURE, typename... RArgs>
+inline void Call(Pointer<Byte> fptr, RArgs &&... args)
 {
 	CallHelper<FUNCTION_SIGNATURE>::Call(fptr, CastToReactor(std::forward<RArgs>(args))...);
 }
@@ -3335,7 +3384,8 @@
 class ForData
 {
 public:
-	ForData(bool init) : loopOnce(init)
+	ForData(bool init)
+	    : loopOnce(init)
 	{
 	}
 
@@ -3391,7 +3441,8 @@
 class IfElseData
 {
 public:
-	IfElseData(RValue<Bool> cmp) : iteration(0)
+	IfElseData(RValue<Bool> cmp)
+	    : iteration(0)
 	{
 		condition = cmp.value;
 
@@ -3442,39 +3493,48 @@
 	int iteration;
 };
 
-#define For(init, cond, inc) \
-for(ForData for__ = true; for__; for__ = false) \
-for(init; for__.setup() && for__.test(cond); inc, for__.end())
+#define For(init, cond, inc)                        \
+	for(ForData for__ = true; for__; for__ = false) \
+		for(init; for__.setup() && for__.test(cond); inc, for__.end())
 
 #define While(cond) For((void)0, cond, (void)0)
 
-#define Do                                            \
-{                                                     \
-	BasicBlock *body__ = Nucleus::createBasicBlock(); \
-	Nucleus::createBr(body__);                        \
-	Nucleus::setInsertBlock(body__);
+#define Do                                                \
+	{                                                     \
+		BasicBlock *body__ = Nucleus::createBasicBlock(); \
+		Nucleus::createBr(body__);                        \
+		Nucleus::setInsertBlock(body__);
 
 #define Until(cond)                                     \
 	BasicBlock *end__ = Nucleus::createBasicBlock();    \
 	Nucleus::createCondBr((cond).value, end__, body__); \
 	Nucleus::setInsertBlock(end__);                     \
-} do {} while(false) // Require a semi-colon at the end of the Until()
+	}                                                   \
+	do                                                  \
+	{                                                   \
+	} while(false)  // Require a semi-colon at the end of the Until()
 
-enum {IF_BLOCK__, ELSE_CLAUSE__, ELSE_BLOCK__, IFELSE_NUM__};
+enum
+{
+	IF_BLOCK__,
+	ELSE_CLAUSE__,
+	ELSE_BLOCK__,
+	IFELSE_NUM__
+};
 
-#define If(cond)                                                    \
-for(IfElseData ifElse__(cond); ifElse__ < IFELSE_NUM__; ++ifElse__) \
-if(ifElse__ == IF_BLOCK__)
+#define If(cond)                                                        \
+	for(IfElseData ifElse__(cond); ifElse__ < IFELSE_NUM__; ++ifElse__) \
+		if(ifElse__ == IF_BLOCK__)
 
-#define Else                       \
-else if(ifElse__ == ELSE_CLAUSE__) \
-{                                  \
-	ifElse__.elseClause();         \
-}                                  \
-else  // ELSE_BLOCK__
+#define Else                           \
+	else if(ifElse__ == ELSE_CLAUSE__) \
+	{                                  \
+		ifElse__.elseClause();         \
+	}                                  \
+	else  // ELSE_BLOCK__
 
 }  // namespace rr
 
 #include "Traits.inl"
 
-#endif   // rr_Reactor_hpp
+#endif  // rr_Reactor_hpp
diff --git a/src/Reactor/ReactorUnitTests.cpp b/src/Reactor/ReactorUnitTests.cpp
index 8ffeb7c..ff69d2f 100644
--- a/src/Reactor/ReactorUnitTests.cpp
+++ b/src/Reactor/ReactorUnitTests.cpp
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "Reactor.hpp"
 #include "Coroutine.hpp"
+#include "Reactor.hpp"
 
 #include "gtest/gtest.h"
 
@@ -30,8 +30,12 @@
 struct float4_value
 {
 	float4_value() = default;
-	explicit float4_value(float rep) : v{ rep, rep, rep, rep } {}
-	float4_value(float x, float y, float z, float w) : v{ x, y, z, w } {}
+	explicit float4_value(float rep)
+	    : v{ rep, rep, rep, rep }
+	{}
+	float4_value(float x, float y, float z, float w)
+	    : v{ x, y, z, w }
+	{}
 
 	bool operator==(const float4_value &rhs) const
 	{
@@ -39,7 +43,8 @@
 	}
 
 	// For gtest printing
-	friend std::ostream& operator<<(std::ostream& os, const float4_value& value) {
+	friend std::ostream &operator<<(std::ostream &os, const float4_value &value)
+	{
 		return os << "[" << value.v[0] << ", " << value.v[1] << ", " << value.v[2] << ", " << value.v[3] << "]";
 	}
 
@@ -47,26 +52,25 @@
 };
 
 // For gtest printing of pairs
-namespace std
+namespace std {
+template<typename T, typename U>
+std::ostream &operator<<(std::ostream &os, const std::pair<T, U> &value)
 {
-	template <typename T, typename U>
-	std::ostream& operator<<(std::ostream& os, const std::pair<T, U>& value) {
-		return os << "{ " << value.first << ", " << value.second << " }";
-	}
+	return os << "{ " << value.first << ", " << value.second << " }";
 }
-
+}  // namespace std
 
 // Invoke a void(float4*) routine on &v.v, returning wrapped result in v
-template <typename RoutineType>
-float4_value invokeRoutine(RoutineType& routine, float4_value v)
+template<typename RoutineType>
+float4_value invokeRoutine(RoutineType &routine, float4_value v)
 {
 	routine(&v.v);
 	return v;
 }
 
 // Invoke a void(float4*, float4*) routine on &v1.v, &v2.v returning wrapped result in v1
-template <typename RoutineType>
-float4_value invokeRoutine(RoutineType& routine, float4_value v1, float4_value v2)
+template<typename RoutineType>
+float4_value invokeRoutine(RoutineType &routine, float4_value v1, float4_value v2)
 {
 	routine(&v1.v, &v2.v);
 	return v1;
@@ -89,7 +93,7 @@
 
 TEST(ReactorUnitTests, Sample)
 {
-	FunctionT<int(int*, int)> function;
+	FunctionT<int(int *, int)> function;
 	{
 		Pointer<Int> p = function.Arg<0>();
 		Int x = p[-1];
@@ -114,7 +118,7 @@
 
 	if(routine)
 	{
-		int one[2] = {1, 0};
+		int one[2] = { 1, 0 };
 		int result = routine(&one[1], 2);
 		EXPECT_EQ(result, reference(&one[1], 2));
 	}
@@ -146,7 +150,7 @@
 	if(routine)
 	{
 		int result = routine();
-		EXPECT_EQ(result, result);   // Anything is fine, just don't crash
+		EXPECT_EQ(result, result);  // Anything is fine, just don't crash
 	}
 }
 
@@ -197,15 +201,15 @@
 
 TEST(ReactorUnitTests, SubVectorLoadStore)
 {
-	FunctionT<int(void*, void*)> function;
+	FunctionT<int(void *, void *)> function;
 	{
 		Pointer<Byte> in = function.Arg<0>();
 		Pointer<Byte> out = function.Arg<1>();
 
-		*Pointer<Int4>(out + 16 * 0)   = *Pointer<Int4>(in + 16 * 0);
+		*Pointer<Int4>(out + 16 * 0) = *Pointer<Int4>(in + 16 * 0);
 		*Pointer<Short4>(out + 16 * 1) = *Pointer<Short4>(in + 16 * 1);
-		*Pointer<Byte8>(out + 16 * 2)  = *Pointer<Byte8>(in + 16 * 2);
-		*Pointer<Byte4>(out + 16 * 3)  = *Pointer<Byte4>(in + 16 * 3);
+		*Pointer<Byte8>(out + 16 * 2) = *Pointer<Byte8>(in + 16 * 2);
+		*Pointer<Byte4>(out + 16 * 3) = *Pointer<Byte4>(in + 16 * 3);
 		*Pointer<Short2>(out + 16 * 4) = *Pointer<Short2>(in + 16 * 4);
 
 		Return(0);
@@ -215,17 +219,17 @@
 
 	if(routine)
 	{
-		int8_t in[16 * 5] = {1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15, 16,
-			                    17, 18, 19, 20, 21, 22, 23, 24,  0,  0,  0,  0,  0,  0,  0,  0,
-			                    25, 26, 27, 28, 29, 30, 31, 32,  0,  0,  0,  0,  0,  0,  0,  0,
-			                    33, 34, 35, 36,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-			                    37, 38, 39, 40,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0};
+		int8_t in[16 * 5] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+			                  17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 0, 0, 0, 0, 0, 0,
+			                  25, 26, 27, 28, 29, 30, 31, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+			                  33, 34, 35, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			                  37, 38, 39, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
 
-		int8_t out[16 * 5] = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-			                    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-			                    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-			                    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-			                    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1};
+		int8_t out[16 * 5] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+			                   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+			                   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+			                   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+			                   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 };
 
 		routine(in, out);
 
@@ -235,9 +239,9 @@
 			{
 				int i = row * 16 + col;
 
-				if(in[i] ==  0)
+				if(in[i] == 0)
 				{
-					EXPECT_EQ(out[i], -1) << "Row " << row << " column " << col <<  " not left untouched.";
+					EXPECT_EQ(out[i], -1) << "Row " << row << " column " << col << " not left untouched.";
 				}
 				else
 				{
@@ -250,7 +254,7 @@
 
 TEST(ReactorUnitTests, VectorConstant)
 {
-	FunctionT<int(void*)> function;
+	FunctionT<int(void *)> function;
 	{
 		Pointer<Byte> out = function.Arg<0>();
 
@@ -266,15 +270,15 @@
 
 	if(routine)
 	{
-		int8_t out[16 * 4] = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-			                    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-			                    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-			                    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1};
+		int8_t out[16 * 4] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+			                   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+			                   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+			                   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 };
 
-		int8_t exp[16 * 4] = {1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
-			                    17, 18, 19, 20, 21, 22, 23, 24, -1, -1, -1, -1, -1, -1, -1, -1,
-			                    25, 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, -1, -1, -1, -1, -1,
-			                    33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, -1, -1, -1, -1, -1};
+		int8_t exp[16 * 4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+			                   17, 18, 19, 20, 21, 22, 23, 24, -1, -1, -1, -1, -1, -1, -1, -1,
+			                   25, 26, 27, 28, 29, 30, 31, 32, -1, -1, -1, -1, -1, -1, -1, -1,
+			                   33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, -1, -1, -1, -1, -1 };
 
 		routine(out);
 
@@ -292,11 +296,11 @@
 
 TEST(ReactorUnitTests, Concatenate)
 {
-	FunctionT<int(void*)> function;
+	FunctionT<int(void *)> function;
 	{
 		Pointer<Byte> out = function.Arg<0>();
 
-		*Pointer<Int4>(out + 16 * 0)   = Int4(Int2(0x04030201, 0x08070605), Int2(0x0C0B0A09, 0x100F0E0D));
+		*Pointer<Int4>(out + 16 * 0) = Int4(Int2(0x04030201, 0x08070605), Int2(0x0C0B0A09, 0x100F0E0D));
 		*Pointer<Short8>(out + 16 * 1) = Short8(Short4(0x0201, 0x0403, 0x0605, 0x0807), Short4(0x0A09, 0x0C0B, 0x0E0D, 0x100F));
 
 		Return(0);
@@ -306,11 +310,11 @@
 
 	if(routine)
 	{
-		int8_t ref[16 * 5] = {1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15, 16,
-			                    1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15, 16};
+		int8_t ref[16 * 5] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+			                   1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
 
-		int8_t out[16 * 5] = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-			                    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1};
+		int8_t out[16 * 5] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+			                   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 };
 
 		routine(out);
 
@@ -328,8 +332,7 @@
 
 TEST(ReactorUnitTests, Swizzle)
 {
-	auto swizzleCode = [](int i) -> uint16_t
-	{
+	auto swizzleCode = [](int i) -> uint16_t {
 		auto x = (i >> 0) & 0x03;
 		auto y = (i >> 2) & 0x03;
 		auto z = (i >> 4) & 0x03;
@@ -338,7 +341,7 @@
 	};
 
 	{
-		FunctionT<int(void*)> function;
+		FunctionT<int(void *)> function;
 		{
 			Pointer<Byte> out = function.Arg<0>();
 
@@ -362,13 +365,13 @@
 			for(int i = 0; i < 256; i++)
 			{
 				*Pointer<Short4>(out + 16 * (512 + 6) + (8 * i)) =
-                                    Swizzle(Short4(1, 2, 3, 4), swizzleCode(i));
+				    Swizzle(Short4(1, 2, 3, 4), swizzleCode(i));
 			}
 
 			for(int i = 0; i < 256; i++)
 			{
 				*Pointer<Int4>(out + 16 * (512 + 6 + i) + (8 * 256)) =
-                                    Swizzle(Int4(1, 2, 3, 4), swizzleCode(i));
+				    Swizzle(Int4(1, 2, 3, 4), swizzleCode(i));
 			}
 
 			Return(0);
@@ -436,14 +439,14 @@
 
 			for(int i = 0; i < 256; i++)
 			{
-				EXPECT_EQ(out.i[4 + i/2][0 + (i%2) * 2] & 0xFFFF,
-                                          ((i >> 0) & 0x03) + 1);
-				EXPECT_EQ(out.i[4 + i/2][0 + (i%2) * 2] >> 16,
-                                          ((i >> 2) & 0x03) + 1);
-				EXPECT_EQ(out.i[4 + i/2][1 + (i%2) * 2] & 0xFFFF,
-                                          ((i >> 4) & 0x03) + 1);
-				EXPECT_EQ(out.i[4 + i/2][1 + (i%2) * 2] >> 16,
-                                          ((i >> 6) & 0x03) + 1);
+				EXPECT_EQ(out.i[4 + i / 2][0 + (i % 2) * 2] & 0xFFFF,
+				          ((i >> 0) & 0x03) + 1);
+				EXPECT_EQ(out.i[4 + i / 2][0 + (i % 2) * 2] >> 16,
+				          ((i >> 2) & 0x03) + 1);
+				EXPECT_EQ(out.i[4 + i / 2][1 + (i % 2) * 2] & 0xFFFF,
+				          ((i >> 4) & 0x03) + 1);
+				EXPECT_EQ(out.i[4 + i / 2][1 + (i % 2) * 2] >> 16,
+				          ((i >> 6) & 0x03) + 1);
 			}
 
 			for(int i = 0; i < 256; i++)
@@ -483,14 +486,13 @@
 
 		auto rangeIndexToSelect = [](int i) {
 			return static_cast<unsigned short>(
-				(((i >> 9) & 7) << 0) |
-				(((i >> 6) & 7) << 4) |
-				(((i >> 3) & 7) << 8) |
-				(((i >> 0) & 7) << 12)
-			);
+			    (((i >> 9) & 7) << 0) |
+			    (((i >> 6) & 7) << 4) |
+			    (((i >> 3) & 7) << 8) |
+			    (((i >> 0) & 7) << 12));
 		};
 
-		FunctionT<int(void*)> function;
+		FunctionT<int(void *)> function;
 		{
 			Pointer<Byte> out = function.Arg<0>();
 
@@ -554,7 +556,6 @@
 			}
 		}
 	}
-
 }
 
 TEST(ReactorUnitTests, Branching)
@@ -583,24 +584,23 @@
 			}
 
 			For(Int i = 0, i < 5, i++)
-				x += 10000;
+			    x += 10000;
 		}
 
-		For(Int i = 0, i < 10, i++)
-			for(int i = 0; i < 10; i++)
-				For(Int i = 0, i < 10, i++)
-				{
-					x += 1000000;
-				}
+		For(Int i = 0, i < 10, i++) for(int i = 0; i < 10; i++)
+		    For(Int i = 0, i < 10, i++)
+		{
+			x += 1000000;
+		}
 
 		For(Int i = 0, i < 2, i++)
-			If(x == 1000402222)
-			{
-				If(x != 1000402222)
-					x += 1000000000;
-			}
-			Else
-				x = -5;
+		    If(x == 1000402222)
+		{
+			If(x != 1000402222)
+			    x += 1000000000;
+		}
+		Else
+		    x = -5;
 
 		Return(x);
 	}
@@ -613,12 +613,11 @@
 
 		EXPECT_EQ(result, 1000402222);
 	}
-
 }
 
 TEST(ReactorUnitTests, MinMax)
 {
-	FunctionT<int(void*)> function;
+	FunctionT<int(void *)> function;
 	{
 		Pointer<Byte> out = function.Arg<0>();
 
@@ -702,7 +701,7 @@
 
 TEST(ReactorUnitTests, NotNeg)
 {
-	FunctionT<int(void*)> function;
+	FunctionT<int(void *)> function;
 	{
 		Pointer<Byte> out = function.Arg<0>();
 
@@ -780,13 +779,13 @@
 
 TEST(ReactorUnitTests, FPtoUI)
 {
-	FunctionT<int(void*)> function;
+	FunctionT<int(void *)> function;
 	{
 		Pointer<Byte> out = function.Arg<0>();
 
-		*Pointer<UInt>(out + 0)  = UInt(Float(0xF0000000u));
-		*Pointer<UInt>(out + 4)  = UInt(Float(0xC0000000u));
-		*Pointer<UInt>(out + 8)  = UInt(Float(0x00000001u));
+		*Pointer<UInt>(out + 0) = UInt(Float(0xF0000000u));
+		*Pointer<UInt>(out + 4) = UInt(Float(0xC0000000u));
+		*Pointer<UInt>(out + 8) = UInt(Float(0x00000001u));
 		*Pointer<UInt>(out + 12) = UInt(Float(0xF000F000u));
 
 		*Pointer<UInt4>(out + 16) = UInt4(Float4(0xF0000000u, 0x80000000u, 0x00000000u, 0xCCCC0000u));
@@ -818,7 +817,7 @@
 
 TEST(ReactorUnitTests, VectorCompare)
 {
-	FunctionT<int(void*)> function;
+	FunctionT<int(void *)> function;
 	{
 		Pointer<Byte> out = function.Arg<0>();
 
@@ -873,52 +872,52 @@
 
 TEST(ReactorUnitTests, SaturatedAddAndSubtract)
 {
-	FunctionT<int(void*)> function;
+	FunctionT<int(void *)> function;
 	{
 		Pointer<Byte> out = function.Arg<0>();
 
 		*Pointer<Byte8>(out + 8 * 0) =
-			AddSat(Byte8(1, 2, 3, 4, 5, 6, 7, 8),
-				    Byte8(7, 6, 5, 4, 3, 2, 1, 0));
+		    AddSat(Byte8(1, 2, 3, 4, 5, 6, 7, 8),
+		           Byte8(7, 6, 5, 4, 3, 2, 1, 0));
 		*Pointer<Byte8>(out + 8 * 1) =
-			AddSat(Byte8(0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE),
-				    Byte8(7, 6, 5, 4, 3, 2, 1, 0));
+		    AddSat(Byte8(0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE),
+		           Byte8(7, 6, 5, 4, 3, 2, 1, 0));
 		*Pointer<Byte8>(out + 8 * 2) =
-			SubSat(Byte8(1, 2, 3, 4, 5, 6, 7, 8),
-				    Byte8(7, 6, 5, 4, 3, 2, 1, 0));
+		    SubSat(Byte8(1, 2, 3, 4, 5, 6, 7, 8),
+		           Byte8(7, 6, 5, 4, 3, 2, 1, 0));
 
 		*Pointer<SByte8>(out + 8 * 3) =
-			AddSat(SByte8(1, 2, 3, 4, 5, 6, 7, 8),
-				    SByte8(7, 6, 5, 4, 3, 2, 1, 0));
+		    AddSat(SByte8(1, 2, 3, 4, 5, 6, 7, 8),
+		           SByte8(7, 6, 5, 4, 3, 2, 1, 0));
 		*Pointer<SByte8>(out + 8 * 4) =
-			AddSat(SByte8(0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E),
-				    SByte8(7, 6, 5, 4, 3, 2, 1, 0));
+		    AddSat(SByte8(0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E),
+		           SByte8(7, 6, 5, 4, 3, 2, 1, 0));
 		*Pointer<SByte8>(out + 8 * 5) =
-			AddSat(SByte8(0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88),
-				    SByte8(-7, -6, -5, -4, -3, -2, -1, -0));
+		    AddSat(SByte8(0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88),
+		           SByte8(-7, -6, -5, -4, -3, -2, -1, -0));
 		*Pointer<SByte8>(out + 8 * 6) =
-			SubSat(SByte8(0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88),
-				    SByte8(7, 6, 5, 4, 3, 2, 1, 0));
+		    SubSat(SByte8(0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88),
+		           SByte8(7, 6, 5, 4, 3, 2, 1, 0));
 
 		*Pointer<Short4>(out + 8 * 7) =
-			AddSat(Short4(1, 2, 3, 4), Short4(3, 2, 1, 0));
+		    AddSat(Short4(1, 2, 3, 4), Short4(3, 2, 1, 0));
 		*Pointer<Short4>(out + 8 * 8) =
-			AddSat(Short4(0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE),
-				    Short4(3, 2, 1, 0));
+		    AddSat(Short4(0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE),
+		           Short4(3, 2, 1, 0));
 		*Pointer<Short4>(out + 8 * 9) =
-			AddSat(Short4(0x8001, 0x8002, 0x8003, 0x8004),
-				    Short4(-3, -2, -1, -0));
+		    AddSat(Short4(0x8001, 0x8002, 0x8003, 0x8004),
+		           Short4(-3, -2, -1, -0));
 		*Pointer<Short4>(out + 8 * 10) =
-			SubSat(Short4(0x8001, 0x8002, 0x8003, 0x8004),
-				    Short4(3, 2, 1, 0));
+		    SubSat(Short4(0x8001, 0x8002, 0x8003, 0x8004),
+		           Short4(3, 2, 1, 0));
 
 		*Pointer<UShort4>(out + 8 * 11) =
-			AddSat(UShort4(1, 2, 3, 4), UShort4(3, 2, 1, 0));
+		    AddSat(UShort4(1, 2, 3, 4), UShort4(3, 2, 1, 0));
 		*Pointer<UShort4>(out + 8 * 12) =
-			AddSat(UShort4(0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE),
-				    UShort4(3, 2, 1, 0));
+		    AddSat(UShort4(0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE),
+		           UShort4(3, 2, 1, 0));
 		*Pointer<UShort4>(out + 8 * 13) =
-			SubSat(UShort4(1, 2, 3, 4), UShort4(3, 2, 1, 0));
+		    SubSat(UShort4(1, 2, 3, 4), UShort4(3, 2, 1, 0));
 
 		Return(0);
 	}
@@ -979,7 +978,7 @@
 
 TEST(ReactorUnitTests, Unpack)
 {
-	FunctionT<int(void*, void*)> function;
+	FunctionT<int(void *, void *)> function;
 	{
 		Pointer<Byte> in = function.Arg<0>();
 		Pointer<Byte> out = function.Arg<1>();
@@ -988,7 +987,7 @@
 		Byte4 test_byte_b = *Pointer<Byte4>(in + 4 * 1);
 
 		*Pointer<Short4>(out + 8 * 0) =
-			Unpack(test_byte_a, test_byte_b);
+		    Unpack(test_byte_a, test_byte_b);
 
 		*Pointer<Short4>(out + 8 * 1) = Unpack(test_byte_a);
 
@@ -1019,25 +1018,25 @@
 
 TEST(ReactorUnitTests, Pack)
 {
-	FunctionT<int(void*)> function;
+	FunctionT<int(void *)> function;
 	{
 		Pointer<Byte> out = function.Arg<0>();
 
 		*Pointer<SByte8>(out + 8 * 0) =
-			PackSigned(Short4(-1, -2, 1, 2),
-					Short4(3, 4, -3, -4));
+		    PackSigned(Short4(-1, -2, 1, 2),
+		               Short4(3, 4, -3, -4));
 
 		*Pointer<Byte8>(out + 8 * 1) =
-			PackUnsigned(Short4(-1, -2, 1, 2),
-					    Short4(3, 4, -3, -4));
+		    PackUnsigned(Short4(-1, -2, 1, 2),
+		                 Short4(3, 4, -3, -4));
 
 		*Pointer<Short8>(out + 8 * 2) =
-			PackSigned(Int4(-1, -2, 1, 2),
-					Int4(3, 4, -3, -4));
+		    PackSigned(Int4(-1, -2, 1, 2),
+		               Int4(3, 4, -3, -4));
 
 		*Pointer<UShort8>(out + 8 * 4) =
-			PackUnsigned(Int4(-1, -2, 1, 2),
-					    Int4(3, 4, -3, -4));
+		    PackUnsigned(Int4(-1, -2, 1, 2),
+		                 Int4(3, 4, -3, -4));
 
 		Return(0);
 	}
@@ -1074,30 +1073,30 @@
 
 TEST(ReactorUnitTests, MulHigh)
 {
-	FunctionT<int(void*)> function;
+	FunctionT<int(void *)> function;
 	{
 		Pointer<Byte> out = function.Arg<0>();
 
 		*Pointer<Short4>(out + 16 * 0) =
-			MulHigh(Short4(0x01AA, 0x02DD, 0x03EE, 0xF422),
-				    Short4(0x01BB, 0x02CC, 0x03FF, 0xF411));
+		    MulHigh(Short4(0x01AA, 0x02DD, 0x03EE, 0xF422),
+		            Short4(0x01BB, 0x02CC, 0x03FF, 0xF411));
 		*Pointer<UShort4>(out + 16 * 1) =
-			MulHigh(UShort4(0x01AA, 0x02DD, 0x03EE, 0xF422),
-				    UShort4(0x01BB, 0x02CC, 0x03FF, 0xF411));
+		    MulHigh(UShort4(0x01AA, 0x02DD, 0x03EE, 0xF422),
+		            UShort4(0x01BB, 0x02CC, 0x03FF, 0xF411));
 
 		*Pointer<Int4>(out + 16 * 2) =
-			MulHigh(Int4(0x000001AA, 0x000002DD, 0xC8000000, 0xF8000000),
-				    Int4(0x000001BB, 0x84000000, 0x000003EE, 0xD7000000));
+		    MulHigh(Int4(0x000001AA, 0x000002DD, 0xC8000000, 0xF8000000),
+		            Int4(0x000001BB, 0x84000000, 0x000003EE, 0xD7000000));
 		*Pointer<UInt4>(out + 16 * 3) =
-			MulHigh(UInt4(0x000001AAu, 0x000002DDu, 0xC8000000u, 0xD8000000u),
-				    UInt4(0x000001BBu, 0x84000000u, 0x000003EEu, 0xD7000000u));
+		    MulHigh(UInt4(0x000001AAu, 0x000002DDu, 0xC8000000u, 0xD8000000u),
+		            UInt4(0x000001BBu, 0x84000000u, 0x000003EEu, 0xD7000000u));
 
 		*Pointer<Int4>(out + 16 * 4) =
-			MulHigh(Int4(0x7FFFFFFF, 0x7FFFFFFF, 0x80008000, 0xFFFFFFFF),
-				    Int4(0x7FFFFFFF, 0x80000000, 0x80008000, 0xFFFFFFFF));
+		    MulHigh(Int4(0x7FFFFFFF, 0x7FFFFFFF, 0x80008000, 0xFFFFFFFF),
+		            Int4(0x7FFFFFFF, 0x80000000, 0x80008000, 0xFFFFFFFF));
 		*Pointer<UInt4>(out + 16 * 5) =
-			MulHigh(UInt4(0x7FFFFFFFu, 0x7FFFFFFFu, 0x80008000u, 0xFFFFFFFFu),
-				    UInt4(0x7FFFFFFFu, 0x80000000u, 0x80008000u, 0xFFFFFFFFu));
+		    MulHigh(UInt4(0x7FFFFFFFu, 0x7FFFFFFFu, 0x80008000u, 0xFFFFFFFFu),
+		            UInt4(0x7FFFFFFFu, 0x80000000u, 0x80008000u, 0xFFFFFFFFu));
 
 		// (U)Short8 variants currently unimplemented.
 
@@ -1144,13 +1143,13 @@
 
 TEST(ReactorUnitTests, MulAdd)
 {
-	FunctionT<int(void*)> function;
+	FunctionT<int(void *)> function;
 	{
 		Pointer<Byte> out = function.Arg<0>();
 
 		*Pointer<Int2>(out + 8 * 0) =
-			MulAdd(Short4(0x1aa, 0x2dd, 0x3ee, 0xF422),
-				    Short4(0x1bb, 0x2cc, 0x3ff, 0xF411));
+		    MulAdd(Short4(0x1aa, 0x2dd, 0x3ee, 0xF422),
+		           Short4(0x1bb, 0x2cc, 0x3ff, 0xF411));
 
 		// (U)Short8 variant is mentioned but unimplemented
 		Return(0);
@@ -1173,7 +1172,7 @@
 
 TEST(ReactorUnitTests, PointersEqual)
 {
-	FunctionT<int(void*, void*)> function;
+	FunctionT<int(void *, void *)> function;
 	{
 		Pointer<Byte> ptrA = function.Arg<0>();
 		Pointer<Byte> ptrB = function.Arg<1>();
@@ -1188,9 +1187,9 @@
 	}
 
 	auto routine = function("one");
-	int* a = reinterpret_cast<int*>(uintptr_t(0x0000000000000000));
-	int* b = reinterpret_cast<int*>(uintptr_t(0x00000000F0000000));
-	int* c = reinterpret_cast<int*>(uintptr_t(0xF000000000000000));
+	int *a = reinterpret_cast<int *>(uintptr_t(0x0000000000000000));
+	int *b = reinterpret_cast<int *>(uintptr_t(0x00000000F0000000));
+	int *c = reinterpret_cast<int *>(uintptr_t(0xF000000000000000));
 	EXPECT_EQ(routine(&a, &a), 1);
 	EXPECT_EQ(routine(&b, &b), 1);
 	EXPECT_EQ(routine(&c, &c), 1);
@@ -1299,7 +1298,7 @@
 		float f = 0.0f;
 	};
 
-	FunctionT<int(void*)> function;
+	FunctionT<int(void *)> function;
 	{
 		Pointer<Byte> c = function.Arg<0>();
 		auto res = Call(Class::Callback, c, 10, 20.0f);
@@ -1361,7 +1360,7 @@
 		float f = 0.0f;
 	};
 
-	FunctionT<int(void*)> function;
+	FunctionT<int(void *)> function;
 	{
 		Pointer<Byte> c = function.Arg<0>();
 		auto res = Call(&Class::Callback, c, 10, 20.0f);
@@ -1381,14 +1380,14 @@
 {
 	struct Class
 	{
-		static void Callback(Class *c, const char* s)
+		static void Callback(Class *c, const char *s)
 		{
 			c->str = s;
 		}
 		std::string str;
 	};
 
-	FunctionT<void(Class *c, const char *s)> function;
+	FunctionT<void(Class * c, const char *s)> function;
 	{
 		Pointer<Byte> c = function.Arg<0>();
 		Pointer<Byte> s = function.Arg<1>();
@@ -1487,7 +1486,7 @@
 {
 	struct Class
 	{
-		static int Func(int a, float b, int* c, float* d, int e, float f, int* g, float* h)
+		static int Func(int a, float b, int *c, float *d, int e, float f, int *g, float *h)
 		{
 			return a + b + *c + *d + e + f + *g + *h;
 		}
@@ -1542,7 +1541,6 @@
 	}
 }
 
-
 TEST(ReactorUnitTests, CallExternalCallRoutine)
 {
 	// routine1 calls Class::Func, passing it a pointer to routine2, and Class::Func calls routine2
@@ -1559,15 +1557,15 @@
 
 	struct Class
 	{
-		static float Func(void* p, float a, int b)
+		static float Func(void *p, float a, int b)
 		{
-			auto funcToCall = reinterpret_cast<float(*)(float, int)>(p);
+			auto funcToCall = reinterpret_cast<float (*)(float, int)>(p);
 			return funcToCall(a, b);
 		}
 	};
 
 	auto routine1 = [] {
-		FunctionT<float(void*, float, int)> function;
+		FunctionT<float(void *, float, int)> function;
 		{
 			Pointer<Byte> funcToCall = function.Arg<0>();
 			Float a = function.Arg<1>();
@@ -1578,7 +1576,7 @@
 		return function("one");
 	}();
 
-	float result = routine1((void*)routine2.getEntry(), 12.f, 13);
+	float result = routine1((void *)routine2.getEntry(), 12.f, 13);
 	EXPECT_EQ(result, 25.f);
 }
 
@@ -1590,80 +1588,80 @@
 // It's necessary to inspect the registers in a debugger to actually verify.)
 TEST(ReactorUnitTests, PreserveXMMRegisters)
 {
-    FunctionT<void(void*, void*)> function;
-    {
-        Pointer<Byte> in = function.Arg<0>();
-        Pointer<Byte> out = function.Arg<1>();
+	FunctionT<void(void *, void *)> function;
+	{
+		Pointer<Byte> in = function.Arg<0>();
+		Pointer<Byte> out = function.Arg<1>();
 
-        Float4 a = *Pointer<Float4>(in + 16 * 0);
-        Float4 b = *Pointer<Float4>(in + 16 * 1);
-        Float4 c = *Pointer<Float4>(in + 16 * 2);
-        Float4 d = *Pointer<Float4>(in + 16 * 3);
-        Float4 e = *Pointer<Float4>(in + 16 * 4);
-        Float4 f = *Pointer<Float4>(in + 16 * 5);
-        Float4 g = *Pointer<Float4>(in + 16 * 6);
-        Float4 h = *Pointer<Float4>(in + 16 * 7);
-        Float4 i = *Pointer<Float4>(in + 16 * 8);
-        Float4 j = *Pointer<Float4>(in + 16 * 9);
-        Float4 k = *Pointer<Float4>(in + 16 * 10);
-        Float4 l = *Pointer<Float4>(in + 16 * 11);
-        Float4 m = *Pointer<Float4>(in + 16 * 12);
-        Float4 n = *Pointer<Float4>(in + 16 * 13);
-        Float4 o = *Pointer<Float4>(in + 16 * 14);
-        Float4 p = *Pointer<Float4>(in + 16 * 15);
+		Float4 a = *Pointer<Float4>(in + 16 * 0);
+		Float4 b = *Pointer<Float4>(in + 16 * 1);
+		Float4 c = *Pointer<Float4>(in + 16 * 2);
+		Float4 d = *Pointer<Float4>(in + 16 * 3);
+		Float4 e = *Pointer<Float4>(in + 16 * 4);
+		Float4 f = *Pointer<Float4>(in + 16 * 5);
+		Float4 g = *Pointer<Float4>(in + 16 * 6);
+		Float4 h = *Pointer<Float4>(in + 16 * 7);
+		Float4 i = *Pointer<Float4>(in + 16 * 8);
+		Float4 j = *Pointer<Float4>(in + 16 * 9);
+		Float4 k = *Pointer<Float4>(in + 16 * 10);
+		Float4 l = *Pointer<Float4>(in + 16 * 11);
+		Float4 m = *Pointer<Float4>(in + 16 * 12);
+		Float4 n = *Pointer<Float4>(in + 16 * 13);
+		Float4 o = *Pointer<Float4>(in + 16 * 14);
+		Float4 p = *Pointer<Float4>(in + 16 * 15);
 
-        Float4 ab = a + b;
-        Float4 cd = c + d;
-        Float4 ef = e + f;
-        Float4 gh = g + h;
-        Float4 ij = i + j;
-        Float4 kl = k + l;
-        Float4 mn = m + n;
-        Float4 op = o + p;
+		Float4 ab = a + b;
+		Float4 cd = c + d;
+		Float4 ef = e + f;
+		Float4 gh = g + h;
+		Float4 ij = i + j;
+		Float4 kl = k + l;
+		Float4 mn = m + n;
+		Float4 op = o + p;
 
-        Float4 abcd = ab + cd;
-        Float4 efgh = ef + gh;
-        Float4 ijkl = ij + kl;
-        Float4 mnop = mn + op;
+		Float4 abcd = ab + cd;
+		Float4 efgh = ef + gh;
+		Float4 ijkl = ij + kl;
+		Float4 mnop = mn + op;
 
-        Float4 abcdefgh = abcd + efgh;
-        Float4 ijklmnop = ijkl + mnop;
-        Float4 sum = abcdefgh + ijklmnop;
-        *Pointer<Float4>(out) = sum;
-        Return();
-    }
+		Float4 abcdefgh = abcd + efgh;
+		Float4 ijklmnop = ijkl + mnop;
+		Float4 sum = abcdefgh + ijklmnop;
+		*Pointer<Float4>(out) = sum;
+		Return();
+	}
 
-    auto routine = function("one");
-    assert(routine);
+	auto routine = function("one");
+	assert(routine);
 
-    float input[64] = { 1.0f,  0.0f,   0.0f, 0.0f,
-                        -1.0f,  1.0f,  -1.0f, 0.0f,
-                        1.0f,  2.0f,  -2.0f, 0.0f,
-                        -1.0f,  3.0f,  -3.0f, 0.0f,
-                        1.0f,  4.0f,  -4.0f, 0.0f,
-                        -1.0f,  5.0f,  -5.0f, 0.0f,
-                        1.0f,  6.0f,  -6.0f, 0.0f,
-                        -1.0f,  7.0f,  -7.0f, 0.0f,
-                        1.0f,  8.0f,  -8.0f, 0.0f,
-                        -1.0f,  9.0f,  -9.0f, 0.0f,
-                        1.0f, 10.0f, -10.0f, 0.0f,
-                        -1.0f, 11.0f, -11.0f, 0.0f,
-                        1.0f, 12.0f, -12.0f, 0.0f,
-                        -1.0f, 13.0f, -13.0f, 0.0f,
-                        1.0f, 14.0f, -14.0f, 0.0f,
-                        -1.0f, 15.0f, -15.0f, 0.0f };
+	float input[64] = { 1.0f, 0.0f, 0.0f, 0.0f,
+		                -1.0f, 1.0f, -1.0f, 0.0f,
+		                1.0f, 2.0f, -2.0f, 0.0f,
+		                -1.0f, 3.0f, -3.0f, 0.0f,
+		                1.0f, 4.0f, -4.0f, 0.0f,
+		                -1.0f, 5.0f, -5.0f, 0.0f,
+		                1.0f, 6.0f, -6.0f, 0.0f,
+		                -1.0f, 7.0f, -7.0f, 0.0f,
+		                1.0f, 8.0f, -8.0f, 0.0f,
+		                -1.0f, 9.0f, -9.0f, 0.0f,
+		                1.0f, 10.0f, -10.0f, 0.0f,
+		                -1.0f, 11.0f, -11.0f, 0.0f,
+		                1.0f, 12.0f, -12.0f, 0.0f,
+		                -1.0f, 13.0f, -13.0f, 0.0f,
+		                1.0f, 14.0f, -14.0f, 0.0f,
+		                -1.0f, 15.0f, -15.0f, 0.0f };
 
-    float result[4];
+	float result[4];
 
-    routine(input, result);
+	routine(input, result);
 
-    EXPECT_EQ(result[0], 0.0f);
-    EXPECT_EQ(result[1], 120.0f);
-    EXPECT_EQ(result[2], -120.0f);
-    EXPECT_EQ(result[3], 0.0f);
+	EXPECT_EQ(result[0], 0.0f);
+	EXPECT_EQ(result[1], 120.0f);
+	EXPECT_EQ(result[2], -120.0f);
+	EXPECT_EQ(result[3], 0.0f);
 }
 
-template <typename T>
+template<typename T>
 class CToReactorTCastTest : public ::testing::Test
 {
 public:
@@ -1671,17 +1669,15 @@
 	using ReactorType = typename std::tuple_element<1, T>::type;
 };
 
-using CToReactorTCastTestTypes = ::testing::Types
-	< // Subset of types that can be used as arguments.
-	//	std::pair<bool,         Bool>,    FIXME(capn): Not supported as argument type by Subzero.
-	//	std::pair<uint8_t,      Byte>,    FIXME(capn): Not supported as argument type by Subzero.
-	//	std::pair<int8_t,       SByte>,   FIXME(capn): Not supported as argument type by Subzero.
-	//	std::pair<int16_t,      Short>,   FIXME(capn): Not supported as argument type by Subzero.
-	//	std::pair<uint16_t,     UShort>,  FIXME(capn): Not supported as argument type by Subzero.
-		std::pair<int,          Int>,
-		std::pair<unsigned int, UInt>,
-		std::pair<float,        Float>
-	>;
+using CToReactorTCastTestTypes = ::testing::Types<  // Subset of types that can be used as arguments.
+                                                    //	std::pair<bool,         Bool>,    FIXME(capn): Not supported as argument type by Subzero.
+                                                    //	std::pair<uint8_t,      Byte>,    FIXME(capn): Not supported as argument type by Subzero.
+                                                    //	std::pair<int8_t,       SByte>,   FIXME(capn): Not supported as argument type by Subzero.
+                                                    //	std::pair<int16_t,      Short>,   FIXME(capn): Not supported as argument type by Subzero.
+                                                    //	std::pair<uint16_t,     UShort>,  FIXME(capn): Not supported as argument type by Subzero.
+    std::pair<int, Int>,
+    std::pair<unsigned int, UInt>,
+    std::pair<float, Float>>;
 
 TYPED_TEST_SUITE(CToReactorTCastTest, CToReactorTCastTestTypes);
 
@@ -1693,28 +1689,27 @@
 	std::shared_ptr<Routine> routine;
 
 	{
-		Function< Int(ReactorType) > function;
+		Function<Int(ReactorType)> function;
 		{
 			ReactorType a = function.template Arg<0>();
 			ReactorType b = CType{};
 			RValue<ReactorType> c = RValue<ReactorType>(CType{});
 			Bool same = (a == b) && (a == c);
-			Return(IfThenElse(same, Int(1), Int(0))); // TODO: Ability to use Bools as return values.
+			Return(IfThenElse(same, Int(1), Int(0)));  // TODO: Ability to use Bools as return values.
 		}
 
 		routine = function("one");
 
 		if(routine)
 		{
-			auto callable = (int(*)(CType))routine->getEntry();
+			auto callable = (int (*)(CType))routine->getEntry();
 			CType in = {};
 			EXPECT_EQ(callable(in), 1);
 		}
 	}
-
 }
 
-template <typename T>
+template<typename T>
 class GEPTest : public ::testing::Test
 {
 public:
@@ -1722,37 +1717,35 @@
 	using ReactorType = typename std::tuple_element<1, T>::type;
 };
 
-using GEPTestTypes = ::testing::Types
-	<
-		std::pair<bool,        Bool>,
-		std::pair<int8_t,      Byte>,
-		std::pair<int8_t,      SByte>,
-		std::pair<int8_t[4],   Byte4>,
-		std::pair<int8_t[4],   SByte4>,
-		std::pair<int8_t[8],   Byte8>,
-		std::pair<int8_t[8],   SByte8>,
-		std::pair<int8_t[16],  Byte16>,
-		std::pair<int8_t[16],  SByte16>,
-		std::pair<int16_t,     Short>,
-		std::pair<int16_t,     UShort>,
-		std::pair<int16_t[2],  Short2>,
-		std::pair<int16_t[2],  UShort2>,
-		std::pair<int16_t[4],  Short4>,
-		std::pair<int16_t[4],  UShort4>,
-		std::pair<int16_t[8],  Short8>,
-		std::pair<int16_t[8],  UShort8>,
-		std::pair<int,         Int>,
-		std::pair<int,         UInt>,
-		std::pair<int[2],      Int2>,
-		std::pair<int[2],      UInt2>,
-		std::pair<int[4],      Int4>,
-		std::pair<int[4],      UInt4>,
-		std::pair<int64_t,     Long>,
-		std::pair<int16_t,     Half>,
-		std::pair<float,       Float>,
-		std::pair<float[2],    Float2>,
-		std::pair<float[4],    Float4>
-	>;
+using GEPTestTypes = ::testing::Types<
+    std::pair<bool, Bool>,
+    std::pair<int8_t, Byte>,
+    std::pair<int8_t, SByte>,
+    std::pair<int8_t[4], Byte4>,
+    std::pair<int8_t[4], SByte4>,
+    std::pair<int8_t[8], Byte8>,
+    std::pair<int8_t[8], SByte8>,
+    std::pair<int8_t[16], Byte16>,
+    std::pair<int8_t[16], SByte16>,
+    std::pair<int16_t, Short>,
+    std::pair<int16_t, UShort>,
+    std::pair<int16_t[2], Short2>,
+    std::pair<int16_t[2], UShort2>,
+    std::pair<int16_t[4], Short4>,
+    std::pair<int16_t[4], UShort4>,
+    std::pair<int16_t[8], Short8>,
+    std::pair<int16_t[8], UShort8>,
+    std::pair<int, Int>,
+    std::pair<int, UInt>,
+    std::pair<int[2], Int2>,
+    std::pair<int[2], UInt2>,
+    std::pair<int[4], Int4>,
+    std::pair<int[4], UInt4>,
+    std::pair<int64_t, Long>,
+    std::pair<int16_t, Half>,
+    std::pair<float, Float>,
+    std::pair<float[2], Float2>,
+    std::pair<float[4], Float4>>;
 
 TYPED_TEST_SUITE(GEPTest, GEPTestTypes);
 
@@ -1764,7 +1757,7 @@
 	std::shared_ptr<Routine> routine;
 
 	{
-		Function< Pointer<ReactorType>(Pointer<ReactorType>, Int) > function;
+		Function<Pointer<ReactorType>(Pointer<ReactorType>, Int)> function;
 		{
 			Pointer<ReactorType> pointer = function.template Arg<0>();
 			Int index = function.template Arg<1>();
@@ -1775,10 +1768,11 @@
 
 		if(routine)
 		{
-			auto callable = (CType*(*)(CType*, unsigned int))routine->getEntry();
+			auto callable = (CType * (*)(CType *, unsigned int)) routine->getEntry();
 
-			union PtrInt {
-				CType* p;
+			union PtrInt
+			{
+				CType *p;
 				size_t i;
 			};
 
@@ -1800,7 +1794,6 @@
 			}
 		}
 	}
-
 }
 
 TEST(ReactorUnitTests, Coroutines_Fibonacci)
@@ -1817,7 +1810,8 @@
 		Yield(Int(1));
 		Int current = 1;
 		Int next = 1;
-		While(true) {
+		While(true)
+		{
 			Yield(next);
 			auto tmp = current + next;
 			current = next;
@@ -1827,10 +1821,35 @@
 
 	auto coroutine = function();
 
-	int32_t expected[] =
-	{
-		0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597,
-		2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418,
+	int32_t expected[] = {
+		0,
+		1,
+		1,
+		2,
+		3,
+		5,
+		8,
+		13,
+		21,
+		34,
+		55,
+		89,
+		144,
+		233,
+		377,
+		610,
+		987,
+		1597,
+		2584,
+		4181,
+		6765,
+		10946,
+		17711,
+		28657,
+		46368,
+		75025,
+		121393,
+		196418,
 		317811,
 	};
 
@@ -1852,7 +1871,7 @@
 		return;
 	}
 
-	Coroutine<uint8_t(uint8_t* data, int count)> function;
+	Coroutine<uint8_t(uint8_t * data, int count)> function;
 	{
 		Pointer<Byte> data = function.Arg<0>();
 		Int count = function.Arg<1>();
@@ -1863,29 +1882,31 @@
 		}
 	}
 
-	uint8_t data[] = {10, 20, 30};
+	uint8_t data[] = { 10, 20, 30 };
 	auto coroutine = function(&data[0], 3);
 
 	uint8_t out = 0;
 	EXPECT_EQ(coroutine->await(out), true);
-	EXPECT_EQ(out, 10); out = 0;
+	EXPECT_EQ(out, 10);
+	out = 0;
 	EXPECT_EQ(coroutine->await(out), true);
-	EXPECT_EQ(out, 20); out = 0;
+	EXPECT_EQ(out, 20);
+	out = 0;
 	EXPECT_EQ(coroutine->await(out), true);
-	EXPECT_EQ(out, 30); out = 99;
+	EXPECT_EQ(out, 30);
+	out = 99;
 	EXPECT_EQ(coroutine->await(out), false);
 	EXPECT_EQ(out, 99);
 	EXPECT_EQ(coroutine->await(out), false);
 	EXPECT_EQ(out, 99);
 }
 
-
-template <typename TestFuncType, typename RefFuncType, typename TestValueType>
+template<typename TestFuncType, typename RefFuncType, typename TestValueType>
 struct IntrinsicTestParams
 {
-	std::function<TestFuncType> testFunc;  // Function we're testing (Reactor)
-	std::function<RefFuncType> refFunc;    // Reference function to test against (C)
-	std::vector<TestValueType> testValues; // Values to input to functions
+	std::function<TestFuncType> testFunc;   // Function we're testing (Reactor)
+	std::function<RefFuncType> refFunc;     // Reference function to test against (C)
+	std::vector<TestValueType> testValues;  // Values to input to functions
 };
 
 using IntrinsicTestParams_Float = IntrinsicTestParams<RValue<Float>(RValue<Float>), float(float), float>;
@@ -1903,7 +1924,7 @@
 
 		auto routine = function("one");
 
-		for(auto&& v : GetParam().testValues)
+		for(auto &&v : GetParam().testValues)
 		{
 			SCOPED_TRACE(v);
 			EXPECT_FLOAT_EQ(routine(v), GetParam().refFunc(v));
@@ -1915,7 +1936,7 @@
 {
 	void test()
 	{
-		FunctionT<void(float4*)> function;
+		FunctionT<void(float4 *)> function;
 		{
 			Pointer<Float4> a = function.Arg<0>();
 			*a = GetParam().testFunc(*a);
@@ -1924,7 +1945,7 @@
 
 		auto routine = function("one");
 
-		for(auto&& v : GetParam().testValues)
+		for(auto &&v : GetParam().testValues)
 		{
 			SCOPED_TRACE(v);
 			float4_value result = invokeRoutine(routine, float4_value{ v });
@@ -1941,7 +1962,7 @@
 {
 	void test()
 	{
-		FunctionT<void(float4*, float4*)> function;
+		FunctionT<void(float4 *, float4 *)> function;
 		{
 			Pointer<Float4> a = function.Arg<0>();
 			Pointer<Float4> b = function.Arg<1>();
@@ -1951,7 +1972,7 @@
 
 		auto routine = function("one");
 
-		for(auto&& v : GetParam().testValues)
+		for(auto &&v : GetParam().testValues)
 		{
 			SCOPED_TRACE(v);
 			float4_value result = invokeRoutine(routine, float4_value{ v.first }, float4_value{ v.second });
@@ -1964,40 +1985,24 @@
 	}
 };
 
-INSTANTIATE_TEST_SUITE_P(IntrinsicTestParams_Float, IntrinsicTest_Float, testing::Values(
-	IntrinsicTestParams_Float{ [](Float v) { return rr::Exp2(v); }, exp2f, {0.f, 1.f, 12345.f} },
-	IntrinsicTestParams_Float{ [](Float v) { return rr::Log2(v); }, log2f, {0.f, 1.f, 12345.f} },
-	IntrinsicTestParams_Float{ [](Float v) { return rr::Sqrt(v); }, sqrtf, {0.f, 1.f, 12345.f} }
-));
+INSTANTIATE_TEST_SUITE_P(IntrinsicTestParams_Float, IntrinsicTest_Float, testing::Values(IntrinsicTestParams_Float{ [](Float v) { return rr::Exp2(v); }, exp2f, { 0.f, 1.f, 12345.f } }, IntrinsicTestParams_Float{ [](Float v) { return rr::Log2(v); }, log2f, { 0.f, 1.f, 12345.f } }, IntrinsicTestParams_Float{ [](Float v) { return rr::Sqrt(v); }, sqrtf, { 0.f, 1.f, 12345.f } }));
 
-INSTANTIATE_TEST_SUITE_P(IntrinsicTestParams_Float4, IntrinsicTest_Float4, testing::Values(
-	IntrinsicTestParams_Float4{ [](RValue<Float4> v) { return rr::Sin(v); },   sinf,   {0.f, 1.f, PI, 12345.f}  },
-	IntrinsicTestParams_Float4{ [](RValue<Float4> v) { return rr::Cos(v); },   cosf,   {0.f, 1.f, PI, 12345.f}  },
-	IntrinsicTestParams_Float4{ [](RValue<Float4> v) { return rr::Tan(v); },   tanf,   {0.f, 1.f, PI, 12345.f}  },
-	IntrinsicTestParams_Float4{ [](RValue<Float4> v) { return rr::Asin(v); },  asinf,  {0.f, 1.f, -1.f}  },
-	IntrinsicTestParams_Float4{ [](RValue<Float4> v) { return rr::Acos(v); },  acosf,  {0.f, 1.f, -1.f}  },
-	IntrinsicTestParams_Float4{ [](RValue<Float4> v) { return rr::Atan(v); },  atanf,  {0.f, 1.f, PI, 12345.f}  },
-	IntrinsicTestParams_Float4{ [](RValue<Float4> v) { return rr::Sinh(v); },  sinhf,  {0.f, 1.f, PI, 12345.f}  },
-	IntrinsicTestParams_Float4{ [](RValue<Float4> v) { return rr::Cosh(v); },  coshf,  {0.f, 1.f, PI, 12345.f}  },
-	IntrinsicTestParams_Float4{ [](RValue<Float4> v) { return rr::Tanh(v); },  tanhf,  {0.f, 1.f, PI, 12345.f}  },
-	IntrinsicTestParams_Float4{ [](RValue<Float4> v) { return rr::Asinh(v); }, asinhf, {0.f, 1.f, PI, 12345.f}  },
-	IntrinsicTestParams_Float4{ [](RValue<Float4> v) { return rr::Acosh(v); }, acoshf, {     1.f, PI, 12345.f}  },
-	IntrinsicTestParams_Float4{ [](RValue<Float4> v) { return rr::Atanh(v); }, atanhf, {0.f, 1.f, -1.f}  },
-	IntrinsicTestParams_Float4{ [](RValue<Float4> v) { return rr::Exp(v); },   expf,   {0.f, 1.f, PI, 12345.f}  },
-	IntrinsicTestParams_Float4{ [](RValue<Float4> v) { return rr::Log(v); },   logf,   {0.f, 1.f, PI, 12345.f}  },
-	IntrinsicTestParams_Float4{ [](RValue<Float4> v) { return rr::Exp2(v); },  exp2f,  {0.f, 1.f, PI, 12345.f}  },
-	IntrinsicTestParams_Float4{ [](RValue<Float4> v) { return rr::Log2(v); },  log2f,  {0.f, 1.f, PI, 12345.f}  },
-	IntrinsicTestParams_Float4{ [](RValue<Float4> v) { return rr::Sqrt(v); },  sqrtf,  {0.f, 1.f, PI, 12345.f}  }
-));
+INSTANTIATE_TEST_SUITE_P(IntrinsicTestParams_Float4, IntrinsicTest_Float4, testing::Values(IntrinsicTestParams_Float4{ [](RValue<Float4> v) { return rr::Sin(v); }, sinf, { 0.f, 1.f, PI, 12345.f } }, IntrinsicTestParams_Float4{ [](RValue<Float4> v) { return rr::Cos(v); }, cosf, { 0.f, 1.f, PI, 12345.f } }, IntrinsicTestParams_Float4{ [](RValue<Float4> v) { return rr::Tan(v); }, tanf, { 0.f, 1.f, PI, 12345.f } }, IntrinsicTestParams_Float4{ [](RValue<Float4> v) { return rr::Asin(v); }, asinf, { 0.f, 1.f, -1.f } }, IntrinsicTestParams_Float4{ [](RValue<Float4> v) { return rr::Acos(v); }, acosf, { 0.f, 1.f, -1.f } }, IntrinsicTestParams_Float4{ [](RValue<Float4> v) { return rr::Atan(v); }, atanf, { 0.f, 1.f, PI, 12345.f } }, IntrinsicTestParams_Float4{ [](RValue<Float4> v) { return rr::Sinh(v); }, sinhf, { 0.f, 1.f, PI, 12345.f } }, IntrinsicTestParams_Float4{ [](RValue<Float4> v) { return rr::Cosh(v); }, coshf, { 0.f, 1.f, PI, 12345.f } }, IntrinsicTestParams_Float4{ [](RValue<Float4> v) { return rr::Tanh(v); }, tanhf, { 0.f, 1.f, PI, 12345.f } }, IntrinsicTestParams_Float4{ [](RValue<Float4> v) { return rr::Asinh(v); }, asinhf, { 0.f, 1.f, PI, 12345.f } }, IntrinsicTestParams_Float4{ [](RValue<Float4> v) { return rr::Acosh(v); }, acoshf, { 1.f, PI, 12345.f } }, IntrinsicTestParams_Float4{ [](RValue<Float4> v) { return rr::Atanh(v); }, atanhf, { 0.f, 1.f, -1.f } }, IntrinsicTestParams_Float4{ [](RValue<Float4> v) { return rr::Exp(v); }, expf, { 0.f, 1.f, PI, 12345.f } }, IntrinsicTestParams_Float4{ [](RValue<Float4> v) { return rr::Log(v); }, logf, { 0.f, 1.f, PI, 12345.f } }, IntrinsicTestParams_Float4{ [](RValue<Float4> v) { return rr::Exp2(v); }, exp2f, { 0.f, 1.f, PI, 12345.f } }, IntrinsicTestParams_Float4{ [](RValue<Float4> v) { return rr::Log2(v); }, log2f, { 0.f, 1.f, PI, 12345.f } }, IntrinsicTestParams_Float4{ [](RValue<Float4> v) { return rr::Sqrt(v); }, sqrtf, { 0.f, 1.f, PI, 12345.f } }));
 
-INSTANTIATE_TEST_SUITE_P(IntrinsicTestParams_Float4_Float4, IntrinsicTest_Float4_Float4, testing::Values(
-	IntrinsicTestParams_Float4_Float4{ [](RValue<Float4> v1, RValue<Float4> v2) { return Atan2(v1, v2); }, atan2f, { {0.f, 0.f}, {0.f, -1.f}, {-1.f, 0.f}, {12345.f, 12345.f} } },
-	IntrinsicTestParams_Float4_Float4{ [](RValue<Float4> v1, RValue<Float4> v2) { return Pow(v1, v2); },   powf,   { {0.f, 0.f}, {0.f, -1.f}, {-1.f, 0.f}, {12345.f, 12345.f} } }
-));
+INSTANTIATE_TEST_SUITE_P(IntrinsicTestParams_Float4_Float4, IntrinsicTest_Float4_Float4, testing::Values(IntrinsicTestParams_Float4_Float4{ [](RValue<Float4> v1, RValue<Float4> v2) { return Atan2(v1, v2); }, atan2f, { { 0.f, 0.f }, { 0.f, -1.f }, { -1.f, 0.f }, { 12345.f, 12345.f } } }, IntrinsicTestParams_Float4_Float4{ [](RValue<Float4> v1, RValue<Float4> v2) { return Pow(v1, v2); }, powf, { { 0.f, 0.f }, { 0.f, -1.f }, { -1.f, 0.f }, { 12345.f, 12345.f } } }));
 
-TEST_P(IntrinsicTest_Float, Test) { test(); }
-TEST_P(IntrinsicTest_Float4, Test) { test(); }
-TEST_P(IntrinsicTest_Float4_Float4, Test) { test(); }
+TEST_P(IntrinsicTest_Float, Test)
+{
+	test();
+}
+TEST_P(IntrinsicTest_Float4, Test)
+{
+	test();
+}
+TEST_P(IntrinsicTest_Float4_Float4, Test)
+{
+	test();
+}
 
 TEST(ReactorUnitTests, Intrinsics_Ctlz)
 {
@@ -2012,8 +2017,8 @@
 		auto routine = function("one");
 		auto callable = (uint32_t(*)(uint32_t))routine->getEntry();
 
-
-		for(uint32_t i = 0; i < 31; ++i) {
+		for(uint32_t i = 0; i < 31; ++i)
+		{
 			uint32_t result = callable(1 << i);
 			EXPECT_EQ(result, 31 - i);
 		}
@@ -2033,11 +2038,12 @@
 			*out = rr::Ctlz(UInt4(x), false);
 		}
 		auto routine = function("one");
-		auto callable = (void(*)(uint32_t*, uint32_t))routine->getEntry();
+		auto callable = (void (*)(uint32_t *, uint32_t))routine->getEntry();
 
 		uint32_t x[4];
 
-		for(uint32_t i = 0; i < 31; ++i) {
+		for(uint32_t i = 0; i < 31; ++i)
+		{
 			callable(x, 1 << i);
 			EXPECT_EQ(x[0], 31 - i);
 			EXPECT_EQ(x[1], 31 - i);
@@ -2069,8 +2075,8 @@
 		auto routine = function("one");
 		auto callable = (uint32_t(*)(uint32_t))routine->getEntry();
 
-
-		for(uint32_t i = 0; i < 31; ++i) {
+		for(uint32_t i = 0; i < 31; ++i)
+		{
 			uint32_t result = callable(1 << i);
 			EXPECT_EQ(result, i);
 		}
@@ -2090,11 +2096,12 @@
 			*out = rr::Cttz(UInt4(x), false);
 		}
 		auto routine = function("one");
-		auto callable = (void(*)(uint32_t*, uint32_t))routine->getEntry();
+		auto callable = (void (*)(uint32_t *, uint32_t))routine->getEntry();
 
 		uint32_t x[4];
 
-		for(uint32_t i = 0; i < 31; ++i) {
+		for(uint32_t i = 0; i < 31; ++i)
+		{
 			callable(x, 1 << i);
 			EXPECT_EQ(x[0], i);
 			EXPECT_EQ(x[1], i);
@@ -2126,22 +2133,21 @@
 		Scatter(base, *val, *offsets, mask, alignment);
 	}
 
-	float buffer[16] = {0};
+	float buffer[16] = { 0 };
 
 	constexpr auto elemSize = sizeof(buffer[0]);
 
-	int offsets[] =
-	{
-		1 *elemSize,
-		6 *elemSize,
-		11 *elemSize,
-		13 *elemSize
+	int offsets[] = {
+		1 * elemSize,
+		6 * elemSize,
+		11 * elemSize,
+		13 * elemSize
 	};
 
-	float val[4] = {10, 60, 110, 130};
+	float val[4] = { 10, 60, 110, 130 };
 
 	auto routine = function("one");
-	auto entry = (void(*)(float*, float*, int*))routine->getEntry();
+	auto entry = (void (*)(float *, float *, int *))routine->getEntry();
 
 	entry(buffer, val, offsets);
 
@@ -2165,8 +2171,7 @@
 		*result = Gather(base, *offsets, mask, alignment, zeroMaskedLanes);
 	}
 
-	float buffer[] =
-	{
+	float buffer[] = {
 		0, 10, 20, 30,
 		40, 50, 60, 70,
 		80, 90, 100, 110,
@@ -2175,16 +2180,15 @@
 
 	constexpr auto elemSize = sizeof(buffer[0]);
 
-	int offsets[] =
-	{
-		1 *elemSize,
-		6 *elemSize,
-		11 *elemSize,
-		13 *elemSize
+	int offsets[] = {
+		1 * elemSize,
+		6 * elemSize,
+		11 * elemSize,
+		13 * elemSize
 	};
 
 	auto routine = function("one");
-	auto entry = (void(*)(float*, int*, float*))routine->getEntry();
+	auto entry = (void (*)(float *, int *, float *))routine->getEntry();
 
 	float result[4] = {};
 	entry(buffer, offsets, result);
@@ -2222,7 +2226,7 @@
 	}
 
 	auto routine = function("one");
-	auto entry = (void(*)(int*, int*))routine->getEntry();
+	auto entry = (void (*)(int *, int *))routine->getEntry();
 
 	int v[4] = { 42, 42, 42, 42 };
 	int result[4] = { 99, 99, 99, 99 };
@@ -2244,36 +2248,37 @@
 ////////////////////////////////
 
 // Assert CToReactorT resolves to expected types.
-static_assert(std::is_same<CToReactorT<void>,     Void>::value, "");
-static_assert(std::is_same<CToReactorT<bool>,     Bool>::value, "");
-static_assert(std::is_same<CToReactorT<uint8_t>,  Byte>::value, "");
-static_assert(std::is_same<CToReactorT<int8_t>,   SByte>::value, "");
-static_assert(std::is_same<CToReactorT<int16_t>,  Short>::value, "");
+static_assert(std::is_same<CToReactorT<void>, Void>::value, "");
+static_assert(std::is_same<CToReactorT<bool>, Bool>::value, "");
+static_assert(std::is_same<CToReactorT<uint8_t>, Byte>::value, "");
+static_assert(std::is_same<CToReactorT<int8_t>, SByte>::value, "");
+static_assert(std::is_same<CToReactorT<int16_t>, Short>::value, "");
 static_assert(std::is_same<CToReactorT<uint16_t>, UShort>::value, "");
-static_assert(std::is_same<CToReactorT<int32_t>,  Int>::value, "");
+static_assert(std::is_same<CToReactorT<int32_t>, Int>::value, "");
 static_assert(std::is_same<CToReactorT<uint64_t>, Long>::value, "");
 static_assert(std::is_same<CToReactorT<uint32_t>, UInt>::value, "");
-static_assert(std::is_same<CToReactorT<float>,    Float>::value, "");
+static_assert(std::is_same<CToReactorT<float>, Float>::value, "");
 
 // Assert CToReactorT for known pointer types resolves to expected types.
-static_assert(std::is_same<CToReactorT<void*>,     Pointer<Byte>>::value, "");
-static_assert(std::is_same<CToReactorT<bool*>,     Pointer<Bool>>::value, "");
-static_assert(std::is_same<CToReactorT<uint8_t*>,  Pointer<Byte>>::value, "");
-static_assert(std::is_same<CToReactorT<int8_t*>,   Pointer<SByte>>::value, "");
-static_assert(std::is_same<CToReactorT<int16_t*>,  Pointer<Short>>::value, "");
-static_assert(std::is_same<CToReactorT<uint16_t*>, Pointer<UShort>>::value, "");
-static_assert(std::is_same<CToReactorT<int32_t*>,  Pointer<Int>>::value, "");
-static_assert(std::is_same<CToReactorT<uint64_t*>, Pointer<Long>>::value, "");
-static_assert(std::is_same<CToReactorT<uint32_t*>, Pointer<UInt>>::value, "");
-static_assert(std::is_same<CToReactorT<float*>,    Pointer<Float>>::value, "");
-static_assert(std::is_same<CToReactorT<uint16_t**>, Pointer<Pointer<UShort>>>::value, "");
-static_assert(std::is_same<CToReactorT<uint16_t***>, Pointer<Pointer<Pointer<UShort>>>>::value, "");
+static_assert(std::is_same<CToReactorT<void *>, Pointer<Byte>>::value, "");
+static_assert(std::is_same<CToReactorT<bool *>, Pointer<Bool>>::value, "");
+static_assert(std::is_same<CToReactorT<uint8_t *>, Pointer<Byte>>::value, "");
+static_assert(std::is_same<CToReactorT<int8_t *>, Pointer<SByte>>::value, "");
+static_assert(std::is_same<CToReactorT<int16_t *>, Pointer<Short>>::value, "");
+static_assert(std::is_same<CToReactorT<uint16_t *>, Pointer<UShort>>::value, "");
+static_assert(std::is_same<CToReactorT<int32_t *>, Pointer<Int>>::value, "");
+static_assert(std::is_same<CToReactorT<uint64_t *>, Pointer<Long>>::value, "");
+static_assert(std::is_same<CToReactorT<uint32_t *>, Pointer<UInt>>::value, "");
+static_assert(std::is_same<CToReactorT<float *>, Pointer<Float>>::value, "");
+static_assert(std::is_same<CToReactorT<uint16_t **>, Pointer<Pointer<UShort>>>::value, "");
+static_assert(std::is_same<CToReactorT<uint16_t ***>, Pointer<Pointer<Pointer<UShort>>>>::value, "");
 
 // Assert CToReactorT for unknown pointer types resolves to Pointer<Byte>.
-struct S{};
-static_assert(std::is_same<CToReactorT<S*>, Pointer<Byte>>::value, "");
-static_assert(std::is_same<CToReactorT<S**>, Pointer<Pointer<Byte>>>::value, "");
-static_assert(std::is_same<CToReactorT<S***>, Pointer<Pointer<Pointer<Byte>>>>::value, "");
+struct S
+{};
+static_assert(std::is_same<CToReactorT<S *>, Pointer<Byte>>::value, "");
+static_assert(std::is_same<CToReactorT<S **>, Pointer<Pointer<Byte>>>::value, "");
+static_assert(std::is_same<CToReactorT<S ***>, Pointer<Pointer<Pointer<Byte>>>>::value, "");
 
 // Assert IsRValue<> resolves true for RValue<> types.
 static_assert(IsRValue<RValue<Void>>::value, "");
diff --git a/src/Reactor/Routine.hpp b/src/Reactor/Routine.hpp
index f8083b1..1c0ae1f 100644
--- a/src/Reactor/Routine.hpp
+++ b/src/Reactor/Routine.hpp
@@ -38,12 +38,12 @@
 public:
 	RoutineT() = default;
 
-	explicit RoutineT(const std::shared_ptr<Routine>& routine)
-		: routine(routine)
+	explicit RoutineT(const std::shared_ptr<Routine> &routine)
+	    : routine(routine)
 	{
 		if(routine)
 		{
-			callable = reinterpret_cast<CallableType>(const_cast<void*>(routine->getEntry(0)));
+			callable = reinterpret_cast<CallableType>(const_cast<void *>(routine->getEntry(0)));
 		}
 	}
 
@@ -52,23 +52,23 @@
 		return callable != nullptr;
 	}
 
-	template <typename... Args>
-	Return operator()(Args&&... args) const
+	template<typename... Args>
+	Return operator()(Args &&... args) const
 	{
 		return callable(std::forward<Args>(args)...);
 	}
 
-	const void* getEntry() const
+	const void *getEntry() const
 	{
-		return reinterpret_cast<void*>(callable);
+		return reinterpret_cast<void *>(callable);
 	}
 
 private:
 	std::shared_ptr<Routine> routine;
-	using CallableType = Return(*)(Arguments...);
+	using CallableType = Return (*)(Arguments...);
 	CallableType callable = nullptr;
 };
 
 }  // namespace rr
 
-#endif   // rr_Routine_hpp
+#endif  // rr_Routine_hpp
diff --git a/src/Reactor/SubzeroReactor.cpp b/src/Reactor/SubzeroReactor.cpp
index 6201ab1..2f3e9ee 100644
--- a/src/Reactor/SubzeroReactor.cpp
+++ b/src/Reactor/SubzeroReactor.cpp
@@ -12,44 +12,46 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "Reactor.hpp"
 #include "Debug.hpp"
 #include "EmulatedReactor.hpp"
+#include "Reactor.hpp"
 
-#include "Optimizer.hpp"
 #include "ExecutableMemory.hpp"
+#include "Optimizer.hpp"
 
-#include "src/IceTypes.h"
 #include "src/IceCfg.h"
-#include "src/IceELFStreamer.h"
-#include "src/IceGlobalContext.h"
 #include "src/IceCfgNode.h"
 #include "src/IceELFObjectWriter.h"
+#include "src/IceELFStreamer.h"
+#include "src/IceGlobalContext.h"
 #include "src/IceGlobalInits.h"
+#include "src/IceTypes.h"
 
+#include "llvm/Support/Compiler.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/raw_os_ostream.h"
-#include "llvm/Support/Compiler.h"
 
 #if __has_feature(memory_sanitizer)
-#include <sanitizer/msan_interface.h>
+#	include <sanitizer/msan_interface.h>
 #endif
 
 #if defined(_WIN32)
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif // !WIN32_LEAN_AND_MEAN
-#ifndef NOMINMAX
-#define NOMINMAX
-#endif // !NOMINMAX
-#include <Windows.h>
+#	ifndef WIN32_LEAN_AND_MEAN
+#		define WIN32_LEAN_AND_MEAN
+#	endif  // !WIN32_LEAN_AND_MEAN
+#	ifndef NOMINMAX
+#		define NOMINMAX
+#	endif  // !NOMINMAX
+#	include <Windows.h>
 #endif
 
-#include <mutex>
-#include <limits>
 #include <iostream>
+#include <limits>
+#include <mutex>
 
-namespace rr { class ELFMemoryStreamer; }
+namespace rr {
+class ELFMemoryStreamer;
+}
 
 namespace {
 
@@ -60,7 +62,7 @@
 	// This uses a static in a function to avoid the cost of a global static
 	// initializer. See http://neugierig.org/software/chromium/notes/2011/08/static-initializers.html
 	static rr::Config config = rr::Config::Edit()
-		.apply({});
+	                               .apply({});
 	return config;
 }
 
@@ -80,11 +82,11 @@
 namespace {
 
 #if !defined(__i386__) && defined(_M_IX86)
-	#define __i386__ 1
+#	define __i386__ 1
 #endif
 
-#if !defined(__x86_64__) && (defined(_M_AMD64) || defined (_M_X64))
-	#define __x86_64__ 1
+#if !defined(__x86_64__) && (defined(_M_AMD64) || defined(_M_X64))
+#	define __x86_64__ 1
 #endif
 
 static Ice::OptLevel toIce(rr::Optimization::Level level)
@@ -92,9 +94,9 @@
 	switch(level)
 	{
 		// Note that Opt_0 and Opt_1 are not implemented by Subzero
-		case rr::Optimization::Level::None:       return Ice::Opt_m1;
-		case rr::Optimization::Level::Less:       return Ice::Opt_m1;
-		case rr::Optimization::Level::Default:    return Ice::Opt_2;
+		case rr::Optimization::Level::None: return Ice::Opt_m1;
+		case rr::Optimization::Level::Less: return Ice::Opt_m1;
+		case rr::Optimization::Level::Default: return Ice::Opt_2;
 		case rr::Optimization::Level::Aggressive: return Ice::Opt_2;
 		default: UNREACHABLE("Unknown Optimization Level %d", int(level));
 	}
@@ -110,42 +112,44 @@
 private:
 	static void cpuid(int registers[4], int info)
 	{
-		#if defined(__i386__) || defined(__x86_64__)
-			#if defined(_WIN32)
-				__cpuid(registers, info);
-			#else
-				__asm volatile("cpuid": "=a" (registers[0]), "=b" (registers[1]), "=c" (registers[2]), "=d" (registers[3]): "a" (info));
-			#endif
-		#else
-			registers[0] = 0;
-			registers[1] = 0;
-			registers[2] = 0;
-			registers[3] = 0;
-		#endif
+#if defined(__i386__) || defined(__x86_64__)
+#	if defined(_WIN32)
+		__cpuid(registers, info);
+#	else
+		__asm volatile("cpuid"
+		               : "=a"(registers[0]), "=b"(registers[1]), "=c"(registers[2]), "=d"(registers[3])
+		               : "a"(info));
+#	endif
+#else
+		registers[0] = 0;
+		registers[1] = 0;
+		registers[2] = 0;
+		registers[3] = 0;
+#endif
 	}
 
 	static bool detectARM()
 	{
-		#if defined(__arm__) || defined(__aarch64__)
-			return true;
-		#elif defined(__i386__) || defined(__x86_64__)
-			return false;
-		#elif defined(__mips__)
-			return false;
-		#else
-			#error "Unknown architecture"
-		#endif
+#if defined(__arm__) || defined(__aarch64__)
+		return true;
+#elif defined(__i386__) || defined(__x86_64__)
+		return false;
+#elif defined(__mips__)
+		return false;
+#else
+#	error "Unknown architecture"
+#endif
 	}
 
 	static bool detectSSE4_1()
 	{
-		#if defined(__i386__) || defined(__x86_64__)
-			int registers[4];
-			cpuid(registers, 1);
-			return (registers[2] & 0x00080000) != 0;
-		#else
-			return false;
-		#endif
+#if defined(__i386__) || defined(__x86_64__)
+		int registers[4];
+		cpuid(registers, 1);
+		return (registers[2] & 0x00080000) != 0;
+#else
+		return false;
+#endif
 	}
 };
 
@@ -166,9 +170,8 @@
 
 namespace rr {
 
-const Capabilities Caps =
-{
-	false, // CoroutinesSupported
+const Capabilities Caps = {
+	false,  // CoroutinesSupported
 };
 
 enum EmulatedType
@@ -182,14 +185,17 @@
 	Type_v2i32 = Ice::IceType_v4i32 | EmulatedV2,
 	Type_v4i16 = Ice::IceType_v8i16 | EmulatedV4,
 	Type_v2i16 = Ice::IceType_v8i16 | EmulatedV2,
-	Type_v8i8 =  Ice::IceType_v16i8 | EmulatedV8,
-	Type_v4i8 =  Ice::IceType_v16i8 | EmulatedV4,
+	Type_v8i8 = Ice::IceType_v16i8 | EmulatedV8,
+	Type_v4i8 = Ice::IceType_v16i8 | EmulatedV4,
 	Type_v2f32 = Ice::IceType_v4f32 | EmulatedV2,
 };
 
-class Value : public Ice::Operand {};
-class SwitchCases : public Ice::InstSwitch {};
-class BasicBlock : public Ice::CfgNode {};
+class Value : public Ice::Operand
+{};
+class SwitchCases : public Ice::InstSwitch
+{};
+class BasicBlock : public Ice::CfgNode
+{};
 
 Ice::Type T(Type *t)
 {
@@ -199,22 +205,22 @@
 
 Type *T(Ice::Type t)
 {
-	return reinterpret_cast<Type*>(t);
+	return reinterpret_cast<Type *>(t);
 }
 
 Type *T(EmulatedType t)
 {
-	return reinterpret_cast<Type*>(t);
+	return reinterpret_cast<Type *>(t);
 }
 
 Value *V(Ice::Operand *v)
 {
-	return reinterpret_cast<Value*>(v);
+	return reinterpret_cast<Value *>(v);
 }
 
 BasicBlock *B(Ice::CfgNode *b)
 {
-	return reinterpret_cast<BasicBlock*>(b);
+	return reinterpret_cast<BasicBlock *>(b);
 }
 
 static size_t typeSize(Type *type)
@@ -223,25 +229,25 @@
 	{
 		switch(reinterpret_cast<std::intptr_t>(type))
 		{
-		case Type_v2i32: return 8;
-		case Type_v4i16: return 8;
-		case Type_v2i16: return 4;
-		case Type_v8i8:  return 8;
-		case Type_v4i8:  return 4;
-		case Type_v2f32: return 8;
-		default: ASSERT(false);
+			case Type_v2i32: return 8;
+			case Type_v4i16: return 8;
+			case Type_v2i16: return 4;
+			case Type_v8i8: return 8;
+			case Type_v4i8: return 4;
+			case Type_v2f32: return 8;
+			default: ASSERT(false);
 		}
 	}
 
 	return Ice::typeWidthInBytes(T(type));
 }
 
-using ElfHeader = std::conditional<sizeof(void*) == 8, Elf64_Ehdr, Elf32_Ehdr>::type;
-using SectionHeader = std::conditional<sizeof(void*) == 8, Elf64_Shdr, Elf32_Shdr>::type;
+using ElfHeader = std::conditional<sizeof(void *) == 8, Elf64_Ehdr, Elf32_Ehdr>::type;
+using SectionHeader = std::conditional<sizeof(void *) == 8, Elf64_Shdr, Elf32_Shdr>::type;
 
 inline const SectionHeader *sectionHeader(const ElfHeader *elfHeader)
 {
-	return reinterpret_cast<const SectionHeader*>((intptr_t)elfHeader + elfHeader->e_shoff);
+	return reinterpret_cast<const SectionHeader *>((intptr_t)elfHeader + elfHeader->e_shoff);
 }
 
 inline const SectionHeader *elfSection(const ElfHeader *elfHeader, int index)
@@ -270,13 +276,13 @@
 		}
 
 		intptr_t symbolAddress = (intptr_t)elfHeader + symbolTable->sh_offset;
-		Elf32_Sym &symbol = ((Elf32_Sym*)symbolAddress)[index];
+		Elf32_Sym &symbol = ((Elf32_Sym *)symbolAddress)[index];
 		uint16_t section = symbol.st_shndx;
 
 		if(section != SHN_UNDEF && section < SHN_LORESERVE)
 		{
 			const SectionHeader *target = elfSection(elfHeader, symbol.st_shndx);
-			symbolValue = reinterpret_cast<void*>((intptr_t)elfHeader + symbol.st_value + target->sh_offset);
+			symbolValue = reinterpret_cast<void *>((intptr_t)elfHeader + symbol.st_value + target->sh_offset);
 		}
 		else
 		{
@@ -285,49 +291,49 @@
 	}
 
 	intptr_t address = (intptr_t)elfHeader + target->sh_offset;
-	unaligned_ptr<int32_t> patchSite = (int32_t*)(address + relocation.r_offset);
+	unaligned_ptr<int32_t> patchSite = (int32_t *)(address + relocation.r_offset);
 
 	if(CPUID::ARM)
 	{
 		switch(relocation.getType())
 		{
-		case R_ARM_NONE:
-			// No relocation
-			break;
-		case R_ARM_MOVW_ABS_NC:
+			case R_ARM_NONE:
+				// No relocation
+				break;
+			case R_ARM_MOVW_ABS_NC:
 			{
-				uint32_t thumb = 0;   // Calls to Thumb code not supported.
+				uint32_t thumb = 0;  // Calls to Thumb code not supported.
 				uint32_t lo = (uint32_t)(intptr_t)symbolValue | thumb;
 				*patchSite = (*patchSite & 0xFFF0F000) | ((lo & 0xF000) << 4) | (lo & 0x0FFF);
 			}
 			break;
-		case R_ARM_MOVT_ABS:
+			case R_ARM_MOVT_ABS:
 			{
 				uint32_t hi = (uint32_t)(intptr_t)(symbolValue) >> 16;
 				*patchSite = (*patchSite & 0xFFF0F000) | ((hi & 0xF000) << 4) | (hi & 0x0FFF);
 			}
 			break;
-		default:
-			ASSERT(false && "Unsupported relocation type");
-			return nullptr;
+			default:
+				ASSERT(false && "Unsupported relocation type");
+				return nullptr;
 		}
 	}
 	else
 	{
 		switch(relocation.getType())
 		{
-		case R_386_NONE:
-			// No relocation
-			break;
-		case R_386_32:
-			*patchSite = (int32_t)((intptr_t)symbolValue + *patchSite);
-			break;
-		case R_386_PC32:
-			*patchSite = (int32_t)((intptr_t)symbolValue + *patchSite - (intptr_t)patchSite);
-			break;
-		default:
-			ASSERT(false && "Unsupported relocation type");
-			return nullptr;
+			case R_386_NONE:
+				// No relocation
+				break;
+			case R_386_32:
+				*patchSite = (int32_t)((intptr_t)symbolValue + *patchSite);
+				break;
+			case R_386_PC32:
+				*patchSite = (int32_t)((intptr_t)symbolValue + *patchSite - (intptr_t)patchSite);
+				break;
+			default:
+				ASSERT(false && "Unsupported relocation type");
+				return nullptr;
 		}
 	}
 
@@ -355,13 +361,13 @@
 		}
 
 		intptr_t symbolAddress = (intptr_t)elfHeader + symbolTable->sh_offset;
-		Elf64_Sym &symbol = ((Elf64_Sym*)symbolAddress)[index];
+		Elf64_Sym &symbol = ((Elf64_Sym *)symbolAddress)[index];
 		uint16_t section = symbol.st_shndx;
 
 		if(section != SHN_UNDEF && section < SHN_LORESERVE)
 		{
 			const SectionHeader *target = elfSection(elfHeader, symbol.st_shndx);
-			symbolValue = reinterpret_cast<void*>((intptr_t)elfHeader + symbol.st_value + target->sh_offset);
+			symbolValue = reinterpret_cast<void *>((intptr_t)elfHeader + symbol.st_value + target->sh_offset);
 		}
 		else
 		{
@@ -370,26 +376,26 @@
 	}
 
 	intptr_t address = (intptr_t)elfHeader + target->sh_offset;
-	unaligned_ptr<int32_t> patchSite32 = (int32_t*)(address + relocation.r_offset);
-	unaligned_ptr<int64_t> patchSite64 = (int64_t*)(address + relocation.r_offset);
+	unaligned_ptr<int32_t> patchSite32 = (int32_t *)(address + relocation.r_offset);
+	unaligned_ptr<int64_t> patchSite64 = (int64_t *)(address + relocation.r_offset);
 
 	switch(relocation.getType())
 	{
-	case R_X86_64_NONE:
-		// No relocation
-		break;
-	case R_X86_64_64:
-		*patchSite64 = (int64_t)((intptr_t)symbolValue + *patchSite64 + relocation.r_addend);
-		break;
-	case R_X86_64_PC32:
-		*patchSite32 = (int32_t)((intptr_t)symbolValue + *patchSite32 - (intptr_t)patchSite32 + relocation.r_addend);
-		break;
-	case R_X86_64_32S:
-		*patchSite32 = (int32_t)((intptr_t)symbolValue + *patchSite32 + relocation.r_addend);
-		break;
-	default:
-		ASSERT(false && "Unsupported relocation type");
-		return nullptr;
+		case R_X86_64_NONE:
+			// No relocation
+			break;
+		case R_X86_64_64:
+			*patchSite64 = (int64_t)((intptr_t)symbolValue + *patchSite64 + relocation.r_addend);
+			break;
+		case R_X86_64_PC32:
+			*patchSite32 = (int32_t)((intptr_t)symbolValue + *patchSite32 - (intptr_t)patchSite32 + relocation.r_addend);
+			break;
+		case R_X86_64_32S:
+			*patchSite32 = (int32_t)((intptr_t)symbolValue + *patchSite32 + relocation.r_addend);
+			break;
+		default:
+			ASSERT(false && "Unsupported relocation type");
+			return nullptr;
 	}
 
 	return symbolValue;
@@ -397,7 +403,7 @@
 
 void *loadImage(uint8_t *const elfImage, size_t &codeSize)
 {
-	ElfHeader *elfHeader = (ElfHeader*)elfImage;
+	ElfHeader *elfHeader = (ElfHeader *)elfImage;
 
 	if(!elfHeader->checkMagic())
 	{
@@ -405,22 +411,22 @@
 	}
 
 	// Expect ELF bitness to match platform
-	ASSERT(sizeof(void*) == 8 ? elfHeader->getFileClass() == ELFCLASS64 : elfHeader->getFileClass() == ELFCLASS32);
-	#if defined(__i386__)
-		ASSERT(sizeof(void*) == 4 && elfHeader->e_machine == EM_386);
-	#elif defined(__x86_64__)
-		ASSERT(sizeof(void*) == 8 && elfHeader->e_machine == EM_X86_64);
-	#elif defined(__arm__)
-		ASSERT(sizeof(void*) == 4 && elfHeader->e_machine == EM_ARM);
-	#elif defined(__aarch64__)
-		ASSERT(sizeof(void*) == 8 && elfHeader->e_machine == EM_AARCH64);
-	#elif defined(__mips__)
-		ASSERT(sizeof(void*) == 4 && elfHeader->e_machine == EM_MIPS);
-	#else
-		#error "Unsupported platform"
-	#endif
+	ASSERT(sizeof(void *) == 8 ? elfHeader->getFileClass() == ELFCLASS64 : elfHeader->getFileClass() == ELFCLASS32);
+#if defined(__i386__)
+	ASSERT(sizeof(void *) == 4 && elfHeader->e_machine == EM_386);
+#elif defined(__x86_64__)
+	ASSERT(sizeof(void *) == 8 && elfHeader->e_machine == EM_X86_64);
+#elif defined(__arm__)
+	ASSERT(sizeof(void *) == 4 && elfHeader->e_machine == EM_ARM);
+#elif defined(__aarch64__)
+	ASSERT(sizeof(void *) == 8 && elfHeader->e_machine == EM_AARCH64);
+#elif defined(__mips__)
+	ASSERT(sizeof(void *) == 4 && elfHeader->e_machine == EM_MIPS);
+#else
+#	error "Unsupported platform"
+#endif
 
-	SectionHeader *sectionHeader = (SectionHeader*)(elfImage + elfHeader->e_shoff);
+	SectionHeader *sectionHeader = (SectionHeader *)(elfImage + elfHeader->e_shoff);
 	void *entry = nullptr;
 
 	for(int i = 0; i < elfHeader->e_shnum; i++)
@@ -435,21 +441,21 @@
 		}
 		else if(sectionHeader[i].sh_type == SHT_REL)
 		{
-			ASSERT(sizeof(void*) == 4 && "UNIMPLEMENTED");   // Only expected/implemented for 32-bit code
+			ASSERT(sizeof(void *) == 4 && "UNIMPLEMENTED");  // Only expected/implemented for 32-bit code
 
 			for(Elf32_Word index = 0; index < sectionHeader[i].sh_size / sectionHeader[i].sh_entsize; index++)
 			{
-				const Elf32_Rel &relocation = ((const Elf32_Rel*)(elfImage + sectionHeader[i].sh_offset))[index];
+				const Elf32_Rel &relocation = ((const Elf32_Rel *)(elfImage + sectionHeader[i].sh_offset))[index];
 				relocateSymbol(elfHeader, relocation, sectionHeader[i]);
 			}
 		}
 		else if(sectionHeader[i].sh_type == SHT_RELA)
 		{
-			ASSERT(sizeof(void*) == 8 && "UNIMPLEMENTED");   // Only expected/implemented for 64-bit code
+			ASSERT(sizeof(void *) == 8 && "UNIMPLEMENTED");  // Only expected/implemented for 64-bit code
 
 			for(Elf32_Word index = 0; index < sectionHeader[i].sh_size / sectionHeader[i].sh_entsize; index++)
 			{
-				const Elf64_Rela &relocation = ((const Elf64_Rela*)(elfImage + sectionHeader[i].sh_offset))[index];
+				const Elf64_Rela &relocation = ((const Elf64_Rela *)(elfImage + sectionHeader[i].sh_offset))[index];
 				relocateSymbol(elfHeader, relocation, sectionHeader[i]);
 			}
 		}
@@ -462,15 +468,17 @@
 struct ExecutableAllocator
 {
 	ExecutableAllocator() {}
-	template<class U> ExecutableAllocator(const ExecutableAllocator<U> &other) {}
+	template<class U>
+	ExecutableAllocator(const ExecutableAllocator<U> &other)
+	{}
 
 	using value_type = T;
 	using size_type = std::size_t;
 
 	T *allocate(size_type n)
 	{
-		return (T*)allocateMemoryPages(
-			sizeof(T) * n, PERMISSION_READ | PERMISSION_WRITE, true);
+		return (T *)allocateMemoryPages(
+		    sizeof(T) * n, PERMISSION_READ | PERMISSION_WRITE, true);
 	}
 
 	void deallocate(T *p, size_type n)
@@ -485,7 +493,8 @@
 	ELFMemoryStreamer &operator=(const ELFMemoryStreamer &) = delete;
 
 public:
-	ELFMemoryStreamer() : Routine()
+	ELFMemoryStreamer()
+	    : Routine()
 	{
 		position = 0;
 		buffer.reserve(0x1000);
@@ -507,7 +516,8 @@
 			buffer[position] = Value;
 			position++;
 		}
-		else ASSERT(false && "UNIMPLEMENTED");
+		else
+			ASSERT(false && "UNIMPLEMENTED");
 	}
 
 	void writeBytes(llvm::StringRef Bytes) override
@@ -522,9 +532,9 @@
 
 	void seek(uint64_t Off) override { position = Off; }
 
-	const void* finalizeEntryBegin()
+	const void *finalizeEntryBegin()
 	{
-		position = std::numeric_limits<std::size_t>::max();   // Can't stream more data after this
+		position = std::numeric_limits<std::size_t>::max();  // Can't stream more data after this
 
 		size_t codeSize = 0;
 		const void *entry = loadImage(&buffer[0], codeSize);
@@ -533,12 +543,12 @@
 #if defined(_WIN32)
 		FlushInstructionCache(GetCurrentProcess(), NULL, 0);
 #else
-		__builtin___clear_cache((char*)entry, (char*)entry + codeSize);
+		__builtin___clear_cache((char *)entry, (char *)entry + codeSize);
 #endif
 		return entry;
 	}
 
-	void setEntry(int index, const void* func)
+	void setEntry(int index, const void *func)
 	{
 		ASSERT(func);
 		funcs[index] = func;
@@ -550,7 +560,7 @@
 		return funcs[index];
 	}
 
-	const void* addConstantData(const void* data, size_t size)
+	const void *addConstantData(const void *data, size_t size)
 	{
 		auto buf = std::unique_ptr<uint8_t[]>(new uint8_t[size]);
 		memcpy(buf.get(), data, size);
@@ -560,7 +570,7 @@
 	}
 
 private:
-	std::array<const void*, Nucleus::CoroutineEntryCount> funcs = {};
+	std::array<const void *, Nucleus::CoroutineEntryCount> funcs = {};
 	std::vector<uint8_t, ExecutableAllocator<uint8_t>> buffer;
 	std::size_t position;
 	std::vector<std::unique_ptr<uint8_t[]>> constantData;
@@ -568,21 +578,21 @@
 
 Nucleus::Nucleus()
 {
-	::codegenMutex.lock();   // Reactor is currently not thread safe
+	::codegenMutex.lock();  // Reactor is currently not thread safe
 
 	Ice::ClFlags &Flags = Ice::ClFlags::Flags;
 	Ice::ClFlags::getParsedClFlags(Flags);
 
-	#if defined(__arm__)
-		Flags.setTargetArch(Ice::Target_ARM32);
-		Flags.setTargetInstructionSet(Ice::ARM32InstructionSet_HWDivArm);
-	#elif defined(__mips__)
-		Flags.setTargetArch(Ice::Target_MIPS32);
-		Flags.setTargetInstructionSet(Ice::BaseInstructionSet);
-	#else   // x86
-		Flags.setTargetArch(sizeof(void*) == 8 ? Ice::Target_X8664 : Ice::Target_X8632);
-		Flags.setTargetInstructionSet(CPUID::SSE4_1 ? Ice::X86InstructionSet_SSE4_1 : Ice::X86InstructionSet_SSE2);
-	#endif
+#if defined(__arm__)
+	Flags.setTargetArch(Ice::Target_ARM32);
+	Flags.setTargetInstructionSet(Ice::ARM32InstructionSet_HWDivArm);
+#elif defined(__mips__)
+	Flags.setTargetArch(Ice::Target_MIPS32);
+	Flags.setTargetInstructionSet(Ice::BaseInstructionSet);
+#else  // x86
+	Flags.setTargetArch(sizeof(void *) == 8 ? Ice::Target_X8664 : Ice::Target_X8632);
+	Flags.setTargetInstructionSet(CPUID::SSE4_1 ? Ice::X86InstructionSet_SSE4_1 : Ice::X86InstructionSet_SSE2);
+#endif
 	Flags.setOutFileType(Ice::FT_Elf);
 	Flags.setOptLevel(toIce(getDefaultConfig().getOptimization().getLevel()));
 	Flags.setApplicationBinaryInterface(Ice::ABI_Platform);
@@ -598,7 +608,7 @@
 		Flags.setDecorateAsm(true);
 	}
 
-	if(false)   // Write out to a file
+	if(false)  // Write out to a file
 	{
 		std::error_code errorCode;
 		::out = new Ice::Fdstream("out.o", errorCode, llvm::sys::fs::F_None);
@@ -694,7 +704,7 @@
 	objectWriter->setUndefinedSyms(::context->getConstantExternSyms());
 	objectWriter->writeNonUserSections();
 
-	const void* entryBegin = ::routine->finalizeEntryBegin();
+	const void *entryBegin = ::routine->finalizeEntryBegin();
 	::routine->setEntry(Nucleus::CoroutineEntryBegin, entryBegin);
 
 	Routine *handoffRoutine = ::routine;
@@ -729,14 +739,14 @@
 
 void Nucleus::setInsertBlock(BasicBlock *basicBlock)
 {
-//	ASSERT(::basicBlock->getInsts().back().getTerminatorEdges().size() >= 0 && "Previous basic block must have a terminator");
+	//	ASSERT(::basicBlock->getInsts().back().getTerminatorEdges().size() >= 0 && "Previous basic block must have a terminator");
 
 	Variable::materializeAll();
 
 	::basicBlock = basicBlock;
 }
 
-void Nucleus::createFunction(Type *ReturnType, std::vector<Type*> &Params)
+void Nucleus::createFunction(Type *ReturnType, std::vector<Type *> &Params)
 {
 	uint32_t sequenceNumber = 0;
 	::function = Ice::Cfg::create(::context, sequenceNumber).release();
@@ -800,16 +810,16 @@
 {
 	switch(op)
 	{
-	case Ice::InstArithmetic::Add:
-	case Ice::InstArithmetic::Fadd:
-	case Ice::InstArithmetic::Mul:
-	case Ice::InstArithmetic::Fmul:
-	case Ice::InstArithmetic::And:
-	case Ice::InstArithmetic::Or:
-	case Ice::InstArithmetic::Xor:
-		return true;
-	default:
-		return false;
+		case Ice::InstArithmetic::Add:
+		case Ice::InstArithmetic::Fadd:
+		case Ice::InstArithmetic::Mul:
+		case Ice::InstArithmetic::Fmul:
+		case Ice::InstArithmetic::And:
+		case Ice::InstArithmetic::Or:
+		case Ice::InstArithmetic::Xor:
+			return true;
+		default:
+			return false;
 	}
 }
 
@@ -923,10 +933,8 @@
 
 Value *Nucleus::createFNeg(Value *v)
 {
-	double c[4] = {-0.0, -0.0, -0.0, -0.0};
-	Value *negativeZero = Ice::isVectorType(v->getType()) ?
-	                      createConstantVector(c, T(v->getType())) :
-	                      V(::context->getConstantFloat(-0.0f));
+	double c[4] = { -0.0, -0.0, -0.0, -0.0 };
+	Value *negativeZero = Ice::isVectorType(v->getType()) ? createConstantVector(c, T(v->getType())) : V(::context->getConstantFloat(-0.0f));
 
 	return createFSub(negativeZero, v);
 }
@@ -937,22 +945,22 @@
 	{
 		return createXor(v, V(::context->getConstantInt(v->getType(), -1)));
 	}
-	else   // Vector
+	else  // Vector
 	{
-		int64_t c[16] = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1};
+		int64_t c[16] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 };
 		return createXor(v, createConstantVector(c, T(v->getType())));
 	}
 }
 
 Value *Nucleus::createLoad(Value *ptr, Type *type, bool isVolatile, unsigned int align, bool atomic, std::memory_order memoryOrder)
 {
-	ASSERT(!atomic);  // Unimplemented
+	ASSERT(!atomic);                                   // Unimplemented
 	ASSERT(memoryOrder == std::memory_order_relaxed);  // Unimplemented
 
 	int valueType = (int)reinterpret_cast<intptr_t>(type);
 	Ice::Variable *result = ::function->makeVariable(T(type));
 
-	if((valueType & EmulatedBits) && (align != 0))   // Narrow vector not stored on stack.
+	if((valueType & EmulatedBits) && (align != 0))  // Narrow vector not stored on stack.
 	{
 		if(emulateIntrinsics)
 		{
@@ -980,11 +988,12 @@
 				auto bitcast = Ice::InstCast::create(::function, Ice::InstCast::Bitcast, result, vector.loadValue());
 				::basicBlock->appendInst(bitcast);
 			}
-			else UNREACHABLE("typeSize(type): %d", int(typeSize(type)));
+			else
+				UNREACHABLE("typeSize(type): %d", int(typeSize(type)));
 		}
 		else
 		{
-			const Ice::Intrinsics::IntrinsicInfo intrinsic = {Ice::Intrinsics::LoadSubVector, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F};
+			const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::LoadSubVector, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F };
 			auto target = ::context->getConstantUndef(Ice::IceType_i32);
 			auto load = Ice::InstIntrinsicCall::create(::function, 2, result, target, intrinsic);
 			load->addArg(ptr);
@@ -1003,23 +1012,23 @@
 
 Value *Nucleus::createStore(Value *value, Value *ptr, Type *type, bool isVolatile, unsigned int align, bool atomic, std::memory_order memoryOrder)
 {
-	ASSERT(!atomic);  // Unimplemented
+	ASSERT(!atomic);                                   // Unimplemented
 	ASSERT(memoryOrder == std::memory_order_relaxed);  // Unimplemented
 
-	#if __has_feature(memory_sanitizer)
-		// Mark all (non-stack) memory writes as initialized by calling __msan_unpoison
-		if(align != 0)
-		{
-			auto call = Ice::InstCall::create(::function, 2, nullptr, ::context->getConstantInt64(reinterpret_cast<intptr_t>(__msan_unpoison)), false);
-			call->addArg(ptr);
-			call->addArg(::context->getConstantInt64(typeSize(type)));
-			::basicBlock->appendInst(call);
-		}
-	#endif
+#if __has_feature(memory_sanitizer)
+	    // Mark all (non-stack) memory writes as initialized by calling __msan_unpoison
+	if(align != 0)
+	{
+		auto call = Ice::InstCall::create(::function, 2, nullptr, ::context->getConstantInt64(reinterpret_cast<intptr_t>(__msan_unpoison)), false);
+		call->addArg(ptr);
+		call->addArg(::context->getConstantInt64(typeSize(type)));
+		::basicBlock->appendInst(call);
+	}
+#endif
 
 	int valueType = (int)reinterpret_cast<intptr_t>(type);
 
-	if((valueType & EmulatedBits) && (align != 0))   // Narrow vector not stored on stack.
+	if((valueType & EmulatedBits) && (align != 0))  // Narrow vector not stored on stack.
 	{
 		if(emulateIntrinsics)
 		{
@@ -1049,11 +1058,12 @@
 				Int y = Extract(v, 1);
 				*Pointer<Int>(pointer + 4) = y;
 			}
-			else UNREACHABLE("typeSize(type): %d", int(typeSize(type)));
+			else
+				UNREACHABLE("typeSize(type): %d", int(typeSize(type)));
 		}
 		else
 		{
-			const Ice::Intrinsics::IntrinsicInfo intrinsic = {Ice::Intrinsics::StoreSubVector, Ice::Intrinsics::SideEffects_T, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_T};
+			const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::StoreSubVector, Ice::Intrinsics::SideEffects_T, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_T };
 			auto target = ::context->getConstantUndef(Ice::IceType_i32);
 			auto store = Ice::InstIntrinsicCall::create(::function, 3, nullptr, target, intrinsic);
 			store->addArg(value);
@@ -1094,7 +1104,7 @@
 		index = createMul(index, createConstantInt((int)typeSize(type)));
 	}
 
-	if(sizeof(void*) == 8)
+	if(sizeof(void *) == 8)
 	{
 		if(unsignedIndex)
 		{
@@ -1453,7 +1463,7 @@
 	auto switchInst = Ice::InstSwitch::create(::function, numCases, control, defaultBranch);
 	::basicBlock->appendInst(switchInst);
 
-	return reinterpret_cast<SwitchCases*>(switchInst);
+	return reinterpret_cast<SwitchCases *>(switchInst);
 }
 
 void Nucleus::addSwitchCase(SwitchCases *switchCases, int label, BasicBlock *branch)
@@ -1469,7 +1479,7 @@
 
 Type *Nucleus::getPointerType(Type *ElementType)
 {
-	if(sizeof(void*) == 8)
+	if(sizeof(void *) == 8)
 	{
 		return T(Ice::IceType_i64);
 	}
@@ -1484,7 +1494,7 @@
 	if(Ice::isVectorType(T(Ty)))
 	{
 		ASSERT(Ice::typeNumElements(T(Ty)) <= 16);
-		int64_t c[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+		int64_t c[16] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
 		return createConstantVector(c, Ty);
 	}
 	else
@@ -1540,7 +1550,7 @@
 
 Value *Nucleus::createNullPointer(Type *Ty)
 {
-	return createNullValue(T(sizeof(void*) == 8 ? Ice::IceType_i64 : Ice::IceType_i32));
+	return createNullValue(T(sizeof(void *) == 8 ? Ice::IceType_i64 : Ice::IceType_i32));
 }
 
 Value *Nucleus::createConstantVector(const int64_t *constants, Type *type)
@@ -1551,79 +1561,79 @@
 	auto globalPool = ::function->getGlobalPool();
 
 	const int64_t *i = constants;
-	const double *f = reinterpret_cast<const double*>(constants);
+	const double *f = reinterpret_cast<const double *>(constants);
 	Ice::VariableDeclaration::DataInitializer *dataInitializer = nullptr;
 
 	switch((int)reinterpret_cast<intptr_t>(type))
 	{
-	case Ice::IceType_v4i32:
-	case Ice::IceType_v4i1:
+		case Ice::IceType_v4i32:
+		case Ice::IceType_v4i1:
 		{
-			const int initializer[4] = {(int)i[0], (int)i[1], (int)i[2], (int)i[3]};
+			const int initializer[4] = { (int)i[0], (int)i[1], (int)i[2], (int)i[3] };
 			static_assert(sizeof(initializer) == vectorSize, "!");
-			dataInitializer = Ice::VariableDeclaration::DataInitializer::create(globalPool, (const char*)initializer, vectorSize);
+			dataInitializer = Ice::VariableDeclaration::DataInitializer::create(globalPool, (const char *)initializer, vectorSize);
 		}
 		break;
-	case Ice::IceType_v4f32:
+		case Ice::IceType_v4f32:
 		{
-			const float initializer[4] = {(float)f[0], (float)f[1], (float)f[2], (float)f[3]};
+			const float initializer[4] = { (float)f[0], (float)f[1], (float)f[2], (float)f[3] };
 			static_assert(sizeof(initializer) == vectorSize, "!");
-			dataInitializer = Ice::VariableDeclaration::DataInitializer::create(globalPool, (const char*)initializer, vectorSize);
+			dataInitializer = Ice::VariableDeclaration::DataInitializer::create(globalPool, (const char *)initializer, vectorSize);
 		}
 		break;
-	case Ice::IceType_v8i16:
-	case Ice::IceType_v8i1:
+		case Ice::IceType_v8i16:
+		case Ice::IceType_v8i1:
 		{
-			const short initializer[8] = {(short)i[0], (short)i[1], (short)i[2], (short)i[3], (short)i[4], (short)i[5], (short)i[6], (short)i[7]};
+			const short initializer[8] = { (short)i[0], (short)i[1], (short)i[2], (short)i[3], (short)i[4], (short)i[5], (short)i[6], (short)i[7] };
 			static_assert(sizeof(initializer) == vectorSize, "!");
-			dataInitializer = Ice::VariableDeclaration::DataInitializer::create(globalPool, (const char*)initializer, vectorSize);
+			dataInitializer = Ice::VariableDeclaration::DataInitializer::create(globalPool, (const char *)initializer, vectorSize);
 		}
 		break;
-	case Ice::IceType_v16i8:
-	case Ice::IceType_v16i1:
+		case Ice::IceType_v16i8:
+		case Ice::IceType_v16i1:
 		{
-			const char initializer[16] = {(char)i[0], (char)i[1], (char)i[2], (char)i[3], (char)i[4], (char)i[5], (char)i[6], (char)i[7], (char)i[8], (char)i[9], (char)i[10], (char)i[11], (char)i[12], (char)i[13], (char)i[14], (char)i[15]};
+			const char initializer[16] = { (char)i[0], (char)i[1], (char)i[2], (char)i[3], (char)i[4], (char)i[5], (char)i[6], (char)i[7], (char)i[8], (char)i[9], (char)i[10], (char)i[11], (char)i[12], (char)i[13], (char)i[14], (char)i[15] };
 			static_assert(sizeof(initializer) == vectorSize, "!");
-			dataInitializer = Ice::VariableDeclaration::DataInitializer::create(globalPool, (const char*)initializer, vectorSize);
+			dataInitializer = Ice::VariableDeclaration::DataInitializer::create(globalPool, (const char *)initializer, vectorSize);
 		}
 		break;
-	case Type_v2i32:
+		case Type_v2i32:
 		{
-			const int initializer[4] = {(int)i[0], (int)i[1], (int)i[0], (int)i[1]};
+			const int initializer[4] = { (int)i[0], (int)i[1], (int)i[0], (int)i[1] };
 			static_assert(sizeof(initializer) == vectorSize, "!");
-			dataInitializer = Ice::VariableDeclaration::DataInitializer::create(globalPool, (const char*)initializer, vectorSize);
+			dataInitializer = Ice::VariableDeclaration::DataInitializer::create(globalPool, (const char *)initializer, vectorSize);
 		}
 		break;
-	case Type_v2f32:
+		case Type_v2f32:
 		{
-			const float initializer[4] = {(float)f[0], (float)f[1], (float)f[0], (float)f[1]};
+			const float initializer[4] = { (float)f[0], (float)f[1], (float)f[0], (float)f[1] };
 			static_assert(sizeof(initializer) == vectorSize, "!");
-			dataInitializer = Ice::VariableDeclaration::DataInitializer::create(globalPool, (const char*)initializer, vectorSize);
+			dataInitializer = Ice::VariableDeclaration::DataInitializer::create(globalPool, (const char *)initializer, vectorSize);
 		}
 		break;
-	case Type_v4i16:
+		case Type_v4i16:
 		{
-			const short initializer[8] = {(short)i[0], (short)i[1], (short)i[2], (short)i[3], (short)i[0], (short)i[1], (short)i[2], (short)i[3]};
+			const short initializer[8] = { (short)i[0], (short)i[1], (short)i[2], (short)i[3], (short)i[0], (short)i[1], (short)i[2], (short)i[3] };
 			static_assert(sizeof(initializer) == vectorSize, "!");
-			dataInitializer = Ice::VariableDeclaration::DataInitializer::create(globalPool, (const char*)initializer, vectorSize);
+			dataInitializer = Ice::VariableDeclaration::DataInitializer::create(globalPool, (const char *)initializer, vectorSize);
 		}
 		break;
-	case Type_v8i8:
+		case Type_v8i8:
 		{
-			const char initializer[16] = {(char)i[0], (char)i[1], (char)i[2], (char)i[3], (char)i[4], (char)i[5], (char)i[6], (char)i[7], (char)i[0], (char)i[1], (char)i[2], (char)i[3], (char)i[4], (char)i[5], (char)i[6], (char)i[7]};
+			const char initializer[16] = { (char)i[0], (char)i[1], (char)i[2], (char)i[3], (char)i[4], (char)i[5], (char)i[6], (char)i[7], (char)i[0], (char)i[1], (char)i[2], (char)i[3], (char)i[4], (char)i[5], (char)i[6], (char)i[7] };
 			static_assert(sizeof(initializer) == vectorSize, "!");
-			dataInitializer = Ice::VariableDeclaration::DataInitializer::create(globalPool, (const char*)initializer, vectorSize);
+			dataInitializer = Ice::VariableDeclaration::DataInitializer::create(globalPool, (const char *)initializer, vectorSize);
 		}
 		break;
-	case Type_v4i8:
+		case Type_v4i8:
 		{
-			const char initializer[16] = {(char)i[0], (char)i[1], (char)i[2], (char)i[3], (char)i[0], (char)i[1], (char)i[2], (char)i[3], (char)i[0], (char)i[1], (char)i[2], (char)i[3], (char)i[0], (char)i[1], (char)i[2], (char)i[3]};
+			const char initializer[16] = { (char)i[0], (char)i[1], (char)i[2], (char)i[3], (char)i[0], (char)i[1], (char)i[2], (char)i[3], (char)i[0], (char)i[1], (char)i[2], (char)i[3], (char)i[0], (char)i[1], (char)i[2], (char)i[3] };
 			static_assert(sizeof(initializer) == vectorSize, "!");
-			dataInitializer = Ice::VariableDeclaration::DataInitializer::create(globalPool, (const char*)initializer, vectorSize);
+			dataInitializer = Ice::VariableDeclaration::DataInitializer::create(globalPool, (const char *)initializer, vectorSize);
 		}
 		break;
-	default:
-		UNREACHABLE("Unknown constant vector type: %d", (int)reinterpret_cast<intptr_t>(type));
+		default:
+			UNREACHABLE("Unknown constant vector type: %d", (int)reinterpret_cast<intptr_t>(type));
 	}
 
 	auto name = Ice::GlobalString::createWithoutString(::context);
@@ -1647,7 +1657,7 @@
 
 Value *Nucleus::createConstantVector(const double *constants, Type *type)
 {
-	return createConstantVector((const int64_t*)constants, type);
+	return createConstantVector((const int64_t *)constants, type);
 }
 
 Type *Void::getType()
@@ -1690,24 +1700,23 @@
 	return T(Type_v4i8);
 }
 
-namespace
+namespace {
+RValue<Byte> SaturateUnsigned(RValue<Short> x)
 {
-	RValue<Byte> SaturateUnsigned(RValue<Short> x)
-	{
-		return Byte(IfThenElse(Int(x) > 0xFF, Int(0xFF), IfThenElse(Int(x) < 0, Int(0), Int(x))));
-	}
-
-	RValue<Byte> Extract(RValue<Byte8> val, int i)
-	{
-		return RValue<Byte>(Nucleus::createExtractElement(val.value, Byte::getType(), i));
-	}
-
-	RValue<Byte8> Insert(RValue<Byte8> val, RValue<Byte> element, int i)
-	{
-		return RValue<Byte8>(Nucleus::createInsertElement(val.value, element.value, i));
-	}
+	return Byte(IfThenElse(Int(x) > 0xFF, Int(0xFF), IfThenElse(Int(x) < 0, Int(0), Int(x))));
 }
 
+RValue<Byte> Extract(RValue<Byte8> val, int i)
+{
+	return RValue<Byte>(Nucleus::createExtractElement(val.value, Byte::getType(), i));
+}
+
+RValue<Byte8> Insert(RValue<Byte8> val, RValue<Byte> element, int i)
+{
+	return RValue<Byte8>(Nucleus::createInsertElement(val.value, element.value, i));
+}
+}  // namespace
+
 RValue<Byte8> AddSat(RValue<Byte8> x, RValue<Byte8> y)
 {
 	if(emulateIntrinsics)
@@ -1727,7 +1736,7 @@
 	else
 	{
 		Ice::Variable *result = ::function->makeVariable(Ice::IceType_v16i8);
-		const Ice::Intrinsics::IntrinsicInfo intrinsic = {Ice::Intrinsics::AddSaturateUnsigned, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F};
+		const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::AddSaturateUnsigned, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F };
 		auto target = ::context->getConstantUndef(Ice::IceType_i32);
 		auto paddusb = Ice::InstIntrinsicCall::create(::function, 2, result, target, intrinsic);
 		paddusb->addArg(x.value);
@@ -1757,7 +1766,7 @@
 	else
 	{
 		Ice::Variable *result = ::function->makeVariable(Ice::IceType_v16i8);
-		const Ice::Intrinsics::IntrinsicInfo intrinsic = {Ice::Intrinsics::SubtractSaturateUnsigned, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F};
+		const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::SubtractSaturateUnsigned, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F };
 		auto target = ::context->getConstantUndef(Ice::IceType_i32);
 		auto psubusw = Ice::InstIntrinsicCall::create(::function, 2, result, target, intrinsic);
 		psubusw->addArg(x.value);
@@ -1796,15 +1805,15 @@
 	}
 	else
 	{
-		#if defined(__i386__) || defined(__x86_64__)
-			// SSE2 doesn't support byte vector shifts, so shift as shorts and recombine.
-			RValue<Short4> hi = (As<Short4>(lhs) >> rhs) & Short4(0xFF00u);
-			RValue<Short4> lo = As<Short4>(As<UShort4>((As<Short4>(lhs) << 8) >> rhs) >> 8);
+#if defined(__i386__) || defined(__x86_64__)
+		// SSE2 doesn't support byte vector shifts, so shift as shorts and recombine.
+		RValue<Short4> hi = (As<Short4>(lhs) >> rhs) & Short4(0xFF00u);
+		RValue<Short4> lo = As<Short4>(As<UShort4>((As<Short4>(lhs) << 8) >> rhs) >> 8);
 
-			return As<SByte8>(hi | lo);
-		#else
-			return RValue<SByte8>(Nucleus::createAShr(lhs.value, V(::context->getConstantInt32(rhs))));
-		#endif
+		return As<SByte8>(hi | lo);
+#else
+		return RValue<SByte8>(Nucleus::createAShr(lhs.value, V(::context->getConstantInt32(rhs))));
+#endif
 	}
 }
 
@@ -1818,7 +1827,7 @@
 	else
 	{
 		Ice::Variable *result = ::function->makeVariable(Ice::IceType_i32);
-		const Ice::Intrinsics::IntrinsicInfo intrinsic = {Ice::Intrinsics::SignMask, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F};
+		const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::SignMask, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F };
 		auto target = ::context->getConstantUndef(Ice::IceType_i32);
 		auto movmsk = Ice::InstIntrinsicCall::create(::function, 1, result, target, intrinsic);
 		movmsk->addArg(x.value);
@@ -1877,7 +1886,7 @@
 	else
 	{
 		Ice::Variable *result = ::function->makeVariable(Ice::IceType_v16i8);
-		const Ice::Intrinsics::IntrinsicInfo intrinsic = {Ice::Intrinsics::AddSaturateSigned, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F};
+		const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::AddSaturateSigned, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F };
 		auto target = ::context->getConstantUndef(Ice::IceType_i32);
 		auto paddsb = Ice::InstIntrinsicCall::create(::function, 2, result, target, intrinsic);
 		paddsb->addArg(x.value);
@@ -1907,7 +1916,7 @@
 	else
 	{
 		Ice::Variable *result = ::function->makeVariable(Ice::IceType_v16i8);
-		const Ice::Intrinsics::IntrinsicInfo intrinsic = {Ice::Intrinsics::SubtractSaturateSigned, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F};
+		const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::SubtractSaturateSigned, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F };
 		auto target = ::context->getConstantUndef(Ice::IceType_i32);
 		auto psubsb = Ice::InstIntrinsicCall::create(::function, 2, result, target, intrinsic);
 		psubsb->addArg(x.value);
@@ -1928,7 +1937,7 @@
 	else
 	{
 		Ice::Variable *result = ::function->makeVariable(Ice::IceType_i32);
-		const Ice::Intrinsics::IntrinsicInfo intrinsic = {Ice::Intrinsics::SignMask, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F};
+		const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::SignMask, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F };
 		auto target = ::context->getConstantUndef(Ice::IceType_i32);
 		auto movmsk = Ice::InstIntrinsicCall::create(::function, 1, result, target, intrinsic);
 		movmsk->addArg(x.value);
@@ -1975,7 +1984,7 @@
 
 Short4::Short4(RValue<Int4> cast)
 {
-	int select[8] = {0, 2, 4, 6, 0, 2, 4, 6};
+	int select[8] = { 0, 2, 4, 6, 0, 2, 4, 6 };
 	Value *short8 = Nucleus::createBitCast(cast.value, Short8::getType());
 	Value *packed = Nucleus::createShuffleVector(short8, short8, select);
 
@@ -2076,7 +2085,7 @@
 	else
 	{
 		Ice::Variable *result = ::function->makeVariable(Ice::IceType_v8i16);
-		const Ice::Intrinsics::IntrinsicInfo intrinsic = {Ice::Intrinsics::AddSaturateSigned, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F};
+		const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::AddSaturateSigned, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F };
 		auto target = ::context->getConstantUndef(Ice::IceType_i32);
 		auto paddsw = Ice::InstIntrinsicCall::create(::function, 2, result, target, intrinsic);
 		paddsw->addArg(x.value);
@@ -2102,7 +2111,7 @@
 	else
 	{
 		Ice::Variable *result = ::function->makeVariable(Ice::IceType_v8i16);
-		const Ice::Intrinsics::IntrinsicInfo intrinsic = {Ice::Intrinsics::SubtractSaturateSigned, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F};
+		const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::SubtractSaturateSigned, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F };
 		auto target = ::context->getConstantUndef(Ice::IceType_i32);
 		auto psubsw = Ice::InstIntrinsicCall::create(::function, 2, result, target, intrinsic);
 		psubsw->addArg(x.value);
@@ -2128,7 +2137,7 @@
 	else
 	{
 		Ice::Variable *result = ::function->makeVariable(Ice::IceType_v8i16);
-		const Ice::Intrinsics::IntrinsicInfo intrinsic = {Ice::Intrinsics::MultiplyHighSigned, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F};
+		const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::MultiplyHighSigned, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F };
 		auto target = ::context->getConstantUndef(Ice::IceType_i32);
 		auto pmulhw = Ice::InstIntrinsicCall::create(::function, 2, result, target, intrinsic);
 		pmulhw->addArg(x.value);
@@ -2152,7 +2161,7 @@
 	else
 	{
 		Ice::Variable *result = ::function->makeVariable(Ice::IceType_v8i16);
-		const Ice::Intrinsics::IntrinsicInfo intrinsic = {Ice::Intrinsics::MultiplyAddPairs, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F};
+		const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::MultiplyAddPairs, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F };
 		auto target = ::context->getConstantUndef(Ice::IceType_i32);
 		auto pmaddwd = Ice::InstIntrinsicCall::create(::function, 2, result, target, intrinsic);
 		pmaddwd->addArg(x.value);
@@ -2182,7 +2191,7 @@
 	else
 	{
 		Ice::Variable *result = ::function->makeVariable(Ice::IceType_v16i8);
-		const Ice::Intrinsics::IntrinsicInfo intrinsic = {Ice::Intrinsics::VectorPackSigned, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F};
+		const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::VectorPackSigned, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F };
 		auto target = ::context->getConstantUndef(Ice::IceType_i32);
 		auto pack = Ice::InstIntrinsicCall::create(::function, 2, result, target, intrinsic);
 		pack->addArg(x.value);
@@ -2212,7 +2221,7 @@
 	else
 	{
 		Ice::Variable *result = ::function->makeVariable(Ice::IceType_v16i8);
-		const Ice::Intrinsics::IntrinsicInfo intrinsic = {Ice::Intrinsics::VectorPackUnsigned, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F};
+		const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::VectorPackUnsigned, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F };
 		auto target = ::context->getConstantUndef(Ice::IceType_i32);
 		auto pack = Ice::InstIntrinsicCall::create(::function, 2, result, target, intrinsic);
 		pack->addArg(x.value);
@@ -2358,7 +2367,7 @@
 	else
 	{
 		Ice::Variable *result = ::function->makeVariable(Ice::IceType_v8i16);
-		const Ice::Intrinsics::IntrinsicInfo intrinsic = {Ice::Intrinsics::AddSaturateUnsigned, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F};
+		const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::AddSaturateUnsigned, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F };
 		auto target = ::context->getConstantUndef(Ice::IceType_i32);
 		auto paddusw = Ice::InstIntrinsicCall::create(::function, 2, result, target, intrinsic);
 		paddusw->addArg(x.value);
@@ -2384,7 +2393,7 @@
 	else
 	{
 		Ice::Variable *result = ::function->makeVariable(Ice::IceType_v8i16);
-		const Ice::Intrinsics::IntrinsicInfo intrinsic = {Ice::Intrinsics::SubtractSaturateUnsigned, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F};
+		const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::SubtractSaturateUnsigned, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F };
 		auto target = ::context->getConstantUndef(Ice::IceType_i32);
 		auto psubusw = Ice::InstIntrinsicCall::create(::function, 2, result, target, intrinsic);
 		psubusw->addArg(x.value);
@@ -2410,7 +2419,7 @@
 	else
 	{
 		Ice::Variable *result = ::function->makeVariable(Ice::IceType_v8i16);
-		const Ice::Intrinsics::IntrinsicInfo intrinsic = {Ice::Intrinsics::MultiplyHighUnsigned, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F};
+		const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::MultiplyHighUnsigned, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F };
 		auto target = ::context->getConstantUndef(Ice::IceType_i32);
 		auto pmulhuw = Ice::InstIntrinsicCall::create(::function, 2, result, target, intrinsic);
 		pmulhuw->addArg(x.value);
@@ -2626,27 +2635,27 @@
 	return T(Ice::IceType_v8i16);
 }
 
-RValue<Int> operator++(Int &val, int)   // Post-increment
+RValue<Int> operator++(Int &val, int)  // Post-increment
 {
 	RValue<Int> res = val;
 	val += 1;
 	return res;
 }
 
-const Int &operator++(Int &val)   // Pre-increment
+const Int &operator++(Int &val)  // Pre-increment
 {
 	val += 1;
 	return val;
 }
 
-RValue<Int> operator--(Int &val, int)   // Post-decrement
+RValue<Int> operator--(Int &val, int)  // Post-decrement
 {
 	RValue<Int> res = val;
 	val -= 1;
 	return res;
 }
 
-const Int &operator--(Int &val)   // Pre-decrement
+const Int &operator--(Int &val)  // Pre-decrement
 {
 	val -= 1;
 	return val;
@@ -2662,7 +2671,7 @@
 	else
 	{
 		Ice::Variable *result = ::function->makeVariable(Ice::IceType_i32);
-		const Ice::Intrinsics::IntrinsicInfo intrinsic = {Ice::Intrinsics::Nearbyint, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F};
+		const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::Nearbyint, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F };
 		auto target = ::context->getConstantUndef(Ice::IceType_i32);
 		auto nearbyint = Ice::InstIntrinsicCall::create(::function, 1, result, target, intrinsic);
 		nearbyint->addArg(cast.value);
@@ -2690,35 +2699,36 @@
 
 	// If the value is negative, store 0, otherwise store the result of the conversion
 	storeValue((~(As<Int>(cast) >> 31) &
-	// Check if the value can be represented as an Int
-		IfThenElse(cast >= ustartf,
-	// If the value is too large, subtract ustart and re-add it after conversion.
-			As<Int>(As<UInt>(Int(cast - Float(ustartf))) + UInt(ustart)),
-	// Otherwise, just convert normally
-			Int(cast))).value);
+	            // Check if the value can be represented as an Int
+	            IfThenElse(cast >= ustartf,
+	                       // If the value is too large, subtract ustart and re-add it after conversion.
+	                       As<Int>(As<UInt>(Int(cast - Float(ustartf))) + UInt(ustart)),
+	                       // Otherwise, just convert normally
+	                       Int(cast)))
+	               .value);
 }
 
-RValue<UInt> operator++(UInt &val, int)   // Post-increment
+RValue<UInt> operator++(UInt &val, int)  // Post-increment
 {
 	RValue<UInt> res = val;
 	val += 1;
 	return res;
 }
 
-const UInt &operator++(UInt &val)   // Pre-increment
+const UInt &operator++(UInt &val)  // Pre-increment
 {
 	val += 1;
 	return val;
 }
 
-RValue<UInt> operator--(UInt &val, int)   // Post-decrement
+RValue<UInt> operator--(UInt &val, int)  // Post-decrement
 {
 	RValue<UInt> res = val;
 	val -= 1;
 	return res;
 }
 
-const UInt &operator--(UInt &val)   // Pre-decrement
+const UInt &operator--(UInt &val)  // Pre-decrement
 {
 	val -= 1;
 	return val;
@@ -2822,17 +2832,18 @@
 	return T(Type_v2i32);
 }
 
-Int4::Int4(RValue<Byte4> cast) : XYZW(this)
+Int4::Int4(RValue<Byte4> cast)
+    : XYZW(this)
 {
 	Value *x = Nucleus::createBitCast(cast.value, Int::getType());
 	Value *a = Nucleus::createInsertElement(loadValue(), x, 0);
 
 	Value *e;
-	int swizzle[16] = {0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23};
+	int swizzle[16] = { 0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23 };
 	Value *b = Nucleus::createBitCast(a, Byte16::getType());
 	Value *c = Nucleus::createShuffleVector(b, V(Nucleus::createNullValue(Byte16::getType())), swizzle);
 
-	int swizzle2[8] = {0, 8, 1, 9, 2, 10, 3, 11};
+	int swizzle2[8] = { 0, 8, 1, 9, 2, 10, 3, 11 };
 	Value *d = Nucleus::createBitCast(c, Short8::getType());
 	e = Nucleus::createShuffleVector(d, V(Nucleus::createNullValue(Short8::getType())), swizzle2);
 
@@ -2840,43 +2851,47 @@
 	storeValue(f);
 }
 
-Int4::Int4(RValue<SByte4> cast) : XYZW(this)
+Int4::Int4(RValue<SByte4> cast)
+    : XYZW(this)
 {
 	Value *x = Nucleus::createBitCast(cast.value, Int::getType());
 	Value *a = Nucleus::createInsertElement(loadValue(), x, 0);
 
-	int swizzle[16] = {0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7};
+	int swizzle[16] = { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7 };
 	Value *b = Nucleus::createBitCast(a, Byte16::getType());
 	Value *c = Nucleus::createShuffleVector(b, b, swizzle);
 
-	int swizzle2[8] = {0, 0, 1, 1, 2, 2, 3, 3};
+	int swizzle2[8] = { 0, 0, 1, 1, 2, 2, 3, 3 };
 	Value *d = Nucleus::createBitCast(c, Short8::getType());
 	Value *e = Nucleus::createShuffleVector(d, d, swizzle2);
 
 	*this = As<Int4>(e) >> 24;
 }
 
-Int4::Int4(RValue<Short4> cast) : XYZW(this)
+Int4::Int4(RValue<Short4> cast)
+    : XYZW(this)
 {
-	int swizzle[8] = {0, 0, 1, 1, 2, 2, 3, 3};
+	int swizzle[8] = { 0, 0, 1, 1, 2, 2, 3, 3 };
 	Value *c = Nucleus::createShuffleVector(cast.value, cast.value, swizzle);
 
 	*this = As<Int4>(c) >> 16;
 }
 
-Int4::Int4(RValue<UShort4> cast) : XYZW(this)
+Int4::Int4(RValue<UShort4> cast)
+    : XYZW(this)
 {
-	int swizzle[8] = {0, 8, 1, 9, 2, 10, 3, 11};
+	int swizzle[8] = { 0, 8, 1, 9, 2, 10, 3, 11 };
 	Value *c = Nucleus::createShuffleVector(cast.value, Short8(0, 0, 0, 0, 0, 0, 0, 0).loadValue(), swizzle);
 	Value *d = Nucleus::createBitCast(c, Int4::getType());
 	storeValue(d);
 }
 
-Int4::Int4(RValue<Int> rhs) : XYZW(this)
+Int4::Int4(RValue<Int> rhs)
+    : XYZW(this)
 {
 	Value *vector = Nucleus::createBitCast(rhs.value, Int4::getType());
 
-	int swizzle[4] = {0, 0, 0, 0};
+	int swizzle[4] = { 0, 0, 0, 0 };
 	Value *replicate = Nucleus::createShuffleVector(vector, vector, swizzle);
 
 	storeValue(replicate);
@@ -2984,7 +2999,7 @@
 	else
 	{
 		Ice::Variable *result = ::function->makeVariable(Ice::IceType_v4i32);
-		const Ice::Intrinsics::IntrinsicInfo intrinsic = {Ice::Intrinsics::Nearbyint, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F};
+		const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::Nearbyint, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F };
 		auto target = ::context->getConstantUndef(Ice::IceType_i32);
 		auto nearbyint = Ice::InstIntrinsicCall::create(::function, 1, result, target, intrinsic);
 		nearbyint->addArg(cast.value);
@@ -3013,7 +3028,7 @@
 	else
 	{
 		Ice::Variable *result = ::function->makeVariable(Ice::IceType_v8i16);
-		const Ice::Intrinsics::IntrinsicInfo intrinsic = {Ice::Intrinsics::VectorPackSigned, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F};
+		const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::VectorPackSigned, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F };
 		auto target = ::context->getConstantUndef(Ice::IceType_i32);
 		auto pack = Ice::InstIntrinsicCall::create(::function, 2, result, target, intrinsic);
 		pack->addArg(x.value);
@@ -3039,7 +3054,7 @@
 	else
 	{
 		Ice::Variable *result = ::function->makeVariable(Ice::IceType_v8i16);
-		const Ice::Intrinsics::IntrinsicInfo intrinsic = {Ice::Intrinsics::VectorPackUnsigned, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F};
+		const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::VectorPackUnsigned, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F };
 		auto target = ::context->getConstantUndef(Ice::IceType_i32);
 		auto pack = Ice::InstIntrinsicCall::create(::function, 2, result, target, intrinsic);
 		pack->addArg(x.value);
@@ -3060,7 +3075,7 @@
 	else
 	{
 		Ice::Variable *result = ::function->makeVariable(Ice::IceType_i32);
-		const Ice::Intrinsics::IntrinsicInfo intrinsic = {Ice::Intrinsics::SignMask, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F};
+		const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::SignMask, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F };
 		auto target = ::context->getConstantUndef(Ice::IceType_i32);
 		auto movmsk = Ice::InstIntrinsicCall::create(::function, 1, result, target, intrinsic);
 		movmsk->addArg(x.value);
@@ -3075,7 +3090,8 @@
 	return T(Ice::IceType_v4i32);
 }
 
-UInt4::UInt4(RValue<Float4> cast) : XYZW(this)
+UInt4::UInt4(RValue<Float4> cast)
+    : XYZW(this)
 {
 	// Smallest positive value representable in UInt, but not in Int
 	const unsigned int ustart = 0x80000000u;
@@ -3085,17 +3101,18 @@
 	Int4 uiValue = CmpNLT(cast, Float4(ustartf));
 	// If the value is too large, subtract ustart and re-add it after conversion.
 	uiValue = (uiValue & As<Int4>(As<UInt4>(Int4(cast - Float4(ustartf))) + UInt4(ustart))) |
-	// Otherwise, just convert normally
+	          // Otherwise, just convert normally
 	          (~uiValue & Int4(cast));
 	// If the value is negative, store 0, otherwise store the result of the conversion
 	storeValue((~(As<Int4>(cast) >> 31) & uiValue).value);
 }
 
-UInt4::UInt4(RValue<UInt> rhs) : XYZW(this)
+UInt4::UInt4(RValue<UInt> rhs)
+    : XYZW(this)
 {
 	Value *vector = Nucleus::createBitCast(rhs.value, UInt4::getType());
 
-	int swizzle[4] = {0, 0, 0, 0};
+	int swizzle[4] = { 0, 0, 0, 0 };
 	Value *replicate = Nucleus::createShuffleVector(vector, vector, swizzle);
 
 	storeValue(replicate);
@@ -3216,7 +3233,7 @@
 RValue<Float> Sqrt(RValue<Float> x)
 {
 	Ice::Variable *result = ::function->makeVariable(Ice::IceType_f32);
-	const Ice::Intrinsics::IntrinsicInfo intrinsic = {Ice::Intrinsics::Sqrt, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F};
+	const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::Sqrt, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F };
 	auto target = ::context->getConstantUndef(Ice::IceType_i32);
 	auto sqrt = Ice::InstIntrinsicCall::create(::function, 1, result, target, intrinsic);
 	sqrt->addArg(x.value);
@@ -3260,11 +3277,12 @@
 	return T(Type_v2f32);
 }
 
-Float4::Float4(RValue<Float> rhs) : XYZW(this)
+Float4::Float4(RValue<Float> rhs)
+    : XYZW(this)
 {
 	Value *vector = Nucleus::createBitCast(rhs.value, Float4::getType());
 
-	int swizzle[4] = {0, 0, 0, 0};
+	int swizzle[4] = { 0, 0, 0, 0 };
 	Value *replicate = Nucleus::createShuffleVector(vector, vector, swizzle);
 
 	storeValue(replicate);
@@ -3321,7 +3339,7 @@
 	else
 	{
 		Ice::Variable *result = ::function->makeVariable(Ice::IceType_v4f32);
-		const Ice::Intrinsics::IntrinsicInfo intrinsic = {Ice::Intrinsics::Sqrt, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F};
+		const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::Sqrt, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F };
 		auto target = ::context->getConstantUndef(Ice::IceType_i32);
 		auto sqrt = Ice::InstIntrinsicCall::create(::function, 1, result, target, intrinsic);
 		sqrt->addArg(x.value);
@@ -3341,7 +3359,7 @@
 	else
 	{
 		Ice::Variable *result = ::function->makeVariable(Ice::IceType_i32);
-		const Ice::Intrinsics::IntrinsicInfo intrinsic = {Ice::Intrinsics::SignMask, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F};
+		const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::SignMask, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F };
 		auto target = ::context->getConstantUndef(Ice::IceType_i32);
 		auto movmsk = Ice::InstIntrinsicCall::create(::function, 1, result, target, intrinsic);
 		movmsk->addArg(x.value);
@@ -3421,7 +3439,7 @@
 	else if(CPUID::SSE4_1)
 	{
 		Ice::Variable *result = ::function->makeVariable(Ice::IceType_v4f32);
-		const Ice::Intrinsics::IntrinsicInfo intrinsic = {Ice::Intrinsics::Round, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F};
+		const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::Round, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F };
 		auto target = ::context->getConstantUndef(Ice::IceType_i32);
 		auto round = Ice::InstIntrinsicCall::create(::function, 2, result, target, intrinsic);
 		round->addArg(x.value);
@@ -3441,7 +3459,7 @@
 	if(CPUID::SSE4_1)
 	{
 		Ice::Variable *result = ::function->makeVariable(Ice::IceType_v4f32);
-		const Ice::Intrinsics::IntrinsicInfo intrinsic = {Ice::Intrinsics::Round, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F};
+		const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::Round, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F };
 		auto target = ::context->getConstantUndef(Ice::IceType_i32);
 		auto round = Ice::InstIntrinsicCall::create(::function, 2, result, target, intrinsic);
 		round->addArg(x.value);
@@ -3466,9 +3484,9 @@
 	}
 	else
 	{
-		frc = x - Float4(Int4(x));   // Signed fractional part.
+		frc = x - Float4(Int4(x));  // Signed fractional part.
 
-		frc += As<Float4>(As<Int4>(CmpNLE(Float4(0.0f), frc)) & As<Int4>(Float4(1, 1, 1, 1)));   // Add 1.0 if negative.
+		frc += As<Float4>(As<Int4>(CmpNLE(Float4(0.0f), frc)) & As<Int4>(Float4(1, 1, 1, 1)));  // Add 1.0 if negative.
 	}
 
 	// x - floor(x) can be 1.0 for very small negative x.
@@ -3481,7 +3499,7 @@
 	if(CPUID::SSE4_1)
 	{
 		Ice::Variable *result = ::function->makeVariable(Ice::IceType_v4f32);
-		const Ice::Intrinsics::IntrinsicInfo intrinsic = {Ice::Intrinsics::Round, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F};
+		const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::Round, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F };
 		auto target = ::context->getConstantUndef(Ice::IceType_i32);
 		auto round = Ice::InstIntrinsicCall::create(::function, 2, result, target, intrinsic);
 		round->addArg(x.value);
@@ -3501,7 +3519,7 @@
 	if(CPUID::SSE4_1)
 	{
 		Ice::Variable *result = ::function->makeVariable(Ice::IceType_v4f32);
-		const Ice::Intrinsics::IntrinsicInfo intrinsic = {Ice::Intrinsics::Round, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F};
+		const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::Round, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F };
 		auto target = ::context->getConstantUndef(Ice::IceType_i32);
 		auto round = Ice::InstIntrinsicCall::create(::function, 2, result, target, intrinsic);
 		round->addArg(x.value);
@@ -3527,9 +3545,9 @@
 	return Long(Int(0));
 }
 
-RValue<Pointer<Byte>> ConstantPointer(void const * ptr)
+RValue<Pointer<Byte>> ConstantPointer(void const *ptr)
 {
-	if(sizeof(void*) == 8)
+	if(sizeof(void *) == 8)
 	{
 		return RValue<Pointer<Byte>>(V(::context->getConstantInt64(reinterpret_cast<intptr_t>(ptr))));
 	}
@@ -3539,14 +3557,14 @@
 	}
 }
 
-RValue<Pointer<Byte>> ConstantData(void const * data, size_t size)
+RValue<Pointer<Byte>> ConstantData(void const *data, size_t size)
 {
 	// TODO: Try to use Ice::VariableDeclaration::DataInitializer and
 	// getConstantSym instead of tagging data on the routine.
 	return ConstantPointer(::routine->addConstantData(data, size));
 }
 
-Value* Call(RValue<Pointer<Byte>> fptr, Type* retTy, std::initializer_list<Value*> args, std::initializer_list<Type*> argTys)
+Value *Call(RValue<Pointer<Byte>> fptr, Type *retTy, std::initializer_list<Value *> args, std::initializer_list<Type *> argTys)
 {
 	Ice::Variable *ret = nullptr;
 	if(retTy != nullptr)
@@ -3564,15 +3582,25 @@
 
 void Breakpoint()
 {
-	const Ice::Intrinsics::IntrinsicInfo intrinsic = {Ice::Intrinsics::Trap, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F};
+	const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::Trap, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F };
 	auto target = ::context->getConstantUndef(Ice::IceType_i32);
 	auto trap = Ice::InstIntrinsicCall::create(::function, 0, nullptr, target, intrinsic);
 	::basicBlock->appendInst(trap);
 }
 
-void Nucleus::createFence(std::memory_order memoryOrder) { UNIMPLEMENTED("Subzero createFence()"); }
-Value *Nucleus::createMaskedLoad(Value *ptr, Type *elTy, Value *mask, unsigned int alignment, bool zeroMaskedLanes) { UNIMPLEMENTED("Subzero createMaskedLoad()"); return nullptr; }
-void Nucleus::createMaskedStore(Value *ptr, Value *val, Value *mask, unsigned int alignment) { UNIMPLEMENTED("Subzero createMaskedStore()"); }
+void Nucleus::createFence(std::memory_order memoryOrder)
+{
+	UNIMPLEMENTED("Subzero createFence()");
+}
+Value *Nucleus::createMaskedLoad(Value *ptr, Type *elTy, Value *mask, unsigned int alignment, bool zeroMaskedLanes)
+{
+	UNIMPLEMENTED("Subzero createMaskedLoad()");
+	return nullptr;
+}
+void Nucleus::createMaskedStore(Value *ptr, Value *val, Value *mask, unsigned int alignment)
+{
+	UNIMPLEMENTED("Subzero createMaskedStore()");
+}
 
 RValue<Float4> Gather(RValue<Pointer<Float>> base, RValue<Int4> offsets, RValue<Int4> mask, unsigned int alignment, bool zeroMaskedLanes /* = false */)
 {
@@ -3698,11 +3726,12 @@
 {
 	if(emulateIntrinsics)
 	{
-		UNIMPLEMENTED("Subzero Ctlz()"); return UInt(0);
+		UNIMPLEMENTED("Subzero Ctlz()");
+		return UInt(0);
 	}
 	else
 	{
-		Ice::Variable* result = ::function->makeVariable(Ice::IceType_i32);
+		Ice::Variable *result = ::function->makeVariable(Ice::IceType_i32);
 		const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::Ctlz, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F };
 		auto target = ::context->getConstantUndef(Ice::IceType_i32);
 		auto ctlz = Ice::InstIntrinsicCall::create(::function, 1, result, target, intrinsic);
@@ -3717,7 +3746,8 @@
 {
 	if(emulateIntrinsics)
 	{
-		UNIMPLEMENTED("Subzero Ctlz()"); return UInt4(0);
+		UNIMPLEMENTED("Subzero Ctlz()");
+		return UInt4(0);
 	}
 	else
 	{
@@ -3735,11 +3765,12 @@
 {
 	if(emulateIntrinsics)
 	{
-		UNIMPLEMENTED("Subzero Cttz()"); return UInt(0);
+		UNIMPLEMENTED("Subzero Cttz()");
+		return UInt(0);
 	}
 	else
 	{
-		Ice::Variable* result = ::function->makeVariable(Ice::IceType_i32);
+		Ice::Variable *result = ::function->makeVariable(Ice::IceType_i32);
 		const Ice::Intrinsics::IntrinsicInfo intrinsic = { Ice::Intrinsics::Cttz, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F };
 		auto target = ::context->getConstantUndef(Ice::IceType_i32);
 		auto ctlz = Ice::InstIntrinsicCall::create(::function, 1, result, target, intrinsic);
@@ -3754,7 +3785,8 @@
 {
 	if(emulateIntrinsics)
 	{
-		UNIMPLEMENTED("Subzero Cttz()"); return UInt4(0);
+		UNIMPLEMENTED("Subzero Cttz()");
+		return UInt4(0);
 	}
 	else
 	{
@@ -3769,16 +3801,19 @@
 }
 
 void EmitDebugLocation() {}
-void EmitDebugVariable(Value* value) {}
+void EmitDebugVariable(Value *value) {}
 void FlushDebug() {}
 
-void Nucleus::createCoroutine(Type *YieldType, std::vector<Type*> &Params)
+void Nucleus::createCoroutine(Type *YieldType, std::vector<Type *> &Params)
 {
 	// Subzero currently only supports coroutines as functions (i.e. that do not yield)
 	createFunction(YieldType, Params);
 }
 
-static bool coroutineEntryAwaitStub(Nucleus::CoroutineHandle, void* yieldValue) { return false; }
+static bool coroutineEntryAwaitStub(Nucleus::CoroutineHandle, void *yieldValue)
+{
+	return false;
+}
 static void coroutineEntryDestroyStub(Nucleus::CoroutineHandle) {}
 
 std::shared_ptr<Routine> Nucleus::acquireCoroutine(const char *name, const Config::Edit &cfgEdit /* = Config::Edit::None */)
@@ -3788,12 +3823,15 @@
 
 	// For now, set the await and destroy entries to stubs, until we add proper coroutine support to the Subzero backend
 	auto routine = std::static_pointer_cast<ELFMemoryStreamer>(coroutineEntry);
-	routine->setEntry(Nucleus::CoroutineEntryAwait, reinterpret_cast<const void*>(&coroutineEntryAwaitStub));
-	routine->setEntry(Nucleus::CoroutineEntryDestroy, reinterpret_cast<const void*>(&coroutineEntryDestroyStub));
+	routine->setEntry(Nucleus::CoroutineEntryAwait, reinterpret_cast<const void *>(&coroutineEntryAwaitStub));
+	routine->setEntry(Nucleus::CoroutineEntryDestroy, reinterpret_cast<const void *>(&coroutineEntryDestroyStub));
 
 	return coroutineEntry;
 }
 
-void Nucleus::yield(Value* val) { UNIMPLEMENTED("Yield"); }
+void Nucleus::yield(Value *val)
+{
+	UNIMPLEMENTED("Yield");
+}
 
 }  // namespace rr
diff --git a/src/Reactor/Thread.cpp b/src/Reactor/Thread.cpp
index 46f3550..069c197 100644
--- a/src/Reactor/Thread.cpp
+++ b/src/Reactor/Thread.cpp
@@ -19,74 +19,74 @@
 Thread::Thread(void (*threadFunction)(void *parameters), void *parameters)
 {
 	Event init;
-	Entry entry = {threadFunction, parameters, &init};
+	Entry entry = { threadFunction, parameters, &init };
 
-	#if defined(_WIN32)
-		handle = CreateThread(NULL, 1024 * 1024, startFunction, &entry, 0, NULL);
-	#else
-		pthread_create(&handle, NULL, startFunction, &entry);
-	#endif
+#if defined(_WIN32)
+	handle = CreateThread(NULL, 1024 * 1024, startFunction, &entry, 0, NULL);
+#else
+	pthread_create(&handle, NULL, startFunction, &entry);
+#endif
 
 	init.wait();
 }
 
 Thread::~Thread()
 {
-	join();   // Make threads exit before deleting them to not block here
+	join();  // Make threads exit before deleting them to not block here
 }
 
 void Thread::join()
 {
 	if(!hasJoined)
 	{
-		#if defined(_WIN32)
-			WaitForSingleObject(handle, INFINITE);
-			CloseHandle(handle);
-		#else
-			pthread_join(handle, NULL);
-		#endif
+#if defined(_WIN32)
+		WaitForSingleObject(handle, INFINITE);
+		CloseHandle(handle);
+#else
+		pthread_join(handle, NULL);
+#endif
 
 		hasJoined = true;
 	}
 }
 
 #if defined(_WIN32)
-	unsigned long __stdcall Thread::startFunction(void *parameters)
-	{
-		Entry entry = *(Entry*)parameters;
-		entry.init->signal();
-		entry.threadFunction(entry.threadParameters);
-		return 0;
-	}
+unsigned long __stdcall Thread::startFunction(void *parameters)
+{
+	Entry entry = *(Entry *)parameters;
+	entry.init->signal();
+	entry.threadFunction(entry.threadParameters);
+	return 0;
+}
 #else
-	void *Thread::startFunction(void *parameters)
-	{
-		Entry entry = *(Entry*)parameters;
-		entry.init->signal();
-		entry.threadFunction(entry.threadParameters);
-		return nullptr;
-	}
+void *Thread::startFunction(void *parameters)
+{
+	Entry entry = *(Entry *)parameters;
+	entry.init->signal();
+	entry.threadFunction(entry.threadParameters);
+	return nullptr;
+}
 #endif
 
 Event::Event()
 {
-	#if defined(_WIN32)
-		handle = CreateEvent(NULL, FALSE, FALSE, NULL);
-	#else
-		pthread_cond_init(&handle, NULL);
-		pthread_mutex_init(&mutex, NULL);
-		signaled = false;
-	#endif
+#if defined(_WIN32)
+	handle = CreateEvent(NULL, FALSE, FALSE, NULL);
+#else
+	pthread_cond_init(&handle, NULL);
+	pthread_mutex_init(&mutex, NULL);
+	signaled = false;
+#endif
 }
 
 Event::~Event()
 {
-	#if defined(_WIN32)
-		CloseHandle(handle);
-	#else
-		pthread_cond_destroy(&handle);
-		pthread_mutex_destroy(&mutex);
-	#endif
+#if defined(_WIN32)
+	CloseHandle(handle);
+#else
+	pthread_cond_destroy(&handle);
+	pthread_mutex_destroy(&mutex);
+#endif
 }
 
 }  // namespace rr
diff --git a/src/Reactor/Thread.hpp b/src/Reactor/Thread.hpp
index 7feb61e..a42e624 100644
--- a/src/Reactor/Thread.hpp
+++ b/src/Reactor/Thread.hpp
@@ -16,31 +16,31 @@
 #define rr_Thread_hpp
 
 #if defined(_WIN32)
-	#ifndef WIN32_LEAN_AND_MEAN
-		#define WIN32_LEAN_AND_MEAN
-	#endif
-	#include <windows.h>
-	#include <intrin.h>
+#	ifndef WIN32_LEAN_AND_MEAN
+#		define WIN32_LEAN_AND_MEAN
+#	endif
+#	include <windows.h>
+#	include <intrin.h>
 #else
-	#include <pthread.h>
-	#include <sched.h>
-	#include <unistd.h>
-	#define TLS_OUT_OF_INDEXES (pthread_key_t)(~0)
+#	include <pthread.h>
+#	include <sched.h>
+#	include <unistd.h>
+#	define TLS_OUT_OF_INDEXES (pthread_key_t)(~0)
 #endif
 
 #include <stdlib.h>
 
 #if defined(__clang__)
-#if __has_include(<atomic>) // clang has an explicit check for the availability of atomic
-#define USE_STD_ATOMIC 1
-#endif
+#	if __has_include(<atomic>)  // clang has an explicit check for the availability of atomic
+#		define USE_STD_ATOMIC 1
+#	endif
 // atomic is available in C++11 or newer, and in Visual Studio 2012 or newer
-#elif (defined(_MSC_VER) && (_MSC_VER >= 1700)) || (__cplusplus >= 201103L)
-#define USE_STD_ATOMIC 1
+#elif(defined(_MSC_VER) && (_MSC_VER >= 1700)) || (__cplusplus >= 201103L)
+#	define USE_STD_ATOMIC 1
 #endif
 
 #if USE_STD_ATOMIC
-#include <atomic>
+#	include <atomic>
 #endif
 
 namespace rr {
@@ -59,11 +59,11 @@
 	static void yield();
 	static void sleep(int milliseconds);
 
-	#if defined(_WIN32)
-		typedef DWORD LocalStorageKey;
-	#else
-		typedef pthread_key_t LocalStorageKey;
-	#endif
+#if defined(_WIN32)
+	typedef DWORD LocalStorageKey;
+#else
+	typedef pthread_key_t LocalStorageKey;
+#endif
 
 	static LocalStorageKey allocateLocalStorageKey(void (*destructor)(void *storage) = free);
 	static void freeLocalStorageKey(LocalStorageKey key);
@@ -79,13 +79,13 @@
 		Event *init;
 	};
 
-	#if defined(_WIN32)
-		static unsigned long __stdcall startFunction(void *parameters);
-		HANDLE handle;
-	#else
-		static void *startFunction(void *parameters);
-		pthread_t handle;
-	#endif
+#if defined(_WIN32)
+	static unsigned long __stdcall startFunction(void *parameters);
+	HANDLE handle;
+#else
+	static void *startFunction(void *parameters);
+	pthread_t handle;
+#endif
 
 	bool hasJoined = false;
 };
@@ -103,13 +103,13 @@
 	void wait();
 
 private:
-	#if defined(_WIN32)
-		HANDLE handle;
-	#else
-		pthread_cond_t handle;
-		pthread_mutex_t mutex;
-		volatile bool signaled;
-	#endif
+#if defined(_WIN32)
+	HANDLE handle;
+#else
+	pthread_cond_t handle;
+	pthread_mutex_t mutex;
+	volatile bool signaled;
+#endif
 };
 
 #if PERF_PROFILE
@@ -130,42 +130,42 @@
 
 inline void Thread::yield()
 {
-	#if defined(_WIN32)
-		Sleep(0);
-	#elif defined(__APPLE__)
-		pthread_yield_np();
-	#else
-		sched_yield();
-	#endif
+#if defined(_WIN32)
+	Sleep(0);
+#elif defined(__APPLE__)
+	pthread_yield_np();
+#else
+	sched_yield();
+#endif
 }
 
 inline void Thread::sleep(int milliseconds)
 {
-	#if defined(_WIN32)
-		Sleep(milliseconds);
-	#else
-		usleep(1000 * milliseconds);
-	#endif
+#if defined(_WIN32)
+	Sleep(milliseconds);
+#else
+	usleep(1000 * milliseconds);
+#endif
 }
 
 inline Thread::LocalStorageKey Thread::allocateLocalStorageKey(void (*destructor)(void *storage))
 {
-	#if defined(_WIN32)
-		return TlsAlloc();
-	#else
-		LocalStorageKey key;
-		pthread_key_create(&key, destructor);
-		return key;
-	#endif
+#if defined(_WIN32)
+	return TlsAlloc();
+#else
+	LocalStorageKey key;
+	pthread_key_create(&key, destructor);
+	return key;
+#endif
 }
 
 inline void Thread::freeLocalStorageKey(LocalStorageKey key)
 {
-	#if defined(_WIN32)
-		TlsFree(key);
-	#else
-		pthread_key_delete(key);   // Using an invalid key is an error but not undefined behavior.
-	#endif
+#if defined(_WIN32)
+	TlsFree(key);
+#else
+	pthread_key_delete(key);  // Using an invalid key is an error but not undefined behavior.
+#endif
 }
 
 inline void *Thread::allocateLocalStorage(LocalStorageKey key, size_t size)
@@ -179,164 +179,178 @@
 
 	void *storage = malloc(size);
 
-	#if defined(_WIN32)
-		TlsSetValue(key, storage);
-	#else
-		pthread_setspecific(key, storage);
-	#endif
+#if defined(_WIN32)
+	TlsSetValue(key, storage);
+#else
+	pthread_setspecific(key, storage);
+#endif
 
 	return storage;
 }
 
 inline void *Thread::getLocalStorage(LocalStorageKey key)
 {
-	#if defined(_WIN32)
-		return TlsGetValue(key);
-	#else
-		if(key == TLS_OUT_OF_INDEXES)   // Avoid undefined behavior.
-		{
-			return nullptr;
-		}
+#if defined(_WIN32)
+	return TlsGetValue(key);
+#else
+	if(key == TLS_OUT_OF_INDEXES)  // Avoid undefined behavior.
+	{
+		return nullptr;
+	}
 
-		return pthread_getspecific(key);
-	#endif
+	return pthread_getspecific(key);
+#endif
 }
 
 inline void Thread::freeLocalStorage(LocalStorageKey key)
 {
 	free(getLocalStorage(key));
 
-	#if defined(_WIN32)
-		TlsSetValue(key, nullptr);
-	#else
-		pthread_setspecific(key, nullptr);
-	#endif
+#if defined(_WIN32)
+	TlsSetValue(key, nullptr);
+#else
+	pthread_setspecific(key, nullptr);
+#endif
 }
 
 inline void Event::signal()
 {
-	#if defined(_WIN32)
-		SetEvent(handle);
-	#else
-		pthread_mutex_lock(&mutex);
-		signaled = true;
-		pthread_cond_signal(&handle);
-		pthread_mutex_unlock(&mutex);
-	#endif
+#if defined(_WIN32)
+	SetEvent(handle);
+#else
+	pthread_mutex_lock(&mutex);
+	signaled = true;
+	pthread_cond_signal(&handle);
+	pthread_mutex_unlock(&mutex);
+#endif
 }
 
 inline void Event::wait()
 {
-	#if defined(_WIN32)
-		WaitForSingleObject(handle, INFINITE);
-	#else
-		pthread_mutex_lock(&mutex);
-		while(!signaled) pthread_cond_wait(&handle, &mutex);
-		signaled = false;
-		pthread_mutex_unlock(&mutex);
-	#endif
+#if defined(_WIN32)
+	WaitForSingleObject(handle, INFINITE);
+#else
+	pthread_mutex_lock(&mutex);
+	while(!signaled) pthread_cond_wait(&handle, &mutex);
+	signaled = false;
+	pthread_mutex_unlock(&mutex);
+#endif
 }
 
 #if PERF_PROFILE
 inline int64_t atomicExchange(volatile int64_t *target, int64_t value)
 {
-	#if defined(_WIN32)
-		return InterlockedExchange64(target, value);
-	#else
-		int ret;
-		__asm__ __volatile__("lock; xchg8 %x0,(%x1)" : "=r" (ret) :"r" (target), "0" (value) : "memory" );
-		return ret;
-	#endif
+#	if defined(_WIN32)
+	return InterlockedExchange64(target, value);
+#	else
+	int ret;
+	__asm__ __volatile__("lock; xchg8 %x0,(%x1)"
+	                     : "=r"(ret)
+	                     : "r"(target), "0"(value)
+	                     : "memory");
+	return ret;
+#	endif
 }
 
 inline int atomicExchange(volatile int *target, int value)
 {
-	#if defined(_WIN32)
-		return InterlockedExchange((volatile long*)target, (long)value);
-	#else
-		int ret;
-		__asm__ __volatile__("lock; xchgl %x0,(%x1)" : "=r" (ret) :"r" (target), "0" (value) : "memory" );
-		return ret;
-	#endif
+#	if defined(_WIN32)
+	return InterlockedExchange((volatile long *)target, (long)value);
+#	else
+	int ret;
+	__asm__ __volatile__("lock; xchgl %x0,(%x1)"
+	                     : "=r"(ret)
+	                     : "r"(target), "0"(value)
+	                     : "memory");
+	return ret;
+#	endif
 }
 #endif
 
 inline int atomicIncrement(volatile int *value)
 {
-	#if defined(_WIN32)
-		return InterlockedIncrement((volatile long*)value);
-	#else
-		return __sync_add_and_fetch(value, 1);
-	#endif
+#if defined(_WIN32)
+	return InterlockedIncrement((volatile long *)value);
+#else
+	return __sync_add_and_fetch(value, 1);
+#endif
 }
 
 inline int atomicDecrement(volatile int *value)
 {
-	#if defined(_WIN32)
-		return InterlockedDecrement((volatile long*)value);
-	#else
-		return __sync_sub_and_fetch(value, 1);
-	#endif
+#if defined(_WIN32)
+	return InterlockedDecrement((volatile long *)value);
+#else
+	return __sync_sub_and_fetch(value, 1);
+#endif
 }
 
-inline int atomicAdd(volatile int* target, int value)
+inline int atomicAdd(volatile int *target, int value)
 {
-	#if defined(_WIN32)
-		return InterlockedExchangeAdd((volatile long*)target, value) + value;
-	#else
-		return __sync_add_and_fetch(target, value);
-	#endif
+#if defined(_WIN32)
+	return InterlockedExchangeAdd((volatile long *)target, value) + value;
+#else
+	return __sync_add_and_fetch(target, value);
+#endif
 }
 
 inline void nop()
 {
-	#if defined(_WIN32)
-		__nop();
-	#else
-		__asm__ __volatile__ ("nop");
-	#endif
+#if defined(_WIN32)
+	__nop();
+#else
+	__asm__ __volatile__("nop");
+#endif
 }
 
 #if USE_STD_ATOMIC
-	class AtomicInt
-	{
-	public:
-		AtomicInt() : ai() {}
-		AtomicInt(int i) : ai(i) {}
+class AtomicInt
+{
+public:
+	AtomicInt()
+	    : ai()
+	{}
+	AtomicInt(int i)
+	    : ai(i)
+	{}
 
-		inline operator int() const { return ai.load(std::memory_order_acquire); }
-		inline void operator=(const AtomicInt& i) { ai.store(i.ai.load(std::memory_order_acquire), std::memory_order_release); }
-		inline void operator=(int i) { ai.store(i, std::memory_order_release); }
-		inline void operator--() { ai.fetch_sub(1, std::memory_order_acq_rel); }
-		inline void operator++() { ai.fetch_add(1, std::memory_order_acq_rel); }
-		inline int operator--(int) { return ai.fetch_sub(1, std::memory_order_acq_rel) - 1; }
-		inline int operator++(int) { return ai.fetch_add(1, std::memory_order_acq_rel) + 1; }
-		inline void operator-=(int i) { ai.fetch_sub(i, std::memory_order_acq_rel); }
-		inline void operator+=(int i) { ai.fetch_add(i, std::memory_order_acq_rel); }
-	private:
-		std::atomic<int> ai;
-	};
+	inline operator int() const { return ai.load(std::memory_order_acquire); }
+	inline void operator=(const AtomicInt &i) { ai.store(i.ai.load(std::memory_order_acquire), std::memory_order_release); }
+	inline void operator=(int i) { ai.store(i, std::memory_order_release); }
+	inline void operator--() { ai.fetch_sub(1, std::memory_order_acq_rel); }
+	inline void operator++() { ai.fetch_add(1, std::memory_order_acq_rel); }
+	inline int operator--(int) { return ai.fetch_sub(1, std::memory_order_acq_rel) - 1; }
+	inline int operator++(int) { return ai.fetch_add(1, std::memory_order_acq_rel) + 1; }
+	inline void operator-=(int i) { ai.fetch_sub(i, std::memory_order_acq_rel); }
+	inline void operator+=(int i) { ai.fetch_add(i, std::memory_order_acq_rel); }
+
+private:
+	std::atomic<int> ai;
+};
 #else
-	class AtomicInt
-	{
-	public:
-		AtomicInt() {}
-		AtomicInt(int i) : vi(i) {}
+class AtomicInt
+{
+public:
+	AtomicInt() {}
+	AtomicInt(int i)
+	    : vi(i)
+	{}
 
-		inline operator int() const { return vi; } // Note: this isn't a guaranteed atomic operation
-		inline void operator=(const AtomicInt& i) { atomicExchange(&vi, i.vi); }
-		inline void operator=(int i) { atomicExchange(&vi, i); }
-		inline void operator--() { atomicDecrement(&vi); }
-		inline void operator++() { atomicIncrement(&vi); }
-		inline int operator--(int) { return atomicDecrement(&vi); }
-		inline int operator++(int) { return atomicIncrement(&vi); }
-		inline void operator-=(int i) { atomicAdd(&vi, -i); }
-		inline void operator+=(int i) { atomicAdd(&vi, i); }
-	private:
-		volatile int vi;
-	};
+	inline operator int() const { return vi; }  // Note: this isn't a guaranteed atomic operation
+	inline void operator=(const AtomicInt &i) { atomicExchange(&vi, i.vi); }
+	inline void operator=(int i) { atomicExchange(&vi, i); }
+	inline void operator--() { atomicDecrement(&vi); }
+	inline void operator++() { atomicIncrement(&vi); }
+	inline int operator--(int) { return atomicDecrement(&vi); }
+	inline int operator++(int) { return atomicIncrement(&vi); }
+	inline void operator-=(int i) { atomicAdd(&vi, -i); }
+	inline void operator+=(int i) { atomicAdd(&vi, i); }
+
+private:
+	volatile int vi;
+};
 #endif
 
 }  // namespace rr
 
-#endif   // rr_Thread_hpp
+#endif  // rr_Thread_hpp
diff --git a/src/Reactor/Traits.hpp b/src/Reactor/Traits.hpp
index 53f36f0..fc7dfa7 100644
--- a/src/Reactor/Traits.hpp
+++ b/src/Reactor/Traits.hpp
@@ -19,7 +19,7 @@
 #include <type_traits>
 
 #ifdef Bool
-#undef Bool // b/127920555
+#	undef Bool  // b/127920555
 #endif
 
 namespace rr {
@@ -40,9 +40,12 @@
 class Float;
 class Float4;
 
-template<class T> class Pointer;
-template<class T> class LValue;
-template<class T> class RValue;
+template<class T>
+class Pointer;
+template<class T>
+class LValue;
+template<class T>
+class RValue;
 
 // enabled_if_t is identical to C++14's std::enable_if_t.
 // std::enable_if_t was introduced in C++14, but Reactor must support
@@ -51,19 +54,19 @@
 using enable_if_t = typename std::enable_if<Condition, TrueType>::type;
 
 // IsDefined<T>::value is true if T is a valid type, otherwise false.
-template <typename T, typename Enable = void>
+template<typename T, typename Enable = void>
 struct IsDefined
 {
 	static constexpr bool value = false;
 };
 
-template <typename T>
-struct IsDefined<T, enable_if_t<(sizeof(T)>0)> >
+template<typename T>
+struct IsDefined<T, enable_if_t<(sizeof(T) > 0)>>
 {
 	static constexpr bool value = true;
 };
 
-template <>
+template<>
 struct IsDefined<void>
 {
 	static constexpr bool value = true;
@@ -71,144 +74,273 @@
 
 // CToReactorT<T> resolves to the corresponding Reactor type for the given C
 // template type T.
-template<typename T, typename ENABLE = void> struct CToReactor;
-template<typename T> using CToReactorT = typename CToReactor<T>::type;
+template<typename T, typename ENABLE = void>
+struct CToReactor;
+template<typename T>
+using CToReactorT = typename CToReactor<T>::type;
 
 // CToReactor specializations for POD types.
-template<> struct CToReactor<void>    	{ using type = Void; };
-template<> struct CToReactor<bool>    	{ using type = Bool;   static Bool   cast(bool);     };
-template<> struct CToReactor<uint8_t> 	{ using type = Byte;   static Byte   cast(uint8_t);  };
-template<> struct CToReactor<int8_t>  	{ using type = SByte;  static SByte  cast(int8_t);   };
-template<> struct CToReactor<int16_t> 	{ using type = Short;  static Short  cast(int16_t);  };
-template<> struct CToReactor<uint16_t>	{ using type = UShort; static UShort cast(uint16_t); };
-template<> struct CToReactor<int32_t> 	{ using type = Int;    static Int    cast(int32_t);  };
-template<> struct CToReactor<uint32_t>	{ using type = UInt;   static UInt   cast(uint32_t); };
-template<> struct CToReactor<float>   	{ using type = Float;  static Float  cast(float);    };
-template<> struct CToReactor<float[4]>	{ using type = Float4; static Float4 cast(float[4]); };
+template<>
+struct CToReactor<void>
+{
+	using type = Void;
+};
+template<>
+struct CToReactor<bool>
+{
+	using type = Bool;
+	static Bool cast(bool);
+};
+template<>
+struct CToReactor<uint8_t>
+{
+	using type = Byte;
+	static Byte cast(uint8_t);
+};
+template<>
+struct CToReactor<int8_t>
+{
+	using type = SByte;
+	static SByte cast(int8_t);
+};
+template<>
+struct CToReactor<int16_t>
+{
+	using type = Short;
+	static Short cast(int16_t);
+};
+template<>
+struct CToReactor<uint16_t>
+{
+	using type = UShort;
+	static UShort cast(uint16_t);
+};
+template<>
+struct CToReactor<int32_t>
+{
+	using type = Int;
+	static Int cast(int32_t);
+};
+template<>
+struct CToReactor<uint32_t>
+{
+	using type = UInt;
+	static UInt cast(uint32_t);
+};
+template<>
+struct CToReactor<float>
+{
+	using type = Float;
+	static Float cast(float);
+};
+template<>
+struct CToReactor<float[4]>
+{
+	using type = Float4;
+	static Float4 cast(float[4]);
+};
 
 // TODO: Long has no constructor that takes a uint64_t
-template<> struct CToReactor<uint64_t>	{ using type = Long;  /* static Long   cast(uint64_t); */ };
+template<>
+struct CToReactor<uint64_t>
+{
+	using type = Long; /* static Long   cast(uint64_t); */
+};
 
 // HasReactorType<T>::value resolves to true iff there exists a
 // CToReactorT specialization for type T.
 template<typename T>
-using HasReactorType = IsDefined< CToReactorT<T> >;
+using HasReactorType = IsDefined<CToReactorT<T>>;
 
 // CToReactorPtr<T>::type resolves to the corresponding Reactor Pointer<>
 // type for T*.
 // For T types that have a CToReactorT<> specialization,
 // CToReactorPtr<T>::type resolves to Pointer< CToReactorT<T> >, otherwise
 // CToReactorPtr<T>::type resolves to Pointer<Byte>.
-template<typename T, typename ENABLE = void> struct CToReactorPtr
+template<typename T, typename ENABLE = void>
+struct CToReactorPtr
 {
 	using type = Pointer<Byte>;
-	static inline type cast(const T* v); // implemented in Traits.inl
+	static inline type cast(const T *v);  // implemented in Traits.inl
 };
 
 // CToReactorPtr specialization for T types that have a CToReactorT<>
 // specialization.
-template<typename T> struct CToReactorPtr<T, enable_if_t< HasReactorType<T>::value > >
+template<typename T>
+struct CToReactorPtr<T, enable_if_t<HasReactorType<T>::value>>
 {
-	using type = Pointer< CToReactorT<T> >;
-	static inline type cast(const T* v); // implemented in Traits.inl
+	using type = Pointer<CToReactorT<T>>;
+	static inline type cast(const T *v);  // implemented in Traits.inl
 };
 
 // CToReactorPtr specialization for void*.
 // Maps to Pointer<Byte> instead of Pointer<Void>.
-template<> struct CToReactorPtr<void, void>
+template<>
+struct CToReactorPtr<void, void>
 {
 	using type = Pointer<Byte>;
-	static inline type cast(const void* v); // implemented in Traits.inl
+	static inline type cast(const void *v);  // implemented in Traits.inl
 };
 
 // CToReactorPtr specialization for function pointer types.
 // Maps to Pointer<Byte>.
 // Drops the 'const' qualifier from the cast() method to avoid warnings
 // about const having no meaning for function types.
-template<typename T> struct CToReactorPtr<T, enable_if_t< std::is_function<T>::value > >
+template<typename T>
+struct CToReactorPtr<T, enable_if_t<std::is_function<T>::value>>
 {
 	using type = Pointer<Byte>;
-	static inline type cast(T* v); // implemented in Traits.inl
+	static inline type cast(T *v);  // implemented in Traits.inl
 };
 
-template<typename T> using CToReactorPtrT = typename CToReactorPtr<T>::type;
+template<typename T>
+using CToReactorPtrT = typename CToReactorPtr<T>::type;
 
 // CToReactor specialization for pointer types.
 // For T types that have a CToReactorT<> specialization,
 // CToReactorT<T*>::type resolves to Pointer< CToReactorT<T> >, otherwise
 // CToReactorT<T*>::type resolves to Pointer<Byte>.
 template<typename T>
-struct CToReactor<T, enable_if_t<std::is_pointer<T>::value> >
+struct CToReactor<T, enable_if_t<std::is_pointer<T>::value>>
 {
 	using elem = typename std::remove_pointer<T>::type;
 	using type = CToReactorPtrT<elem>;
-	static inline type cast(T v); // implemented in Traits.inl
+	static inline type cast(T v);  // implemented in Traits.inl
 };
 
 // CToReactor specialization for enum types.
 template<typename T>
-struct CToReactor<T, enable_if_t<std::is_enum<T>::value> >
+struct CToReactor<T, enable_if_t<std::is_enum<T>::value>>
 {
 	using underlying = typename std::underlying_type<T>::type;
 	using type = CToReactorT<underlying>;
-	static type cast(T v); // implemented in Traits.inl
+	static type cast(T v);  // implemented in Traits.inl
 };
 
 // IsRValue::value is true if T is of type RValue<X>, where X is any type.
-template <typename T, typename Enable = void> struct IsRValue { static constexpr bool value = false; };
-template <typename T> struct IsRValue<T, enable_if_t<IsDefined<typename T::rvalue_underlying_type>::value> > { static constexpr bool value = true; };
+template<typename T, typename Enable = void>
+struct IsRValue
+{
+	static constexpr bool value = false;
+};
+template<typename T>
+struct IsRValue<T, enable_if_t<IsDefined<typename T::rvalue_underlying_type>::value>>
+{
+	static constexpr bool value = true;
+};
 
 // IsLValue::value is true if T is of, or derives from type LValue<T>.
-template <typename T> struct IsLValue { static constexpr bool value = std::is_base_of<LValue<T>, T>::value; };
+template<typename T>
+struct IsLValue
+{
+	static constexpr bool value = std::is_base_of<LValue<T>, T>::value;
+};
 
 // IsReference::value is true if T is of type Reference<X>, where X is any type.
-template <typename T, typename Enable = void> struct IsReference { static constexpr bool value = false; };
-template <typename T> struct IsReference<T, enable_if_t<IsDefined<typename T::reference_underlying_type>::value> > { static constexpr bool value = true; };
+template<typename T, typename Enable = void>
+struct IsReference
+{
+	static constexpr bool value = false;
+};
+template<typename T>
+struct IsReference<T, enable_if_t<IsDefined<typename T::reference_underlying_type>::value>>
+{
+	static constexpr bool value = true;
+};
 
 // ReactorTypeT<T> returns the LValue Reactor type for T.
 // T can be a C-type, RValue or LValue.
-template<typename T, typename ENABLE = void> struct ReactorType;
-template<typename T> using ReactorTypeT = typename ReactorType<T>::type;
-template<typename T> struct ReactorType<T, enable_if_t<IsDefined<CToReactorT<T>>::value> >
+template<typename T, typename ENABLE = void>
+struct ReactorType;
+template<typename T>
+using ReactorTypeT = typename ReactorType<T>::type;
+template<typename T>
+struct ReactorType<T, enable_if_t<IsDefined<CToReactorT<T>>::value>>
 {
 	using type = CToReactorT<T>;
 	static type cast(T v) { return CToReactor<T>::cast(v); }
 };
-template<typename T> struct ReactorType<T, enable_if_t<IsRValue<T>::value> >
+template<typename T>
+struct ReactorType<T, enable_if_t<IsRValue<T>::value>>
 {
 	using type = typename T::rvalue_underlying_type;
 	static type cast(T v) { return type(v); }
 };
-template<typename T> struct ReactorType<T, enable_if_t<IsLValue<T>::value> >
+template<typename T>
+struct ReactorType<T, enable_if_t<IsLValue<T>::value>>
 {
 	using type = T;
 	static type cast(T v) { return type(v); }
 };
-template<typename T> struct ReactorType<T, enable_if_t<IsReference<T>::value> >
+template<typename T>
+struct ReactorType<T, enable_if_t<IsReference<T>::value>>
 {
 	using type = T;
 	static type cast(T v) { return type(v); }
 };
 
-
 // Reactor types that can be used as a return type for a function.
-template <typename T> struct CanBeUsedAsReturn { static constexpr bool value = false; };
-template <> struct CanBeUsedAsReturn<Void>     { static constexpr bool value = true; };
-template <> struct CanBeUsedAsReturn<Int>      { static constexpr bool value = true; };
-template <> struct CanBeUsedAsReturn<UInt>     { static constexpr bool value = true; };
-template <> struct CanBeUsedAsReturn<Float>    { static constexpr bool value = true; };
-template <typename T> struct CanBeUsedAsReturn<Pointer<T>> { static constexpr bool value = true; };
+template<typename T>
+struct CanBeUsedAsReturn
+{
+	static constexpr bool value = false;
+};
+template<>
+struct CanBeUsedAsReturn<Void>
+{
+	static constexpr bool value = true;
+};
+template<>
+struct CanBeUsedAsReturn<Int>
+{
+	static constexpr bool value = true;
+};
+template<>
+struct CanBeUsedAsReturn<UInt>
+{
+	static constexpr bool value = true;
+};
+template<>
+struct CanBeUsedAsReturn<Float>
+{
+	static constexpr bool value = true;
+};
+template<typename T>
+struct CanBeUsedAsReturn<Pointer<T>>
+{
+	static constexpr bool value = true;
+};
 
 // Reactor types that can be used as a parameter types for a function.
-template <typename T> struct CanBeUsedAsParameter { static constexpr bool value = false; };
-template <> struct CanBeUsedAsParameter<Int>      { static constexpr bool value = true; };
-template <> struct CanBeUsedAsParameter<UInt>     { static constexpr bool value = true; };
-template <> struct CanBeUsedAsParameter<Float>    { static constexpr bool value = true; };
-template <typename T> struct CanBeUsedAsParameter<Pointer<T>> { static constexpr bool value = true; };
+template<typename T>
+struct CanBeUsedAsParameter
+{
+	static constexpr bool value = false;
+};
+template<>
+struct CanBeUsedAsParameter<Int>
+{
+	static constexpr bool value = true;
+};
+template<>
+struct CanBeUsedAsParameter<UInt>
+{
+	static constexpr bool value = true;
+};
+template<>
+struct CanBeUsedAsParameter<Float>
+{
+	static constexpr bool value = true;
+};
+template<typename T>
+struct CanBeUsedAsParameter<Pointer<T>>
+{
+	static constexpr bool value = true;
+};
 
 // AssertParameterTypeIsValid statically asserts that all template parameter
 // types can be used as a Reactor function parameter.
-template<typename T, typename ... other>
+template<typename T, typename... other>
 struct AssertParameterTypeIsValid : AssertParameterTypeIsValid<other...>
 {
 	static_assert(CanBeUsedAsParameter<T>::value, "Invalid parameter type");
@@ -224,7 +356,8 @@
 template<typename Return, typename... Arguments>
 class AssertFunctionSignatureIsValid;
 template<typename Return>
-class AssertFunctionSignatureIsValid<Return(Void)> {};
+class AssertFunctionSignatureIsValid<Return(Void)>
+{};
 template<typename Return, typename... Arguments>
 class AssertFunctionSignatureIsValid<Return(Arguments...)>
 {
@@ -234,4 +367,4 @@
 
 }  // namespace rr
 
-#endif // rr_Traits_hpp
+#endif  // rr_Traits_hpp
diff --git a/src/Reactor/Traits.inl b/src/Reactor/Traits.inl
index 23a5941..d13ddc2 100644
--- a/src/Reactor/Traits.inl
+++ b/src/Reactor/Traits.inl
@@ -20,7 +20,7 @@
 // Non-specialized implementation of CToReactorPtr::cast() defaults to
 // returning a ConstantPointer for v.
 template<typename T, typename ENABLE>
-Pointer<Byte> CToReactorPtr<T, ENABLE>::cast(const T* v)
+Pointer<Byte> CToReactorPtr<T, ENABLE>::cast(const T *v)
 {
 	return ConstantPointer(v);
 }
@@ -29,13 +29,13 @@
 // specialization.
 template<typename T>
 Pointer<CToReactorT<T>>
-CToReactorPtr<T, enable_if_t< HasReactorType<T>::value > >::cast(const T* v)
+CToReactorPtr<T, enable_if_t<HasReactorType<T>::value>>::cast(const T *v)
 {
 	return type(v);
 }
 
 // CToReactorPtr specialization for void*.
-Pointer<Byte> CToReactorPtr<void, void>::cast(const void* v)
+Pointer<Byte> CToReactorPtr<void, void>::cast(const void *v)
 {
 	return ConstantPointer(v);
 }
@@ -43,7 +43,7 @@
 // CToReactorPtrT specialization for function pointer types.
 template<typename T>
 Pointer<Byte>
-CToReactorPtr<T, enable_if_t< std::is_function<T>::value > >::cast(T* v)
+CToReactorPtr<T, enable_if_t<std::is_function<T>::value>>::cast(T *v)
 {
 	return ConstantPointer(v);
 }
@@ -51,7 +51,7 @@
 // CToReactor specialization for pointer types.
 template<typename T>
 CToReactorPtrT<typename std::remove_pointer<T>::type>
-CToReactor<T, enable_if_t<std::is_pointer<T>::value> >::cast(T v)
+CToReactor<T, enable_if_t<std::is_pointer<T>::value>>::cast(T v)
 {
 	return CToReactorPtr<elem>::cast(v);
 }
@@ -59,11 +59,11 @@
 // CToReactor specialization for enum types.
 template<typename T>
 CToReactorT<typename std::underlying_type<T>::type>
-CToReactor<T, enable_if_t<std::is_enum<T>::value> >::cast(T v)
+CToReactor<T, enable_if_t<std::is_enum<T>::value>>::cast(T v)
 {
 	return CToReactor<underlying>::cast(v);
 }
 
 }  // namespace rr
 
-#endif // rr_Traits_inl
+#endif  // rr_Traits_inl
diff --git a/src/Reactor/x86.hpp b/src/Reactor/x86.hpp
index dd98173..474ec40 100644
--- a/src/Reactor/x86.hpp
+++ b/src/Reactor/x86.hpp
@@ -106,4 +106,4 @@
 }  // namespace x86
 }  // namespace rr
 
-#endif   // rr_x86_hpp
\ No newline at end of file
+#endif  // rr_x86_hpp
\ No newline at end of file