From 68d8dd1fb5a0c28e4f6dfd8512ff6c3550458b46 Mon Sep 17 00:00:00 2001 From: Tim Rowley Date: Tue, 19 Sep 2017 18:19:53 -0500 Subject: [PATCH] swr/rast: Remove code supporting legacy llvm (<3.9) Reviewed-by: Bruce Cherniak --- .../swr/rasterizer/jitter/JitManager.cpp | 11 +- .../swr/rasterizer/jitter/JitManager.h | 7 -- .../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 e4281f8e920..3f0772c942c 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 4bc543b560d..46ffe276a08 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 b943909a574..9ca36b24671 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{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({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({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{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({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({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.30.2