| OLD | NEW |
| 1 //===- subzero/src/IceIntrinsics.h - List of Ice Intrinsics -----*- C++ -*-===// | 1 //===- subzero/src/IceIntrinsics.h - List of Ice Intrinsics -----*- C++ -*-===// |
| 2 // | 2 // |
| 3 // The Subzero Code Generator | 3 // The Subzero Code Generator |
| 4 // | 4 // |
| 5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
| 6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
| 7 // | 7 // |
| 8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
| 9 /// | 9 /// |
| 10 /// \file | 10 /// \file |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 133 uint8_t NumTypes; | 133 uint8_t NumTypes; |
| 134 | 134 |
| 135 /// Validates that type signature of call matches intrinsic. | 135 /// Validates that type signature of call matches intrinsic. |
| 136 /// If WrongArgumentType is returned, ArgIndex is set to corresponding | 136 /// If WrongArgumentType is returned, ArgIndex is set to corresponding |
| 137 /// argument index. | 137 /// argument index. |
| 138 ValidateCallValue validateCall(const Ice::InstCall *Call, | 138 ValidateCallValue validateCall(const Ice::InstCall *Call, |
| 139 SizeT &ArgIndex) const; | 139 SizeT &ArgIndex) const; |
| 140 | 140 |
| 141 /// Returns the return type of the intrinsic. | 141 /// Returns the return type of the intrinsic. |
| 142 Type getReturnType() const { | 142 Type getReturnType() const { |
| 143 assert(NumTypes > 1); | 143 assert(NumTypes > 0); |
| 144 return Signature[0]; | 144 return Signature[0]; |
| 145 } | 145 } |
| 146 | 146 |
| 147 /// Returns number of arguments expected. | 147 /// Returns number of arguments expected. |
| 148 SizeT getNumArgs() const { | 148 SizeT getNumArgs() const { |
| 149 assert(NumTypes > 1); | 149 assert(NumTypes > 0); |
| 150 return NumTypes - 1; | 150 return NumTypes - 1; |
| 151 } | 151 } |
| 152 | 152 |
| 153 /// Returns type of Index-th argument. | 153 /// Returns type of Index-th argument. |
| 154 Type getArgType(SizeT Index) const; | 154 Type getArgType(SizeT Index) const; |
| 155 }; | 155 }; |
| 156 | 156 |
| 157 /// Find the information about a given intrinsic, based on function name. If | 157 /// Find the information about a given intrinsic, based on function name. If |
| 158 /// the function name does not have the common "llvm." prefix, nullptr is | 158 /// the function name does not have the common "llvm." prefix, nullptr is |
| 159 /// returned and Error is set to false. Otherwise, tries to find a reference | 159 /// returned and Error is set to false. Otherwise, tries to find a reference |
| 160 /// to a FullIntrinsicInfo entry (valid for the lifetime of the map). If | 160 /// to a FullIntrinsicInfo entry (valid for the lifetime of the map). If |
| 161 /// found, sets Error to false and returns the reference. If not found, sets | 161 /// found, sets Error to false and returns the reference. If not found, sets |
| 162 /// Error to true and returns nullptr (indicating an unknown "llvm.foo" | 162 /// Error to true and returns nullptr (indicating an unknown "llvm.foo" |
| 163 /// intrinsic). | 163 /// intrinsic). |
| 164 const FullIntrinsicInfo *find(const IceString &Name, bool &Error) const; | 164 const FullIntrinsicInfo *find(const IceString &Name, bool &Error) const; |
| 165 | 165 |
| 166 private: | 166 private: |
| 167 // TODO(jvoung): May want to switch to something like LLVM's StringMap. | 167 // TODO(jvoung): May want to switch to something like LLVM's StringMap. |
| 168 using IntrinsicMap = std::map<IceString, FullIntrinsicInfo>; | 168 using IntrinsicMap = std::map<IceString, FullIntrinsicInfo>; |
| 169 IntrinsicMap Map; | 169 IntrinsicMap Map; |
| 170 }; | 170 }; |
| 171 | 171 |
| 172 } // end of namespace Ice | 172 } // end of namespace Ice |
| 173 | 173 |
| 174 #endif // SUBZERO_SRC_ICEINTRINSICS_H | 174 #endif // SUBZERO_SRC_ICEINTRINSICS_H |
| OLD | NEW |