Skip to main content

ISPC Integration

Planned Feature

ISPC integration is planned for a future release. The design is in progress. This page documents the intended behaviour.

What is ISPC?

The Intel SPMD Program Compiler (ISPC) is a compiler for a C-like language designed for SIMD-parallel CPU code. It is commonly used in AAA game engines for skinning, physics broadphase, animation blending, and ray tracing BVH traversal.

ISPC source files (.ispc) compile to object files containing vectorised machine code targeting one or more SIMD ISA widths (SSE4, AVX2, AVX-512, NEON, and so on).

Planned integration

When implemented, GPBT will allow .ispc source files to be registered alongside regular .cpp files in any module definition:

gpStartModule("animation/skinning")
gpAddSourceDirectory(private) # .cpp files
gpAddSourceFile(private/Skinning.ispc)
gpEndModule()

GPBT will invoke the ISPC compiler with the correct target architecture flags for the active platform and configuration, and link the resulting object files into the module.

Planned target support

PlatformISPC target
Windows (x64)avx2-i32x8, avx512skx-i32x16
Linux (x64)avx2-i32x8, avx512skx-i32x16
macOS (x64)avx2-i32x8
macOS (ARM64)neon-i32x4, neon-i32x8
Android (ARM64)neon-i32x4