# User Guide for SPIR-V Target

## Introduction

The SPIR-V target provides code generation for the SPIR-V binary format described in the official SPIR-V specification.

## Target Triples

For cross-compilation into SPIR-V use option

`-target <Architecture><Subarchitecture>-<Vendor>-<OS>-<Environment>`

to specify the target triple:

> SPIR-V Architectures
> Architecture | Description
> --- | ---
> `spirv32` | SPIR-V with 32-bit pointer width.
> `spirv64` | SPIR-V with 64-bit pointer width.

> SPIR-V Subarchitectures
> Subarchitecture | Description
> --- | ---
> <empty> | SPIR-V version deduced by tools based on the compiled input.
> `v1.0` | SPIR-V version 1.0.
> `v1.1` | SPIR-V version 1.1.
> `v1.2` | SPIR-V version 1.2.
> `v1.3` | SPIR-V version 1.3.
> `v1.4` | SPIR-V version 1.4.
> `v1.5` | SPIR-V version 1.5.

> SPIR-V Vendors
> Vendor | Description
> --- | ---
> <empty>/`unknown` | Generic SPIR-V target without any vendor-specific settings.

> Operating Systems
> OS | Description
> --- | ---
> <empty>/`unknown` | Defaults to the OpenCL runtime.

> SPIR-V Environments
> Environment | Description
> --- | ---
> <empty>/`unknown` | Defaults to the OpenCL environment.

Example:

`-target spirv64v1.0` can be used to compile for SPIR-V version 1.0 with 64-bit pointer width.