ispc1
Intel implicit spmd program compiler
Usage
ispc [options]
file
Overview
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 that32-bit addressing calculations are done by default, even on64-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
|
Limit maximum number of errors emitting by ISPC to <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
|
Emit host-side offload stub functions to file |
|---|---|
|
Output filename for header |
|
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
makedescribing 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