swr/rast: Cleanup of mpPrivateContext in Builder
[mesa.git] / src / gallium / drivers / swr / rasterizer / jitter / builder.cpp
index c15bdf1e7560c614ecef467178db5f3c3b9fad91..9f9438de1d878aff03cbff47f988fc9f3012ba49 100644 (file)
 * 
 ******************************************************************************/
 
+#include "jit_pch.hpp"
 #include "builder.h"
 
-using namespace llvm;
-
-//////////////////////////////////////////////////////////////////////////
-/// @brief Contructor for Builder.
-/// @param pJitMgr - JitManager which contains modules, function passes, etc.
-Builder::Builder(JitManager *pJitMgr)
-    : mpJitMgr(pJitMgr)
+namespace SwrJit
 {
-    mpIRBuilder = &pJitMgr->mBuilder;
-
-    mVoidTy = Type::getVoidTy(pJitMgr->mContext);
-    mFP16Ty = Type::getHalfTy(pJitMgr->mContext);
-    mFP32Ty = Type::getFloatTy(pJitMgr->mContext);
-    mDoubleTy = Type::getDoubleTy(pJitMgr->mContext);
-    mInt1Ty = Type::getInt1Ty(pJitMgr->mContext);
-    mInt8Ty = Type::getInt8Ty(pJitMgr->mContext);
-    mInt16Ty = Type::getInt16Ty(pJitMgr->mContext);
-    mInt32Ty = Type::getInt32Ty(pJitMgr->mContext);
-    mInt64Ty = Type::getInt64Ty(pJitMgr->mContext);
-    mV4FP32Ty = StructType::get(pJitMgr->mContext, std::vector<Type*>(4, mFP32Ty), false); // vector4 float type (represented as structure)
-    mV4Int32Ty = StructType::get(pJitMgr->mContext, std::vector<Type*>(4, mInt32Ty), false); // vector4 int type
-    mSimdInt16Ty = VectorType::get(mInt16Ty, mpJitMgr->mVWidth);
-    mSimdInt32Ty = VectorType::get(mInt32Ty, mpJitMgr->mVWidth);
-    mSimdInt64Ty = VectorType::get(mInt64Ty, mpJitMgr->mVWidth);
-    mSimdFP16Ty = VectorType::get(mFP16Ty, mpJitMgr->mVWidth);
-    mSimdFP32Ty = VectorType::get(mFP32Ty, mpJitMgr->mVWidth);
+    using namespace llvm;
 
-    if (sizeof(uint32_t*) == 4)
-    {
-        mIntPtrTy = mInt32Ty;
-        mSimdIntPtrTy = mSimdInt32Ty;
-    }
-    else
+    //////////////////////////////////////////////////////////////////////////
+    /// @brief Contructor for Builder.
+    /// @param pJitMgr - JitManager which contains modules, function passes, etc.
+    Builder::Builder(JitManager *pJitMgr)
+        : mpJitMgr(pJitMgr),
+          mpPrivateContext(nullptr)
     {
-        SWR_ASSERT(sizeof(uint32_t*) == 8);
-        mIntPtrTy = mInt64Ty;
-        mSimdIntPtrTy = mSimdInt64Ty;
+        SWR_ASSERT(pJitMgr->mVWidth == 8);
+
+        mVWidth = pJitMgr->mVWidth;
+        mVWidth16 = pJitMgr->mVWidth * 2;
+
+        mpIRBuilder = &pJitMgr->mBuilder;
+
+        // Built in types: scalar
+
+        mVoidTy     = Type::getVoidTy(pJitMgr->mContext);
+        mFP16Ty     = Type::getHalfTy(pJitMgr->mContext);
+        mFP32Ty     = Type::getFloatTy(pJitMgr->mContext);
+        mFP32PtrTy  = PointerType::get(mFP32Ty, 0);
+        mDoubleTy   = Type::getDoubleTy(pJitMgr->mContext);
+        mInt1Ty     = Type::getInt1Ty(pJitMgr->mContext);
+        mInt8Ty     = Type::getInt8Ty(pJitMgr->mContext);
+        mInt16Ty    = Type::getInt16Ty(pJitMgr->mContext);
+        mInt32Ty    = Type::getInt32Ty(pJitMgr->mContext);
+        mInt8PtrTy  = PointerType::get(mInt8Ty, 0);
+        mInt16PtrTy = PointerType::get(mInt16Ty, 0);
+        mInt32PtrTy = PointerType::get(mInt32Ty, 0);
+        mInt64Ty    = Type::getInt64Ty(pJitMgr->mContext);
+
+        // Built in types: simd8
+
+        mSimdInt1Ty     = VectorType::get(mInt1Ty,  mVWidth);
+        mSimdInt16Ty    = VectorType::get(mInt16Ty, mVWidth);
+        mSimdInt32Ty    = VectorType::get(mInt32Ty, mVWidth);
+        mSimdInt64Ty    = VectorType::get(mInt64Ty, mVWidth);
+        mSimdFP16Ty     = VectorType::get(mFP16Ty,  mVWidth);
+        mSimdFP32Ty     = VectorType::get(mFP32Ty,  mVWidth);
+        mSimdVectorTy   = ArrayType::get(mSimdFP32Ty, 4);
+        mSimdVectorTRTy = ArrayType::get(mSimdFP32Ty, 5);
+
+        // Built in types: simd16
+
+        mSimd16Int1Ty       = VectorType::get(mInt1Ty,  mVWidth16);
+        mSimd16Int16Ty      = VectorType::get(mInt16Ty, mVWidth16);
+        mSimd16Int32Ty      = VectorType::get(mInt32Ty, mVWidth16);
+        mSimd16Int64Ty      = VectorType::get(mInt64Ty, mVWidth16);
+        mSimd16FP16Ty       = VectorType::get(mFP16Ty,  mVWidth16);
+        mSimd16FP32Ty       = VectorType::get(mFP32Ty,  mVWidth16);
+        mSimd16VectorTy     = ArrayType::get(mSimd16FP32Ty, 4);
+        mSimd16VectorTRTy   = ArrayType::get(mSimd16FP32Ty, 5);
+
+        if (sizeof(uint32_t*) == 4)
+        {
+            mIntPtrTy = mInt32Ty;
+            mSimdIntPtrTy = mSimdInt32Ty;
+            mSimd16IntPtrTy = mSimd16Int32Ty;
+        }
+        else
+        {
+            SWR_ASSERT(sizeof(uint32_t*) == 8);
+
+            mIntPtrTy = mInt64Ty;
+            mSimdIntPtrTy = mSimdInt64Ty;
+            mSimd16IntPtrTy = mSimd16Int64Ty;
+        }
     }
 }