14 #ifndef LLVM_LIB_TARGET_X86_X86INTRINSICSINFO_H 15 #define LLVM_LIB_TARGET_X86_X86INTRINSICSINFO_H 23 GATHER,
SCATTER,
PREFETCH,
RDSEED,
RDRAND,
RDPMC,
RDTSC,
XTEST,
XGETBV,
ADX,
FPCLASSS,
59 #define X86_INTRINSIC_DATA(id, type, op0, op1) \ 60 { Intrinsic::x86_##id, type, op0, op1 } 110 X86::VGATHERPF0DPDm, X86::VGATHERPF1DPDm),
112 X86::VGATHERPF0DPSm, X86::VGATHERPF1DPSm),
114 X86::VGATHERPF0QPDm, X86::VGATHERPF1QPDm),
116 X86::VGATHERPF0QPSm, X86::VGATHERPF1QPSm),
294 X86::VSCATTERPF1DPDm),
296 X86::VSCATTERPF1DPSm),
298 X86::VSCATTERPF1QPDm),
300 X86::VSCATTERPF1QPSm),
329 if (Data !=
std::end(IntrinsicsWithChain) && Data->
Id == IntNo)
1234 if (Data !=
std::end(IntrinsicsWithoutChain) && Data->
Id == IntNo)
1241 std::end(IntrinsicsWithoutChain)) &&
1242 std::is_sorted(
std::begin(IntrinsicsWithChain),
1244 "Intrinsic data tables should be sorted by Intrinsic ID");
1246 std::end(IntrinsicsWithoutChain)) ==
1247 std::end(IntrinsicsWithoutChain)) &&
1248 (std::adjacent_find(
std::begin(IntrinsicsWithChain),
1251 "Intrinsic data tables should have unique entries");
bool operator<(const IntrinsicData &RHS) const
X = FP_ROUND(Y, TRUNC) - Rounding 'Y' from a larger floating point type down to the precision of the ...
const_iterator end(StringRef path)
Get end iterator over path.
Vector comparison generating mask bits for fp and integer signed and unsigned data types...
const_iterator begin(StringRef path, Style style=Style::native)
Get begin iterator over path.
This class represents lattice values for constants.
Compute Double Block Packed Sum-Absolute-Differences.
SSE4A Extraction and Insertion.
This operation implements the lowering for readcyclecounter.
Integer horizontal add/sub.
X86 FP SETCC, similar to above, but with output as an i1 mask and with optional rounding mode...
[SU]INT_TO_FP - These operators convert integers (whose interpreted sign depends on the first letter)...
static const IntrinsicData IntrinsicsWithChain[]
auto lower_bound(R &&Range, ForwardIt I) -> decltype(adl_begin(Range))
Provide wrappers to std::lower_bound which take ranges instead of having to pass begin/end explicitly...
Floating point horizontal add/sub.
static const IntrinsicData * getIntrinsicWithChain(unsigned IntNo)
static const IntrinsicData IntrinsicsWithoutChain[]
Simple binary floating point operators.
Insert any element of a 4 x float vector into any element of a destination 4 x floatvector.
X = FP_EXTEND(Y) - Extend a smaller FP type into a larger FP type.
Floating point max and min.
friend bool operator<(const IntrinsicData &LHS, unsigned Id)
X86 Read Time-Stamp Counter and Processor ID.
Floating point reciprocal-sqrt and reciprocal approximation.
static void verifyIntrinsicTables()
bool operator==(const IntrinsicData &RHS) const
#define X86_INTRINSIC_DATA(id, type, op0, op1)
Combined add and sub on an FP vector.
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
FMA - Perform a * b + c with no intermediate rounding step.
X86 Read Performance Monitoring Counters.
static const IntrinsicData * getIntrinsicWithoutChain(unsigned IntNo)
Compute Sum of Absolute Differences.
TRUNCATE - Completely drop the high bits.
Scalar intrinsic floating point max and min.
Shuffle 16 8-bit values within a vector.
MULHU/MULHS - Multiply high - Multiply two integers of type iN, producing an unsigned/signed value of...