🔬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

add8Experimental

Adds packed 8-bit signed numbers, discarding overflow bits

add16Experimental

Adds packed 16-bit signed numbers, discarding overflow bits

clrs8Experimental

Count the number of redundant sign bits of the packed 8-bit elements

clrs16Experimental

Count the number of redundant sign bits of the packed 16-bit elements

clrs32Experimental

Count the number of redundant sign bits of the packed 32-bit elements

clz8Experimental

Count the number of leading zero bits of the packed 8-bit elements

clz16Experimental

Count the number of leading zero bits of the packed 16-bit elements

clz32Experimental

Count the number of leading zero bits of the packed 32-bit elements

cmpeq8Experimental

Compare equality for packed 8-bit elements

cmpeq16Experimental

Compare equality for packed 16-bit elements

cras16Experimental

Cross adds and subtracts packed 16-bit signed numbers, discarding overflow bits

crsa16Experimental

Cross subtracts and adds packed 16-bit signed numbers, discarding overflow bits

Generates the

`FENCE.I`

instructionfrcsrExperimental

Reads the floating-point control and status register

`fcsr`

frflagsExperimental

Reads the floating-point accrued exception flags register

`fflags`

frrmExperimental

Reads the floating-point rounding mode register

`frm`

fscsrExperimental

Swaps the floating-point control and status register

`fcsr`

fsflagsExperimental

Swaps the floating-point accrued exception flags register

`fflags`

fsrmExperimental

Swaps the floating-point rounding mode register

`frm`

Hypervisor memory management fence for guest physical address and virtual machine

Hypervisor memory management fence for all virtual machines and guest physical addresses

Hypervisor memory management fence for guest physical address

Hypervisor memory management fence for given virtual machine

Hypervisor memory management fence for given guest virtual address and guest address space

Hypervisor memory management fence for all guest address spaces and guest virtual addresses

Hypervisor memory management fence for given guest address space

Hypervisor memory management fence for given guest virtual address

Invalidate hypervisor translation cache for guest physical address and virtual machine

Invalidate hypervisor translation cache for all virtual machines and guest physical addresses

Invalidate hypervisor translation cache for guest physical address

Invalidate hypervisor translation cache for given virtual machine

Invalidate hypervisor translation cache for given guest virtual address and guest address space

Invalidate hypervisor translation cache for all guest address spaces and guest virtual addresses

Invalidate hypervisor translation cache for given guest address space

Invalidate hypervisor translation cache for given guest virtual address

Loads virtual machine memory by signed byte integer

Loads virtual machine memory by unsigned byte integer

Loads virtual machine memory by double integer

Loads virtual machine memory by signed half integer

Loads virtual machine memory by unsigned half integer

Loads virtual machine memory by signed word integer

Loads virtual machine memory by unsigned word integer

Accesses virtual machine instruction by unsigned half integer

Accesses virtual machine instruction by unsigned word integer

Stores virtual machine memory by byte integer

Stores virtual machine memory by double integer

Stores virtual machine memory by half integer

Stores virtual machine memory by word integer

kabs8Experimental

Compute the absolute value of packed 8-bit signed integers

kabs16Experimental

Compute the absolute value of packed 16-bit signed integers

kadd8Experimental

Adds packed 8-bit signed numbers, saturating at the numeric bounds

kadd16Experimental

Adds packed 16-bit signed numbers, saturating at the numeric bounds

kaddhExperimental

Adds signed lower 16-bit content of two registers with Q15 saturation

kcras16Experimental

Cross adds and subtracts packed 16-bit signed numbers, saturating at the numeric bounds

kcrsa16Experimental

Cross subtracts and adds packed 16-bit signed numbers, saturating at the numeric bounds

ksll8Experimental

Logical left shift packed 8-bit elements, saturating at the numeric bounds

ksll16Experimental

Logical left shift packed 16-bit elements, saturating at the numeric bounds

kslra8Experimental

Logical saturating left then arithmetic right shift packed 8-bit elements

kslra8uExperimental

Logical saturating left then arithmetic right shift packed 8-bit elements

kslra16Experimental

Logical saturating left then arithmetic right shift packed 16-bit elements

kslra16uExperimental

Logical saturating left then arithmetic right shift packed 16-bit elements

kstas16Experimental

Straight adds and subtracts packed 16-bit signed numbers, saturating at the numeric bounds

kstsa16Experimental

Straight subtracts and adds packed 16-bit signed numbers, saturating at the numeric bounds

ksub8Experimental

Subtracts packed 8-bit signed numbers, saturating at the numeric bounds

ksub16Experimental

Subtracts packed 16-bit signed numbers, saturating at the numeric bounds

ksubhExperimental

Subtracts signed lower 16-bit content of two registers with Q15 saturation

nopExperimental

Generates the

`NOP`

instructionpauseExperimental

Generates the

`PAUSE`

instructionpbsadExperimental

Calculate the sum of absolute difference of unsigned 8-bit data elements

pbsadaExperimental

Calculate and accumulate the sum of absolute difference of unsigned 8-bit data elements

pkbt16Experimental

Pack two 16-bit data from bottom and top half from 32-bit chunks

pktb16Experimental

Pack two 16-bit data from top and bottom half from 32-bit chunks

radd8Experimental

Halves the sum of packed 8-bit signed numbers, dropping least bits

radd16Experimental

Halves the sum of packed 16-bit signed numbers, dropping least bits

rcras16Experimental

Cross halves of adds and subtracts packed 16-bit signed numbers, dropping least bits

rcrsa16Experimental

Cross halves of subtracts and adds packed 16-bit signed numbers, dropping least bits

rstas16Experimental

Straight halves of adds and subtracts packed 16-bit signed numbers, dropping least bits

rstsa16Experimental

Straight halves of subtracts and adds packed 16-bit signed numbers, dropping least bits

rsub8Experimental

Halves the subtraction result of packed 8-bit signed numbers, dropping least bits

rsub16Experimental

Halves the subtraction result of packed 16-bit signed numbers, dropping least bits

scmple8Experimental

Compare whether 8-bit packed signed integers are less than or equal to the others

scmple16Experimental

Compare whether 16-bit packed signed integers are less than or equal to the others

scmplt8Experimental

Compare whether 8-bit packed signed integers are less than the others

scmplt16Experimental

Compare whether 16-bit packed signed integers are less than the others

Generates the

`SFENCE.INVAL.IR`

instructionSupervisor memory management fence for given virtual address and address space

Supervisor memory management fence for all address spaces and virtual addresses

Supervisor memory management fence for given address space

Supervisor memory management fence for given virtual address

Generates the

`SFENCE.W.INVAL`

instructionInvalidate supervisor translation cache for given virtual address and address space

Invalidate supervisor translation cache for all address spaces and virtual addresses

Invalidate supervisor translation cache for given address space

Invalidate supervisor translation cache for given virtual address

sll8Experimental

Logical left shift packed 8-bit elements, discarding overflow bits

sll16Experimental

Logical left shift packed 16-bit elements, discarding overflow bits

`P0`

transformation function as is used in the SM3 hash algorithm`P1`

transformation function as is used in the SM3 hash algorithmAccelerates the round function

`F`

in the SM4 block cipher algorithmAccelerates the key schedule operation in the SM4 block cipher algorithm

smaqaExperimental

Multiply signed 8-bit elements and add 16-bit elements on results for packed 32-bit chunks

smaqasuExperimental

Multiply signed to unsigned 8-bit and add 16-bit elements on results for packed 32-bit chunks

smax8Experimental

Get maximum values from 8-bit packed signed integers

smax16Experimental

Get maximum values from 16-bit packed signed integers

smin8Experimental

Get minimum values from 8-bit packed signed integers

smin16Experimental

Get minimum values from 16-bit packed signed integers

sra8Experimental

Arithmetic right shift packed 8-bit elements without rounding up

sra8uExperimental

Arithmetic right shift packed 8-bit elements with rounding up

sra16Experimental

Arithmetic right shift packed 16-bit elements without rounding up

sra16uExperimental

Arithmetic right shift packed 16-bit elements with rounding up

srl8Experimental

Logical right shift packed 8-bit elements without rounding up

srl8uExperimental

Logical right shift packed 8-bit elements with rounding up

srl16Experimental

Logical right shift packed 16-bit elements without rounding up

srl16uExperimental

Logical right shift packed 16-bit elements with rounding up

stas16Experimental

Straight adds and subtracts packed 16-bit signed numbers, discarding overflow bits

stsa16Experimental

Straight subtracts and adds packed 16-bit signed numbers, discarding overflow bits

sub8Experimental

Subtracts packed 8-bit signed numbers, discarding overflow bits

sub16Experimental

Subtracts packed 16-bit signed numbers, discarding overflow bits

sunpkd810Experimental

Unpack first and zeroth into two 16-bit signed halfwords in each 32-bit chunk

sunpkd820Experimental

Unpack second and zeroth into two 16-bit signed halfwords in each 32-bit chunk

sunpkd830Experimental

Unpack third and zeroth into two 16-bit signed halfwords in each 32-bit chunk

sunpkd831Experimental

Unpack third and first into two 16-bit signed halfwords in each 32-bit chunk

sunpkd832Experimental

Unpack third and second into two 16-bit signed halfwords in each 32-bit chunk

swap8Experimental

Swap the 8-bit bytes within each 16-bit halfword of a register.

swap16Experimental

Swap the 16-bit halfwords within each 32-bit word of a register

ucmple8Experimental

Compare whether 8-bit packed unsigned integers are less than or equal to the others

ucmple16Experimental

Compare whether 16-bit packed unsigned integers are less than or equal to the others

ucmplt8Experimental

Compare whether 8-bit packed unsigned integers are less than the others

ucmplt16Experimental

Compare whether 16-bit packed unsigned integers are less than the others

ukadd8Experimental

Adds packed 8-bit unsigned numbers, saturating at the numeric bounds

ukadd16Experimental

Adds packed 16-bit unsigned numbers, saturating at the numeric bounds

ukaddhExperimental

Adds signed lower 16-bit content of two registers with U16 saturation

ukcras16Experimental

Cross adds and subtracts packed 16-bit unsigned numbers, saturating at the numeric bounds

ukcrsa16Experimental

Cross subtracts and adds packed 16-bit unsigned numbers, saturating at the numeric bounds

ukstas16Experimental

Straight adds and subtracts packed 16-bit unsigned numbers, saturating at the numeric bounds

ukstsa16Experimental

Straight subtracts and adds packed 16-bit unsigned numbers, saturating at the numeric bounds

uksub8Experimental

Subtracts packed 8-bit unsigned numbers, saturating at the numeric bounds

uksub16Experimental

Subtracts packed 16-bit unsigned numbers, saturating at the numeric bounds

uksubhExperimental

Subtracts signed lower 16-bit content of two registers with U16 saturation

umaqaExperimental

Multiply unsigned 8-bit elements and add 16-bit elements on results for packed 32-bit chunks

umax8Experimental

Get maximum values from 8-bit packed unsigned integers

umax16Experimental

Get maximum values from 16-bit packed unsigned integers

umin8Experimental

Get minimum values from 8-bit packed unsigned integers

umin16Experimental

Get minimum values from 16-bit packed unsigned integers

uradd8Experimental

Halves the sum of packed 8-bit unsigned numbers, dropping least bits

uradd16Experimental

Halves the sum of packed 16-bit unsigned numbers, dropping least bits

urcras16Experimental

Cross halves of adds and subtracts packed 16-bit unsigned numbers, dropping least bits

urcrsa16Experimental

Cross halves of subtracts and adds packed 16-bit unsigned numbers, dropping least bits

urstas16Experimental

Straight halves of adds and subtracts packed 16-bit unsigned numbers, dropping least bits

urstsa16Experimental

Straight halves of subtracts and adds packed 16-bit unsigned numbers, dropping least bits

ursub8Experimental

Halves the subtraction result of packed 8-bit unsigned numbers, dropping least bits

ursub16Experimental

Halves the subtraction result of packed 16-bit unsigned numbers, dropping least bits

Generates the

`WFI`

instructionzunpkd810Experimental

Unpack first and zeroth into two 16-bit unsigned halfwords in each 32-bit chunk

zunpkd820Experimental

Unpack second and zeroth into two 16-bit unsigned halfwords in each 32-bit chunk

zunpkd830Experimental

Unpack third and zeroth into two 16-bit unsigned halfwords in each 32-bit chunk

zunpkd831Experimental

Unpack third and first into two 16-bit unsigned halfwords in each 32-bit chunk

zunpkd832Experimental

Unpack third and second into two 16-bit unsigned halfwords in each 32-bit chunk