This ISPC update includes experimental cross OS compilation support, ARM and AARCH64
support and a bunch of language features and stability fixes.
Here are the details:
- ISPC is now a cross OS compiler - You can build ISPC programs for Windows, Linux,
macOS, iOS, Android and PS4 targets from Windows, Linux and macOS hosts. - ARM and AARCH64 support has been enabled for ISPC. ARM support currently exists for
neon-i32x4
,neon-i8x16
andneon-i16x8
targets. AARCH64 is supported forneon-i32x4
as well as for a new "double-pumped" 8-wide target:neon-i32x8
. - A new 128-bit AVX2 target (
avx2-i32x4
) was added. - Added a CPU definition for Ice Lake client CPUs (
--cpu=icl
). Note that there is no
special target for new instructions in Ice Lake flavor of AVX512 yet. For now, You
can use SKX targets (avx512skx-i32x8
andavx512skx-i32x16
) with--cpu=icl
. - Removed the generic targets for KNC and KNL, so ISPC does not have KNC support anymore.
KNL is still supported through native target (avx512knl-i32x16
). - Removed AVX1.1 (IvyBridge) targets (use AVX1 targets instead).
- Introduced new language features:
noinline
function qualifier.rsqrt_fast()
andrcp_fast()
functions.- Static initialization for varying.
- A new command line option
--emit-llvm-text
was added to dump LLVM IR in text format.
An ISPC top-of-trunk build is now available in the Compiler Explorer
The release is based on a patched LLVM 8.0.0 backend.