1 //===--- PTXCallingConv.td - Calling Conventions -----------*- tablegen -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This describes the calling conventions for the PTX architecture.
12 //===----------------------------------------------------------------------===//
14 // Currently, we reserve one register of each type for return values and let
15 // the rest be used for parameters. This is a dirty hack, but I am not sure
16 // how to tell LLVM that registers used for parameter passing cannot be used
19 // PTX Calling Conventions
20 def CC_PTX : CallingConv<[
21 CCIfType<[i1], CCAssignToReg<[P1, P2, P3, P4, P5, P6, P7]>>,
22 CCIfType<[i16], CCAssignToReg<[RH1, RH2, RH3, RH4, RH5, RH6, RH7]>>,
23 CCIfType<[i32, f32], CCAssignToReg<[R1, R2, R3, R4, R5, R6, R7]>>,
24 CCIfType<[i64, f64], CCAssignToReg<[RD1, RD2, RD3, RD4, RD5, RD6, RD7]>>
27 //===----------------------------------------------------------------------===//
28 // Return Value Calling Conventions
29 //===----------------------------------------------------------------------===//
31 def RetCC_PTX : CallingConv<[
32 CCIfType<[i1], CCAssignToReg<[P0]>>,
33 CCIfType<[i16], CCAssignToReg<[RH0]>>,
34 CCIfType<[i32, f32], CCAssignToReg<[R0]>>,
35 CCIfType<[i64, f64], CCAssignToReg<[RD0]>>