swr: [rasterizer jitter] Change SimdVector representation to array
authorTim Rowley <timothy.o.rowley@intel.com>
Mon, 23 Jan 2017 17:30:13 +0000 (11:30 -0600)
committerTim Rowley <timothy.o.rowley@intel.com>
Wed, 8 Feb 2017 19:57:33 +0000 (13:57 -0600)
Make all SimdVectors in LLVM represented as simdscalar[4] rather
than a struct.

Fixes issues with promotion of values from i32 to i64 to match
register width.

Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
src/gallium/drivers/swr/rasterizer/jitter/JitManager.cpp
src/gallium/drivers/swr/rasterizer/jitter/JitManager.h

index d77dffb98c8ba005c40f3fc25401075d3aa5f878..74ffd27c46eb8438592e34f2ae41c9c1cb095b3e 100644 (file)
@@ -133,8 +133,6 @@ JitManager::JitManager(uint32_t simdWidth, const char *arch, const char* core)
     mInt8Ty = Type::getInt8Ty(mContext);
     mInt32Ty = Type::getInt32Ty(mContext);   // int type
     mInt64Ty = Type::getInt64Ty(mContext);   // int type
-    mV4FP32Ty = StructType::get(mContext, std::vector<Type*>(4, mFP32Ty), false); // vector4 float type (represented as structure)
-    mV4Int32Ty = StructType::get(mContext, std::vector<Type*>(4, mInt32Ty), false); // vector4 int type
 
     // fetch function signature
     // typedef void(__cdecl *PFN_FETCH_FUNC)(SWR_FETCH_CONTEXT& fetchInfo, simdvertex& out);
@@ -147,8 +145,8 @@ JitManager::JitManager(uint32_t simdWidth, const char *arch, const char* core)
     mSimtFP32Ty = VectorType::get(mFP32Ty, mVWidth);
     mSimtInt32Ty = VectorType::get(mInt32Ty, mVWidth);
 
-    mSimdVectorTy = StructType::get(mContext, std::vector<Type*>(4, mSimtFP32Ty), false);
-    mSimdVectorInt32Ty = StructType::get(mContext, std::vector<Type*>(4, mSimtInt32Ty), false);
+    mSimdVectorTy = ArrayType::get(mSimtFP32Ty, 4);
+    mSimdVectorInt32Ty = ArrayType::get(mSimtInt32Ty, 4);
 
 #if defined(_WIN32)
     // explicitly instantiate used symbols from potentially staticly linked libs
index ed7216b89f4c5c096820f57a674272db82aac0c1..e45ad142b32b3499989ad05f160726c1a85de848 100644 (file)
@@ -164,8 +164,6 @@ struct JitManager
     llvm::Type*                mInt32Ty;
     llvm::Type*                mInt64Ty;
     llvm::Type*                mFP32Ty;
-    llvm::StructType*          mV4FP32Ty;
-    llvm::StructType*          mV4Int32Ty;
 
     llvm::Type* mSimtFP32Ty;
     llvm::Type* mSimtInt32Ty;