| 219 | |
| 220 | @dataclass(frozen=True) |
| 221 | class ILIntrinsic: |
| 222 | arch: 'architecture.Architecture' |
| 223 | index: 'architecture.IntrinsicIndex' |
| 224 | |
| 225 | def __repr__(self): |
| 226 | return f"<ILIntrinsic: {self.name} - {self.arch}>" |
| 227 | |
| 228 | def __str__(self): |
| 229 | return self.name |
| 230 | |
| 231 | @property |
| 232 | def name(self) -> 'architecture.IntrinsicName': |
| 233 | return self.arch.get_intrinsic_name(self.index) |
| 234 | |
| 235 | @property |
| 236 | def inputs(self) -> List['architecture.IntrinsicInput']: |
| 237 | """``inputs`` is only available if the IL intrinsic is an Architecture intrinsic """ |
| 238 | return self.arch.intrinsics[self.name].inputs |
| 239 | |
| 240 | @property |
| 241 | def outputs(self) -> List['types.Type']: |
| 242 | """``outputs`` is only available if the IL intrinsic is an Architecture intrinsic """ |
| 243 | return self.arch.intrinsics[self.name].outputs |
| 244 | |
| 245 | |
| 246 | @dataclass(frozen=True) |