diff --git a/builtins.cpp b/builtins.cpp index e5745372..b8b5ac59 100644 --- a/builtins.cpp +++ b/builtins.cpp @@ -406,8 +406,10 @@ lSetInternalFunctions(llvm::Module *module) { "__count_trailing_zeros_i64", "__count_leading_zeros_i32", "__count_leading_zeros_i64", - "__delete_uniform", - "__delete_varying", + "__delete_uniform_32rt", + "__delete_uniform_64rt", + "__delete_varying_32rt", + "__delete_varying_64rt", "__do_assert_uniform", "__do_assert_varying", "__do_print", diff --git a/builtins/util.m4 b/builtins/util.m4 index ac9ba2d0..5f0b9aa2 100644 --- a/builtins/util.m4 +++ b/builtins/util.m4 @@ -1,4 +1,4 @@ -;; Copyright (c) 2010-2012, Intel Corporation +;; Copyright (c) 2010-2013, Intel Corporation ;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without @@ -2536,13 +2536,19 @@ ok: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; new/delete -;; Set of function for 32 bit runtime +;; Set of functions for 32 bit runtime. +;; They are different for Windows and Unix (Linux/MacOS), +;; on Windows we have to use _aligned_malloc/_aligned_free, +;; while on Unix we use posix_memalign/free +;; +;; Note that this should be really two different libraries for 32 and 64 +;; environment and it should happen sooner or later ifelse(BUILD_OS, `UNIX', ` -;; posix_memalign is for 32 bit runtime declare i32 @posix_memalign(i8**, i32, i32) +declare void @free(i8 *) define noalias i8 * @__new_uniform_32rt(i64 %size) { %ptr = alloca i8* @@ -2567,10 +2573,62 @@ define @__new_varying32_32rt( %size, % ret %r } +define void @__delete_uniform_32rt(i8 * %ptr) { + call void @free(i8 * %ptr) + ret void +} + +define void @__delete_varying_32rt( %ptr, %mask) { + per_lane(WIDTH, %mask, ` + %iptr_LANE_ID = extractelement %ptr, i32 LANE + %ptr_LANE_ID = inttoptr i64 %iptr_LANE_ID to i8 * + call void @free(i8 * %ptr_LANE_ID) + ') + ret void +} + ', BUILD_OS, `WINDOWS', ` -;; Windows version TBD +declare i8* @_aligned_malloc(i32, i32) +declare void @_aligned_free(i8 *) + +define noalias i8 * @__new_uniform_32rt(i64 %size) { + %conv = trunc i64 %size to i32 + %ptr = tail call i8* @_aligned_malloc(i32 %conv, i32 16) + ret i8* %ptr +} + +define @__new_varying32_32rt( %size, %mask) { + %ret = alloca + store zeroinitializer, * %ret + %ret64 = bitcast * %ret to i64 * + + per_lane(WIDTH, %mask, ` + %sz_LANE_ID = extractelement %size, i32 LANE + %ptr_LANE_ID = call noalias i8 * @_aligned_malloc(i32 %sz_LANE_ID, i32 16) + %ptr_int_LANE_ID = ptrtoint i8 * %ptr_LANE_ID to i64 + %store_LANE_ID = getelementptr i64 * %ret64, i32 LANE + store i64 %ptr_int_LANE_ID, i64 * %store_LANE_ID') + + %r = load * %ret + ret %r +} + +define void @__delete_uniform_32rt(i8 * %ptr) { + call void @_aligned_free(i8 * %ptr) + ret void +} + +define void @__delete_varying_32rt( %ptr, %mask) { + per_lane(WIDTH, %mask, ` + %iptr_LANE_ID = extractelement %ptr, i32 LANE + %ptr_LANE_ID = inttoptr i64 %iptr_LANE_ID to i8 * + call void @_aligned_free(i8 * %ptr_LANE_ID) + ') + ret void +} + ', ` errprint(`BUILD_OS should be defined to either UNIX or WINDOWS @@ -2578,10 +2636,11 @@ errprint(`BUILD_OS should be defined to either UNIX or WINDOWS m4exit(`1') ') -;; Set of function for 64 bit runtime +;; Set of functions for 64 bit runtime +;; We use the same standard malloc/free pair on all platforms (Windows/Linux/MacOS). -;; malloc is for 64 bit runtime declare noalias i8 * @malloc(i64) +declare void @free(i8 *) define noalias i8 * @__new_uniform_64rt(i64 %size) { %a = call noalias i8 * @malloc(i64 %size) @@ -2621,17 +2680,12 @@ define @__new_varying64_64rt( %size, % ret %r } -;; Functions for both 32 and 64 bit runtimes. - -;; free works fine with both 32 and 64 bit runtime -declare void @free(i8 *) - -define void @__delete_uniform(i8 * %ptr) { +define void @__delete_uniform_64rt(i8 * %ptr) { call void @free(i8 * %ptr) ret void } -define void @__delete_varying( %ptr, %mask) { +define void @__delete_varying_64rt( %ptr, %mask) { per_lane(WIDTH, %mask, ` %iptr_LANE_ID = extractelement %ptr, i32 LANE %ptr_LANE_ID = inttoptr i64 %iptr_LANE_ID to i8 * diff --git a/ispc.vcxproj b/ispc.vcxproj index 3a0bf98b..41fd1569 100755 --- a/ispc.vcxproj +++ b/ispc.vcxproj @@ -115,10 +115,10 @@ Document - m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% builtins\target-sse4.ll | python bitcode2cpp.py builtins\target-sse4.ll > gen-bitcode-sse4.cpp + m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% -DBUILD_OS=WINDOWS builtins\target-sse4.ll | python bitcode2cpp.py builtins\target-sse4.ll > gen-bitcode-sse4.cpp gen-bitcode-sse4.cpp builtins\util.m4;builtins\target-sse4-common.ll - m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% builtins\target-sse4.ll | python bitcode2cpp.py builtins\target-sse4.ll > gen-bitcode-sse4.cpp + m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% -DBUILD_OS=WINDOWS builtins\target-sse4.ll | python bitcode2cpp.py builtins\target-sse4.ll > gen-bitcode-sse4.cpp gen-bitcode-sse4.cpp builtins\util.m4;builtins\target-sse4-common.ll Building gen-bitcode-sse4.cpp @@ -128,10 +128,10 @@ Document - m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% builtins\target-sse4-x2.ll | python bitcode2cpp.py builtins\target-sse4-x2.ll > gen-bitcode-sse4-x2.cpp + m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% -DBUILD_OS=WINDOWS builtins\target-sse4-x2.ll | python bitcode2cpp.py builtins\target-sse4-x2.ll > gen-bitcode-sse4-x2.cpp gen-bitcode-sse4-x2.cpp builtins\util.m4;builtins\target-sse4-common.ll - m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% builtins\target-sse4-x2.ll | python bitcode2cpp.py builtins\target-sse4-x2.ll > gen-bitcode-sse4-x2.cpp + m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% -DBUILD_OS=WINDOWS builtins\target-sse4-x2.ll | python bitcode2cpp.py builtins\target-sse4-x2.ll > gen-bitcode-sse4-x2.cpp gen-bitcode-sse4-x2.cpp builtins\util.m4;builtins\target-sse4-common.ll Building gen-bitcode-sse4-x2.cpp @@ -141,10 +141,10 @@ Document - m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% builtins\target-sse2.ll | python bitcode2cpp.py builtins\target-sse2.ll > gen-bitcode-sse2.cpp + m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% -DBUILD_OS=WINDOWS builtins\target-sse2.ll | python bitcode2cpp.py builtins\target-sse2.ll > gen-bitcode-sse2.cpp gen-bitcode-sse2.cpp builtins\util.m4;builtins\target-sse2-common.ll - m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% builtins\target-sse2.ll | python bitcode2cpp.py builtins\target-sse2.ll > gen-bitcode-sse2.cpp + m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% -DBUILD_OS=WINDOWS builtins\target-sse2.ll | python bitcode2cpp.py builtins\target-sse2.ll > gen-bitcode-sse2.cpp gen-bitcode-sse2.cpp builtins\util.m4;builtins\target-sse2-common.ll Building gen-bitcode-sse2.cpp @@ -154,10 +154,10 @@ Document - m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% builtins\target-sse2-x2.ll | python bitcode2cpp.py builtins\target-sse2-x2.ll > gen-bitcode-sse2-x2.cpp + m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% -DBUILD_OS=WINDOWS builtins\target-sse2-x2.ll | python bitcode2cpp.py builtins\target-sse2-x2.ll > gen-bitcode-sse2-x2.cpp gen-bitcode-sse2-x2.cpp builtins\util.m4;builtins\target-sse2-common.ll - m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% builtins\target-sse2-x2.ll | python bitcode2cpp.py builtins\target-sse2-x2.ll > gen-bitcode-sse2-x2.cpp + m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% -DBUILD_OS=WINDOWS builtins\target-sse2-x2.ll | python bitcode2cpp.py builtins\target-sse2-x2.ll > gen-bitcode-sse2-x2.cpp gen-bitcode-sse2-x2.cpp builtins\util.m4;builtins\target-sse2-common.ll Building gen-bitcode-sse2-x2.cpp @@ -167,10 +167,10 @@ Document - m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% builtins\target-avx1.ll | python bitcode2cpp.py builtins\target-avx1.ll > gen-bitcode-avx1.cpp + m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% -DBUILD_OS=WINDOWS builtins\target-avx1.ll | python bitcode2cpp.py builtins\target-avx1.ll > gen-bitcode-avx1.cpp gen-bitcode-avx1.cpp builtins\util.m4;builtins\target-avx-common.ll;builtins\target-avx.ll - m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% builtins\target-avx1.ll | python bitcode2cpp.py builtins\target-avx1.ll > gen-bitcode-avx1.cpp + m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% -DBUILD_OS=WINDOWS builtins\target-avx1.ll | python bitcode2cpp.py builtins\target-avx1.ll > gen-bitcode-avx1.cpp gen-bitcode-avx1.cpp builtins\util.m4;builtins\target-avx-common.ll;builtins\target-avx.ll Building gen-bitcode-avx1.cpp @@ -180,10 +180,10 @@ Document - m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% builtins\target-avx1-x2.ll | python bitcode2cpp.py builtins\target-avx1-x2.ll > gen-bitcode-avx1-x2.cpp + m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% -DBUILD_OS=WINDOWS builtins\target-avx1-x2.ll | python bitcode2cpp.py builtins\target-avx1-x2.ll > gen-bitcode-avx1-x2.cpp gen-bitcode-avx1-x2.cpp builtins\util.m4;builtins\target-avx-common.ll;builtins\target-avx-x2.ll - m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% builtins\target-avx1-x2.ll | python bitcode2cpp.py builtins\target-avx1-x2.ll > gen-bitcode-avx1-x2.cpp + m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% -DBUILD_OS=WINDOWS builtins\target-avx1-x2.ll | python bitcode2cpp.py builtins\target-avx1-x2.ll > gen-bitcode-avx1-x2.cpp gen-bitcode-avx1-x2.cpp builtins\util.m4;builtins\target-avx-common.ll;builtins\targets-avx-x2.ll Building gen-bitcode-avx1-x2.cpp @@ -193,10 +193,10 @@ Document - m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% builtins\target-avx11.ll | python bitcode2cpp.py builtins\target-avx11.ll > gen-bitcode-avx11.cpp + m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% -DBUILD_OS=WINDOWS builtins\target-avx11.ll | python bitcode2cpp.py builtins\target-avx11.ll > gen-bitcode-avx11.cpp gen-bitcode-avx11.cpp builtins\util.m4;builtins\target-avx-common.ll;builtins\target-avx.ll - m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% builtins\target-avx11.ll | python bitcode2cpp.py builtins\target-avx11.ll > gen-bitcode-avx11.cpp + m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% -DBUILD_OS=WINDOWS builtins\target-avx11.ll | python bitcode2cpp.py builtins\target-avx11.ll > gen-bitcode-avx11.cpp gen-bitcode-avx11.cpp builtins\util.m4;builtins\target-avx-common.ll;builtins\target-avx.ll Building gen-bitcode-avx11.cpp @@ -206,10 +206,10 @@ Document - m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% builtins\target-avx11-x2.ll | python bitcode2cpp.py builtins\target-avx11-x2.ll > gen-bitcode-avx11-x2.cpp + m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% -DBUILD_OS=WINDOWS builtins\target-avx11-x2.ll | python bitcode2cpp.py builtins\target-avx11-x2.ll > gen-bitcode-avx11-x2.cpp gen-bitcode-avx11-x2.cpp builtins\util.m4;builtins\target-avx-common.ll;builtins\target-avx-x2.ll - m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% builtins\target-avx11-x2.ll | python bitcode2cpp.py builtins\target-avx11-x2.ll > gen-bitcode-avx11-x2.cpp + m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% -DBUILD_OS=WINDOWS builtins\target-avx11-x2.ll | python bitcode2cpp.py builtins\target-avx11-x2.ll > gen-bitcode-avx11-x2.cpp gen-bitcode-avx11-x2.cpp builtins\util.m4;builtins\target-avx-common.ll;builtins\targets-avx-x2.ll Building gen-bitcode-avx11-x2.cpp @@ -219,10 +219,10 @@ Document - m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% builtins\target-avx2.ll | python bitcode2cpp.py builtins\target-avx2.ll > gen-bitcode-avx2.cpp + m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% -DBUILD_OS=WINDOWS builtins\target-avx2.ll | python bitcode2cpp.py builtins\target-avx2.ll > gen-bitcode-avx2.cpp gen-bitcode-avx2.cpp builtins\util.m4;builtins\target-avx-common.ll;builtins\target-avx.ll - m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% builtins\target-avx2.ll | python bitcode2cpp.py builtins\target-avx2.ll > gen-bitcode-avx2.cpp + m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% -DBUILD_OS=WINDOWS builtins\target-avx2.ll | python bitcode2cpp.py builtins\target-avx2.ll > gen-bitcode-avx2.cpp gen-bitcode-avx2.cpp builtins\util.m4;builtins\target-avx-common.ll;builtins\target-avx.ll Building gen-bitcode-avx2.cpp @@ -232,10 +232,10 @@ Document - m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% builtins\target-avx2-x2.ll | python bitcode2cpp.py builtins\target-avx2-x2.ll > gen-bitcode-avx2-x2.cpp + m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% -DBUILD_OS=WINDOWS builtins\target-avx2-x2.ll | python bitcode2cpp.py builtins\target-avx2-x2.ll > gen-bitcode-avx2-x2.cpp gen-bitcode-avx2-x2.cpp builtins\util.m4;builtins\target-avx-common.ll;builtins\target-avx-x2.ll - m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% builtins\target-avx2-x2.ll | python bitcode2cpp.py builtins\target-avx2-x2.ll > gen-bitcode-avx2-x2.cpp + m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% -DBUILD_OS=WINDOWS builtins\target-avx2-x2.ll | python bitcode2cpp.py builtins\target-avx2-x2.ll > gen-bitcode-avx2-x2.cpp gen-bitcode-avx2-x2.cpp builtins\util.m4;builtins\target-avx-common.ll;builtins\targets-avx-x2.ll Building gen-bitcode-avx2-x2.cpp @@ -245,10 +245,10 @@ Document - m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% builtins\target-generic-1.ll | python bitcode2cpp.py builtins\target-generic-1.ll > gen-bitcode-generic-1.cpp + m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% -DBUILD_OS=WINDOWS builtins\target-generic-1.ll | python bitcode2cpp.py builtins\target-generic-1.ll > gen-bitcode-generic-1.cpp gen-bitcode-generic-1.cpp builtins\util.m4;builtins\target-generic-common.ll - m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% builtins\target-generic-1.ll | python bitcode2cpp.py builtins\target-generic-1.ll > gen-bitcode-generic-1.cpp + m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% -DBUILD_OS=WINDOWS builtins\target-generic-1.ll | python bitcode2cpp.py builtins\target-generic-1.ll > gen-bitcode-generic-1.cpp gen-bitcode-generic-1.cpp builtins\util.m4;builtins\target-generic-common.ll Building gen-bitcode-generic-1.cpp @@ -258,10 +258,10 @@ Document - m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% builtins\target-generic-4.ll | python bitcode2cpp.py builtins\target-generic-4.ll > gen-bitcode-generic-4.cpp + m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% -DBUILD_OS=WINDOWS builtins\target-generic-4.ll | python bitcode2cpp.py builtins\target-generic-4.ll > gen-bitcode-generic-4.cpp gen-bitcode-generic-4.cpp builtins\util.m4;builtins\target-generic-common.ll - m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% builtins\target-generic-4.ll | python bitcode2cpp.py builtins\target-generic-4.ll > gen-bitcode-generic-4.cpp + m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% -DBUILD_OS=WINDOWS builtins\target-generic-4.ll | python bitcode2cpp.py builtins\target-generic-4.ll > gen-bitcode-generic-4.cpp gen-bitcode-generic-4.cpp builtins\util.m4;builtins\target-generic-common.ll Building gen-bitcode-generic-4.cpp @@ -271,10 +271,10 @@ Document - m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% builtins\target-generic-8.ll | python bitcode2cpp.py builtins\target-generic-8.ll > gen-bitcode-generic-8.cpp + m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% -DBUILD_OS=WINDOWS builtins\target-generic-8.ll | python bitcode2cpp.py builtins\target-generic-8.ll > gen-bitcode-generic-8.cpp gen-bitcode-generic-8.cpp builtins\util.m4;builtins\target-generic-common.ll - m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% builtins\target-generic-8.ll | python bitcode2cpp.py builtins\target-generic-8.ll > gen-bitcode-generic-8.cpp + m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% -DBUILD_OS=WINDOWS builtins\target-generic-8.ll | python bitcode2cpp.py builtins\target-generic-8.ll > gen-bitcode-generic-8.cpp gen-bitcode-generic-8.cpp builtins\util.m4;builtins\target-generic-common.ll Building gen-bitcode-generic-8.cpp @@ -284,10 +284,10 @@ Document - m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% builtins\target-generic-16.ll | python bitcode2cpp.py builtins\target-generic-16.ll > gen-bitcode-generic-16.cpp + m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% -DBUILD_OS=WINDOWS builtins\target-generic-16.ll | python bitcode2cpp.py builtins\target-generic-16.ll > gen-bitcode-generic-16.cpp gen-bitcode-generic-16.cpp builtins\util.m4;builtins\target-generic-common.ll - m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% builtins\target-generic-16.ll | python bitcode2cpp.py builtins\target-generic-16.ll > gen-bitcode-generic-16.cpp + m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% -DBUILD_OS=WINDOWS builtins\target-generic-16.ll | python bitcode2cpp.py builtins\target-generic-16.ll > gen-bitcode-generic-16.cpp gen-bitcode-generic-16.cpp builtins\util.m4;builtins\target-generic-common.ll Building gen-bitcode-generic-16.cpp @@ -297,10 +297,10 @@ Document - m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% builtins\target-generic-32.ll | python bitcode2cpp.py builtins\target-generic-32.ll > gen-bitcode-generic-32.cpp + m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% -DBUILD_OS=WINDOWS builtins\target-generic-32.ll | python bitcode2cpp.py builtins\target-generic-32.ll > gen-bitcode-generic-32.cpp gen-bitcode-generic-32.cpp builtins\util.m4;builtins\target-generic-common.ll - m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% builtins\target-generic-32.ll | python bitcode2cpp.py builtins\target-generic-32.ll > gen-bitcode-generic-32.cpp + m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% -DBUILD_OS=WINDOWS builtins\target-generic-32.ll | python bitcode2cpp.py builtins\target-generic-32.ll > gen-bitcode-generic-32.cpp gen-bitcode-generic-32.cpp builtins\util.m4;builtins\target-generic-common.ll Building gen-bitcode-generic-32.cpp @@ -310,10 +310,10 @@ Document - m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% builtins\target-generic-64.ll | python bitcode2cpp.py builtins\target-generic-64.ll > gen-bitcode-generic-64.cpp + m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% -DBUILD_OS=WINDOWS builtins\target-generic-64.ll | python bitcode2cpp.py builtins\target-generic-64.ll > gen-bitcode-generic-64.cpp gen-bitcode-generic-64.cpp builtins\util.m4;builtins\target-generic-common.ll - m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% builtins\target-generic-64.ll | python bitcode2cpp.py builtins\target-generic-64.ll > gen-bitcode-generic-64.cpp + m4 -Ibuiltins/ -DLLVM_VERSION=%LLVM_VERSION% -DBUILD_OS=WINDOWS builtins\target-generic-64.ll | python bitcode2cpp.py builtins\target-generic-64.ll > gen-bitcode-generic-64.cpp gen-bitcode-generic-64.cpp builtins\util.m4;builtins\target-generic-common.ll Building gen-bitcode-generic-64.cpp diff --git a/main.cpp b/main.cpp index 45d5f1ee..d58ff71d 100644 --- a/main.cpp +++ b/main.cpp @@ -1,5 +1,5 @@ /* - Copyright (c) 2010-2012, Intel Corporation + Copyright (c) 2010-2013, Intel Corporation All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/stmt.cpp b/stmt.cpp index 5ada5584..a95f8fbf 100644 --- a/stmt.cpp +++ b/stmt.cpp @@ -3234,7 +3234,12 @@ DeleteStmt::EmitCode(FunctionEmitContext *ctx) const { // __delete_uniform() from the builtins expects. exprValue = ctx->BitCastInst(exprValue, LLVMTypes::VoidPointerType, "ptr_to_void"); - llvm::Function *func = m->module->getFunction("__delete_uniform"); + llvm::Function *func; + if (g->target->is32Bit()) { + func = m->module->getFunction("__delete_uniform_32rt"); + } else { + func = m->module->getFunction("__delete_uniform_64rt"); + } AssertPos(pos, func != NULL); ctx->CallInst(func, NULL, exprValue, ""); @@ -3244,7 +3249,12 @@ DeleteStmt::EmitCode(FunctionEmitContext *ctx) const { // takes a vector of i64s (even for 32-bit targets). Therefore, we // only need to extend to 64-bit values on 32-bit targets before // calling it. - llvm::Function *func = m->module->getFunction("__delete_varying"); + llvm::Function *func; + if (g->target->is32Bit()) { + func = m->module->getFunction("__delete_varying_32rt"); + } else { + func = m->module->getFunction("__delete_varying_64rt"); + } AssertPos(pos, func != NULL); if (g->target->is32Bit()) exprValue = ctx->ZExtInst(exprValue, LLVMTypes::Int64VectorType,