[Mesa-dev] [PATCH 8/9] swr/rast: Remove code supporting legacy llvm (<3.9)

Tim Rowley timothy.o.rowley at intel.com
Fri Sep 22 00:46:51 UTC 2017


---
 .../drivers/swr/rasterizer/jitter/JitManager.cpp   |  11 ++-
 .../drivers/swr/rasterizer/jitter/JitManager.h     |   7 --
 .../drivers/swr/rasterizer/jitter/builder_misc.cpp | 102 ++-------------------
 3 files changed, 15 insertions(+), 105 deletions(-)

diff --git a/src/gallium/drivers/swr/rasterizer/jitter/JitManager.cpp b/src/gallium/drivers/swr/rasterizer/jitter/JitManager.cpp
index e4281f8..3f0772c 100644
--- a/src/gallium/drivers/swr/rasterizer/jitter/JitManager.cpp
+++ b/src/gallium/drivers/swr/rasterizer/jitter/JitManager.cpp
@@ -48,8 +48,9 @@
 #include "llvm/Support/FormattedStream.h"
 #include "llvm/Support/Path.h"
 #include "llvm/Support/MemoryBuffer.h"
+#include "llvm/Config/llvm-config.h"
 
-#if HAVE_LLVM < 0x400
+#if LLVM_VERSION_MAJOR < 4
 #include "llvm/Bitcode/ReaderWriter.h"
 #else
 #include "llvm/Bitcode/BitcodeWriter.h"
@@ -231,8 +232,8 @@ void JitManager::DumpAsm(Function* pFunction, const char* fileName)
 
 #if defined(_WIN32)
         DWORD pid = GetCurrentProcessId();
-        TCHAR procname[MAX_PATH];
-        GetModuleFileName(NULL, procname, MAX_PATH);
+        char procname[MAX_PATH];
+        GetModuleFileNameA(NULL, procname, MAX_PATH);
         const char* pBaseName = strrchr(procname, '\\');
         std::stringstream outDir;
         outDir << JITTER_OUTPUT_DIR << pBaseName << "_" << pid << std::ends;
@@ -269,8 +270,8 @@ void JitManager::DumpToFile(Function *f, const char *fileName)
     {
 #if defined(_WIN32)
         DWORD pid = GetCurrentProcessId();
-        TCHAR procname[MAX_PATH];
-        GetModuleFileName(NULL, procname, MAX_PATH);
+        char procname[MAX_PATH];
+        GetModuleFileNameA(NULL, procname, MAX_PATH);
         const char* pBaseName = strrchr(procname, '\\');
         std::stringstream outDir;
         outDir << JITTER_OUTPUT_DIR << pBaseName << "_" << pid << std::ends;
diff --git a/src/gallium/drivers/swr/rasterizer/jitter/JitManager.h b/src/gallium/drivers/swr/rasterizer/jitter/JitManager.h
index 4bc543b..46ffe27 100644
--- a/src/gallium/drivers/swr/rasterizer/jitter/JitManager.h
+++ b/src/gallium/drivers/swr/rasterizer/jitter/JitManager.h
@@ -47,13 +47,6 @@
 #include "llvm/ExecutionEngine/ObjectCache.h"
 
 #include "llvm/Config/llvm-config.h"
-#ifndef LLVM_VERSION_MAJOR
-#include "llvm/Config/config.h"
-#endif
-
-#ifndef HAVE_LLVM
-#define HAVE_LLVM ((LLVM_VERSION_MAJOR << 8) | LLVM_VERSION_MINOR)
-#endif
 
 #include "llvm/IR/Verifier.h"
 #include "llvm/ExecutionEngine/MCJIT.h"
diff --git a/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.cpp b/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.cpp
index b943909..9ca36b2 100644
--- a/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.cpp
+++ b/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.cpp
@@ -763,22 +763,10 @@ namespace SwrJit
     /// lower 8 values are used.
     Value *Builder::PMOVSXBD(Value* a)
     {
-        // llvm-3.9 removed the pmovsxbd intrinsic
-    #if HAVE_LLVM < 0x309
-        // use avx2 byte sign extend instruction if available
-        if(JM()->mArch.AVX2())
-        {
-            Function *pmovsxbd = Intrinsic::getDeclaration(JM()->mpCurrentModule, Intrinsic::x86_avx2_pmovsxbd);
-            return CALL(pmovsxbd, std::initializer_list<Value*>{a});
-        }
-        else
-    #endif
-        {
-            // VPMOVSXBD output type
-            Type* v8x32Ty = VectorType::get(mInt32Ty, 8);
-            // Extract 8 values from 128bit lane and sign extend
-            return S_EXT(VSHUFFLE(a, a, C<int>({0, 1, 2, 3, 4, 5, 6, 7})), v8x32Ty);
-        }
+        // VPMOVSXBD output type
+        Type* v8x32Ty = VectorType::get(mInt32Ty, 8);
+        // Extract 8 values from 128bit lane and sign extend
+        return S_EXT(VSHUFFLE(a, a, C<int>({0, 1, 2, 3, 4, 5, 6, 7})), v8x32Ty);
     }
 
     //////////////////////////////////////////////////////////////////////////
@@ -787,22 +775,10 @@ namespace SwrJit
     /// @param a - 128bit SIMD lane(8x16bit) of 16bit integer values.
     Value *Builder::PMOVSXWD(Value* a)
     {
-        // llvm-3.9 removed the pmovsxwd intrinsic
-    #if HAVE_LLVM < 0x309
-        // use avx2 word sign extend if available
-        if(JM()->mArch.AVX2())
-        {
-            Function *pmovsxwd = Intrinsic::getDeclaration(JM()->mpCurrentModule, Intrinsic::x86_avx2_pmovsxwd);
-            return CALL(pmovsxwd, std::initializer_list<Value*>{a});
-        }
-        else
-    #endif
-        {
-            // VPMOVSXWD output type
-            Type* v8x32Ty = VectorType::get(mInt32Ty, 8);
-            // Extract 8 values from 128bit lane and sign extend
-            return S_EXT(VSHUFFLE(a, a, C<int>({0, 1, 2, 3, 4, 5, 6, 7})), v8x32Ty);
-        }
+        // VPMOVSXWD output type
+        Type* v8x32Ty = VectorType::get(mInt32Ty, 8);
+        // Extract 8 values from 128bit lane and sign extend
+        return S_EXT(VSHUFFLE(a, a, C<int>({0, 1, 2, 3, 4, 5, 6, 7})), v8x32Ty);
     }
 
     //////////////////////////////////////////////////////////////////////////
@@ -942,74 +918,14 @@ namespace SwrJit
 
     Value *Builder::PMAXSD(Value* a, Value* b)
     {
-        // llvm-3.9 removed the pmax intrinsics
-    #if HAVE_LLVM >= 0x309
         Value* cmp = ICMP_SGT(a, b);
         return SELECT(cmp, a, b);
-    #else
-        if (JM()->mArch.AVX2())
-        {
-            Function* pmaxsd = Intrinsic::getDeclaration(JM()->mpCurrentModule, Intrinsic::x86_avx2_pmaxs_d);
-            return CALL(pmaxsd, {a, b});
-        }
-        else
-        {
-            // use 4-wide sse max intrinsic on lower/upper halves of 8-wide sources
-            Function* pmaxsd = Intrinsic::getDeclaration(JM()->mpCurrentModule, Intrinsic::x86_sse41_pmaxsd);
-
-            // low 128
-            Value* aLo = VEXTRACTI128(a, C((uint8_t)0));
-            Value* bLo = VEXTRACTI128(b, C((uint8_t)0));
-            Value* resLo = CALL(pmaxsd, {aLo, bLo});
-
-            // high 128
-            Value* aHi = VEXTRACTI128(a, C((uint8_t)1));
-            Value* bHi = VEXTRACTI128(b, C((uint8_t)1));
-            Value* resHi = CALL(pmaxsd, {aHi, bHi});
-
-            // combine 
-            Value* result = VINSERTI128(VUNDEF_I(), resLo, C((uint8_t)0));
-            result = VINSERTI128(result, resHi, C((uint8_t)1));
-
-            return result;
-        }
-    #endif
     }
 
     Value *Builder::PMINSD(Value* a, Value* b)
     {
-        // llvm-3.9 removed the pmin intrinsics
-    #if HAVE_LLVM >= 0x309
         Value* cmp = ICMP_SLT(a, b);
         return SELECT(cmp, a, b);
-    #else
-        if (JM()->mArch.AVX2())
-        {
-            Function* pminsd = Intrinsic::getDeclaration(JM()->mpCurrentModule, Intrinsic::x86_avx2_pmins_d);
-            return CALL(pminsd, {a, b});
-        }
-        else
-        {
-            // use 4-wide sse max intrinsic on lower/upper halves of 8-wide sources
-            Function* pminsd = Intrinsic::getDeclaration(JM()->mpCurrentModule, Intrinsic::x86_sse41_pminsd);
-
-            // low 128
-            Value* aLo = VEXTRACTI128(a, C((uint8_t)0));
-            Value* bLo = VEXTRACTI128(b, C((uint8_t)0));
-            Value* resLo = CALL(pminsd, {aLo, bLo});
-
-            // high 128
-            Value* aHi = VEXTRACTI128(a, C((uint8_t)1));
-            Value* bHi = VEXTRACTI128(b, C((uint8_t)1));
-            Value* resHi = CALL(pminsd, {aHi, bHi});
-
-            // combine 
-            Value* result = VINSERTI128(VUNDEF_I(), resLo, C((uint8_t)0));
-            result = VINSERTI128(result, resHi, C((uint8_t)1));
-
-            return result;
-        }
-    #endif
     }
 
     void Builder::Gather4(const SWR_FORMAT format, Value* pSrcBase, Value* byteOffsets, 
@@ -1595,7 +1511,7 @@ namespace SwrJit
     #if defined( _WIN32 )
         char strBuf[1024];
         vsnprintf_s(strBuf, _TRUNCATE, fmt, args);
-        OutputDebugString(strBuf);
+        OutputDebugStringA(strBuf);
     #endif
 
         va_end(args);
-- 
2.7.4



More information about the mesa-dev mailing list