# Module core::arch::riscv64

source · [−]
🔬This is a nightly-only experimental API. (`stdsimd` #27731)
Available on RISC-V RV64 only.
Expand description

Platform-specific intrinsics for the `riscv64` platform.

See the module documentation for more details.

## Functions

add8 Experimental
Adds packed 8-bit signed numbers, discarding overflow bits
add16 Experimental
Adds packed 16-bit signed numbers, discarding overflow bits
clrs8 Experimental
Count the number of redundant sign bits of the packed 8-bit elements
clrs16 Experimental
Count the number of redundant sign bits of the packed 16-bit elements
clrs32 Experimental
Count the number of redundant sign bits of the packed 32-bit elements
clz8 Experimental
Count the number of leading zero bits of the packed 8-bit elements
clz16 Experimental
Count the number of leading zero bits of the packed 16-bit elements
clz32 Experimental
Count the number of leading zero bits of the packed 32-bit elements
cmpeq8 Experimental
Compare equality for packed 8-bit elements
cmpeq16 Experimental
Compare equality for packed 16-bit elements
cras16 Experimental
Cross adds and subtracts packed 16-bit signed numbers, discarding overflow bits
crsa16 Experimental
Cross subtracts and adds packed 16-bit signed numbers, discarding overflow bits
fence_i⚠Experimental
Generates the `FENCE.I` instruction
frcsr Experimental
Reads the floating-point control and status register `fcsr`
frflags Experimental
Reads the floating-point accrued exception flags register `fflags`
frrm Experimental
Reads the floating-point rounding mode register `frm`
fscsr Experimental
Swaps the floating-point control and status register `fcsr`
fsflags Experimental
Swaps the floating-point accrued exception flags register `fflags`
fsrm Experimental
Swaps the floating-point rounding mode register `frm`
hfence_gvma⚠Experimental
Hypervisor memory management fence for guest physical address and virtual machine
hfence_gvma_all⚠Experimental
Hypervisor memory management fence for all virtual machines and guest physical addresses
hfence_gvma_gaddr⚠Experimental
Hypervisor memory management fence for guest physical address
hfence_gvma_vmid⚠Experimental
Hypervisor memory management fence for given virtual machine
hfence_vvma⚠Experimental
Hypervisor memory management fence for given guest virtual address and guest address space
hfence_vvma_all⚠Experimental
Hypervisor memory management fence for all guest address spaces and guest virtual addresses
hfence_vvma_asid⚠Experimental
Hypervisor memory management fence for given guest address space
hfence_vvma_vaddr⚠Experimental
Hypervisor memory management fence for given guest virtual address
hinval_gvma⚠Experimental
Invalidate hypervisor translation cache for guest physical address and virtual machine
hinval_gvma_all⚠Experimental
Invalidate hypervisor translation cache for all virtual machines and guest physical addresses
hinval_gvma_gaddr⚠Experimental
Invalidate hypervisor translation cache for guest physical address
hinval_gvma_vmid⚠Experimental
Invalidate hypervisor translation cache for given virtual machine
hinval_vvma⚠Experimental
Invalidate hypervisor translation cache for given guest virtual address and guest address space
hinval_vvma_all⚠Experimental
Invalidate hypervisor translation cache for all guest address spaces and guest virtual addresses
hinval_vvma_asid⚠Experimental
Invalidate hypervisor translation cache for given guest address space
hinval_vvma_vaddr⚠Experimental
Invalidate hypervisor translation cache for given guest virtual address
hlv_b⚠Experimental
Loads virtual machine memory by signed byte integer
hlv_bu⚠Experimental
Loads virtual machine memory by unsigned byte integer
hlv_d⚠Experimental
Loads virtual machine memory by double integer
hlv_h⚠Experimental
Loads virtual machine memory by signed half integer
hlv_hu⚠Experimental
Loads virtual machine memory by unsigned half integer
hlv_w⚠Experimental
Loads virtual machine memory by signed word integer
hlv_wu⚠Experimental
Loads virtual machine memory by unsigned word integer
hlvx_hu⚠Experimental
Accesses virtual machine instruction by unsigned half integer
hlvx_wu⚠Experimental
Accesses virtual machine instruction by unsigned word integer
hsv_b⚠Experimental
Stores virtual machine memory by byte integer
hsv_d⚠Experimental
Stores virtual machine memory by double integer
hsv_h⚠Experimental
Stores virtual machine memory by half integer
hsv_w⚠Experimental
Stores virtual machine memory by word integer
kabs8 Experimental
Compute the absolute value of packed 8-bit signed integers
kabs16 Experimental
Compute the absolute value of packed 16-bit signed integers
kadd8 Experimental
Adds packed 8-bit signed numbers, saturating at the numeric bounds
kadd16 Experimental
Adds packed 16-bit signed numbers, saturating at the numeric bounds
kaddh Experimental
Adds signed lower 16-bit content of two registers with Q15 saturation
kcras16 Experimental
Cross adds and subtracts packed 16-bit signed numbers, saturating at the numeric bounds
kcrsa16 Experimental
Cross subtracts and adds packed 16-bit signed numbers, saturating at the numeric bounds
ksll8 Experimental
Logical left shift packed 8-bit elements, saturating at the numeric bounds
ksll16 Experimental
Logical left shift packed 16-bit elements, saturating at the numeric bounds
kslra8 Experimental
Logical saturating left then arithmetic right shift packed 8-bit elements
kslra8u Experimental
Logical saturating left then arithmetic right shift packed 8-bit elements
kslra16 Experimental
Logical saturating left then arithmetic right shift packed 16-bit elements
kslra16u Experimental
Logical saturating left then arithmetic right shift packed 16-bit elements
kstas16 Experimental
Straight adds and subtracts packed 16-bit signed numbers, saturating at the numeric bounds
kstsa16 Experimental
Straight subtracts and adds packed 16-bit signed numbers, saturating at the numeric bounds
ksub8 Experimental
Subtracts packed 8-bit signed numbers, saturating at the numeric bounds
ksub16 Experimental
Subtracts packed 16-bit signed numbers, saturating at the numeric bounds
ksubh Experimental
Subtracts signed lower 16-bit content of two registers with Q15 saturation
nop Experimental
Generates the `NOP` instruction
pause Experimental
Generates the `PAUSE` instruction
pbsad Experimental
Calculate the sum of absolute difference of unsigned 8-bit data elements
pbsada Experimental
Calculate and accumulate the sum of absolute difference of unsigned 8-bit data elements
pkbt16 Experimental
Pack two 16-bit data from bottom and top half from 32-bit chunks
pktb16 Experimental
Pack two 16-bit data from top and bottom half from 32-bit chunks
radd8 Experimental
Halves the sum of packed 8-bit signed numbers, dropping least bits
radd16 Experimental
Halves the sum of packed 16-bit signed numbers, dropping least bits
rcras16 Experimental
Cross halves of adds and subtracts packed 16-bit signed numbers, dropping least bits
rcrsa16 Experimental
Cross halves of subtracts and adds packed 16-bit signed numbers, dropping least bits
rstas16 Experimental
Straight halves of adds and subtracts packed 16-bit signed numbers, dropping least bits
rstsa16 Experimental
Straight halves of subtracts and adds packed 16-bit signed numbers, dropping least bits
rsub8 Experimental
Halves the subtraction result of packed 8-bit signed numbers, dropping least bits
rsub16 Experimental
Halves the subtraction result of packed 16-bit signed numbers, dropping least bits
scmple8 Experimental
Compare whether 8-bit packed signed integers are less than or equal to the others
scmple16 Experimental
Compare whether 16-bit packed signed integers are less than or equal to the others
scmplt8 Experimental
Compare whether 8-bit packed signed integers are less than the others
scmplt16 Experimental
Compare whether 16-bit packed signed integers are less than the others
sfence_inval_ir⚠Experimental
Generates the `SFENCE.INVAL.IR` instruction
sfence_vma⚠Experimental
Supervisor memory management fence for given virtual address and address space
sfence_vma_all⚠Experimental
Supervisor memory management fence for all address spaces and virtual addresses
sfence_vma_asid⚠Experimental
Supervisor memory management fence for given address space
sfence_vma_vaddr⚠Experimental
Supervisor memory management fence for given virtual address
sfence_w_inval⚠Experimental
Generates the `SFENCE.W.INVAL` instruction
sinval_vma⚠Experimental
Invalidate supervisor translation cache for given virtual address and address space
sinval_vma_all⚠Experimental
Invalidate supervisor translation cache for all address spaces and virtual addresses
sinval_vma_asid⚠Experimental
Invalidate supervisor translation cache for given address space
sinval_vma_vaddr⚠Experimental
Invalidate supervisor translation cache for given virtual address
sll8 Experimental
Logical left shift packed 8-bit elements, discarding overflow bits
sll16 Experimental
Logical left shift packed 16-bit elements, discarding overflow bits
sm3p0 Experimental `zksh`
`P0` transformation function as is used in the SM3 hash algorithm
sm3p1 Experimental `zksh`
`P1` transformation function as is used in the SM3 hash algorithm
sm4ed Experimental `zksed`
Accelerates the round function `F` in the SM4 block cipher algorithm
sm4ks Experimental `zksed`
Accelerates the key schedule operation in the SM4 block cipher algorithm
smaqa Experimental
Multiply signed 8-bit elements and add 16-bit elements on results for packed 32-bit chunks
smaqasu Experimental
Multiply signed to unsigned 8-bit and add 16-bit elements on results for packed 32-bit chunks
smax8 Experimental
Get maximum values from 8-bit packed signed integers
smax16 Experimental
Get maximum values from 16-bit packed signed integers
smin8 Experimental
Get minimum values from 8-bit packed signed integers
smin16 Experimental
Get minimum values from 16-bit packed signed integers
sra8 Experimental
Arithmetic right shift packed 8-bit elements without rounding up
sra8u Experimental
Arithmetic right shift packed 8-bit elements with rounding up
sra16 Experimental
Arithmetic right shift packed 16-bit elements without rounding up
sra16u Experimental
Arithmetic right shift packed 16-bit elements with rounding up
srl8 Experimental
Logical right shift packed 8-bit elements without rounding up
srl8u Experimental
Logical right shift packed 8-bit elements with rounding up
srl16 Experimental
Logical right shift packed 16-bit elements without rounding up
srl16u Experimental
Logical right shift packed 16-bit elements with rounding up
stas16 Experimental
Straight adds and subtracts packed 16-bit signed numbers, discarding overflow bits
stsa16 Experimental
Straight subtracts and adds packed 16-bit signed numbers, discarding overflow bits
sub8 Experimental
Subtracts packed 8-bit signed numbers, discarding overflow bits
sub16 Experimental
Subtracts packed 16-bit signed numbers, discarding overflow bits
sunpkd810 Experimental
Unpack first and zeroth into two 16-bit signed halfwords in each 32-bit chunk
sunpkd820 Experimental
Unpack second and zeroth into two 16-bit signed halfwords in each 32-bit chunk
sunpkd830 Experimental
Unpack third and zeroth into two 16-bit signed halfwords in each 32-bit chunk
sunpkd831 Experimental
Unpack third and first into two 16-bit signed halfwords in each 32-bit chunk
sunpkd832 Experimental
Unpack third and second into two 16-bit signed halfwords in each 32-bit chunk
swap8 Experimental
Swap the 8-bit bytes within each 16-bit halfword of a register.
swap16 Experimental
Swap the 16-bit halfwords within each 32-bit word of a register
ucmple8 Experimental
Compare whether 8-bit packed unsigned integers are less than or equal to the others
ucmple16 Experimental
Compare whether 16-bit packed unsigned integers are less than or equal to the others
ucmplt8 Experimental
Compare whether 8-bit packed unsigned integers are less than the others
ucmplt16 Experimental
Compare whether 16-bit packed unsigned integers are less than the others
ukadd8 Experimental
Adds packed 8-bit unsigned numbers, saturating at the numeric bounds
ukadd16 Experimental
Adds packed 16-bit unsigned numbers, saturating at the numeric bounds
ukaddh Experimental
Adds signed lower 16-bit content of two registers with U16 saturation
ukcras16 Experimental
Cross adds and subtracts packed 16-bit unsigned numbers, saturating at the numeric bounds
ukcrsa16 Experimental
Cross subtracts and adds packed 16-bit unsigned numbers, saturating at the numeric bounds
ukstas16 Experimental
Straight adds and subtracts packed 16-bit unsigned numbers, saturating at the numeric bounds
ukstsa16 Experimental
Straight subtracts and adds packed 16-bit unsigned numbers, saturating at the numeric bounds
uksub8 Experimental
Subtracts packed 8-bit unsigned numbers, saturating at the numeric bounds
uksub16 Experimental
Subtracts packed 16-bit unsigned numbers, saturating at the numeric bounds
uksubh Experimental
Subtracts signed lower 16-bit content of two registers with U16 saturation
umaqa Experimental
Multiply unsigned 8-bit elements and add 16-bit elements on results for packed 32-bit chunks
umax8 Experimental
Get maximum values from 8-bit packed unsigned integers
umax16 Experimental
Get maximum values from 16-bit packed unsigned integers
umin8 Experimental
Get minimum values from 8-bit packed unsigned integers
umin16 Experimental
Get minimum values from 16-bit packed unsigned integers
uradd8 Experimental
Halves the sum of packed 8-bit unsigned numbers, dropping least bits
uradd16 Experimental
Halves the sum of packed 16-bit unsigned numbers, dropping least bits
urcras16 Experimental
Cross halves of adds and subtracts packed 16-bit unsigned numbers, dropping least bits
urcrsa16 Experimental
Cross halves of subtracts and adds packed 16-bit unsigned numbers, dropping least bits
urstas16 Experimental
Straight halves of adds and subtracts packed 16-bit unsigned numbers, dropping least bits
urstsa16 Experimental
Straight halves of subtracts and adds packed 16-bit unsigned numbers, dropping least bits
ursub8 Experimental
Halves the subtraction result of packed 8-bit unsigned numbers, dropping least bits
ursub16 Experimental
Halves the subtraction result of packed 16-bit unsigned numbers, dropping least bits
wfi⚠Experimental
Generates the `WFI` instruction
zunpkd810 Experimental
Unpack first and zeroth into two 16-bit unsigned halfwords in each 32-bit chunk
zunpkd820 Experimental
Unpack second and zeroth into two 16-bit unsigned halfwords in each 32-bit chunk
zunpkd830 Experimental
Unpack third and zeroth into two 16-bit unsigned halfwords in each 32-bit chunk
zunpkd831 Experimental
Unpack third and first into two 16-bit unsigned halfwords in each 32-bit chunk
zunpkd832 Experimental
Unpack third and second into two 16-bit unsigned halfwords in each 32-bit chunk