LLVM: include/llvm/IR/IntrinsicInst.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23#ifndef LLVM_IR_INTRINSICINST_H

24#define LLVM_IR_INTRINSICINST_H

25

38#include

39#include

40#include

41

42namespace llvm {

43

45

46

47

48

50public:

54

55

59

62 case Intrinsic::smax:

63 case Intrinsic::smin:

64 case Intrinsic::umax:

65 case Intrinsic::umin:

66 return true;

67 default:

68 return false;

69 }

70 }

71

72

73

76 case Intrinsic::maxnum:

77 case Intrinsic::minnum:

78 case Intrinsic::maximum:

79 case Intrinsic::minimum:

80 case Intrinsic::maximumnum:

81 case Intrinsic::minimumnum:

82 case Intrinsic::smax:

83 case Intrinsic::smin:

84 case Intrinsic::umax:

85 case Intrinsic::umin:

86 case Intrinsic::sadd_sat:

87 case Intrinsic::uadd_sat:

88 case Intrinsic::sadd_with_overflow:

89 case Intrinsic::uadd_with_overflow:

90 case Intrinsic::smul_with_overflow:

91 case Intrinsic::umul_with_overflow:

92 case Intrinsic::smul_fix:

93 case Intrinsic::umul_fix:

94 case Intrinsic::smul_fix_sat:

95 case Intrinsic::umul_fix_sat:

96 case Intrinsic::fma:

97 case Intrinsic::fmuladd:

98 return true;

99 default:

100 return false;

101 }

102 }

103

104

107 default: break;

108 case Intrinsic::assume:

109 case Intrinsic::sideeffect:

110 case Intrinsic::pseudoprobe:

111 case Intrinsic::dbg_assign:

112 case Intrinsic::dbg_declare:

113 case Intrinsic::dbg_value:

114 case Intrinsic::dbg_label:

115 case Intrinsic::invariant_start:

116 case Intrinsic::invariant_end:

117 case Intrinsic::lifetime_start:

118 case Intrinsic::lifetime_end:

119 case Intrinsic::experimental_noalias_scope_decl:

120 case Intrinsic::objectsize:

121 case Intrinsic::ptr_annotation:

122 case Intrinsic::var_annotation:

123 return true;

124 }

125 return false;

126 }

127

128

129

131

132

135 return F && F->isIntrinsic();

136 }

140};

141

142

144 switch (ID) {

145 case Intrinsic::lifetime_start:

146 case Intrinsic::lifetime_end:

147 return true;

148 default:

149 return false;

150 }

151}

152

153

155public:

156

157

164

165};

166

167

169 switch (ID) {

170 case Intrinsic::dbg_declare:

171 case Intrinsic::dbg_value:

172 case Intrinsic::dbg_label:

173 case Intrinsic::dbg_assign:

174 return true;

175 default:

176 return false;

177 }

178}

179

180

182public:

183

184

191

192};

193

194

195

196

199 std::bidirectional_iterator_tag, Value *> {

201

202public:

205

208 I = R.I;

209 return *this;

210 }

227 else

229 return *this;

230 }

234 else

236 return *this;

237 }

238};

239

240

241

242

244 Metadata *RawLocation = nullptr;

245

246public:

249 : RawLocation(RawLocation) {

250

251 assert(RawLocation && "unexpected null RawLocation");

254 cast<MDNode>(RawLocation)->getNumOperands()));

255 }

257

258

259

269

270

272 return true;

273

275 return true;

276

277

279 }

280

283 return A.RawLocation == B.RawLocation;

284 }

287 return !(A == B);

288 }

291 return A.RawLocation > B.RawLocation;

292 }

295 return A.RawLocation >= B.RawLocation;

296 }

299 return A.RawLocation < B.RawLocation;

300 }

303 return A.RawLocation <= B.RawLocation;

304 }

305};

306

307

309public:

310

311

312

314

316

318 bool AllowEmpty = false);

320

321

322

325

329

333

337

339

340

341

342

346

347

348

349

350

354

356

357

360 if (!RemovedValues.insert(OldValue).second)

361 continue;

364 }

365 }

366

370

374

378

382

386

390

394

395

396

397

401

402

403

405

406

407 std::optionalDIExpression::FragmentInfo getFragment() const {

409 }

410

411

412

413

416

419 if (auto Frag = getExpression()->getFragmentInfo())

420 VariableSlice.OffsetInBits = Frag->OffsetInBits;

421 return VariableSlice;

422 }

423

424

425

427 switch (I->getIntrinsicID()) {

428 case Intrinsic::dbg_declare:

429 case Intrinsic::dbg_value:

430 case Intrinsic::dbg_assign:

431 return true;

432 default:

433 return false;

434 }

435 }

439

440protected:

445};

446

447

449public:

452 "dbg.declare must have exactly 1 location operand.");

454 }

455

456

457

459 return I->getIntrinsicID() == Intrinsic::dbg_declare;

460 }

464

465};

466

467

469public:

470

471

478

479

480

482 return I->getIntrinsicID() == Intrinsic::dbg_value ||

483 I->getIntrinsicID() == Intrinsic::dbg_assign;

484 }

488

489};

490

491

493 enum Operands {

494 OpValue,

495 OpVar,

496 OpExpr,

497 OpAssignID,

498 OpAddress,

499 OpAddressExpr,

500 };

501

502public:

523

525

526

527

528

531

532

534 return I->getIntrinsicID() == Intrinsic::dbg_assign;

535 }

539

540};

541

542

544public:

549

553

554

555

557 return I->getIntrinsicID() == Intrinsic::dbg_label;

558 }

562

563};

564

565

567public:

568

569

570

574

575 LLVM_ABI static std::optional

577 LLVM_ABI static std::optional

579

580

582

583

584

586

587

589

590

593

594

597

598

600

601

602

604

605

606

608

609

610

612 LLVM_ABI static std::optional

614

615

618

619

626

627

631

632

636

637

641

642

643 LLVM_ABI static std::optional

645

646

647 LLVM_ABI static std::optionalIntrinsic::ID

649

650

651 LLVM_ABI static std::optionalIntrinsic::ID

653};

654

655

657public:

659

662

665

666

667

674

675};

676

678public:

680

681

682

689

690};

691

693public:

695

697

698

699

706

707};

708

710public:

712

713

714

721

722};

723

724

725

739

740

742public:

745 return getIntrinsicID() == Intrinsic::experimental_constrained_fcmps;

746 }

747

748

750 switch (I->getIntrinsicID()) {

751 case Intrinsic::experimental_constrained_fcmp:

752 case Intrinsic::experimental_constrained_fcmps:

753 return true;

754 default:

755 return false;

756 }

757 }

761};

762

763

765public:

767 switch (I->getIntrinsicID()) {

768 case Intrinsic::umin:

769 case Intrinsic::umax:

770 case Intrinsic::smin:

771 case Intrinsic::smax:

772 return true;

773 default:

774 return false;

775 }

776 }

780

783

784

786 switch (ID) {

787 case Intrinsic::umin:

789 case Intrinsic::umax:

791 case Intrinsic::smin:

793 case Intrinsic::smax:

795 default:

797 }

798 }

799

800

804

805

809

810

812

813

815 switch (ID) {

816 case Intrinsic::umin:

817 case Intrinsic::smin:

818 return true;

819 case Intrinsic::umax:

820 case Intrinsic::smax:

821 return false;

822 default:

824 }

825 }

826

827

829

830

832

833

834

835

837 switch (ID) {

838 case Intrinsic::umin:

840 case Intrinsic::umax:

842 case Intrinsic::smin:

844 case Intrinsic::smax:

846 default:

848 }

849 }

850

851

852

853

857

858

859

860

865

866

867

868

872};

873

874

876public:

878 switch (I->getIntrinsicID()) {

879 case Intrinsic::scmp:

880 case Intrinsic::ucmp:

881 return true;

882 default:

883 return false;

884 }

885 }

889

892

895

902

909};

910

911

912

914public:

916 switch (I->getIntrinsicID()) {

917 case Intrinsic::uadd_with_overflow:

918 case Intrinsic::sadd_with_overflow:

919 case Intrinsic::usub_with_overflow:

920 case Intrinsic::ssub_with_overflow:

921 case Intrinsic::umul_with_overflow:

922 case Intrinsic::smul_with_overflow:

923 case Intrinsic::uadd_sat:

924 case Intrinsic::sadd_sat:

925 case Intrinsic::usub_sat:

926 case Intrinsic::ssub_sat:

927 return true;

928 default:

929 return false;

930 }

931 }

935

938

939

941

942

944

945

947};

948

949

951public:

953 switch (I->getIntrinsicID()) {

954 case Intrinsic::uadd_with_overflow:

955 case Intrinsic::sadd_with_overflow:

956 case Intrinsic::usub_with_overflow:

957 case Intrinsic::ssub_with_overflow:

958 case Intrinsic::umul_with_overflow:

959 case Intrinsic::smul_with_overflow:

960 return true;

961 default:

962 return false;

963 }

964 }

968};

969

970

972public:

974 switch (I->getIntrinsicID()) {

975 case Intrinsic::uadd_sat:

976 case Intrinsic::sadd_sat:

977 case Intrinsic::usub_sat:

978 case Intrinsic::ssub_sat:

979 return true;

980 default:

981 return false;

982 }

983 }

987};

988

989

990

991

992

994private:

995 enum { ARG_DEST = 0, ARG_LENGTH = 2 };

996

997public:

1003

1009

1012 if (C)

1013 return std::nullopt;

1014 return C->getValue();

1015 }

1016

1017

1018

1019

1021

1025

1027

1028

1031 "setDest called with pointer of wrong type!");

1033 }

1034

1037 if (Alignment)

1040 }

1046

1049 "setLength called with value of wrong type!");

1051 }

1052

1056};

1057

1058

1059

1061private:

1062 enum { ARG_SOURCE = 1 };

1063

1064public:

1065

1067 return const_cast<Value *>(BaseCL::getArgOperand(ARG_SOURCE));

1068 }

1070 return BaseCL::getArgOperandUse(ARG_SOURCE);

1071 }

1073

1074

1075

1076

1078

1082

1084 return BaseCL::getParamAlign(ARG_SOURCE);

1085 }

1086

1089 "setSource called with pointer of wrong type!");

1090 BaseCL::setArgOperand(ARG_SOURCE, Ptr);

1091 }

1092

1094 BaseCL::removeParamAttr(ARG_SOURCE, Attribute::Alignment);

1095 if (Alignment)

1097 BaseCL::getContext(), *Alignment));

1098 }

1099

1101 BaseCL::removeParamAttr(ARG_SOURCE, Attribute::Alignment);

1103 BaseCL::getContext(), Alignment));

1104 }

1105};

1106

1107

1108

1110private:

1111 enum { ARG_VALUE = 1 };

1112

1113public:

1115 return const_cast<Value *>(BaseCL::getArgOperand(ARG_VALUE));

1116 }

1117 const Use &getValueUse() const { return BaseCL::getArgOperandUse(ARG_VALUE); }

1119

1122 "setValue called with value of wrong type!");

1123 BaseCL::setArgOperand(ARG_VALUE, Val);

1124 }

1125};

1126

1127

1129private:

1130 enum { ARG_VOLATILE = 3 };

1131

1132public:

1136

1138

1140

1143 case Intrinsic::memset_inline:

1144 case Intrinsic::memcpy_inline:

1145 return true;

1146 default:

1147 return false;

1148 }

1149 }

1150

1151

1153 switch (I->getIntrinsicID()) {

1154 case Intrinsic::memcpy:

1155 case Intrinsic::memmove:

1156 case Intrinsic::memset:

1157 case Intrinsic::memset_inline:

1158 case Intrinsic::memcpy_inline:

1159 return true;

1160 default:

1161 return false;

1162 }

1163 }

1167};

1168

1169

1171public:

1172

1174 switch (I->getIntrinsicID()) {

1175 case Intrinsic::memset:

1176 case Intrinsic::memset_inline:

1177 return true;

1178 default:

1179 return false;

1180 }

1181 }

1185};

1186

1187

1188

1189

1191private:

1192 enum { ARG_VOLATILE = 3 };

1193

1194public:

1198

1200

1202

1203

1205 return I->getIntrinsicID() == Intrinsic::experimental_memset_pattern;

1206 }

1210};

1211

1212

1214public:

1215

1217 switch (I->getIntrinsicID()) {

1218 case Intrinsic::memcpy:

1219 case Intrinsic::memmove:

1220 case Intrinsic::memcpy_inline:

1221 return true;

1222 default:

1223 return false;

1224 }

1225 }

1229};

1230

1231

1233public:

1234

1236 return I->getIntrinsicID() == Intrinsic::memcpy ||

1237 I->getIntrinsicID() == Intrinsic::memcpy_inline;

1238 }

1242};

1243

1244

1246public:

1247

1249 return I->getIntrinsicID() == Intrinsic::memmove;

1250 }

1254};

1255

1256

1257

1258

1259

1261private:

1262 enum { ARG_ELEMENTSIZE = 3 };

1263

1264public:

1266

1268 return MI->isVolatile();

1269 return false;

1270 }

1271

1274 case Intrinsic::memcpy_element_unordered_atomic:

1275 case Intrinsic::memmove_element_unordered_atomic:

1276 case Intrinsic::memset_element_unordered_atomic:

1277 return true;

1278 default:

1279 return false;

1280 }

1281 }

1282

1284 switch (I->getIntrinsicID()) {

1285 case Intrinsic::memcpy:

1286 case Intrinsic::memcpy_inline:

1287 case Intrinsic::memmove:

1288 case Intrinsic::memset:

1289 case Intrinsic::memset_inline:

1290 case Intrinsic::memcpy_element_unordered_atomic:

1291 case Intrinsic::memmove_element_unordered_atomic:

1292 case Intrinsic::memset_element_unordered_atomic:

1293 return true;

1294 default:

1295 return false;

1296 }

1297 }

1301

1306

1311};

1312

1313

1314

1315

1317public:

1319 switch (I->getIntrinsicID()) {

1320 case Intrinsic::memset:

1321 case Intrinsic::memset_inline:

1322 case Intrinsic::memset_element_unordered_atomic:

1323 return true;

1324 default:

1325 return false;

1326 }

1327 }

1331};

1332

1333

1334

1335

1337public:

1339 switch (I->getIntrinsicID()) {

1340 case Intrinsic::memcpy:

1341 case Intrinsic::memcpy_inline:

1342 case Intrinsic::memmove:

1343 case Intrinsic::memcpy_element_unordered_atomic:

1344 case Intrinsic::memmove_element_unordered_atomic:

1345 return true;

1346 default:

1347 return false;

1348 }

1349 }

1353};

1354

1355

1356

1357

1359public:

1361 switch (I->getIntrinsicID()) {

1362 case Intrinsic::memcpy:

1363 case Intrinsic::memcpy_inline:

1364 case Intrinsic::memcpy_element_unordered_atomic:

1365 return true;

1366 default:

1367 return false;

1368 }

1369 }

1373};

1374

1375

1376

1377

1379public:

1381 switch (I->getIntrinsicID()) {

1382 case Intrinsic::memmove:

1383 case Intrinsic::memmove_element_unordered_atomic:

1384 return true;

1385 default:

1386 return false;

1387 }

1388 }

1392};

1393

1394

1396public:

1398 return I->getIntrinsicID() == Intrinsic::vastart;

1399 }

1403

1405};

1406

1407

1409public:

1411 return I->getIntrinsicID() == Intrinsic::vaend;

1412 }

1416

1418};

1419

1420

1422public:

1424 return I->getIntrinsicID() == Intrinsic::vacopy;

1425 }

1429

1432};

1433

1434

1436protected:

1438 switch (I.getIntrinsicID()) {

1439 case Intrinsic::instrprof_cover:

1440 case Intrinsic::instrprof_increment:

1441 case Intrinsic::instrprof_increment_step:

1442 case Intrinsic::instrprof_callsite:

1443 case Intrinsic::instrprof_timestamp:

1444 case Intrinsic::instrprof_value_profile:

1445 return true;

1446 }

1447 return false;

1448 }

1450 switch (I.getIntrinsicID()) {

1451 case Intrinsic::instrprof_mcdc_parameters:

1452 case Intrinsic::instrprof_mcdc_tvbitmap_update:

1453 return true;

1454 }

1455 return false;

1456 }

1457

1458public:

1462 return false;

1463 }

1464

1465

1469

1470

1471

1472

1474

1476

1477

1479};

1480

1481

1483public:

1487 return false;

1488 }

1489

1490

1492

1495};

1496

1497

1499public:

1501 return I->getIntrinsicID() == Intrinsic::instrprof_cover;

1502 }

1506};

1507

1508

1510public:

1512 return I->getIntrinsicID() == Intrinsic::instrprof_increment ||

1513 I->getIntrinsicID() == Intrinsic::instrprof_increment_step;

1514 }

1519};

1520

1521

1523public:

1525 return I->getIntrinsicID() == Intrinsic::instrprof_increment_step;

1526 }

1530};

1531

1532

1533

1534

1535

1537public:

1539 return I->getIntrinsicID() == Intrinsic::instrprof_callsite;

1540 }

1544

1552};

1553

1554

1556public:

1558 return I->getIntrinsicID() == Intrinsic::instrprof_timestamp;

1559 }

1563};

1564

1565

1567public:

1569 return I->getIntrinsicID() == Intrinsic::instrprof_value_profile;

1570 }

1574

1576

1580

1581

1583};

1584

1585

1587public:

1594

1595

1596

1600

1601

1602

1606};

1607

1608

1610public:

1612 return I->getIntrinsicID() == Intrinsic::instrprof_mcdc_parameters;

1613 }

1617};

1618

1619

1621public:

1623 return I->getIntrinsicID() == Intrinsic::instrprof_mcdc_tvbitmap_update;

1624 }

1628

1629

1630

1634

1635

1636

1638};

1639

1641public:

1643 return I->getIntrinsicID() == Intrinsic::pseudoprobe;

1644 }

1645

1649

1653

1655

1659

1661};

1662

1664public:

1666 return I->getIntrinsicID() == Intrinsic::experimental_noalias_scope_decl;

1667 }

1668

1672

1678

1683};

1684

1685

1686

1688public:

1690 return I->getIntrinsicID() == Intrinsic::experimental_gc_relocate ||

1691 I->getIntrinsicID() == Intrinsic::experimental_gc_result;

1692 }

1693

1697

1698

1699

1705

1706

1708};

1709

1710

1712public:

1714 return I->getIntrinsicID() == Intrinsic::experimental_gc_relocate;

1715 }

1716

1720

1721

1722

1723

1727

1728

1729

1733

1736};

1737

1738

1740public:

1742 return I->getIntrinsicID() == Intrinsic::experimental_gc_result;

1743 }

1744

1748};

1749

1750

1751

1753public:

1755 return I->getIntrinsicID() == Intrinsic::assume;

1756 }

1760};

1761

1762

1764 switch (IntrinsicID) {

1765 default:

1766 return false;

1767 case Intrinsic::experimental_convergence_anchor:

1768 case Intrinsic::experimental_convergence_entry:

1769 case Intrinsic::experimental_convergence_loop:

1770 return true;

1771 }

1772}

1773

1774

1776public:

1780

1784

1786 return getIntrinsicID() == Intrinsic::experimental_convergence_anchor;

1787 }

1789 return getIntrinsicID() == Intrinsic::experimental_convergence_entry;

1790 }

1792 return getIntrinsicID() == Intrinsic::experimental_convergence_loop;

1793 }

1794

1799};

1800

1801}

1802

1803#endif

assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")

static GCRegistry::Add< ErlangGC > A("erlang", "erlang-compatible garbage collector")

static GCRegistry::Add< OcamlGC > B("ocaml", "ocaml 3.10-compatible GC")

This file contains the declarations for the subclasses of Constant, which represent the different fla...

This file contains the declarations of entities that describe floating point environment and related ...

MachineInstr unsigned OpIdx

static SymbolRef::Type getType(const Symbol *Sym)

Class for arbitrary precision integers.

static APInt getMaxValue(unsigned numBits)

Gets maximum unsigned value of APInt for specific bit width.

static APInt getSignedMaxValue(unsigned numBits)

Gets maximum signed value of APInt for a specific bit width.

static APInt getMinValue(unsigned numBits)

Gets minimum unsigned value of APInt for a specific bit width.

static APInt getSignedMinValue(unsigned numBits)

Gets minimum signed value of APInt for a specific bit width.

This class represents any memcpy intrinsic i.e.

Definition IntrinsicInst.h:1358

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:1360

static bool classof(const Value *V)

Definition IntrinsicInst.h:1370

Definition IntrinsicInst.h:1260

static bool classof(const Value *V)

Definition IntrinsicInst.h:1298

Value * getRawElementSizeInBytes() const

Definition IntrinsicInst.h:1302

bool isAtomic() const

Definition IntrinsicInst.h:1272

uint32_t getElementSizeInBytes() const

Definition IntrinsicInst.h:1307

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:1283

bool isVolatile() const

Definition IntrinsicInst.h:1265

This class represents any memmove intrinsic i.e.

Definition IntrinsicInst.h:1378

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:1380

static bool classof(const Value *V)

Definition IntrinsicInst.h:1389

This class represents any memset intrinsic.

Definition IntrinsicInst.h:1316

static bool classof(const Value *V)

Definition IntrinsicInst.h:1328

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:1318

Definition IntrinsicInst.h:1336

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:1338

static bool classof(const Value *V)

Definition IntrinsicInst.h:1350

ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...

This represents the llvm.assume intrinsic.

Definition IntrinsicInst.h:1752

static bool classof(const Value *V)

Definition IntrinsicInst.h:1757

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:1754

static LLVM_ABI Attribute getWithAlignment(LLVMContext &Context, Align Alignment)

Return a uniquified Attribute object that has the specific alignment set.

LLVM Basic Block Representation.

This class represents an intrinsic that is based on a binary operation.

Definition IntrinsicInst.h:913

Value * getRHS() const

Definition IntrinsicInst.h:937

static bool classof(const Value *V)

Definition IntrinsicInst.h:932

LLVM_ABI unsigned getNoWrapKind() const

Returns one of OBO::NoSignedWrap or OBO::NoUnsignedWrap.

LLVM_ABI bool isSigned() const

Whether the intrinsic is signed or unsigned.

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:915

LLVM_ABI Instruction::BinaryOps getBinaryOp() const

Returns the binary operation underlying the intrinsic.

Value * getLHS() const

Definition IntrinsicInst.h:936

Base class for all callable instructions (InvokeInst and CallInst) Holds everything related to callin...

bool isInlineAsm() const

Check if this call is an inline asm statement.

void removeParamAttr(unsigned ArgNo, Attribute::AttrKind Kind)

Removes the attribute from the given argument.

LLVM_ABI bool isIndirectCall() const

Return true if the callsite is an indirect call.

MaybeAlign getParamAlign(unsigned ArgNo) const

Extract the alignment for a call or parameter (0=unknown).

Value * getCalledOperand() const

const Use & getArgOperandUse(unsigned i) const

Wrappers for getting the Use of a call argument.

Value * getArgOperand(unsigned i) const

void setArgOperand(unsigned i, Value *v)

LLVM_ABI Intrinsic::ID getIntrinsicID() const

Returns the intrinsic ID of the intrinsic called or Intrinsic::not_intrinsic if the called function i...

void addParamAttr(unsigned ArgNo, Attribute::AttrKind Kind)

Adds the attribute to the indicated argument.

Predicate

This enumeration lists the possible predicates for CmpInst subclasses.

@ ICMP_SLT

signed less than

@ ICMP_UGT

unsigned greater than

@ ICMP_SGT

signed greater than

@ ICMP_ULT

unsigned less than

This class represents a ucmp/scmp intrinsic.

Definition IntrinsicInst.h:875

static CmpInst::Predicate getGTPredicate(Intrinsic::ID ID)

Definition IntrinsicInst.h:896

Value * getRHS() const

Definition IntrinsicInst.h:891

CmpInst::Predicate getLTPredicate() const

Definition IntrinsicInst.h:906

static CmpInst::Predicate getLTPredicate(Intrinsic::ID ID)

Definition IntrinsicInst.h:903

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:877

static bool isSigned(Intrinsic::ID ID)

Definition IntrinsicInst.h:893

bool isSigned() const

Definition IntrinsicInst.h:894

CmpInst::Predicate getGTPredicate() const

Definition IntrinsicInst.h:899

Value * getLHS() const

Definition IntrinsicInst.h:890

static bool classof(const Value *V)

Definition IntrinsicInst.h:886

This is the shared class of boolean and integer constants.

bool isZero() const

This is just a convenience method to make client code smaller for a common code.

This is an important base class in LLVM.

static LLVM_ABI Constant * getIntegerValue(Type *Ty, const APInt &V)

Return the value for an integer or pointer constant, or a vector thereof, with the given scalar value...

Constrained floating point compare intrinsics.

Definition IntrinsicInst.h:741

LLVM_ABI FCmpInst::Predicate getPredicate() const

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:749

static bool classof(const Value *V)

Definition IntrinsicInst.h:758

bool isSignaling() const

Definition IntrinsicInst.h:744

This is the common base class for constrained floating point intrinsics.

Definition IntrinsicInst.h:726

LLVM_ABI std::optional< fp::ExceptionBehavior > getExceptionBehavior() const

LLVM_ABI std::optional< RoundingMode > getRoundingMode() const

LLVM_ABI unsigned getNonMetadataArgCount() const

static LLVM_ABI bool classof(const IntrinsicInst *I)

static bool classof(const Value *V)

Definition IntrinsicInst.h:735

LLVM_ABI bool isDefaultFPEnvironment() const

Represents calls to the llvm.experimintal.convergence.* intrinsics.

Definition IntrinsicInst.h:1775

static bool classof(const Value *V)

Definition IntrinsicInst.h:1781

static LLVM_ABI ConvergenceControlInst * CreateAnchor(BasicBlock &BB)

bool isLoop() const

Definition IntrinsicInst.h:1791

bool isEntry() const

Definition IntrinsicInst.h:1788

static LLVM_ABI ConvergenceControlInst * CreateLoop(BasicBlock &BB, ConvergenceControlInst *Parent)

bool isAnchor() const

Definition IntrinsicInst.h:1785

static LLVM_ABI ConvergenceControlInst * CreateEntry(BasicBlock &BB)

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:1777

DbgVariableFragmentInfo FragmentInfo

static LLVM_ABI std::optional< FragmentInfo > getFragmentInfo(expr_op_iterator Start, expr_op_iterator End)

Retrieve the details of this fragment expression.

This represents the llvm.dbg.assign instruction.

Definition IntrinsicInst.h:492

DIAssignID * getAssignID() const

Definition IntrinsicInst.h:510

LLVM_ABI void setValue(Value *V)

static bool classof(const Value *V)

Definition IntrinsicInst.h:536

LLVM_ABI void setAssignId(DIAssignID *New)

LLVM_ABI void setKillAddress()

Kill the address component.

LLVM_ABI bool isKillAddress() const

Check whether this kills the address component.

Metadata * getRawAddress() const

Definition IntrinsicInst.h:504

DIExpression * getAddressExpression() const

Definition IntrinsicInst.h:514

LLVM_ABI Value * getAddress() const

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:533

Metadata * getRawAddressExpression() const

Definition IntrinsicInst.h:511

Metadata * getRawAssignID() const

Definition IntrinsicInst.h:507

LLVM_ABI void setAddress(Value *V)

void setAddressExpression(DIExpression *NewExpr)

Definition IntrinsicInst.h:517

This represents the llvm.dbg.declare instruction.

Definition IntrinsicInst.h:448

static bool classof(const Value *V)

Definition IntrinsicInst.h:461

Value * getAddress() const

Definition IntrinsicInst.h:450

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:458

This is the common base class for debug info intrinsics.

Definition IntrinsicInst.h:181

static bool classof(const Value *V)

Definition IntrinsicInst.h:188

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:185

This represents the llvm.dbg.label instruction.

Definition IntrinsicInst.h:543

Metadata * getRawLabel() const

Definition IntrinsicInst.h:550

static bool classof(const IntrinsicInst *I)

Methods for support type inquiry through isa, cast, and dyn_cast:

Definition IntrinsicInst.h:556

DILabel * getLabel() const

Definition IntrinsicInst.h:545

static bool classof(const Value *V)

Definition IntrinsicInst.h:559

void setLabel(DILabel *NewLabel)

Definition IntrinsicInst.h:546

This represents the llvm.dbg.value instruction.

Definition IntrinsicInst.h:468

iterator_range< location_op_iterator > getValues() const

Definition IntrinsicInst.h:475

static bool classof(const Value *V)

Definition IntrinsicInst.h:485

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:481

Value * getValue(unsigned OpIdx=0) const

Definition IntrinsicInst.h:472

This is the common base class for debug info intrinsics for variables.

Definition IntrinsicInst.h:308

DIExpression::FragmentInfo getFragmentOrEntireVariable() const

Get the FragmentInfo for the variable if it exists, otherwise return a FragmentInfo that covers the e...

Definition IntrinsicInst.h:414

void setVariable(DILocalVariable *NewVar)

Definition IntrinsicInst.h:326

LLVM_ABI iterator_range< location_op_iterator > location_ops() const

Get the locations corresponding to the variable referenced by the debug info intrinsic.

LLVM_ABI void addVariableLocationOps(ArrayRef< Value * > NewValues, DIExpression *NewExpr)

Adding a new location operand will always result in this intrinsic using an ArgList,...

bool isValueOfVariable() const

Determine if this describes the value of a local variable.

Definition IntrinsicInst.h:351

void setRawLocation(Metadata *Location)

Use of this should generally be avoided; instead, replaceVariableLocationOp and addVariableLocationOp...

Definition IntrinsicInst.h:398

LLVM_ABI void replaceVariableLocationOp(Value *OldValue, Value *NewValue, bool AllowEmpty=false)

LLVM_ABI Value * getVariableLocationOp(unsigned OpIdx) const

std::optional< DIExpression::FragmentInfo > getFragment() const

Get the FragmentInfo for the variable.

Definition IntrinsicInst.h:407

static bool classof(const Value *V)

Definition IntrinsicInst.h:436

void setExpression(DIExpression *NewExpr)

Definition IntrinsicInst.h:330

Metadata * getRawLocation() const

Definition IntrinsicInst.h:379

DILocalVariable * getVariable() const

Definition IntrinsicInst.h:371

unsigned getNumVariableLocationOps() const

Definition IntrinsicInst.h:334

bool isAddressOfVariable() const

Does this describe the address of a local variable.

Definition IntrinsicInst.h:343

void setOperand(unsigned i, Value *v)

Definition IntrinsicInst.h:444

void setKillLocation()

Definition IntrinsicInst.h:355

Metadata * getRawVariable() const

Definition IntrinsicInst.h:387

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:426

bool hasArgList() const

Definition IntrinsicInst.h:338

LLVM_ABI std::optional< uint64_t > getFragmentSizeInBits() const

Get the size (in bits) of the variable, or fragment of the variable that is described.

DIExpression * getExpression() const

Definition IntrinsicInst.h:375

void setArgOperand(unsigned i, Value *v)

Definition IntrinsicInst.h:441

Metadata * getRawExpression() const

Definition IntrinsicInst.h:391

RawLocationWrapper getWrappedLocation() const

Definition IntrinsicInst.h:383

bool isKillLocation() const

Definition IntrinsicInst.h:367

Class representing an expression and its matching format.

Common base class for representing values projected from a statepoint.

Definition IntrinsicInst.h:1687

LLVM_ABI const Value * getStatepoint() const

The statepoint with which this gc.relocate is associated.

bool isTiedToInvoke() const

Return true if this relocate is tied to the invoke statepoint.

Definition IntrinsicInst.h:1700

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:1689

static bool classof(const Value *V)

Definition IntrinsicInst.h:1694

Represents calls to the gc.relocate intrinsic.

Definition IntrinsicInst.h:1711

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:1713

static bool classof(const Value *V)

Definition IntrinsicInst.h:1717

LLVM_ABI Value * getBasePtr() const

unsigned getBasePtrIndex() const

The index into the associate statepoint's argument list which contains the base pointer of the pointe...

Definition IntrinsicInst.h:1724

LLVM_ABI Value * getDerivedPtr() const

unsigned getDerivedPtrIndex() const

The index into the associate statepoint's argument list which contains the pointer whose relocation t...

Definition IntrinsicInst.h:1730

Represents calls to the gc.result intrinsic.

Definition IntrinsicInst.h:1739

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:1741

static bool classof(const Value *V)

Definition IntrinsicInst.h:1745

This represents the llvm.instrprof.callsite intrinsic.

Definition IntrinsicInst.h:1536

LLVM_ABI void setCallee(Value *Callee)

LLVM_ABI Value * getCallee() const

static bool classof(const Value *V)

Definition IntrinsicInst.h:1541

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:1538

static bool canInstrumentCallsite(const CallBase &CB)

Definition IntrinsicInst.h:1545

A base class for all instrprof counter intrinsics.

Definition IntrinsicInst.h:1482

static bool classof(const Value *V)

Definition IntrinsicInst.h:1484

LLVM_ABI ConstantInt * getIndex() const

LLVM_ABI void setIndex(uint32_t Idx)

LLVM_ABI ConstantInt * getNumCounters() const

This represents the llvm.instrprof.cover intrinsic.

Definition IntrinsicInst.h:1498

static bool classof(const Value *V)

Definition IntrinsicInst.h:1503

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:1500

This represents the llvm.instrprof.increment.step intrinsic.

Definition IntrinsicInst.h:1522

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:1524

static bool classof(const Value *V)

Definition IntrinsicInst.h:1527

This represents the llvm.instrprof.increment intrinsic.

Definition IntrinsicInst.h:1509

static bool classof(const Value *V)

Definition IntrinsicInst.h:1515

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:1511

LLVM_ABI Value * getStep() const

A base class for all instrprof intrinsics.

Definition IntrinsicInst.h:1435

static bool classof(const Value *V)

Definition IntrinsicInst.h:1459

void setNameValue(Value *V)

Definition IntrinsicInst.h:1475

GlobalVariable * getName() const

Definition IntrinsicInst.h:1466

ConstantInt * getHash() const

Definition IntrinsicInst.h:1478

Value * getNameValue() const

Definition IntrinsicInst.h:1473

static bool isCounterBase(const IntrinsicInst &I)

Definition IntrinsicInst.h:1437

static bool isMCDCBitmapBase(const IntrinsicInst &I)

Definition IntrinsicInst.h:1449

A base class for instrprof mcdc intrinsics that require global bitmap bytes.

Definition IntrinsicInst.h:1586

ConstantInt * getNumBitmapBits() const

Definition IntrinsicInst.h:1597

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:1588

auto getNumBitmapBytes() const

Definition IntrinsicInst.h:1603

static bool classof(const Value *V)

Definition IntrinsicInst.h:1591

This represents the llvm.instrprof.mcdc.parameters intrinsic.

Definition IntrinsicInst.h:1609

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:1611

static bool classof(const Value *V)

Definition IntrinsicInst.h:1614

This represents the llvm.instrprof.mcdc.tvbitmap.update intrinsic.

Definition IntrinsicInst.h:1620

Value * getMCDCCondBitmapAddr() const

Definition IntrinsicInst.h:1637

ConstantInt * getBitmapIndex() const

Definition IntrinsicInst.h:1631

static bool classof(const Value *V)

Definition IntrinsicInst.h:1625

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:1622

This represents the llvm.instrprof.timestamp intrinsic.

Definition IntrinsicInst.h:1555

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:1557

static bool classof(const Value *V)

Definition IntrinsicInst.h:1560

This represents the llvm.instrprof.value.profile intrinsic.

Definition IntrinsicInst.h:1566

ConstantInt * getIndex() const

Definition IntrinsicInst.h:1582

Value * getTargetValue() const

Definition IntrinsicInst.h:1575

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:1568

ConstantInt * getValueKind() const

Definition IntrinsicInst.h:1577

static bool classof(const Value *V)

Definition IntrinsicInst.h:1571

A wrapper class for inspecting calls to intrinsic functions.

Definition IntrinsicInst.h:49

bool isAssumeLikeIntrinsic() const

Checks if the intrinsic is an annotation.

Definition IntrinsicInst.h:105

static LLVM_ABI bool mayLowerToFunctionCall(Intrinsic::ID IID)

Check if the intrinsic might lower into a regular function call in the course of IR transformations.

IntrinsicInst(const IntrinsicInst &)=delete

Intrinsic::ID getIntrinsicID() const

Return the intrinsic ID of this intrinsic.

Definition IntrinsicInst.h:56

bool isCommutative() const

Return true if swapping the first two arguments to the intrinsic produces the same result.

Definition IntrinsicInst.h:74

static bool classof(const Value *V)

Definition IntrinsicInst.h:137

IntrinsicInst & operator=(const IntrinsicInst &)=delete

static bool classof(const CallInst *I)

Methods for support type inquiry through isa, cast, and dyn_cast:

Definition IntrinsicInst.h:133

bool isAssociative() const

Definition IntrinsicInst.h:60

This is the common base class for lifetime intrinsics.

Definition IntrinsicInst.h:154

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:158

static bool classof(const Value *V)

Definition IntrinsicInst.h:161

LLVMContext & getContext() const

This class wraps the llvm.memcpy intrinsic.

Definition IntrinsicInst.h:1232

static bool classof(const Value *V)

Definition IntrinsicInst.h:1239

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:1235

Common base class for all memory intrinsics.

Definition IntrinsicInst.h:993

const Use & getRawDestUse() const

Definition IntrinsicInst.h:1001

Value * getLength() const

Definition IntrinsicInst.h:1004

Value * getRawDest() const

Definition IntrinsicInst.h:998

void setDestAlignment(Align Alignment)

Definition IntrinsicInst.h:1041

void setLength(Value *L)

Definition IntrinsicInst.h:1047

Value * getDest() const

This is just like getRawDest, but it strips off any cast instructions (including addrspacecast) that ...

Definition IntrinsicInst.h:1020

void setDestAlignment(MaybeAlign Alignment)

Definition IntrinsicInst.h:1035

void setLength(uint64_t L)

Definition IntrinsicInst.h:1053

void setDest(Value *Ptr)

Set the specified arguments of the instruction.

Definition IntrinsicInst.h:1029

Use & getRawDestUse()

Definition IntrinsicInst.h:1002

MaybeAlign getDestAlign() const

Definition IntrinsicInst.h:1026

const Use & getLengthUse() const

Definition IntrinsicInst.h:1007

unsigned getDestAddressSpace() const

Definition IntrinsicInst.h:1022

std::optional< APInt > getLengthInBytes() const

Definition IntrinsicInst.h:1010

Use & getLengthUse()

Definition IntrinsicInst.h:1008

This is the common base class for memset/memcpy/memmove.

Definition IntrinsicInst.h:1128

ConstantInt * getVolatileCst() const

Definition IntrinsicInst.h:1133

void setVolatile(Constant *V)

Definition IntrinsicInst.h:1139

bool isForceInlined() const

Definition IntrinsicInst.h:1141

static bool classof(const Value *V)

Definition IntrinsicInst.h:1164

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:1152

bool isVolatile() const

Definition IntrinsicInst.h:1137

This class wraps the llvm.memmove intrinsic.

Definition IntrinsicInst.h:1245

static bool classof(const Value *V)

Definition IntrinsicInst.h:1251

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:1248

Common base class for all memset intrinsics.

Definition IntrinsicInst.h:1109

Use & getValueUse()

Definition IntrinsicInst.h:1118

void setValue(Value *Val)

Definition IntrinsicInst.h:1120

const Use & getValueUse() const

Definition IntrinsicInst.h:1117

Value * getValue() const

Definition IntrinsicInst.h:1114

This class wraps the llvm.memset and llvm.memset.inline intrinsics.

Definition IntrinsicInst.h:1170

static bool classof(const Value *V)

Definition IntrinsicInst.h:1182

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:1173

This class wraps the llvm.experimental.memset.pattern intrinsic.

Definition IntrinsicInst.h:1190

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:1204

static bool classof(const Value *V)

Definition IntrinsicInst.h:1207

ConstantInt * getVolatileCst() const

Definition IntrinsicInst.h:1195

bool isVolatile() const

Definition IntrinsicInst.h:1199

void setVolatile(Constant *V)

Definition IntrinsicInst.h:1201

Common base class for all memory transfer intrinsics.

Definition IntrinsicInst.h:1060

Use & getRawSourceUse()

Definition IntrinsicInst.h:1072

void setSource(Value *Ptr)

Definition IntrinsicInst.h:1087

Value * getRawSource() const

Return the arguments to the instruction.

Definition IntrinsicInst.h:1066

unsigned getSourceAddressSpace() const

Definition IntrinsicInst.h:1079

MaybeAlign getSourceAlign() const

Definition IntrinsicInst.h:1083

Value * getSource() const

This is just like getRawSource, but it strips off any cast instructions that feed it,...

Definition IntrinsicInst.h:1077

void setSourceAlignment(MaybeAlign Alignment)

Definition IntrinsicInst.h:1093

void setSourceAlignment(Align Alignment)

Definition IntrinsicInst.h:1100

const Use & getRawSourceUse() const

Definition IntrinsicInst.h:1069

This class wraps the llvm.memcpy/memmove intrinsics.

Definition IntrinsicInst.h:1213

static bool classof(const Value *V)

Definition IntrinsicInst.h:1226

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:1216

This class represents min/max intrinsics.

Definition IntrinsicInst.h:764

static bool classof(const Value *V)

Definition IntrinsicInst.h:777

static Constant * getSaturationPoint(Intrinsic::ID ID, Type *Ty)

Min/max intrinsics are monotonic, they operate on a fixed-bitwidth values, so there is a certain thre...

Definition IntrinsicInst.h:861

APInt getSaturationPoint(unsigned numBits) const

Min/max intrinsics are monotonic, they operate on a fixed-bitwidth values, so there is a certain thre...

Definition IntrinsicInst.h:854

static APInt getSaturationPoint(Intrinsic::ID ID, unsigned numBits)

Min/max intrinsics are monotonic, they operate on a fixed-bitwidth values, so there is a certain thre...

Definition IntrinsicInst.h:836

Value * getLHS() const

Definition IntrinsicInst.h:781

Value * getRHS() const

Definition IntrinsicInst.h:782

bool isMin() const

Whether the intrinsic is a smin or a umin.

Definition IntrinsicInst.h:828

static ICmpInst::Predicate getPredicate(Intrinsic::ID ID)

Returns the comparison predicate underlying the intrinsic.

Definition IntrinsicInst.h:785

ICmpInst::Predicate getPredicate() const

Returns the comparison predicate underlying the intrinsic.

Definition IntrinsicInst.h:801

static bool isMin(Intrinsic::ID ID)

Whether the intrinsic is a smin or umin.

Definition IntrinsicInst.h:814

static bool isSigned(Intrinsic::ID ID)

Whether the intrinsic is signed or unsigned.

Definition IntrinsicInst.h:806

bool isMax() const

Whether the intrinsic is a smax or a umax.

Definition IntrinsicInst.h:831

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:766

bool isSigned() const

Whether the intrinsic is signed or unsigned.

Definition IntrinsicInst.h:811

Constant * getSaturationPoint(Type *Ty) const

Min/max intrinsics are monotonic, they operate on a fixed-bitwidth values, so there is a certain thre...

Definition IntrinsicInst.h:869

A Module instance is used to store all the information related to an LLVM module.

Definition IntrinsicInst.h:1663

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:1665

void setScopeList(MDNode *ScopeList)

Definition IntrinsicInst.h:1679

static bool classof(const Value *V)

Definition IntrinsicInst.h:1669

MDNode * getScopeList() const

Definition IntrinsicInst.h:1673

A discriminated union of two or more pointer types, with the discriminator in the low bit of the poin...

static LLVM_ABI PoisonValue * get(Type *T)

Static factory methods - Return an 'poison' object of the specified type.

Definition IntrinsicInst.h:1640

ConstantInt * getAttributes() const

Definition IntrinsicInst.h:1656

ConstantInt * getIndex() const

Definition IntrinsicInst.h:1654

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:1642

static bool classof(const Value *V)

Definition IntrinsicInst.h:1646

ConstantInt * getFactor() const

Definition IntrinsicInst.h:1660

ConstantInt * getFuncGuid() const

Definition IntrinsicInst.h:1650

Lightweight class that wraps the location operand metadata of a debug intrinsic.

Definition IntrinsicInst.h:243

friend bool operator<=(const RawLocationWrapper &A, const RawLocationWrapper &B)

Definition IntrinsicInst.h:301

Metadata * getRawLocation() const

Definition IntrinsicInst.h:256

friend bool operator>(const RawLocationWrapper &A, const RawLocationWrapper &B)

Definition IntrinsicInst.h:289

RawLocationWrapper(Metadata *RawLocation)

Definition IntrinsicInst.h:248

RawLocationWrapper()=default

friend bool operator<(const RawLocationWrapper &A, const RawLocationWrapper &B)

Definition IntrinsicInst.h:297

friend bool operator==(const RawLocationWrapper &A, const RawLocationWrapper &B)

Definition IntrinsicInst.h:281

LLVM_ABI iterator_range< location_op_iterator > location_ops() const

Get the locations corresponding to the variable referenced by the debug info intrinsic.

LLVM_ABI Value * getVariableLocationOp(unsigned OpIdx) const

bool isKillLocation(const DIExpression *Expression) const

Definition IntrinsicInst.h:268

bool hasArgList() const

Definition IntrinsicInst.h:267

friend bool operator!=(const RawLocationWrapper &A, const RawLocationWrapper &B)

Definition IntrinsicInst.h:285

unsigned getNumVariableLocationOps() const

Definition IntrinsicInst.h:262

friend bool operator>=(const RawLocationWrapper &A, const RawLocationWrapper &B)

Definition IntrinsicInst.h:293

Represents a saturating add/sub intrinsic.

Definition IntrinsicInst.h:971

static bool classof(const Value *V)

Definition IntrinsicInst.h:984

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:973

std::pair< iterator, bool > insert(PtrType Ptr)

Inserts Ptr if and only if there is no element in the container equal to Ptr.

SmallPtrSet - This class implements a set which is optimized for holding SmallSize or less elements.

The instances of the Type class are immutable: once they are created, they are never changed.

A Use represents the edge between a Value definition and its users.

void setOperand(unsigned i, Value *Val)

Value * getOperand(unsigned i) const

This represents the llvm.va_copy intrinsic.

Definition IntrinsicInst.h:1421

Value * getSrc() const

Definition IntrinsicInst.h:1431

static bool classof(const Value *V)

Definition IntrinsicInst.h:1426

Value * getDest() const

Definition IntrinsicInst.h:1430

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:1423

This represents the llvm.va_end intrinsic.

Definition IntrinsicInst.h:1408

Value * getArgList() const

Definition IntrinsicInst.h:1417

static bool classof(const Value *V)

Definition IntrinsicInst.h:1413

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:1410

This represents the llvm.va_start intrinsic.

Definition IntrinsicInst.h:1395

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:1397

static bool classof(const Value *V)

Definition IntrinsicInst.h:1400

Value * getArgList() const

Definition IntrinsicInst.h:1404

Definition IntrinsicInst.h:709

static LLVM_ABI bool isVPBinOp(Intrinsic::ID ID)

static bool classof(const IntrinsicInst *I)

Methods for support type inquiry through isa, cast, and dyn_cast:

Definition IntrinsicInst.h:715

static bool classof(const Value *V)

Definition IntrinsicInst.h:718

Definition IntrinsicInst.h:677

static LLVM_ABI bool isVPCast(Intrinsic::ID ID)

static bool classof(const Value *V)

Definition IntrinsicInst.h:686

static bool classof(const IntrinsicInst *I)

Methods for support type inquiry through isa, cast, and dyn_cast:

Definition IntrinsicInst.h:683

Definition IntrinsicInst.h:692

static bool classof(const IntrinsicInst *I)

Methods for support type inquiry through isa, cast, and dyn_cast:

Definition IntrinsicInst.h:700

static bool classof(const Value *V)

Definition IntrinsicInst.h:703

static LLVM_ABI bool isVPCmp(Intrinsic::ID ID)

LLVM_ABI CmpInst::Predicate getPredicate() const

This is the common base class for vector predication intrinsics.

Definition IntrinsicInst.h:566

std::optional< unsigned > getFunctionalIntrinsicID() const

Definition IntrinsicInst.h:633

static bool classof(const Value *V)

Definition IntrinsicInst.h:623

static LLVM_ABI std::optional< unsigned > getMaskParamPos(Intrinsic::ID IntrinsicID)

LLVM_ABI bool canIgnoreVectorLengthParam() const

LLVM_ABI void setMaskParam(Value *)

static LLVM_ABI std::optional< unsigned > getFunctionalOpcodeForVP(Intrinsic::ID ID)

static LLVM_ABI std::optional< unsigned > getMemoryDataParamPos(Intrinsic::ID)

LLVM_ABI Value * getVectorLengthParam() const

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:620

static LLVM_ABI std::optional< Intrinsic::ID > getFunctionalIntrinsicIDForVP(Intrinsic::ID ID)

LLVM_ABI void setVectorLengthParam(Value *)

static LLVM_ABI std::optional< unsigned > getVectorLengthParamPos(Intrinsic::ID IntrinsicID)

static LLVM_ABI Intrinsic::ID getForOpcode(unsigned OC)

The llvm.vp.* intrinsics for this instruction Opcode.

static LLVM_ABI Function * getOrInsertDeclarationForParams(Module *M, Intrinsic::ID, Type *ReturnType, ArrayRef< Value * > Params)

Declares a llvm.vp.

static LLVM_ABI std::optional< unsigned > getMemoryPointerParamPos(Intrinsic::ID)

static LLVM_ABI bool isVPIntrinsic(Intrinsic::ID)

LLVM_ABI Value * getMemoryDataParam() const

static LLVM_ABI Intrinsic::ID getForIntrinsic(Intrinsic::ID Id)

The llvm.vp.

LLVM_ABI Value * getMemoryPointerParam() const

std::optional< unsigned > getConstrainedIntrinsicID() const

Definition IntrinsicInst.h:638

LLVM_ABI MaybeAlign getPointerAlignment() const

LLVM_ABI Value * getMaskParam() const

LLVM_ABI ElementCount getStaticVectorLength() const

static LLVM_ABI std::optional< Intrinsic::ID > getConstrainedIntrinsicIDForVP(Intrinsic::ID ID)

std::optional< unsigned > getFunctionalOpcode() const

Definition IntrinsicInst.h:628

This represents vector predication reduction intrinsics.

Definition IntrinsicInst.h:656

static bool classof(const Value *V)

Definition IntrinsicInst.h:671

static bool classof(const IntrinsicInst *I)

Methods for support type inquiry through isa, cast, and dyn_cast:

Definition IntrinsicInst.h:668

static LLVM_ABI bool isVPReduction(Intrinsic::ID ID)

LLVM_ABI unsigned getStartParamPos() const

LLVM_ABI unsigned getVectorParamPos() const

LLVM Value Representation.

Type * getType() const

All values are typed, get the type of this value.

LLVM_ABI const Value * stripPointerCasts() const

Strip off pointer casts, all-zero GEPs and address space casts.

LLVM_ABI LLVMContext & getContext() const

All values hold a context through their type.

Represents an op.with.overflow intrinsic.

Definition IntrinsicInst.h:950

static bool classof(const Value *V)

Definition IntrinsicInst.h:965

static bool classof(const IntrinsicInst *I)

Definition IntrinsicInst.h:952

CRTP base class which implements the entire standard iterator facade in terms of a minimal subset of ...

A range adaptor for a pair of iterators.

bool operator==(const location_op_iterator &RHS) const

Definition IntrinsicInst.h:211

location_op_iterator & operator=(const location_op_iterator &R)

Definition IntrinsicInst.h:207

location_op_iterator(ValueAsMetadata **MultiIter)

Definition IntrinsicInst.h:204

location_op_iterator(const location_op_iterator &R)

Definition IntrinsicInst.h:206

Value * operator*()

Definition IntrinsicInst.h:218

location_op_iterator & operator++()

Definition IntrinsicInst.h:224

location_op_iterator(ValueAsMetadata *SingleIter)

Definition IntrinsicInst.h:203

location_op_iterator & operator--()

Definition IntrinsicInst.h:231

const Value * operator*() const

Definition IntrinsicInst.h:212

#define llvm_unreachable(msg)

Marks that the current location is not supposed to be reachable.

unsigned ID

LLVM IR allows to use arbitrary numbers as calling convention identifiers.

@ C

The default llvm calling convention, compatible with C.

static const int NoAliasScopeDeclScopeArg

This is an optimization pass for GlobalISel generic memory operations.

decltype(auto) dyn_cast(const From &Val)

dyn_cast - Return the argument parameter cast to the specified type.

auto dyn_cast_or_null(const Y &Val)

bool any_of(R &&range, UnaryPredicate P)

Provide wrappers to std::any_of which take ranges instead of having to pass begin/end explicitly.

static bool isLifetimeIntrinsic(Intrinsic::ID ID)

Check if ID corresponds to a lifetime intrinsic.

Definition IntrinsicInst.h:143

static bool isDbgInfoIntrinsic(Intrinsic::ID ID)

Check if ID corresponds to a debug info intrinsic.

Definition IntrinsicInst.h:168

bool isa(const From &Val)

isa - Return true if the parameter to the template is an instance of one of the template type argu...

uint64_t alignTo(uint64_t Size, Align A)

Returns a multiple of A needed to store Size bytes.

decltype(auto) cast(const From &Val)

cast - Return the argument parameter cast to the specified type.

static bool isConvergenceControlIntrinsic(unsigned IntrinsicID)

Check if ID corresponds to a convergence control intrinsic.

Definition IntrinsicInst.h:1763

This struct is a compact representation of a valid (non-zero power of two) alignment.

This struct is a compact representation of a valid (power of two) or undefined (0) alignment.