Skip to content

Commit 405cd5f

Browse files
authored
Fix subsetted build issues with arm32/64, hexagon. Fixes #5744. Fixes #5628 (#5745) (#5753)
(cherry picked from commit d053463)
1 parent 0a1a77e commit 405cd5f

File tree

3 files changed

+44
-18
lines changed

3 files changed

+44
-18
lines changed

src/CodeGen_Hexagon.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -2313,6 +2313,7 @@ std::unique_ptr<CodeGen_Posix> new_CodeGen_Hexagon(const Target &target, llvm::L
23132313

23142314
std::unique_ptr<CodeGen_Posix> new_CodeGen_Hexagon(const Target &target, llvm::LLVMContext &context) {
23152315
user_error << "hexagon not enabled for this build of Halide.\n";
2316+
return nullptr;
23162317
}
23172318

23182319
#endif // WITH_HEXAGON

src/LLVM_Runtime_Linker.cpp

+39-16
Original file line numberDiff line numberDiff line change
@@ -34,21 +34,17 @@ std::unique_ptr<llvm::Module> parse_bitcode_file(llvm::StringRef buf, llvm::LLVM
3434
return parse_bitcode_file(sb, context, #mod); \
3535
}
3636

37-
#define DECLARE_NO_INITMOD(mod) \
38-
std::unique_ptr<llvm::Module> get_initmod_##mod(llvm::LLVMContext *, bool, bool) { \
39-
user_error << "Halide was compiled without support for this target\n"; \
40-
return std::unique_ptr<llvm::Module>(); \
41-
} \
42-
std::unique_ptr<llvm::Module> get_initmod_##mod##_ll(llvm::LLVMContext *) { \
43-
user_error << "Halide was compiled without support for this target\n"; \
44-
return std::unique_ptr<llvm::Module>(); \
37+
#define DECLARE_NO_INITMOD(mod) \
38+
std::unique_ptr<llvm::Module> get_initmod_##mod(llvm::LLVMContext *, bool = false, bool = false) { \
39+
user_error << "Halide was compiled without support for this target\n"; \
40+
return std::unique_ptr<llvm::Module>(); \
41+
} \
42+
std::unique_ptr<llvm::Module> get_initmod_##mod##_ll(llvm::LLVMContext *) { \
43+
user_error << "Halide was compiled without support for this target\n"; \
44+
return std::unique_ptr<llvm::Module>(); \
4545
}
4646

47-
#define DECLARE_CPP_INITMOD(mod) \
48-
DECLARE_INITMOD(mod##_32_debug) \
49-
DECLARE_INITMOD(mod##_64_debug) \
50-
DECLARE_INITMOD(mod##_32) \
51-
DECLARE_INITMOD(mod##_64) \
47+
#define DECLARE_CPP_INITMOD_LOOKUP(mod) \
5248
std::unique_ptr<llvm::Module> get_initmod_##mod(llvm::LLVMContext *context, bool bits_64, bool debug) { \
5349
if (bits_64) { \
5450
if (debug) { \
@@ -65,6 +61,13 @@ std::unique_ptr<llvm::Module> parse_bitcode_file(llvm::StringRef buf, llvm::LLVM
6561
} \
6662
}
6763

64+
#define DECLARE_CPP_INITMOD(mod) \
65+
DECLARE_INITMOD(mod##_32_debug) \
66+
DECLARE_INITMOD(mod##_64_debug) \
67+
DECLARE_INITMOD(mod##_32) \
68+
DECLARE_INITMOD(mod##_64) \
69+
DECLARE_CPP_INITMOD_LOOKUP(mod)
70+
6871
#define DECLARE_LL_INITMOD(mod) \
6972
DECLARE_INITMOD(mod##_ll)
7073

@@ -197,14 +200,34 @@ DECLARE_LL_INITMOD(ptx_compute_30)
197200
DECLARE_LL_INITMOD(ptx_compute_35)
198201
#endif // WITH_NVPTX
199202

200-
#ifdef WITH_D3D12
203+
#if defined(WITH_D3D12) && defined(WITH_X86)
201204
DECLARE_CPP_INITMOD(windows_d3d12compute_x86)
202-
DECLARE_CPP_INITMOD(windows_d3d12compute_arm)
203205
#else
204206
DECLARE_NO_INITMOD(windows_d3d12compute_x86)
205-
DECLARE_NO_INITMOD(windows_d3d12compute_arm)
206207
#endif
207208

209+
#ifdef WITH_D3D12
210+
#ifdef WITH_ARM
211+
DECLARE_INITMOD(windows_d3d12compute_arm_32)
212+
DECLARE_INITMOD(windows_d3d12compute_arm_32_debug)
213+
#else
214+
DECLARE_NO_INITMOD(windows_d3d12compute_arm_32)
215+
DECLARE_NO_INITMOD(windows_d3d12compute_arm_32_debug)
216+
#endif
217+
218+
#ifdef WITH_AARCH64
219+
DECLARE_INITMOD(windows_d3d12compute_arm_64)
220+
DECLARE_INITMOD(windows_d3d12compute_arm_64_debug)
221+
#else
222+
DECLARE_NO_INITMOD(windows_d3d12compute_arm_64)
223+
DECLARE_NO_INITMOD(windows_d3d12compute_arm_64_debug)
224+
#endif
225+
226+
DECLARE_CPP_INITMOD_LOOKUP(windows_d3d12compute_arm)
227+
#else
228+
DECLARE_NO_INITMOD(windows_d3d12compute_arm)
229+
#endif // WITH_D3D12
230+
208231
#ifdef WITH_X86
209232
DECLARE_LL_INITMOD(x86_avx2)
210233
DECLARE_LL_INITMOD(x86_avx)

src/runtime/CMakeLists.txt

+4-2
Original file line numberDiff line numberDiff line change
@@ -186,10 +186,12 @@ foreach (i IN LISTS RUNTIME_CPP)
186186
endif ()
187187
# Windows on ARM
188188
elseif (i MATCHES "windows_.*_arm$")
189-
if (j EQUAL 32)
189+
if (j EQUAL 32 AND TARGET_ARM)
190190
set(TARGET "arm-unknown-windows-unknown")
191-
else ()
191+
elseif (j EQUAL 64 AND TARGET_AARCH64)
192192
set(TARGET "aarch64-unknown-windows-unknown")
193+
else ()
194+
continue()
193195
endif ()
194196
# Windows Generic
195197
else()

0 commit comments

Comments
 (0)