1c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot//===- llvm/CallingConv.h - LLVM Calling Conventions ------------*- C++ -*-===//
2c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot//
3c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot//                     The LLVM Compiler Infrastructure
4c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot//
5c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot// This file is distributed under the University of Illinois Open Source
6c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot// License. See LICENSE.TXT for details.
7c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot//
8c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot//===----------------------------------------------------------------------===//
9c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot//
10c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot// This file defines LLVM's set of calling conventions.
11c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot//
12c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot//===----------------------------------------------------------------------===//
13c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
14c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot#ifndef LLVM_IR_CALLINGCONV_H
15c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot#define LLVM_IR_CALLINGCONV_H
16c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
17c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robotnamespace llvm {
18c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
19c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot/// CallingConv Namespace - This namespace contains an enum with a value for
20c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot/// the well-known calling conventions.
21c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot///
22c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robotnamespace CallingConv {
23c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
24c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot  /// LLVM IR allows to use arbitrary numbers as calling convention identifiers.
25c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot  using ID = unsigned;
26c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
27c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot  /// A set of enums which specify the assigned numeric values for known llvm
28c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot  /// calling conventions.
29c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot  /// @brief LLVM Calling Convention Representation
30c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot  enum {
31c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// C - The default llvm calling convention, compatible with C.  This
32c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// convention is the only calling convention that supports varargs calls.
33c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// As with typical C calling conventions, the callee/caller have to
34c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// tolerate certain amounts of prototype mismatch.
35c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    C = 0,
36c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
37c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    // Generic LLVM calling conventions.  None of these calling conventions
38c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    // support varargs calls, and all assume that the caller and callee
39c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    // prototype exactly match.
40c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
41c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// Fast - This calling convention attempts to make calls as fast as
42c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// possible (e.g. by passing things in registers).
43c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    Fast = 8,
44c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
45c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    // Cold - This calling convention attempts to make code in the caller as
46c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    // efficient as possible under the assumption that the call is not commonly
47c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    // executed.  As such, these calls often preserve all registers so that the
48c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    // call does not break any live ranges in the caller side.
49c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    Cold = 9,
50c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
51c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    // GHC - Calling convention used by the Glasgow Haskell Compiler (GHC).
52c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    GHC = 10,
53c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
54c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    // HiPE - Calling convention used by the High-Performance Erlang Compiler
55c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    // (HiPE).
56c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    HiPE = 11,
57c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
58c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    // WebKit JS - Calling convention for stack based JavaScript calls
59c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    WebKit_JS = 12,
60c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
61c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    // AnyReg - Calling convention for dynamic register based calls (e.g.
62c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    // stackmap and patchpoint intrinsics).
63c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    AnyReg = 13,
64c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
65c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    // PreserveMost - Calling convention for runtime calls that preserves most
66c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    // registers.
67c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    PreserveMost = 14,
68c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
69c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    // PreserveAll - Calling convention for runtime calls that preserves
70c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    // (almost) all registers.
71c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    PreserveAll = 15,
72c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
73c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    // Swift - Calling convention for Swift.
74c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    Swift = 16,
75c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
76c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    // CXX_FAST_TLS - Calling convention for access functions.
77c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    CXX_FAST_TLS = 17,
78c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
79c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    // Target - This is the start of the target-specific calling conventions,
80c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    // e.g. fastcall and thiscall on X86.
81c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    FirstTargetCC = 64,
82c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
83c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// X86_StdCall - stdcall is the calling conventions mostly used by the
84c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// Win32 API. It is basically the same as the C convention with the
85c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// difference in that the callee is responsible for popping the arguments
86c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// from the stack.
87c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    X86_StdCall = 64,
88c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
89c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// X86_FastCall - 'fast' analog of X86_StdCall. Passes first two arguments
90c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// in ECX:EDX registers, others - via stack. Callee is responsible for
91c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// stack cleaning.
92c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    X86_FastCall = 65,
93c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
94c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// ARM_APCS - ARM Procedure Calling Standard calling convention (obsolete,
95c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// but still used on some targets).
96c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    ARM_APCS = 66,
97c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
98c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// ARM_AAPCS - ARM Architecture Procedure Calling Standard calling
99c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// convention (aka EABI). Soft float variant.
100c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    ARM_AAPCS = 67,
101c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
102c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// ARM_AAPCS_VFP - Same as ARM_AAPCS, but uses hard floating point ABI.
103c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    ARM_AAPCS_VFP = 68,
104c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
105c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// MSP430_INTR - Calling convention used for MSP430 interrupt routines.
106c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    MSP430_INTR = 69,
107c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
108c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// X86_ThisCall - Similar to X86_StdCall. Passes first argument in ECX,
109c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// others via stack. Callee is responsible for stack cleaning. MSVC uses
110c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// this by default for methods in its ABI.
111c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    X86_ThisCall = 70,
112c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
113c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// PTX_Kernel - Call to a PTX kernel.
114c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// Passes all arguments in parameter space.
115c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    PTX_Kernel = 71,
116c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
117c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// PTX_Device - Call to a PTX device function.
118c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// Passes all arguments in register or parameter space.
119c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    PTX_Device = 72,
120c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
121c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// SPIR_FUNC - Calling convention for SPIR non-kernel device functions.
122c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// No lowering or expansion of arguments.
123c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// Structures are passed as a pointer to a struct with the byval attribute.
124c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// Functions can only call SPIR_FUNC and SPIR_KERNEL functions.
125c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// Functions can only have zero or one return values.
126c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// Variable arguments are not allowed, except for printf.
127c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// How arguments/return values are lowered are not specified.
128c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// Functions are only visible to the devices.
129c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    SPIR_FUNC = 75,
130c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
131c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// SPIR_KERNEL - Calling convention for SPIR kernel functions.
132c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// Inherits the restrictions of SPIR_FUNC, except
133c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// Cannot have non-void return values.
134c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// Cannot have variable arguments.
135c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// Can also be called by the host.
136c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// Is externally visible.
137c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    SPIR_KERNEL = 76,
138c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
139c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// Intel_OCL_BI - Calling conventions for Intel OpenCL built-ins
140c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    Intel_OCL_BI = 77,
141c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
142c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// \brief The C convention as specified in the x86-64 supplement to the
143c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// System V ABI, used on most non-Windows systems.
144c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    X86_64_SysV = 78,
145c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
146c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// \brief The C convention as implemented on Windows/x86-64 and
147c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// AArch64. This convention differs from the more common
148c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// \c X86_64_SysV convention in a number of ways, most notably in
149c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// that XMM registers used to pass arguments are shadowed by GPRs,
150c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// and vice versa.
151c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// On AArch64, this is identical to the normal C (AAPCS) calling
152c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// convention for normal functions, but floats are passed in integer
153c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// registers to variadic functions.
154c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    Win64 = 79,
155c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
156c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// \brief MSVC calling convention that passes vectors and vector aggregates
157c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// in SSE registers.
158c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    X86_VectorCall = 80,
159c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
160c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// \brief Calling convention used by HipHop Virtual Machine (HHVM) to
161c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// perform calls to and from translation cache, and for calling PHP
162c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// functions.
163c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// HHVM calling convention supports tail/sibling call elimination.
164c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    HHVM = 81,
165c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
166c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// \brief HHVM calling convention for invoking C/C++ helpers.
167c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    HHVM_C = 82,
168c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
169c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// X86_INTR - x86 hardware interrupt context. Callee may take one or two
170c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// parameters, where the 1st represents a pointer to hardware context frame
171c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// and the 2nd represents hardware error code, the presence of the later
172c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// depends on the interrupt vector taken. Valid for both 32- and 64-bit
173c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// subtargets.
174c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    X86_INTR = 83,
175c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
176c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// Used for AVR interrupt routines.
177c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    AVR_INTR = 84,
178c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
179c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// Calling convention used for AVR signal routines.
180c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    AVR_SIGNAL = 85,
181c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
182c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// Calling convention used for special AVR rtlib functions
183c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// which have an "optimized" convention to preserve registers.
184c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    AVR_BUILTIN = 86,
185c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
186c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// Calling convention used for Mesa vertex shaders, or AMDPAL last shader
187c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// stage before rasterization (vertex shader if tessellation and geometry
188c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// are not in use, or otherwise copy shader if one is needed).
189c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    AMDGPU_VS = 87,
190c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
191c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// Calling convention used for Mesa/AMDPAL geometry shaders.
192c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    AMDGPU_GS = 88,
193c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
194c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// Calling convention used for Mesa/AMDPAL pixel shaders.
195c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    AMDGPU_PS = 89,
196c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
197c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// Calling convention used for Mesa/AMDPAL compute shaders.
198c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    AMDGPU_CS = 90,
199c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
200c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// Calling convention for AMDGPU code object kernels.
201c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    AMDGPU_KERNEL = 91,
202c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
203c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// Register calling convention used for parameters transfer optimization
204c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    X86_RegCall = 92,
205c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
206c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// Calling convention used for Mesa/AMDPAL hull shaders (= tessellation
207c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// control shaders).
208c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    AMDGPU_HS = 93,
209c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
210c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// Calling convention used for special MSP430 rtlib functions
211c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// which have an "optimized" convention using additional registers.
212c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    MSP430_BUILTIN = 94,
213c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
214c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// Calling convention used for AMDPAL vertex shader if tessellation is in
215c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// use.
216c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    AMDGPU_LS = 95,
217c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
218c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// Calling convention used for AMDPAL shader stage before geometry shader
219c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// if geometry is in use. So either the domain (= tessellation evaluation)
220c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// shader if tessellation is in use, or otherwise the vertex shader.
221c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    AMDGPU_ES = 96,
222c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
223c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    /// The highest possible calling convention ID. Must be some 2^k - 1.
224c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot    MaxID = 1023
225c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot  };
226c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
227c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot} // end namespace CallingConv
228c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
229c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot} // end namespace llvm
230c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot
231c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot#endif // LLVM_IR_CALLINGCONV_H
232