LLVM API Documentation
FIRST_NUMBER | |
BSF |
BSF - Bit scan forward. BSR - Bit scan reverse. |
BSR | |
SHLD |
SHLD, SHRD - Double shift instructions. These correspond to X86::SHLDxx and X86::SHRDxx instructions. |
SHRD | |
FAND |
FAND - Bitwise logical AND of floating point values. This corresponds to X86::ANDPS or X86::ANDPD. |
FOR |
FOR - Bitwise logical OR of floating point values. This corresponds to X86::ORPS or X86::ORPD. |
FXOR |
FXOR - Bitwise logical XOR of floating point values. This corresponds to X86::XORPS or X86::XORPD. |
FANDN |
FANDN - Bitwise logical ANDNOT of floating point values. This corresponds to X86::ANDNPS or X86::ANDNPD. |
FSRL |
FSRL - Bitwise logical right shift of floating point values. These corresponds to X86::PSRLDQ. |
CALL |
CALL - These operations represent an abstract X86 call instruction, which includes a bunch of information. In particular the operands of these node are: #0 - The incoming token chain #1 - The callee #2 - The number of arg bytes the caller pushes on the stack. #3 - The number of arg bytes the callee pops off the stack. #4 - The value to pass in AL/AX/EAX (optional) #5 - The value to pass in DL/DX/EDX (optional) The result values of these nodes are: #0 - The outgoing token chain #1 - The first register result value (optional) #2 - The second register result value (optional) |
RDTSC_DAG |
RDTSC_DAG - This operation implements the lowering for readcyclecounter |
RDTSCP_DAG |
X86 Read Time-Stamp Counter and Processor ID. |
RDPMC_DAG |
X86 Read Performance Monitoring Counters. |
CMP |
X86 compare and logical compare instructions. |
COMI | |
UCOMI | |
BT |
X86 bit-test instructions. |
SETCC |
X86 SetCC. Operand 0 is condition code, and operand 1 is the EFLAGS operand, usually produced by a CMP instruction. |
SELECT |
X86 Select. |
SETCC_CARRY | |
FSETCC |
X86 FP SETCC, implemented with CMP{cc}SS/CMP{cc}SD. Operands are two FP values to compare; result is a mask of 0s or 1s. Generally DTRT for C/C++ with NaNs. |
FGETSIGNx86 |
X86 MOVMSK{pd|ps}, extracts sign bits of two or four FP values, result in an integer GPR. Needs masking for scalar result. |
CMOV |
X86 conditional moves. Operand 0 and operand 1 are the two values to select from. Operand 2 is the condition code, and operand 3 is the flag operand produced by a CMP or TEST instruction. It also writes a flag result. |
BRCOND |
X86 conditional branches. Operand 0 is the chain operand, operand 1 is the block to branch if condition is true, operand 2 is the condition code, and operand 3 is the flag operand produced by a CMP or TEST instruction. |
RET_FLAG |
Return with a flag operand. Operand 0 is the chain operand, operand 1 is the number of bytes of stack to pop. |
REP_STOS |
REP_STOS - Repeat fill, corresponds to X86::REP_STOSx. |
REP_MOVS |
REP_MOVS - Repeat move, corresponds to X86::REP_MOVSx. |
GlobalBaseReg |
GlobalBaseReg - On Darwin, this node represents the result of the popl at function entry, used for PIC code. |
Wrapper |
Wrapper - A wrapper node for TargetConstantPool, TargetExternalSymbol, and TargetGlobalAddress. |
WrapperRIP |
WrapperRIP - Special wrapper used under X86-64 PIC mode for RIP relative displacements. |
MOVDQ2Q |
MOVDQ2Q - Copies a 64-bit value from the low word of an XMM vector to an MMX vector. If you think this is too close to the previous mnemonic, so do I; blame Intel. |
MMX_MOVD2W |
MMX_MOVD2W - Copies a 32-bit value from the low word of a MMX vector to a GPR. |
PEXTRB |
PEXTRB - Extract an 8-bit value from a vector and zero extend it to i32, corresponds to X86::PEXTRB. |
PEXTRW |
PEXTRW - Extract a 16-bit value from a vector and zero extend it to i32, corresponds to X86::PEXTRW. |
INSERTPS |
INSERTPS - Insert any element of a 4 x float vector into any element of a destination 4 x floatvector. |
PINSRB |
PINSRB - Insert the lower 8-bits of a 32-bit value to a vector, corresponds to X86::PINSRB. |
PINSRW |
PINSRW - Insert the lower 16-bits of a 32-bit value to a vector, corresponds to X86::PINSRW. |
MMX_PINSRW | |
PSHUFB |
PSHUFB - Shuffle 16 8-bit values within a vector. |
ANDNP |
ANDNP - Bitwise Logical AND NOT of Packed FP values. |
PSIGN |
PSIGN - Copy integer sign. |
BLENDV |
BLENDV - Blend where the selector is a register. |
BLENDI |
BLENDI - Blend where the selector is an immediate. |
ADDSUB |
ADDSUB - Combined add and sub on an FP vector. |
SUBUS | |
HADD |
HADD - Integer horizontal add. |
HSUB |
HSUB - Integer horizontal sub. |
FHADD |
FHADD - Floating point horizontal add. |
FHSUB |
FHSUB - Floating point horizontal sub. |
UMAX |
UMAX, UMIN - Unsigned integer max and min. |
UMIN | |
SMAX |
SMAX, SMIN - Signed integer max and min. |
SMIN | |
FMAX |
FMAX, FMIN - Floating point max and min. |
FMIN | |
FMAXC |
FMAXC, FMINC - Commutative FMIN and FMAX. |
FMINC | |
FRSQRT |
FRSQRT, FRCP - Floating point reciprocal-sqrt and reciprocal approximation. Note that these typically require refinement in order to obtain suitable precision. |
FRCP | |
TLSADDR | |
TLSBASEADDR | |
TLSCALL | |
EH_RETURN | |
EH_SJLJ_SETJMP | |
EH_SJLJ_LONGJMP | |
TC_RETURN |
TC_RETURN - Tail call return. See X86TargetLowering::LowerCall for the list of operands. |
VZEXT_MOVL | |
VZEXT | |
VSEXT | |
VTRUNC | |
VTRUNCM | |
VFPEXT | |
VFPROUND | |
VSHLDQ | |
VSRLDQ | |
VSHL | |
VSRL | |
VSRA | |
VSHLI | |
VSRLI | |
VSRAI | |
CMPP | |
PCMPEQ | |
PCMPGT | |
PCMPEQM | |
PCMPGTM | |
CMPM |
CMPM, CMPMU - Vector comparison generating mask bits for fp and integer signed and unsigned data types. |
CMPMU | |
ADD | |
SUB | |
ADC | |
SBB | |
SMUL | |
INC | |
DEC | |
OR | |
XOR | |
AND | |
BEXTR | |
UMUL | |
MUL_IMM | |
PTEST | |
TESTP | |
TESTM | |
TESTNM | |
KORTEST | |
PACKSS | |
PACKUS | |
PALIGNR | |
VALIGN | |
PSHUFD | |
PSHUFHW | |
PSHUFLW | |
SHUFP | |
MOVDDUP | |
MOVSHDUP | |
MOVSLDUP | |
MOVLHPS | |
MOVLHPD | |
MOVHLPS | |
MOVLPS | |
MOVLPD | |
MOVSD | |
MOVSS | |
UNPCKL | |
UNPCKH | |
VPERMILP | |
VPERMV | |
VPERMV3 | |
VPERMIV3 | |
VPERMI | |
VPERM2X128 | |
VBROADCAST | |
VBROADCASTM | |
VINSERT | |
VEXTRACT | |
PMULUDQ | |
PMULDQ | |
FMADD | |
FNMADD | |
FMSUB | |
FNMSUB | |
FMADDSUB | |
FMSUBADD | |
VASTART_SAVE_XMM_REGS | |
WIN_ALLOCA | |
SEG_ALLOCA | |
WIN_FTOL | |
MEMBARRIER | |
MFENCE | |
SFENCE | |
LFENCE | |
FNSTSW16r | |
SAHF | |
RDRAND | |
RDSEED | |
PCMPISTRI | |
PCMPESTRI | |
XTEST | |
LCMPXCHG_DAG | |
LCMPXCHG8_DAG | |
LCMPXCHG16_DAG | |
VZEXT_LOAD | |
FNSTCW16m | |
FP_TO_INT16_IN_MEM |
FP_TO_INT*_IN_MEM - This instruction implements FP_TO_SINT with the integer destination in memory and a FP reg source. This corresponds to the X86::FIST*m instructions and the rounding mode change stuff. It has two inputs (token chain and address) and two outputs (int value and token chain). |
FP_TO_INT32_IN_MEM | |
FP_TO_INT64_IN_MEM | |
FILD |
FILD, FILD_FLAG - This instruction implements SINT_TO_FP with the integer source in memory and FP reg result. This corresponds to the X86::FILD*m instructions. It has three inputs (token chain, address, and source type) and two outputs (FP value and token chain). FILD_FLAG also produces a flag). |
FILD_FLAG | |
FLD |
FLD - This instruction implements an extending load to FP stack slots. This corresponds to the X86::FLD32m / X86::FLD64m. It takes a chain operand, ptr to load from, and a ValueType node indicating the type to load to. |
FST |
FST - This instruction implements a truncating store to FP stack slots. This corresponds to the X86::FST32m / X86::FST64m. It takes a chain operand, value to store, address, and a ValueType to store it as. |
VAARG_64 |
VAARG_64 - This instruction grabs the address of the next argument from a va_list. (reads and modifies the va_list in memory) |
Definition at line 29 of file X86ISelLowering.h.