Skip to main content

Module x86

Module x86 

Source

Modulesยง

aesni ๐Ÿ”’
avx ๐Ÿ”’
avx2 ๐Ÿ”’
avx512 ๐Ÿ”’
bmi ๐Ÿ”’
gfni ๐Ÿ”’
sha ๐Ÿ”’
Implements sha256 SIMD instructions of x86 targets
sse ๐Ÿ”’
sse2 ๐Ÿ”’
sse3 ๐Ÿ”’
sse41 ๐Ÿ”’
sse42 ๐Ÿ”’
ssse3 ๐Ÿ”’

Enumsยง

FloatBinOp ๐Ÿ”’
FloatUnaryOp ๐Ÿ”’
ShiftOp ๐Ÿ”’

Traitsยง

EvalContextExt ๐Ÿ”’

Functionsยง

bin_op_float ๐Ÿ”’
Performs which scalar operation on left and right and returns the result.
bin_op_simd_float_all ๐Ÿ”’
Performs which operation on each component of left and right, storing the result is stored in dest.
bin_op_simd_float_first ๐Ÿ”’
Performs which operation on the first component of left and right and copies the other components from left. The result is stored in dest.
carrying_add ๐Ÿ”’
Calcultates either a + b + cb_in or a - b - cb_in depending on the value of op and returns both the sum and the overflow bit. op is expected to be either one of mir::BinOp::AddWithOverflow and mir::BinOp::SubWithOverflow.
conditional_dot_product ๐Ÿ”’
Conditionally multiplies the packed floating-point elements in left and right using the high 4 bits in imm, sums the calculated products (up to 4), and conditionally stores the sum in dest using the low 4 bits of imm.
convert_float_to_int ๐Ÿ”’
Converts each element of op from floating point to signed integer.
extract_first_u64 ๐Ÿ”’
Takes a 128-bit vector, transmutes it to [u64; 2] and extracts the first value.
mpsadbw ๐Ÿ”’
Compute the sum of absolute differences of quadruplets of unsigned 8-bit integers in left and right, and store the 16-bit results in right. Quadruplets are selected from left and right with offsets specified in imm.
pack_generic ๐Ÿ”’
Packs two N-bit integer vectors to a single N/2-bit integers.
packssdw ๐Ÿ”’
Converts two 32-bit integer vectors to a single 16-bit integer vector with signed saturation.
packsswb ๐Ÿ”’
Converts two 16-bit integer vectors to a single 8-bit integer vector with signed saturation.
packusdw ๐Ÿ”’
Converts two 32-bit integer vectors to a single 16-bit integer vector with unsigned saturation.
packuswb ๐Ÿ”’
Converts two 16-bit signed integer vectors to a single 8-bit unsigned integer vector with saturation.
pclmulqdq ๐Ÿ”’
Perform a carry-less multiplication of two 64-bit integers, selected from left and right according to imm8, and store the results in dst.
permute ๐Ÿ”’
Shuffle elements in values across lanes using the corresponding index in indices, and store the results in dest.
permute2 ๐Ÿ”’
Shuffle elements from two source registers (left and right) using the corresponding index in indices, and store the results in dest.
pmaddbw ๐Ÿ”’
Multiplies packed 8-bit unsigned integers from left and packed signed 8-bit integers from right into 16-bit signed integers. Then, the saturating sum of the products with indices 2*i and 2*i+1 produces the output at index i.
pmaddwd ๐Ÿ”’
Multiply packed signed 16-bit integers in left and right, producing intermediate signed 32-bit integers. Horizontally add adjacent pairs of intermediate 32-bit integers, and pack the results in dest.
pmulhrsw ๐Ÿ”’
Multiplies packed 16-bit signed integer values, truncates the 32-bit product to the 18 most significant bits by right-shifting, and then divides the 18-bit value by 2 (rounding to nearest) by first adding 1 and then taking the bits 1..=16.
psadbw ๐Ÿ”’
Compute the absolute differences of packed unsigned 8-bit integers in left and right, then horizontally sum each consecutive 8 differences to produce unsigned 16-bit integers, and pack these unsigned 16-bit integers in the low 16 bits of 64-bit elements in dest.
pshufb ๐Ÿ”’
Shuffles bytes from left using right as pattern. Each 16-byte block is shuffled independently.
psign ๐Ÿ”’
Negates elements from left when the corresponding element in right is negative. If an element from right is zero, zero is written to the corresponding output element. In other words, multiplies left with right.signum().
round_all ๐Ÿ”’
round_first ๐Ÿ”’
rounding_from_imm ๐Ÿ”’
Gets equivalent rustc_apfloat::Round from rounding mode immediate of round.{ss,sd,ps,pd} intrinsics.
shift_simd_by_scalar ๐Ÿ”’
Shifts each element of left by a scalar amount. The shift amount is determined by the lowest 64 bits of right (which is a 128-bit vector).
split_simd_to_128bit_chunks ๐Ÿ”’
Splits op (which must be a SIMD vector) into 128-bit chunks.
test_bits_masked ๐Ÿ”’
Calculates two booleans.
test_high_bits_masked ๐Ÿ”’
Calculates two booleans.
unary_op_f32 ๐Ÿ”’
Performs which scalar operation on op and returns the result.
unary_op_ps ๐Ÿ”’
Performs which operation on each component of op, storing the result is stored in dest.
unary_op_ss ๐Ÿ”’
Performs which operation on the first component of op and copies the other components. The result is stored in dest.