1c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot//===-- llvm/Target/TargetCallingConv.h - Calling Convention ----*- 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 types for working with calling-convention information. 11c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot// 12c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot//===----------------------------------------------------------------------===// 13c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 14c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot#ifndef LLVM_TARGET_TARGETCALLINGCONV_H 15c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot#define LLVM_TARGET_TARGETCALLINGCONV_H 16c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 17c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot#include "llvm/CodeGen/MachineValueType.h" 18c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot#include "llvm/CodeGen/ValueTypes.h" 19c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot#include "llvm/Support/MathExtras.h" 20c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot#include <cassert> 21c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot#include <climits> 22c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot#include <cstdint> 23c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 24c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robotnamespace llvm { 25c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robotnamespace ISD { 26c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 27c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot struct ArgFlagsTy { 28c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot private: 29c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot unsigned IsZExt : 1; ///< Zero extended 30c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot unsigned IsSExt : 1; ///< Sign extended 31c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot unsigned IsInReg : 1; ///< Passed in register 32c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot unsigned IsSRet : 1; ///< Hidden struct-ret ptr 33c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot unsigned IsByVal : 1; ///< Struct passed by value 34c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot unsigned IsNest : 1; ///< Nested fn static chain 35c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot unsigned IsReturned : 1; ///< Always returned 36c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot unsigned IsSplit : 1; 37c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot unsigned IsInAlloca : 1; ///< Passed with inalloca 38c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot unsigned IsSplitEnd : 1; ///< Last part of a split 39c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot unsigned IsSwiftSelf : 1; ///< Swift self parameter 40c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot unsigned IsSwiftError : 1; ///< Swift error parameter 41c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot unsigned IsHva : 1; ///< HVA field for 42c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot unsigned IsHvaStart : 1; ///< HVA structure start 43c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot unsigned IsSecArgPass : 1; ///< Second argument 44c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot unsigned ByValAlign : 4; ///< Log 2 of byval alignment 45c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot unsigned OrigAlign : 5; ///< Log 2 of original alignment 46c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot unsigned IsInConsecutiveRegsLast : 1; 47c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot unsigned IsInConsecutiveRegs : 1; 48c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot unsigned IsCopyElisionCandidate : 1; ///< Argument copy elision candidate 49c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 50c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot unsigned ByValSize; ///< Byval struct size 51c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 52c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot public: 53c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot ArgFlagsTy() 54c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot : IsZExt(0), IsSExt(0), IsInReg(0), IsSRet(0), IsByVal(0), IsNest(0), 55c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot IsReturned(0), IsSplit(0), IsInAlloca(0), IsSplitEnd(0), 56c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot IsSwiftSelf(0), IsSwiftError(0), IsHva(0), IsHvaStart(0), 57c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot IsSecArgPass(0), ByValAlign(0), OrigAlign(0), 58c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot IsInConsecutiveRegsLast(0), IsInConsecutiveRegs(0), 59c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot IsCopyElisionCandidate(0), ByValSize(0) { 60c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot static_assert(sizeof(*this) == 2 * sizeof(unsigned), "flags are too big"); 61c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot } 62c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 63c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot bool isZExt() const { return IsZExt; } 64c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot void setZExt() { IsZExt = 1; } 65c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 66c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot bool isSExt() const { return IsSExt; } 67c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot void setSExt() { IsSExt = 1; } 68c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 69c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot bool isInReg() const { return IsInReg; } 70c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot void setInReg() { IsInReg = 1; } 71c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 72c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot bool isSRet() const { return IsSRet; } 73c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot void setSRet() { IsSRet = 1; } 74c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 75c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot bool isByVal() const { return IsByVal; } 76c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot void setByVal() { IsByVal = 1; } 77c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 78c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot bool isInAlloca() const { return IsInAlloca; } 79c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot void setInAlloca() { IsInAlloca = 1; } 80c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 81c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot bool isSwiftSelf() const { return IsSwiftSelf; } 82c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot void setSwiftSelf() { IsSwiftSelf = 1; } 83c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 84c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot bool isSwiftError() const { return IsSwiftError; } 85c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot void setSwiftError() { IsSwiftError = 1; } 86c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 87c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot bool isHva() const { return IsHva; } 88c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot void setHva() { IsHva = 1; } 89c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 90c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot bool isHvaStart() const { return IsHvaStart; } 91c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot void setHvaStart() { IsHvaStart = 1; } 92c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 93c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot bool isSecArgPass() const { return IsSecArgPass; } 94c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot void setSecArgPass() { IsSecArgPass = 1; } 95c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 96c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot bool isNest() const { return IsNest; } 97c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot void setNest() { IsNest = 1; } 98c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 99c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot bool isReturned() const { return IsReturned; } 100c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot void setReturned() { IsReturned = 1; } 101c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 102c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot bool isInConsecutiveRegs() const { return IsInConsecutiveRegs; } 103c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot void setInConsecutiveRegs() { IsInConsecutiveRegs = 1; } 104c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 105c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot bool isInConsecutiveRegsLast() const { return IsInConsecutiveRegsLast; } 106c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot void setInConsecutiveRegsLast() { IsInConsecutiveRegsLast = 1; } 107c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 108c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot bool isSplit() const { return IsSplit; } 109c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot void setSplit() { IsSplit = 1; } 110c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 111c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot bool isSplitEnd() const { return IsSplitEnd; } 112c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot void setSplitEnd() { IsSplitEnd = 1; } 113c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 114c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot bool isCopyElisionCandidate() const { return IsCopyElisionCandidate; } 115c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot void setCopyElisionCandidate() { IsCopyElisionCandidate = 1; } 116c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 117c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot unsigned getByValAlign() const { return (1U << ByValAlign) / 2; } 118c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot void setByValAlign(unsigned A) { 119c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot ByValAlign = Log2_32(A) + 1; 120c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot assert(getByValAlign() == A && "bitfield overflow"); 121c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot } 122c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 123c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot unsigned getOrigAlign() const { return (1U << OrigAlign) / 2; } 124c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot void setOrigAlign(unsigned A) { 125c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot OrigAlign = Log2_32(A) + 1; 126c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot assert(getOrigAlign() == A && "bitfield overflow"); 127c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot } 128c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 129c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot unsigned getByValSize() const { return ByValSize; } 130c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot void setByValSize(unsigned S) { ByValSize = S; } 131c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot }; 132c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 133c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot /// InputArg - This struct carries flags and type information about a 134c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot /// single incoming (formal) argument or incoming (from the perspective 135c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot /// of the caller) return value virtual register. 136c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot /// 137c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot struct InputArg { 138c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot ArgFlagsTy Flags; 139c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot MVT VT = MVT::Other; 140c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot EVT ArgVT; 141c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot bool Used = false; 142c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 143c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot /// Index original Function's argument. 144c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot unsigned OrigArgIndex; 145c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot /// Sentinel value for implicit machine-level input arguments. 146c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot static const unsigned NoArgIndex = UINT_MAX; 147c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 148c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot /// Offset in bytes of current input value relative to the beginning of 149c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot /// original argument. E.g. if argument was splitted into four 32 bit 150c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot /// registers, we got 4 InputArgs with PartOffsets 0, 4, 8 and 12. 151c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot unsigned PartOffset; 152c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 153c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot InputArg() = default; 154c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot InputArg(ArgFlagsTy flags, EVT vt, EVT argvt, bool used, 155c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot unsigned origIdx, unsigned partOffs) 156c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot : Flags(flags), Used(used), OrigArgIndex(origIdx), PartOffset(partOffs) { 157c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot VT = vt.getSimpleVT(); 158c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot ArgVT = argvt; 159c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot } 160c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 161c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot bool isOrigArg() const { 162c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot return OrigArgIndex != NoArgIndex; 163c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot } 164c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 165c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot unsigned getOrigArgIndex() const { 166c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot assert(OrigArgIndex != NoArgIndex && "Implicit machine-level argument"); 167c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot return OrigArgIndex; 168c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot } 169c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot }; 170c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 171c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot /// OutputArg - This struct carries flags and a value for a 172c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot /// single outgoing (actual) argument or outgoing (from the perspective 173c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot /// of the caller) return value virtual register. 174c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot /// 175c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot struct OutputArg { 176c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot ArgFlagsTy Flags; 177c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot MVT VT; 178c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot EVT ArgVT; 179c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 180c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot /// IsFixed - Is this a "fixed" value, ie not passed through a vararg "...". 181c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot bool IsFixed = false; 182c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 183c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot /// Index original Function's argument. 184c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot unsigned OrigArgIndex; 185c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 186c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot /// Offset in bytes of current output value relative to the beginning of 187c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot /// original argument. E.g. if argument was splitted into four 32 bit 188c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot /// registers, we got 4 OutputArgs with PartOffsets 0, 4, 8 and 12. 189c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot unsigned PartOffset; 190c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 191c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot OutputArg() = default; 192c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot OutputArg(ArgFlagsTy flags, EVT vt, EVT argvt, bool isfixed, 193c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot unsigned origIdx, unsigned partOffs) 194c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot : Flags(flags), IsFixed(isfixed), OrigArgIndex(origIdx), 195c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot PartOffset(partOffs) { 196c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot VT = vt.getSimpleVT(); 197c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot ArgVT = argvt; 198c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot } 199c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot }; 200c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 201c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot} // end namespace ISD 202c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot} // end namespace llvm 203c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 204c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot#endif // LLVM_TARGET_TARGETCALLINGCONV_H 205