Files
gcc/libphobos/libdruntime/Makefile.am
T
Iain Buclaw b93ae1a01b d: Add SIMD intrinsics module and compiler built-ins.
Vectors in D are exposed by the use of the `__vector(T[N])' type, and
whilst most unary and binary operations work as you'd expect, there are
some operations that are not possible without doing the operation
unrolled, or calling some target-specific built-in, or with inline asm.

This introduces a new `gcc.simd' module that introduces the following.

 - Prefetching has been exposed by a convenient `prefetch' function in
   the library.

 - Loading and storing from an unaligned address have been exposed by
   `loadUnaligned' and `storeUnaligned' intrinsics.

 - Vector permutations have been exposed by `shuffle`, and
   `shufflevector' intrinsics.

 - Converting between two vectors with a different element type has been
   exposed by a `convertvector' intrinsic.

 - The ternary operator has been exposed with a `blendvector' intrinsic.

 - Comparison operators have been exposed by `equalMask',
   `notEqualMask', `greaterMask', and `greaterEqualMask' intrinsics.

 - Logic operators have been exposed by convenient `notMask',
   `andAndMask', and `orOrMask' functions in the library.

To be compatible with the LLVM D compiler's own SIMD intrinsic module,
there is also the addition of an `extractelement' and `insertelement'
convenience functions, and an alternative interface for calling the
`shufflevector' function.

The addition of these intrinsics lowers the boundary for users working
in SIMD to get the desired codegen they want out of the compiler.

Most of what is present here - apart from tests - is the adding of
machinery in the intrinsics suite of functions to do validation on
templated intrinsics.  Whilst these are still matched from the library
by their generic (untyped) signature, there is a still an assumption
that what has been instantiated and handed down to the code generator is
valid, because why would these definitions be found outside of the
in-tree D runtime library?  The majority of intrinsics are not
templates, so the test on the mangled signature string still guarantees
all types are as we expect them to be.  However there are still a small
handful of other templated intrinsics (core.bitop.{rol,ror},
core.math.toPrec, std.math.traits.isNaN, ...) that are currently
unchecked, so would benefit from being included into this built-in
checking function at some point in the future.

gcc/d/ChangeLog:

	* intrinsics.cc: Include diagnostic.h, langhooks.h,
	vec-perm-indices.h.
	(maybe_set_intrinsic): Add cases for new simd intrinsics.
	(warn_mismatched_return_type): New function.
	(warn_mismatched_argument): New function.
	(build_shuffle_mask_type): New function.
	(maybe_warn_intrinsic_mismatch): New function.
	(expand_intrinsic_vec_cond): New function.
	(expand_intrinsic_vec_convert): New function.
	(expand_intrinsic_vec_blend): New function.
	(expand_intrinsic_vec_shuffle): New function.
	(expand_intrinsic_vec_shufflevector): New function.
	(expand_intrinsic_vec_load_unaligned): New function.
	(expand_intrinsic_vec_store_unaligned): New function.
	(maybe_expand_intrinsic): Check signature of intrinsic before handing
	off to front-end lowering.  Add cases for new simd intrinsics.
	* intrinsics.def (INTRINSIC_LOADUNALIGNED): Define intrinsic.
	(INTRINSIC_STOREUNALIGNED): Define intrinsic.
	(INTRINSIC_SHUFFLE): Define intrinsic.
	(INTRINSIC_SHUFFLEVECTOR): Define intrinsic.
	(INTRINSIC_CONVERTVECTOR): Define intrinsic.
	(INTRINSIC_BLENDVECTOR): Define intrinsic.
	(INTRINSIC_EQUALMASK): Define intrinsic.
	(INTRINSIC_NOTEQUALMASK): Define intrinsic.
	(INTRINSIC_GREATERMASK): Define intrinsic.
	(INTRINSIC_GREATEREQUALMASK): Define intrinsic.

libphobos/ChangeLog:

	* libdruntime/Makefile.am (DRUNTIME_DSOURCES): Add gcc/simd.d.
	* libdruntime/Makefile.in: Regenerate.
	* libdruntime/gcc/simd.d: New file.

gcc/testsuite/ChangeLog:

	* gdc.dg/Wbuiltin_declaration_mismatch.d: Rename to...
	* gdc.dg/Wbuiltin_declaration_mismatch1.d: ...this.
	* gdc.dg/Wbuiltin_declaration_mismatch2.d: New test.
	* gdc.dg/torture/simd_blendvector.d: New test.
	* gdc.dg/torture/simd_cond.d: New test.
	* gdc.dg/torture/simd_convertvector.d: New test.
	* gdc.dg/torture/simd_load.d: New test.
	* gdc.dg/torture/simd_logical.d: New test.
	* gdc.dg/torture/simd_shuffle.d: New test.
	* gdc.dg/torture/simd_shufflevector.d: New test.
	* gdc.dg/torture/simd_store.d: New test.
2022-06-29 02:28:20 +02:00

431 lines
20 KiB
Makefile

# Makefile for the D runtime library.
# Copyright (C) 2012-2022 Free Software Foundation, Inc.
#
# GCC is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
#
# GCC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
# Include D build rules
include $(top_srcdir)/d_rules.am
# Make sure GDC can find libdruntime include files
D_EXTRA_DFLAGS=-fpreview=dip1000 -fpreview=fieldwise -fpreview=dtorfields \
-nostdinc -I $(srcdir) -I .
# D flags for compilation
AM_DFLAGS= \
$(phobos_lt_pic_flag) $(phobos_compiler_shared_flag) \
$(WARN_DFLAGS) $(CHECKING_DFLAGS) $(SECTION_FLAGS) $(CET_DFLAGS)
# Flags for other kinds of sources
AM_CFLAGS=$(CET_FLAGS)
AM_CCASFLAGS=$(CET_FLAGS)
# Install all D and DI files
ALL_DRUNTIME_INSTALL_DSOURCES = $(DRUNTIME_DSOURCES) \
$(DRUNTIME_DSOURCES_BIONIC) $(DRUNTIME_DSOURCES_DARWIN) \
$(DRUNTIME_DSOURCES_DRAGONFLYBSD) $(DRUNTIME_DSOURCES_FREEBSD) \
$(DRUNTIME_DSOURCES_LINUX) $(DRUNTIME_DSOURCES_NETBSD) \
$(DRUNTIME_DSOURCES_OPENBSD) $(DRUNTIME_DSOURCES_POSIX) \
$(DRUNTIME_DSOURCES_SOLARIS) $(DRUNTIME_DSOURCES_WINDOWS) \
$(DRUNTIME_DSOURCES_GENERATED) $(DRUNTIME_DISOURCES) \
$(DRUNTIME_DSOURCES_ELF) $(DRUNTIME_DSOURCES_STDCXX)
# Setup source files depending on configure
DRUNTIME_SOURCES_CONFIGURED =
# OS specific sources
if DRUNTIME_OS_POSIX
DRUNTIME_SOURCES_CONFIGURED += $(DRUNTIME_DSOURCES_POSIX)
endif
if DRUNTIME_OS_DARWIN
DRUNTIME_SOURCES_CONFIGURED += $(DRUNTIME_DSOURCES_DARWIN)
endif
if DRUNTIME_OS_DRAGONFLYBSD
DRUNTIME_SOURCES_CONFIGURED += $(DRUNTIME_DSOURCES_DRAGONFLYBSD)
endif
if DRUNTIME_OS_ANDROID
DRUNTIME_SOURCES_CONFIGURED += $(DRUNTIME_DSOURCES_BIONIC)
endif
if DRUNTIME_OS_FREEBSD
DRUNTIME_SOURCES_CONFIGURED += $(DRUNTIME_DSOURCES_FREEBSD)
endif
if DRUNTIME_OS_NETBSD
DRUNTIME_SOURCES_CONFIGURED += $(DRUNTIME_DSOURCES_NETBSD)
endif
if DRUNTIME_OS_OPENBSD
DRUNTIME_SOURCES_CONFIGURED += $(DRUNTIME_DSOURCES_OPENBSD)
endif
if DRUNTIME_OS_LINUX
DRUNTIME_SOURCES_CONFIGURED += $(DRUNTIME_DSOURCES_LINUX)
endif
if DRUNTIME_OS_MINGW
DRUNTIME_SOURCES_CONFIGURED += $(DRUNTIME_DSOURCES_WINDOWS) \
config/mingw/msvc.c
endif
if DRUNTIME_OS_SOLARIS
DRUNTIME_SOURCES_CONFIGURED += $(DRUNTIME_DSOURCES_SOLARIS)
endif
# CPU specific sources
if DRUNTIME_CPU_AARCH64
DRUNTIME_SOURCES_CONFIGURED += config/aarch64/switchcontext.S
endif
if DRUNTIME_CPU_ARM
DRUNTIME_SOURCES_CONFIGURED += config/arm/switchcontext.S
endif
if DRUNTIME_CPU_MIPS
DRUNTIME_SOURCES_CONFIGURED += config/mips/switchcontext.S
endif
if DRUNTIME_CPU_POWERPC
DRUNTIME_SOURCES_CONFIGURED += config/powerpc/switchcontext.S
endif
if DRUNTIME_CPU_X86
if DRUNTIME_OS_MINGW
DRUNTIME_SOURCES_CONFIGURED += config/mingw/switchcontext.S
else
DRUNTIME_SOURCES_CONFIGURED += config/x86/switchcontext.S
endif
endif
if DRUNTIME_CPU_SYSTEMZ
DRUNTIME_SOURCES_CONFIGURED += config/systemz/get_tls_offset.S
endif
if DRUNTIME_CPU_S390
DRUNTIME_SOURCES_CONFIGURED += config/s390/get_tls_offset.S
endif
# Provide __start_minfo, __stop_minfo if linker doesn't.
if !DRUNTIME_OS_MINFO_BRACKETING
DRTSTUFF = gcc/drtbegin.o gcc/drtend.o
toolexeclib_DATA = $(DRTSTUFF)
gcc/drtbegin.o: gcc/drtstuff.c
$(COMPILE) -DDRT_BEGIN -c -o $@ $<
gcc/drtend.o: gcc/drtstuff.c
$(COMPILE) -DDRT_END -c -o $@ $<
endif
# Generated by configure
DRUNTIME_DSOURCES_GENERATED = gcc/config.d gcc/libbacktrace.d
ALL_DRUNTIME_SOURCES = $(DRUNTIME_DSOURCES) $(DRUNTIME_CSOURCES) \
$(DRUNTIME_DSOURCES_ELF) $(DRUNTIME_DSOURCES_STDCXX) \
$(DRUNTIME_SOURCES_CONFIGURED) $(DRUNTIME_DSOURCES_GENERATED)
# Need this library to both be part of libgphobos.a, and installed separately.
# 1) separate libgdruntime.la
toolexeclib_LTLIBRARIES = libgdruntime.la
libgdruntime_la_SOURCES = $(ALL_DRUNTIME_SOURCES)
libgdruntime_la_LIBTOOLFLAGS =
libgdruntime_la_LDFLAGS = -Wc,-nophoboslib,-dstartfiles,-B../src,-Bgcc \
-version-info $(libtool_VERSION)
libgdruntime_la_LIBADD = $(LIBATOMIC) $(LIBBACKTRACE)
libgdruntime_la_DEPENDENCIES = $(DRTSTUFF)
# Also override library link commands: This is not strictly
# required, but we want to record additional dependencies such
# as pthread in the library
libgdruntime_la_LINK = $(LIBTOOL) --tag=D $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(GDC) $(AM_CFLAGS) $(CFLAGS) \
$(libgdruntime_la_LDFLAGS) $(LDFLAGS) -o $@
# 2) integrated libgdruntime_convenience.la that is to be part of libgphobos.a
noinst_LTLIBRARIES = libgdruntime_convenience.la
libgdruntime_convenience_la_SOURCES = $(libgdruntime_la_SOURCES)
libgdruntime_convenience_la_LIBTOOLFLAGS = $(libgdruntime_la_LIBTOOLFLAGS)
libgdruntime_convenience_la_LDFLAGS = $(libgdruntime_la_LDFLAGS)
libgdruntime_convenience_la_LIBADD = $(libgdruntime_la_LIBADD)
libgdruntime_convenience_la_DEPENDENCIES = $(libgdruntime_la_DEPENDENCIES)
libgdruntime_convenience_la_LINK = $(libgdruntime_la_LINK)
# Handles generated files as well
install-data-local:
for file in $(ALL_DRUNTIME_INSTALL_DSOURCES); do \
$(MKDIR_P) `dirname $(DESTDIR)$(gdc_include_dir)/$$file` ; \
if test -f $$file; then \
$(INSTALL_HEADER) $$file $(DESTDIR)$(gdc_include_dir)/$$file ; \
else \
$(INSTALL_HEADER) $(srcdir)/$$file \
$(DESTDIR)$(gdc_include_dir)/$$file ; \
fi ; \
done
# Source file definitions. Boring stuff, auto-generated with
# https://gist.github.com/jpf91/8ad1dbc9902d6ad876313f134c6527d1
# Can't use wildcards here:
# https://www.gnu.org/software/automake/manual/html_node/Wildcards.html
DRUNTIME_CSOURCES = core/stdc/errno_.c
DRUNTIME_DSOURCES = core/atomic.d core/attribute.d core/bitop.d \
core/builtins.d core/checkedint.d core/cpuid.d core/demangle.d \
core/exception.d core/gc/config.d core/gc/gcinterface.d \
core/gc/registry.d core/int128.d core/internal/abort.d \
core/internal/array/appending.d core/internal/array/capacity.d \
core/internal/array/casting.d core/internal/array/comparison.d \
core/internal/array/concatenation.d core/internal/array/construction.d \
core/internal/array/equality.d core/internal/array/operations.d \
core/internal/array/utils.d core/internal/atomic.d \
core/internal/attributes.d core/internal/container/array.d \
core/internal/container/common.d core/internal/container/hashtab.d \
core/internal/container/treap.d core/internal/convert.d \
core/internal/dassert.d core/internal/destruction.d \
core/internal/entrypoint.d core/internal/gc/bits.d \
core/internal/gc/impl/conservative/gc.d \
core/internal/gc/impl/manual/gc.d core/internal/gc/impl/proto/gc.d \
core/internal/gc/os.d core/internal/gc/pooltable.d \
core/internal/gc/proxy.d core/internal/hash.d core/internal/lifetime.d \
core/internal/moving.d core/internal/parseoptions.d \
core/internal/postblit.d core/internal/qsort.d \
core/internal/spinlock.d core/internal/string.d \
core/internal/switch_.d core/internal/traits.d core/internal/utf.d \
core/internal/util/array.d core/internal/util/math.d core/lifetime.d \
core/math.d core/memory.d core/runtime.d core/simd.d \
core/stdc/assert_.d core/stdc/complex.d core/stdc/config.d \
core/stdc/ctype.d core/stdc/errno.d core/stdc/fenv.d \
core/stdc/float_.d core/stdc/inttypes.d core/stdc/limits.d \
core/stdc/locale.d core/stdc/math.d core/stdc/signal.d \
core/stdc/stdarg.d core/stdc/stddef.d core/stdc/stdint.d \
core/stdc/stdio.d core/stdc/stdlib.d core/stdc/string.d \
core/stdc/tgmath.d core/stdc/time.d core/stdc/wchar_.d \
core/stdc/wctype.d core/sync/barrier.d core/sync/condition.d \
core/sync/config.d core/sync/event.d core/sync/exception.d \
core/sync/mutex.d core/sync/package.d core/sync/rwmutex.d \
core/sync/semaphore.d core/thread/context.d core/thread/fiber.d \
core/thread/osthread.d core/thread/package.d core/thread/threadbase.d \
core/thread/threadgroup.d core/thread/types.d core/time.d \
core/vararg.d core/volatile.d gcc/attribute.d gcc/attributes.d \
gcc/backtrace.d gcc/builtins.d gcc/deh.d gcc/emutls.d gcc/gthread.d \
gcc/sections/common.d gcc/sections/elf.d gcc/sections/macho.d \
gcc/sections/package.d gcc/sections/pecoff.d gcc/simd.d \
gcc/unwind/arm.d gcc/unwind/arm_common.d gcc/unwind/c6x.d \
gcc/unwind/generic.d gcc/unwind/package.d gcc/unwind/pe.d object.d \
rt/aApply.d rt/aApplyR.d rt/aaA.d rt/adi.d rt/arrayassign.d \
rt/arraycat.d rt/cast_.d rt/config.d rt/critical_.d rt/deh.d \
rt/dmain2.d rt/ehalloc.d rt/invariant.d rt/lifetime.d rt/memory.d \
rt/minfo.d rt/monitor_.d rt/profilegc.d rt/sections.d rt/tlsgc.d \
rt/util/typeinfo.d rt/util/utility.d
DRUNTIME_DSOURCES_STDCXX = core/stdcpp/allocator.d core/stdcpp/array.d \
core/stdcpp/exception.d core/stdcpp/memory.d core/stdcpp/new_.d \
core/stdcpp/string.d core/stdcpp/string_view.d \
core/stdcpp/type_traits.d core/stdcpp/typeinfo.d core/stdcpp/utility.d \
core/stdcpp/vector.d core/stdcpp/xutility.d
DRUNTIME_DSOURCES_BIONIC = core/sys/bionic/err.d \
core/sys/bionic/fcntl.d core/sys/bionic/stdlib.d \
core/sys/bionic/string.d core/sys/bionic/unistd.d
DRUNTIME_DSOURCES_DARWIN = core/sys/darwin/config.d \
core/sys/darwin/crt_externs.d core/sys/darwin/dlfcn.d \
core/sys/darwin/err.d core/sys/darwin/execinfo.d \
core/sys/darwin/fcntl.d core/sys/darwin/ifaddrs.d \
core/sys/darwin/mach/dyld.d core/sys/darwin/mach/getsect.d \
core/sys/darwin/mach/kern_return.d core/sys/darwin/mach/loader.d \
core/sys/darwin/mach/nlist.d core/sys/darwin/mach/port.d \
core/sys/darwin/mach/semaphore.d core/sys/darwin/mach/stab.d \
core/sys/darwin/mach/thread_act.d core/sys/darwin/netinet/in_.d \
core/sys/darwin/pthread.d core/sys/darwin/stdlib.d \
core/sys/darwin/string.d core/sys/darwin/sys/attr.d \
core/sys/darwin/sys/cdefs.d core/sys/darwin/sys/event.d \
core/sys/darwin/sys/mman.d core/sys/darwin/sys/sysctl.d
DRUNTIME_DSOURCES_DRAGONFLYBSD = core/sys/dragonflybsd/dlfcn.d \
core/sys/dragonflybsd/err.d core/sys/dragonflybsd/execinfo.d \
core/sys/dragonflybsd/netinet/in_.d core/sys/dragonflybsd/pthread_np.d \
core/sys/dragonflybsd/stdlib.d core/sys/dragonflybsd/string.d \
core/sys/dragonflybsd/sys/_bitset.d \
core/sys/dragonflybsd/sys/_cpuset.d core/sys/dragonflybsd/sys/cdefs.d \
core/sys/dragonflybsd/sys/elf.d core/sys/dragonflybsd/sys/elf32.d \
core/sys/dragonflybsd/sys/elf64.d \
core/sys/dragonflybsd/sys/elf_common.d \
core/sys/dragonflybsd/sys/event.d core/sys/dragonflybsd/sys/link_elf.d \
core/sys/dragonflybsd/sys/mman.d core/sys/dragonflybsd/sys/socket.d \
core/sys/dragonflybsd/sys/sysctl.d core/sys/dragonflybsd/time.d
DRUNTIME_DSOURCES_ELF = core/sys/elf/package.d
DRUNTIME_DSOURCES_FREEBSD = core/sys/freebsd/config.d \
core/sys/freebsd/dlfcn.d core/sys/freebsd/err.d \
core/sys/freebsd/execinfo.d core/sys/freebsd/netinet/in_.d \
core/sys/freebsd/pthread_np.d core/sys/freebsd/stdlib.d \
core/sys/freebsd/string.d core/sys/freebsd/sys/_bitset.d \
core/sys/freebsd/sys/_cpuset.d core/sys/freebsd/sys/cdefs.d \
core/sys/freebsd/sys/elf.d core/sys/freebsd/sys/elf32.d \
core/sys/freebsd/sys/elf64.d core/sys/freebsd/sys/elf_common.d \
core/sys/freebsd/sys/event.d core/sys/freebsd/sys/link_elf.d \
core/sys/freebsd/sys/mman.d core/sys/freebsd/sys/mount.d \
core/sys/freebsd/sys/sysctl.d core/sys/freebsd/time.d \
core/sys/freebsd/unistd.d
DRUNTIME_DSOURCES_LINUX = core/sys/linux/config.d \
core/sys/linux/dlfcn.d core/sys/linux/elf.d core/sys/linux/epoll.d \
core/sys/linux/err.d core/sys/linux/errno.d core/sys/linux/execinfo.d \
core/sys/linux/fcntl.d core/sys/linux/fs.d core/sys/linux/ifaddrs.d \
core/sys/linux/io_uring.d core/sys/linux/link.d \
core/sys/linux/netinet/in_.d core/sys/linux/netinet/tcp.d \
core/sys/linux/perf_event.d core/sys/linux/sched.d \
core/sys/linux/stdio.d core/sys/linux/string.d \
core/sys/linux/sys/auxv.d core/sys/linux/sys/eventfd.d \
core/sys/linux/sys/file.d core/sys/linux/sys/inotify.d \
core/sys/linux/sys/mman.d core/sys/linux/sys/prctl.d \
core/sys/linux/sys/procfs.d core/sys/linux/sys/signalfd.d \
core/sys/linux/sys/socket.d core/sys/linux/sys/sysinfo.d \
core/sys/linux/sys/time.d core/sys/linux/sys/xattr.d \
core/sys/linux/termios.d core/sys/linux/time.d \
core/sys/linux/timerfd.d core/sys/linux/tipc.d core/sys/linux/unistd.d
DRUNTIME_DSOURCES_NETBSD = core/sys/netbsd/dlfcn.d \
core/sys/netbsd/err.d core/sys/netbsd/execinfo.d \
core/sys/netbsd/stdlib.d core/sys/netbsd/string.d \
core/sys/netbsd/sys/elf.d core/sys/netbsd/sys/elf32.d \
core/sys/netbsd/sys/elf64.d core/sys/netbsd/sys/elf_common.d \
core/sys/netbsd/sys/event.d core/sys/netbsd/sys/featuretest.d \
core/sys/netbsd/sys/link_elf.d core/sys/netbsd/sys/mman.d \
core/sys/netbsd/sys/sysctl.d core/sys/netbsd/time.d
DRUNTIME_DSOURCES_OPENBSD = core/sys/openbsd/dlfcn.d \
core/sys/openbsd/err.d core/sys/openbsd/execinfo.d \
core/sys/openbsd/pthread_np.d core/sys/openbsd/pwd.d \
core/sys/openbsd/stdlib.d core/sys/openbsd/string.d \
core/sys/openbsd/sys/cdefs.d core/sys/openbsd/sys/elf.d \
core/sys/openbsd/sys/elf32.d core/sys/openbsd/sys/elf64.d \
core/sys/openbsd/sys/elf_common.d core/sys/openbsd/sys/link_elf.d \
core/sys/openbsd/sys/mman.d core/sys/openbsd/sys/sysctl.d \
core/sys/openbsd/time.d core/sys/openbsd/unistd.d
DRUNTIME_DSOURCES_POSIX = core/sys/posix/aio.d \
core/sys/posix/arpa/inet.d core/sys/posix/config.d \
core/sys/posix/dirent.d core/sys/posix/dlfcn.d core/sys/posix/fcntl.d \
core/sys/posix/grp.d core/sys/posix/iconv.d core/sys/posix/inttypes.d \
core/sys/posix/libgen.d core/sys/posix/locale.d \
core/sys/posix/mqueue.d core/sys/posix/net/if_.d \
core/sys/posix/netdb.d core/sys/posix/netinet/in_.d \
core/sys/posix/netinet/tcp.d core/sys/posix/poll.d \
core/sys/posix/pthread.d core/sys/posix/pwd.d core/sys/posix/sched.d \
core/sys/posix/semaphore.d core/sys/posix/setjmp.d \
core/sys/posix/signal.d core/sys/posix/spawn.d \
core/sys/posix/stdc/time.d core/sys/posix/stdio.d \
core/sys/posix/stdlib.d core/sys/posix/string.d \
core/sys/posix/strings.d core/sys/posix/sys/filio.d \
core/sys/posix/sys/ioccom.d core/sys/posix/sys/ioctl.d \
core/sys/posix/sys/ipc.d core/sys/posix/sys/mman.d \
core/sys/posix/sys/msg.d core/sys/posix/sys/resource.d \
core/sys/posix/sys/select.d core/sys/posix/sys/shm.d \
core/sys/posix/sys/socket.d core/sys/posix/sys/stat.d \
core/sys/posix/sys/statvfs.d core/sys/posix/sys/time.d \
core/sys/posix/sys/ttycom.d core/sys/posix/sys/types.d \
core/sys/posix/sys/uio.d core/sys/posix/sys/un.d \
core/sys/posix/sys/utsname.d core/sys/posix/sys/wait.d \
core/sys/posix/syslog.d core/sys/posix/termios.d core/sys/posix/time.d \
core/sys/posix/ucontext.d core/sys/posix/unistd.d \
core/sys/posix/utime.d
DRUNTIME_DSOURCES_SOLARIS = core/sys/solaris/dlfcn.d \
core/sys/solaris/elf.d core/sys/solaris/err.d \
core/sys/solaris/execinfo.d core/sys/solaris/libelf.d \
core/sys/solaris/link.d core/sys/solaris/stdlib.d \
core/sys/solaris/sys/elf.d core/sys/solaris/sys/elf_386.d \
core/sys/solaris/sys/elf_SPARC.d core/sys/solaris/sys/elf_amd64.d \
core/sys/solaris/sys/elf_notes.d core/sys/solaris/sys/elftypes.d \
core/sys/solaris/sys/link.d core/sys/solaris/sys/priocntl.d \
core/sys/solaris/sys/procset.d core/sys/solaris/sys/types.d \
core/sys/solaris/time.d
DRUNTIME_DSOURCES_WINDOWS = core/sys/windows/accctrl.d \
core/sys/windows/aclapi.d core/sys/windows/aclui.d \
core/sys/windows/basetsd.d core/sys/windows/basetyps.d \
core/sys/windows/cderr.d core/sys/windows/cguid.d \
core/sys/windows/com.d core/sys/windows/comcat.d \
core/sys/windows/commctrl.d core/sys/windows/commdlg.d \
core/sys/windows/core.d core/sys/windows/cpl.d \
core/sys/windows/cplext.d core/sys/windows/custcntl.d \
core/sys/windows/dbghelp.d core/sys/windows/dbghelp_types.d \
core/sys/windows/dbt.d core/sys/windows/dde.d core/sys/windows/ddeml.d \
core/sys/windows/dhcpcsdk.d core/sys/windows/dlgs.d \
core/sys/windows/dll.d core/sys/windows/docobj.d \
core/sys/windows/errorrep.d core/sys/windows/exdisp.d \
core/sys/windows/exdispid.d core/sys/windows/httpext.d \
core/sys/windows/idispids.d core/sys/windows/imagehlp.d \
core/sys/windows/imm.d core/sys/windows/intshcut.d \
core/sys/windows/ipexport.d core/sys/windows/iphlpapi.d \
core/sys/windows/ipifcons.d core/sys/windows/iprtrmib.d \
core/sys/windows/iptypes.d core/sys/windows/isguids.d \
core/sys/windows/lm.d core/sys/windows/lmaccess.d \
core/sys/windows/lmalert.d core/sys/windows/lmapibuf.d \
core/sys/windows/lmat.d core/sys/windows/lmaudit.d \
core/sys/windows/lmbrowsr.d core/sys/windows/lmchdev.d \
core/sys/windows/lmconfig.d core/sys/windows/lmcons.d \
core/sys/windows/lmerr.d core/sys/windows/lmerrlog.d \
core/sys/windows/lmmsg.d core/sys/windows/lmremutl.d \
core/sys/windows/lmrepl.d core/sys/windows/lmserver.d \
core/sys/windows/lmshare.d core/sys/windows/lmsname.d \
core/sys/windows/lmstats.d core/sys/windows/lmsvc.d \
core/sys/windows/lmuse.d core/sys/windows/lmuseflg.d \
core/sys/windows/lmwksta.d core/sys/windows/lzexpand.d \
core/sys/windows/mapi.d core/sys/windows/mciavi.d \
core/sys/windows/mcx.d core/sys/windows/mgmtapi.d \
core/sys/windows/mmsystem.d core/sys/windows/msacm.d \
core/sys/windows/mshtml.d core/sys/windows/mswsock.d \
core/sys/windows/nb30.d core/sys/windows/nddeapi.d \
core/sys/windows/nspapi.d core/sys/windows/ntdef.d \
core/sys/windows/ntdll.d core/sys/windows/ntldap.d \
core/sys/windows/ntsecapi.d core/sys/windows/ntsecpkg.d \
core/sys/windows/oaidl.d core/sys/windows/objbase.d \
core/sys/windows/objfwd.d core/sys/windows/objidl.d \
core/sys/windows/objsafe.d core/sys/windows/ocidl.d \
core/sys/windows/odbcinst.d core/sys/windows/ole.d \
core/sys/windows/ole2.d core/sys/windows/ole2ver.d \
core/sys/windows/oleacc.d core/sys/windows/oleauto.d \
core/sys/windows/olectl.d core/sys/windows/olectlid.d \
core/sys/windows/oledlg.d core/sys/windows/oleidl.d \
core/sys/windows/pbt.d core/sys/windows/powrprof.d \
core/sys/windows/prsht.d core/sys/windows/psapi.d \
core/sys/windows/rapi.d core/sys/windows/ras.d \
core/sys/windows/rasdlg.d core/sys/windows/raserror.d \
core/sys/windows/rassapi.d core/sys/windows/reason.d \
core/sys/windows/regstr.d core/sys/windows/richedit.d \
core/sys/windows/richole.d core/sys/windows/rpc.d \
core/sys/windows/rpcdce.d core/sys/windows/rpcdce2.d \
core/sys/windows/rpcdcep.d core/sys/windows/rpcndr.d \
core/sys/windows/rpcnsi.d core/sys/windows/rpcnsip.d \
core/sys/windows/rpcnterr.d core/sys/windows/schannel.d \
core/sys/windows/sdkddkver.d core/sys/windows/secext.d \
core/sys/windows/security.d core/sys/windows/servprov.d \
core/sys/windows/setupapi.d core/sys/windows/shellapi.d \
core/sys/windows/shldisp.d core/sys/windows/shlguid.d \
core/sys/windows/shlobj.d core/sys/windows/shlwapi.d \
core/sys/windows/snmp.d core/sys/windows/sql.d \
core/sys/windows/sqlext.d core/sys/windows/sqltypes.d \
core/sys/windows/sqlucode.d core/sys/windows/sspi.d \
core/sys/windows/stacktrace.d core/sys/windows/stat.d \
core/sys/windows/stdc/malloc.d core/sys/windows/stdc/time.d \
core/sys/windows/subauth.d core/sys/windows/threadaux.d \
core/sys/windows/tlhelp32.d core/sys/windows/tmschema.d \
core/sys/windows/unknwn.d core/sys/windows/uuid.d \
core/sys/windows/vfw.d core/sys/windows/w32api.d \
core/sys/windows/winbase.d core/sys/windows/winber.d \
core/sys/windows/wincon.d core/sys/windows/wincrypt.d \
core/sys/windows/windef.d core/sys/windows/windows.d \
core/sys/windows/winerror.d core/sys/windows/wingdi.d \
core/sys/windows/winhttp.d core/sys/windows/wininet.d \
core/sys/windows/winioctl.d core/sys/windows/winldap.d \
core/sys/windows/winnetwk.d core/sys/windows/winnls.d \
core/sys/windows/winnt.d core/sys/windows/winperf.d \
core/sys/windows/winreg.d core/sys/windows/winsock2.d \
core/sys/windows/winspool.d core/sys/windows/winsvc.d \
core/sys/windows/winuser.d core/sys/windows/winver.d \
core/sys/windows/wtsapi32.d core/sys/windows/wtypes.d
DRUNTIME_DISOURCES = __builtins.di __main.di