---
name: "ispc"
section: "1"
platform: "linux"
package: "ispc"
version: "1.26.0-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/ispc"
---

# ispc(1)

Intel Implicit SPMD Program Compiler

## NAME

ispc - Intel Implicit SPMD Program Compiler

## SYNOPSIS

**ispc** \[*options*\] *file*

## DESCRIPTION

**ispc** is a compiler for a variant of the C programming language, with extensions for single program, multiple data programming. Under the SPMD model, the programmer writes a program that generally appears to be a regular serial program, though the execution model is actually that a number of program instances execute in parallel on the hardware.

## OPTIONS

- **--addressing** {**32,64**}

  Select **32- or** **64-**bit addressing. (Note that **32-**bit addressing calculations are done by default, even on **64-**bit target architectures.)

- **--arch** {**x86, x86-64, arm, aarch64, wasm32**}

  Select target architecture

- **--colored-output**

  Always use terminal colors in error/warning messages

- **--cpu** *\<type\>*

  An alias for **--device** *\<type\>* switch

- **-D** *\<foo\>*

  \#define given value when running preprocessor

- **--dev-stub** *\<filename\>*

  Emit device-side offload stub functions to file

- **--device** *\<type\>*

  Select target device

  *\<type\>* = { **x86-64** , **atom** (synonyms: **bonnell** ), **core2, penryn, corei7** (synonyms: **nehalem** ), **btver2** (synonyms: **ps4** ), **corei7-avx** (synonyms: **sandybridge** ), **core-avx-i** **(synonyms:** **ivybridge** ), **core-avx2** (synonyms: **haswell** ), **broadwell, skylake, knl, skx, icelake-client** (synonyms: **icl** ), **slm** (synonyms: **silvermont** ), **icelake-server** (synonyms: **icx** ), **tigerlake** (synonyms: **tgl** ), **alderlake** (synonyms: **adl** ), **sapphirerapids** (synonyms: **spr** ), **znver1, znver2** (synonyms: **ps5** ), **znver3, cortex-a9, cortex-a15, cortex-a35, cortex-a53, cortex-a57,** **apple-a7, apple-a10, apple-a11, apple-a12, apple-a13, apple-a14** }

- **--dllexport**

  Make non-static functions DLL exported.  Windows target only

- **--dwarf-version** {**2,3,4**}

  Generate source-level debug information with given DWARF version (triggers **-g** ).  Ignored for Windows target

- **-E**

  Run only the preprocessor

- **--emit-asm**

  Generate assembly language file as output

- **--emit-llvm**

  Emit LLVM bitcode file as output

- **--emit-llvm-text**

  Emit LLVM bitcode file as output in textual form

- **--emit-obj**

  Generate object file file as output (default)

- **--enable-llvm-intrinsics**

  Enable experimental feature to call LLVM intrinsics from ISPC source code

- **--error-limit** *\<value\>*

  Limit maximum number of errors emitting by ISPC to *\<value\>*

- **--force-alignment** *\<value\>*

  Force alignment in memory allocations routine to be *\<value\>*

- **-g**

  Generate source-level debug information

- **--help**

  Print help

- **--help-dev**

  Print help for developer options

- **--host-stub** *\<filename\>*

  Emit host-side offload stub functions to file

- **-h** *\<name\>* **/ --header-outfile** *\<name\>*

  Output filename for header

- **-I** *\<path\>*

  Add \<path\> to #include file search path

- **--ignore-preprocessor-errors**

  Suppress errors from the preprocessor

- **--instrument**

  Emit instrumentation to gather performance data

- **--math-lib** *\<option\>*

  Select math library

  - **default**

    Use ispc's built-in math functions

  - **fast**

    Use high-performance but lower-accuracy math functions

  - **svml**

    Use the Intel(r) SVML math libraries

  - **system**

    Use the system's math library (\*may be quite slow\*)

- **-MMM** *\<filename\>*

  Write #include dependencies to given file.

- **-M**

  Output a rule suitable for **make** describing the dependencies of the main source file to stdout.

- **-MF** *\<filename\>*

  When used with **-M,** specifies a file to write the dependencies to.

- **-MT** *\<filename\>*

  When used with **-M,** changes the target of the rule emitted by dependency generation.

- **--no-omit-frame-pointer**

  Disable frame pointer omission. It may be useful for profiling

- **--nostdlib**

  Don't make the ispc standard library available

- **--no-pragma-once**

  Don't use #pragma once in created headers

- **--nocpp**

  Don't run the C preprocessor

- **-o***\<name\>/--outfile* **\<name\>**

  Output filename (may be "-" for standard output)

- **-O0/-O(1/2/3)**

  Set optimization level. Default behavior is to optimize for speed.

  - **-O0**

    Optimizations disabled.

  - **-O1**

    Optimization for size.

  - **-O2/O3**

    - **--opt** *\<option\>*

  Set optimization option

  - **disable-assertions**

    Remove assertion statements from final code.

  - **disable-fma**

    Disable 'fused multiply-add' instructions (on targets that support them)

  - **disable-loop-unroll**

    Disable loop unrolling.

  - **disable-zmm**

    Disable using zmm registers for avx512 targets in favour of ymm. This also affects ABI.

  - **fast-masked-vload**

    Faster masked vector loads on SSE (may go past end of array)

  - **fast-math**

    Perform non-IEEE-compliant optimizations of numeric expressions

  - **force-aligned-memory**

    Always issue "aligned" vector load and store instructions

- **--pic**

  Generate position-independent code.  Ignored for Windows target

- **--quiet**

  Suppress all output

- **--support-matrix**

  Print full matrix of supported targets, architectures and OSes

- **--target** *\<t\>*

  Select target ISA and width. *\<t\>* ={ **sse2-i32x4, sse2-i32x8, sse4-i8x16, sse4-i16x8, sse4-i32x4, sse4-i32x8,** **avx1-i32x4, avx1-i32x8, avx1-i32x16, avx1-i64x4, avx2-i8x32,** **avx2-i16x16, avx2-i32x4, avx2-i32x8, avx2-i32x16, avx2-i64x4,** **avx512knl-x16, avx512skx-x4, avx512skx-x8, avx512skx-x16, avx512skx-x32,** **avx512skx-x64, neon-i8x16, neon-i16x8, neon-i32x4, neon-i32x8,** **wasm-i32x4** }

- **--target-os** *\<os\>*

  Select target OS. *\<os\>* ={ **linux, custom\_linux, freebsd, android, web** }

- **--time-trace**

  Turn on time profiler. Generates JSON file based on output filename.

- **--time-trace-granularity** *\<value\>*

  Minimum time granularity (in microseconds) traced by time profiler.

- **--vectorcall/--no-vectorcall**

  Enable/disable vectorcall calling convention on Windows (x64 only). Disabled by default

- **--version**

  Print ispc version

- **--werror**

  Treat warnings as errors

- **--woff**

  Disable warnings

- **--wno-perf**

  Don't issue warnings related to performance-related issues

- **--x86-asm-syntax** *\<option\>*

  Select style of code if generating assembly

  - **intel**

    Emit Intel-style assembly

  - **att**

    Emit AT&T-style assembly

## SEE ALSO

https://ispc.github.io/

## AUTHOR

**ispc** is written by Intel Corporation.

This manual page was written by Yangfl ⟨mmyangfl@\\:gmail.com⟩ for the Debian Project (and may be used by others).
