1ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman//===-- llvm/Target/TargetCallingConv.h - Calling Convention ----*- C++ -*-===// 2ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman// 3ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman// The LLVM Compiler Infrastructure 4ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman// 5ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman// This file is distributed under the University of Illinois Open Source 6ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman// License. See LICENSE.TXT for details. 7ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman// 8ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman//===----------------------------------------------------------------------===// 9ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman// 10ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman// This file defines types for working with calling-convention information. 11ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman// 12ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman//===----------------------------------------------------------------------===// 13ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman 14ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman#ifndef LLVM_TARGET_TARGETCALLINGCONV_H 15ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman#define LLVM_TARGET_TARGETCALLINGCONV_H 16ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman 1736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines#include "llvm/CodeGen/ValueTypes.h" 1884a61269370138b68ae2bcd6711a9ae8004fd77aEli Friedman#include "llvm/Support/DataTypes.h" 1984a61269370138b68ae2bcd6711a9ae8004fd77aEli Friedman#include "llvm/Support/MathExtras.h" 20de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar#include <climits> 2184a61269370138b68ae2bcd6711a9ae8004fd77aEli Friedman 22ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohmannamespace llvm { 23ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman 24ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohmannamespace ISD { 25ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman struct ArgFlagsTy { 26ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman private: 27ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman static const uint64_t NoFlagSet = 0ULL; 28ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman static const uint64_t ZExt = 1ULL<<0; ///< Zero extended 29ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman static const uint64_t ZExtOffs = 0; 30ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman static const uint64_t SExt = 1ULL<<1; ///< Sign extended 31ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman static const uint64_t SExtOffs = 1; 32ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman static const uint64_t InReg = 1ULL<<2; ///< Passed in register 33ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman static const uint64_t InRegOffs = 2; 34ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman static const uint64_t SRet = 1ULL<<3; ///< Hidden struct-ret ptr 35ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman static const uint64_t SRetOffs = 3; 36ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman static const uint64_t ByVal = 1ULL<<4; ///< Struct passed by value 37ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman static const uint64_t ByValOffs = 4; 38ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman static const uint64_t Nest = 1ULL<<5; ///< Nested fn static chain 39ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman static const uint64_t NestOffs = 5; 4094a720c73e11f8b2f532d3dfb4e145c6b35a2ea2Stephen Lin static const uint64_t Returned = 1ULL<<6; ///< Always returned 41456ca048af35163b9f52187e92a23ee0a9f059e8Stephen Lin static const uint64_t ReturnedOffs = 6; 42456ca048af35163b9f52187e92a23ee0a9f059e8Stephen Lin static const uint64_t ByValAlign = 0xFULL<<7; ///< Struct alignment 43456ca048af35163b9f52187e92a23ee0a9f059e8Stephen Lin static const uint64_t ByValAlignOffs = 7; 44456ca048af35163b9f52187e92a23ee0a9f059e8Stephen Lin static const uint64_t Split = 1ULL<<11; 45456ca048af35163b9f52187e92a23ee0a9f059e8Stephen Lin static const uint64_t SplitOffs = 11; 4636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines static const uint64_t InAlloca = 1ULL<<12; ///< Passed with inalloca 4736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines static const uint64_t InAllocaOffs = 12; 48de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar static const uint64_t SplitEnd = 1ULL<<13; ///< Last part of a split 49de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar static const uint64_t SplitEndOffs = 13; 50de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar static const uint64_t SwiftSelf = 1ULL<<14; ///< Swift self parameter 51de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar static const uint64_t SwiftSelfOffs = 14; 52de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar static const uint64_t SwiftError = 1ULL<<15; ///< Swift error parameter 53de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar static const uint64_t SwiftErrorOffs = 15; 54ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman static const uint64_t OrigAlign = 0x1FULL<<27; 55ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman static const uint64_t OrigAlignOffs = 27; 56dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines static const uint64_t ByValSize = 0x3fffffffULL<<32; ///< Struct size 57ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman static const uint64_t ByValSizeOffs = 32; 58dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines static const uint64_t InConsecutiveRegsLast = 0x1ULL<<62; ///< Struct size 59dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines static const uint64_t InConsecutiveRegsLastOffs = 62; 60dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines static const uint64_t InConsecutiveRegs = 0x1ULL<<63; ///< Struct size 61dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines static const uint64_t InConsecutiveRegsOffs = 63; 62ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman 6377592fe39c404f3c48b06fae48b965058b3a5ee8Dmitri Gribenko static const uint64_t One = 1ULL; ///< 1 of this type, for shifts 64ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman 65ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman uint64_t Flags; 66de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 67ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman public: 68ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman ArgFlagsTy() : Flags(0) { } 69ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman 70456ca048af35163b9f52187e92a23ee0a9f059e8Stephen Lin bool isZExt() const { return Flags & ZExt; } 71456ca048af35163b9f52187e92a23ee0a9f059e8Stephen Lin void setZExt() { Flags |= One << ZExtOffs; } 72ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman 73456ca048af35163b9f52187e92a23ee0a9f059e8Stephen Lin bool isSExt() const { return Flags & SExt; } 74456ca048af35163b9f52187e92a23ee0a9f059e8Stephen Lin void setSExt() { Flags |= One << SExtOffs; } 75ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman 76456ca048af35163b9f52187e92a23ee0a9f059e8Stephen Lin bool isInReg() const { return Flags & InReg; } 77456ca048af35163b9f52187e92a23ee0a9f059e8Stephen Lin void setInReg() { Flags |= One << InRegOffs; } 78ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman 79456ca048af35163b9f52187e92a23ee0a9f059e8Stephen Lin bool isSRet() const { return Flags & SRet; } 80456ca048af35163b9f52187e92a23ee0a9f059e8Stephen Lin void setSRet() { Flags |= One << SRetOffs; } 81ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman 82456ca048af35163b9f52187e92a23ee0a9f059e8Stephen Lin bool isByVal() const { return Flags & ByVal; } 83456ca048af35163b9f52187e92a23ee0a9f059e8Stephen Lin void setByVal() { Flags |= One << ByValOffs; } 84ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman 8536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bool isInAlloca() const { return Flags & InAlloca; } 8636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines void setInAlloca() { Flags |= One << InAllocaOffs; } 8736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 88de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar bool isSwiftSelf() const { return Flags & SwiftSelf; } 89de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar void setSwiftSelf() { Flags |= One << SwiftSelfOffs; } 90de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 91de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar bool isSwiftError() const { return Flags & SwiftError; } 92de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar void setSwiftError() { Flags |= One << SwiftErrorOffs; } 93de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 94456ca048af35163b9f52187e92a23ee0a9f059e8Stephen Lin bool isNest() const { return Flags & Nest; } 95456ca048af35163b9f52187e92a23ee0a9f059e8Stephen Lin void setNest() { Flags |= One << NestOffs; } 96456ca048af35163b9f52187e92a23ee0a9f059e8Stephen Lin 97456ca048af35163b9f52187e92a23ee0a9f059e8Stephen Lin bool isReturned() const { return Flags & Returned; } 98456ca048af35163b9f52187e92a23ee0a9f059e8Stephen Lin void setReturned() { Flags |= One << ReturnedOffs; } 99ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman 100dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines bool isInConsecutiveRegs() const { return Flags & InConsecutiveRegs; } 101dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines void setInConsecutiveRegs() { Flags |= One << InConsecutiveRegsOffs; } 102dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 103dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines bool isInConsecutiveRegsLast() const { return Flags & InConsecutiveRegsLast; } 104dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines void setInConsecutiveRegsLast() { Flags |= One << InConsecutiveRegsLastOffs; } 105dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 106ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman unsigned getByValAlign() const { 107ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman return (unsigned) 108ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman ((One << ((Flags & ByValAlign) >> ByValAlignOffs)) / 2); 109ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman } 110ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman void setByValAlign(unsigned A) { 111ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman Flags = (Flags & ~ByValAlign) | 112ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman (uint64_t(Log2_32(A) + 1) << ByValAlignOffs); 113ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman } 114ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman 115ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman bool isSplit() const { return Flags & Split; } 116ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman void setSplit() { Flags |= One << SplitOffs; } 117ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman 118de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar bool isSplitEnd() const { return Flags & SplitEnd; } 119de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar void setSplitEnd() { Flags |= One << SplitEndOffs; } 120de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 121ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman unsigned getOrigAlign() const { 122ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman return (unsigned) 123ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman ((One << ((Flags & OrigAlign) >> OrigAlignOffs)) / 2); 124ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman } 125ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman void setOrigAlign(unsigned A) { 126ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman Flags = (Flags & ~OrigAlign) | 127ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman (uint64_t(Log2_32(A) + 1) << OrigAlignOffs); 128ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman } 129ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman 130ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman unsigned getByValSize() const { 131ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman return (unsigned)((Flags & ByValSize) >> ByValSizeOffs); 132ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman } 133ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman void setByValSize(unsigned S) { 134ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman Flags = (Flags & ~ByValSize) | (uint64_t(S) << ByValSizeOffs); 135ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman } 136ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman 137ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman /// getRawBits - Represent the flags as a bunch of bits. 138ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman uint64_t getRawBits() const { return Flags; } 139ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman }; 140ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman 141ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman /// InputArg - This struct carries flags and type information about a 142ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman /// single incoming (formal) argument or incoming (from the perspective 143ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman /// of the caller) return value virtual register. 144ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman /// 145ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman struct InputArg { 146ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman ArgFlagsTy Flags; 1471440e8b918d7116c3587cb95f4f7ac7a0a0b65adDuncan Sands MVT VT; 148d0716b064744598ba7df33b8b47de0375c450570Tom Stellard EVT ArgVT; 149ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman bool Used; 150ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman 151661afe75e81431a66de3ed8e22d5aa91443367b3Stepan Dyatkovskiy /// Index original Function's argument. 152661afe75e81431a66de3ed8e22d5aa91443367b3Stepan Dyatkovskiy unsigned OrigArgIndex; 153ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines /// Sentinel value for implicit machine-level input arguments. 154ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines static const unsigned NoArgIndex = UINT_MAX; 155661afe75e81431a66de3ed8e22d5aa91443367b3Stepan Dyatkovskiy 156661afe75e81431a66de3ed8e22d5aa91443367b3Stepan Dyatkovskiy /// Offset in bytes of current input value relative to the beginning of 157661afe75e81431a66de3ed8e22d5aa91443367b3Stepan Dyatkovskiy /// original argument. E.g. if argument was splitted into four 32 bit 158661afe75e81431a66de3ed8e22d5aa91443367b3Stepan Dyatkovskiy /// registers, we got 4 InputArgs with PartOffsets 0, 4, 8 and 12. 159661afe75e81431a66de3ed8e22d5aa91443367b3Stepan Dyatkovskiy unsigned PartOffset; 160661afe75e81431a66de3ed8e22d5aa91443367b3Stepan Dyatkovskiy 161ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman InputArg() : VT(MVT::Other), Used(false) {} 162d0716b064744598ba7df33b8b47de0375c450570Tom Stellard InputArg(ArgFlagsTy flags, EVT vt, EVT argvt, bool used, 163661afe75e81431a66de3ed8e22d5aa91443367b3Stepan Dyatkovskiy unsigned origIdx, unsigned partOffs) 164661afe75e81431a66de3ed8e22d5aa91443367b3Stepan Dyatkovskiy : Flags(flags), Used(used), OrigArgIndex(origIdx), PartOffset(partOffs) { 1651440e8b918d7116c3587cb95f4f7ac7a0a0b65adDuncan Sands VT = vt.getSimpleVT(); 166d0716b064744598ba7df33b8b47de0375c450570Tom Stellard ArgVT = argvt; 167ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman } 168ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines 169ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines bool isOrigArg() const { 170ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines return OrigArgIndex != NoArgIndex; 171ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines } 172ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines 173ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines unsigned getOrigArgIndex() const { 174ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines assert(OrigArgIndex != NoArgIndex && "Implicit machine-level argument"); 175ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines return OrigArgIndex; 176ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines } 177ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman }; 178ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman 179ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman /// OutputArg - This struct carries flags and a value for a 180ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman /// single outgoing (actual) argument or outgoing (from the perspective 181ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman /// of the caller) return value virtual register. 182ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman /// 183ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman struct OutputArg { 184ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman ArgFlagsTy Flags; 1851440e8b918d7116c3587cb95f4f7ac7a0a0b65adDuncan Sands MVT VT; 186d0716b064744598ba7df33b8b47de0375c450570Tom Stellard EVT ArgVT; 187ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman 188ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman /// IsFixed - Is this a "fixed" value, ie not passed through a vararg "...". 189ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman bool IsFixed; 190ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman 1910a1544d2fd63d8101dc7d50974e65c95a0f6f98dManman Ren /// Index original Function's argument. 1920a1544d2fd63d8101dc7d50974e65c95a0f6f98dManman Ren unsigned OrigArgIndex; 1930a1544d2fd63d8101dc7d50974e65c95a0f6f98dManman Ren 1940a1544d2fd63d8101dc7d50974e65c95a0f6f98dManman Ren /// Offset in bytes of current output value relative to the beginning of 1950a1544d2fd63d8101dc7d50974e65c95a0f6f98dManman Ren /// original argument. E.g. if argument was splitted into four 32 bit 1960a1544d2fd63d8101dc7d50974e65c95a0f6f98dManman Ren /// registers, we got 4 OutputArgs with PartOffsets 0, 4, 8 and 12. 1970a1544d2fd63d8101dc7d50974e65c95a0f6f98dManman Ren unsigned PartOffset; 1980a1544d2fd63d8101dc7d50974e65c95a0f6f98dManman Ren 199ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman OutputArg() : IsFixed(false) {} 200d0716b064744598ba7df33b8b47de0375c450570Tom Stellard OutputArg(ArgFlagsTy flags, EVT vt, EVT argvt, bool isfixed, 2010a1544d2fd63d8101dc7d50974e65c95a0f6f98dManman Ren unsigned origIdx, unsigned partOffs) 2020a1544d2fd63d8101dc7d50974e65c95a0f6f98dManman Ren : Flags(flags), IsFixed(isfixed), OrigArgIndex(origIdx), 2030a1544d2fd63d8101dc7d50974e65c95a0f6f98dManman Ren PartOffset(partOffs) { 2041440e8b918d7116c3587cb95f4f7ac7a0a0b65adDuncan Sands VT = vt.getSimpleVT(); 205d0716b064744598ba7df33b8b47de0375c450570Tom Stellard ArgVT = argvt; 206ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman } 207ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman }; 208de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} // end namespace ISD 209ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman 210ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman} // end llvm namespace 211ce5172098d5eaae22244c925b608fe62a23baaf2Dan Gohman 212de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar#endif // LLVM_TARGET_TARGETCALLINGCONV_H 213