# Module core::arch::riscv32

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

Platform-specific intrinsics for the `riscv32` 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_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
- 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_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