-Adding support for LLVM 4.0

-Switching 3.9 support to branch/release_39
-Switching 3.8 support to tags/release_381
This commit is contained in:
Dmitry Babokin
2016-07-20 22:16:50 +03:00
parent 2a68fc6c48
commit 45b306480e
9 changed files with 42 additions and 10 deletions

View File

@@ -124,8 +124,11 @@ def build_LLVM(version_LLVM, revision, folder, tarball, debug, selfbuild, extra,
FOLDER_NAME=version_LLVM FOLDER_NAME=version_LLVM
if version_LLVM == "trunk": if version_LLVM == "trunk":
SVN_PATH="trunk" SVN_PATH="trunk"
if version_LLVM == "3.9":
SVN_PATH="branches/release_39"
version_LLVM = "3_9"
if version_LLVM == "3.8": if version_LLVM == "3.8":
SVN_PATH="tags/RELEASE_380/final" SVN_PATH="tags/RELEASE_381/final"
version_LLVM = "3_8" version_LLVM = "3_8"
if version_LLVM == "3.7": if version_LLVM == "3.7":
SVN_PATH="tags/RELEASE_370/final" SVN_PATH="tags/RELEASE_370/final"
@@ -352,6 +355,7 @@ def unsupported_llvm_targets(LLVM_VERSION):
"3.7":["avx512skx-i32x16"], "3.7":["avx512skx-i32x16"],
"3.8":[], "3.8":[],
"3.9":[], "3.9":[],
"4.0":[],
"trunk":[]} "trunk":[]}
return prohibited_list[LLVM_VERSION] return prohibited_list[LLVM_VERSION]
@@ -476,8 +480,10 @@ def build_ispc(version_LLVM, make):
temp = "3_7" temp = "3_7"
if version_LLVM == "3.8": if version_LLVM == "3.8":
temp = "3_8" temp = "3_8"
if version_LLVM == "trunk": if version_LLVM == "3.9":
temp = "3_9" temp = "3_9"
if version_LLVM == "trunk":
temp = "4_0"
os.environ["LLVM_VERSION"] = "LLVM_" + temp os.environ["LLVM_VERSION"] = "LLVM_" + temp
try_do_LLVM("clean ISPC for building", "msbuild ispc.vcxproj /t:clean", True) try_do_LLVM("clean ISPC for building", "msbuild ispc.vcxproj /t:clean", True)
try_do_LLVM("build ISPC with LLVM version " + version_LLVM + " ", "msbuild ispc.vcxproj /V:m /p:Platform=Win32 /p:Configuration=Release /t:rebuild", True) try_do_LLVM("build ISPC with LLVM version " + version_LLVM + " ", "msbuild ispc.vcxproj /V:m /p:Platform=Win32 /p:Configuration=Release /t:rebuild", True)
@@ -617,7 +623,7 @@ def validation_run(only, only_targets, reference_branch, number, notify, update,
archs.append("x86-64") archs.append("x86-64")
if "native" in only: if "native" in only:
sde_targets_t = [] sde_targets_t = []
for i in ["3.2", "3.3", "3.4", "3.5", "3.6", "3.7", "3.8", "trunk"]: for i in ["3.2", "3.3", "3.4", "3.5", "3.6", "3.7", "3.8", "3.9", "trunk"]:
if i in only: if i in only:
LLVM.append(i) LLVM.append(i)
if "current" in only: if "current" in only:
@@ -903,7 +909,7 @@ def Main():
if os.environ.get("SMTP_ISPC") == None: if os.environ.get("SMTP_ISPC") == None:
error("you have no SMTP_ISPC in your environment for option notify", 1) error("you have no SMTP_ISPC in your environment for option notify", 1)
if options.only != "": if options.only != "":
test_only_r = " 3.2 3.3 3.4 3.5 3.6 3.7 3.8 trunk current build stability performance x86 x86-64 x86_64 -O0 -O2 native debug nodebug " test_only_r = " 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 trunk current build stability performance x86 x86-64 x86_64 -O0 -O2 native debug nodebug "
test_only = options.only.split(" ") test_only = options.only.split(" ")
for iterator in test_only: for iterator in test_only:
if not (" " + iterator + " " in test_only_r): if not (" " + iterator + " " in test_only_r):
@@ -1013,7 +1019,7 @@ if __name__ == '__main__':
llvm_group = OptionGroup(parser, "Options for building LLVM", llvm_group = OptionGroup(parser, "Options for building LLVM",
"These options must be used with -b option.") "These options must be used with -b option.")
llvm_group.add_option('--version', dest='version', llvm_group.add_option('--version', dest='version',
help='version of llvm to build: 3.2 3.3 3.4 3.5 3.6 3.7 3.8 trunk. Default: trunk', default="trunk") help='version of llvm to build: 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 trunk. Default: trunk', default="trunk")
llvm_group.add_option('--with-gcc-toolchain', dest='gcc_toolchain_path', llvm_group.add_option('--with-gcc-toolchain', dest='gcc_toolchain_path',
help='GCC install dir to use when building clang. It is important to set when ' + help='GCC install dir to use when building clang. It is important to set when ' +
'you have alternative gcc installation. Note that otherwise gcc from standard ' + 'you have alternative gcc installation. Note that otherwise gcc from standard ' +
@@ -1054,7 +1060,7 @@ if __name__ == '__main__':
run_group.add_option('--only', dest='only', run_group.add_option('--only', dest='only',
help='set types of tests. Possible values:\n' + help='set types of tests. Possible values:\n' +
'-O0, -O2, x86, x86-64, stability (test only stability), performance (test only performance),\n' + '-O0, -O2, x86, x86-64, stability (test only stability), performance (test only performance),\n' +
'build (only build with different LLVM), 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, trunk, native (do not use SDE),\n' + 'build (only build with different LLVM), 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, trunk, native (do not use SDE),\n' +
'current (do not rebuild ISPC), debug (only with debug info), nodebug (only without debug info, default).', 'current (do not rebuild ISPC), debug (only with debug info), nodebug (only without debug info, default).',
default="") default="")
run_group.add_option('--perf_LLVM', dest='perf_llvm', run_group.add_option('--perf_LLVM', dest='perf_llvm',

View File

@@ -151,6 +151,8 @@ define(`PTR_OP_ARGS',
LLVM_VERSION, LLVM_3_8, LLVM_VERSION, LLVM_3_8,
``$1 , $1 *'', ``$1 , $1 *'',
LLVM_VERSION, LLVM_3_9, LLVM_VERSION, LLVM_3_9,
``$1 , $1 *'',
LLVM_VERSION, LLVM_4_0,
``$1 , $1 *'', ``$1 , $1 *'',
``$1 *'' ``$1 *''
) )

View File

@@ -36,6 +36,8 @@ ifelse(LLVM_VERSION, LLVM_3_7,
LLVM_VERSION, LLVM_3_8, LLVM_VERSION, LLVM_3_8,
`include(`target-avx512-common.ll')', `include(`target-avx512-common.ll')',
LLVM_VERSION, LLVM_3_9, LLVM_VERSION, LLVM_3_9,
`include(`target-avx512-common.ll')',
LLVM_VERSION, LLVM_4_0,
`include(`target-avx512-common.ll')' `include(`target-avx512-common.ll')'
) )
@@ -60,6 +62,8 @@ ifelse(LLVM_VERSION, LLVM_3_7,
LLVM_VERSION, LLVM_3_8, LLVM_VERSION, LLVM_3_8,
rcp_rsqrt_varying_float_knl(), rcp_rsqrt_varying_float_knl(),
LLVM_VERSION, LLVM_3_9, LLVM_VERSION, LLVM_3_9,
rcp_rsqrt_varying_float_knl(),
LLVM_VERSION, LLVM_4_0,
rcp_rsqrt_varying_float_knl() rcp_rsqrt_varying_float_knl()
) )

View File

@@ -35,6 +35,8 @@ define(`WIDTH',`16')
ifelse(LLVM_VERSION, LLVM_3_8, ifelse(LLVM_VERSION, LLVM_3_8,
`include(`target-avx512-common.ll')', `include(`target-avx512-common.ll')',
LLVM_VERSION, LLVM_3_9, LLVM_VERSION, LLVM_3_9,
`include(`target-avx512-common.ll')',
LLVM_VERSION, LLVM_4_0,
`include(`target-avx512-common.ll')' `include(`target-avx512-common.ll')'
) )
@@ -80,6 +82,8 @@ define <16 x float> @__rsqrt_varying_float(<16 x float> %v) nounwind readonly al
ifelse(LLVM_VERSION, LLVM_3_8, ifelse(LLVM_VERSION, LLVM_3_8,
rcp_rsqrt_varying_float_skx(), rcp_rsqrt_varying_float_skx(),
LLVM_VERSION, LLVM_3_9, LLVM_VERSION, LLVM_3_9,
rcp_rsqrt_varying_float_skx(),
LLVM_VERSION, LLVM_4_0,
rcp_rsqrt_varying_float_skx() rcp_rsqrt_varying_float_skx()
) )

View File

@@ -54,9 +54,11 @@ define(`MASK_HIGH_BIT_ON',
define(`PTR_OP_ARGS', define(`PTR_OP_ARGS',
ifelse(LLVM_VERSION, LLVM_3_7, ifelse(LLVM_VERSION, LLVM_3_7,
``$1 , $1 *'', ``$1 , $1 *'',
ifelse(LLVM_VERSION, LLVM_3_8, LLVM_VERSION, LLVM_3_8,
``$1 , $1 *'', ``$1 , $1 *'',
ifelse(LLVM_VERSION, LLVM_3_9, LLVM_VERSION, LLVM_3_9,
``$1 , $1 *'',
LLVM_VERSION, LLVM_4_0,
``$1 , $1 *'', ``$1 , $1 *'',
``$1 *'' ``$1 *''
) )

View File

@@ -57,6 +57,8 @@ define(`PTR_OP_ARGS',
LLVM_VERSION, LLVM_3_8, LLVM_VERSION, LLVM_3_8,
``$1 , $1 *'', ``$1 , $1 *'',
LLVM_VERSION, LLVM_3_9, LLVM_VERSION, LLVM_3_9,
``$1 , $1 *'',
LLVM_VERSION, LLVM_4_0,
``$1 , $1 *'', ``$1 , $1 *'',
``$1 *'' ``$1 *''
) )
@@ -69,6 +71,8 @@ define(`MdORi64',
``i64'', ``i64'',
LLVM_VERSION, LLVM_3_9, LLVM_VERSION, LLVM_3_9,
``i64'', ``i64'',
LLVM_VERSION, LLVM_4_0,
``i64'',
``double'' ``double''
) )
) )
@@ -78,6 +82,8 @@ define(`MfORi32',
``i32'', ``i32'',
LLVM_VERSION, LLVM_3_9, LLVM_VERSION, LLVM_3_9,
``i32'', ``i32'',
LLVM_VERSION, LLVM_4_0,
``i32'',
``float'' ``float''
) )
) )
@@ -1586,6 +1592,9 @@ define <$1 x $2> @__atomic_compare_exchange_$3_global($2* %ptr, <$1 x $2> %cmp,
',LLVM_VERSION,LLVM_3_9,` ',LLVM_VERSION,LLVM_3_9,`
%r_LANE_ID_t = cmpxchg $2 * %ptr, $2 %cmp_LANE_ID, $2 %val_LANE_ID seq_cst seq_cst %r_LANE_ID_t = cmpxchg $2 * %ptr, $2 %cmp_LANE_ID, $2 %val_LANE_ID seq_cst seq_cst
%r_LANE_ID = extractvalue { $2, i1 } %r_LANE_ID_t, 0 %r_LANE_ID = extractvalue { $2, i1 } %r_LANE_ID_t, 0
',LLVM_VERSION,LLVM_4_0,`
%r_LANE_ID_t = cmpxchg $2 * %ptr, $2 %cmp_LANE_ID, $2 %val_LANE_ID seq_cst seq_cst
%r_LANE_ID = extractvalue { $2, i1 } %r_LANE_ID_t, 0
',` ',`
%r_LANE_ID = cmpxchg $2 * %ptr, $2 %cmp_LANE_ID, $2 %val_LANE_ID seq_cst %r_LANE_ID = cmpxchg $2 * %ptr, $2 %cmp_LANE_ID, $2 %val_LANE_ID seq_cst
') ')
@@ -1614,6 +1623,9 @@ define $2 @__atomic_compare_exchange_uniform_$3_global($2* %ptr, $2 %cmp,
',LLVM_VERSION,LLVM_3_9,` ',LLVM_VERSION,LLVM_3_9,`
%r_t = cmpxchg $2 * %ptr, $2 %cmp, $2 %val seq_cst seq_cst %r_t = cmpxchg $2 * %ptr, $2 %cmp, $2 %val seq_cst seq_cst
%r = extractvalue { $2, i1 } %r_t, 0 %r = extractvalue { $2, i1 } %r_t, 0
',LLVM_VERSION,LLVM_4_0,`
%r_t = cmpxchg $2 * %ptr, $2 %cmp, $2 %val seq_cst seq_cst
%r = extractvalue { $2, i1 } %r_t, 0
',` ',`
%r = cmpxchg $2 * %ptr, $2 %cmp, $2 %val seq_cst %r = cmpxchg $2 * %ptr, $2 %cmp, $2 %val seq_cst
') ')

2
ispc.h
View File

@@ -41,7 +41,7 @@
#include "ispc_version.h" #include "ispc_version.h"
#if ISPC_LLVM_VERSION < OLDEST_SUPPORTED_LLVM || ISPC_LLVM_VERSION > LATEST_SUPPORTED_LLVM #if ISPC_LLVM_VERSION < OLDEST_SUPPORTED_LLVM || ISPC_LLVM_VERSION > LATEST_SUPPORTED_LLVM
#error "Only LLVM 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8 and 3.9 development branch are supported" #error "Only LLVM 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9 and 4.0 development branch are supported"
#endif #endif
#if defined(_WIN32) || defined(_WIN64) #if defined(_WIN32) || defined(_WIN64)

View File

@@ -51,9 +51,10 @@
#define ISPC_LLVM_3_7 30700 #define ISPC_LLVM_3_7 30700
#define ISPC_LLVM_3_8 30800 #define ISPC_LLVM_3_8 30800
#define ISPC_LLVM_3_9 30900 #define ISPC_LLVM_3_9 30900
#define ISPC_LLVM_4_0 40000
#define OLDEST_SUPPORTED_LLVM ISPC_LLVM_3_2 #define OLDEST_SUPPORTED_LLVM ISPC_LLVM_3_2
#define LATEST_SUPPORTED_LLVM ISPC_LLVM_3_9 #define LATEST_SUPPORTED_LLVM ISPC_LLVM_4_0
#ifdef __ispc__xstr #ifdef __ispc__xstr
#undef __ispc__xstr #undef __ispc__xstr

View File

@@ -124,6 +124,7 @@
#include <clang/Frontend/TextDiagnosticPrinter.h> #include <clang/Frontend/TextDiagnosticPrinter.h>
#include <clang/Frontend/Utils.h> #include <clang/Frontend/Utils.h>
#include <clang/Basic/TargetInfo.h> #include <clang/Basic/TargetInfo.h>
#include <clang/Lex/PreprocessorOptions.h>
#include <llvm/Support/ToolOutputFile.h> #include <llvm/Support/ToolOutputFile.h>
#include <llvm/Support/Host.h> #include <llvm/Support/Host.h>
#include <llvm/Support/raw_ostream.h> #include <llvm/Support/raw_ostream.h>