Nuclei Default SIMD DSP Additional Instructions

__STATIC_FORCEINLINE unsigned long __RV_EXPD80 (unsigned long a)
__STATIC_FORCEINLINE unsigned long __RV_EXPD81 (unsigned long a)
__STATIC_FORCEINLINE unsigned long __RV_EXPD82 (unsigned long a)
__STATIC_FORCEINLINE unsigned long __RV_EXPD83 (unsigned long a)
group Nuclei Default SIMD DSP Additional Instructions

(RV32 & RV64)Nuclei Customized DSP Instructions

This is Nuclei customized DSP instructions for both RV32 and RV64

Functions

__STATIC_FORCEINLINE unsigned long __RV_EXPD80 (unsigned long a)

EXPD80 (Expand and Copy Byte 0 to 32bit(when rv32) or 64bit(when rv64))

Type: DSP

Syntax:

EXPD80 Rd, Rs1

Purpose

:

When rv32, Copy 8-bit data from 32-bit chunks into 4 bytes in a register. When rv64, Copy 8-bit data from 64-bit chunks into 8 bytes in a register.

Description

:

Moves Rs1.B[0][7:0] to Rd.[0][7:0], Rd.[1][7:0], Rd.[2][7:0], Rd.[3][7:0]

Operations:

Rd.W[x][31:0] = CONCAT(Rs1.B[0][7:0], Rs1.B[0][7:0], Rs1.B[0][7:0], Rs1.B[0][7:0]);
for RV32: x=0

Parameters:

a[in] unsigned long type of value stored in a

Returns:

value stored in unsigned long type

__STATIC_FORCEINLINE unsigned long __RV_EXPD81 (unsigned long a)

EXPD81 (Expand and Copy Byte 1 to 32bit(rv32) or 64bit(when rv64))

Type: DSP

Syntax:

EXPD81 Rd, Rs1

Purpose

:

Copy 8-bit data from 32-bit chunks into 4 bytes in a register.

Description

:

Moves Rs1.B[1][7:0] to Rd.[0][7:0], Rd.[1][7:0], Rd.[2][7:0], Rd.[3][7:0]

Operations:

Rd.W[x][31:0] = CONCAT(Rs1.B[1][7:0], Rs1.B[1][7:0], Rs1.B[1][7:0], Rs1.B[1][7:0]);
for RV32: x=0

Parameters:

a[in] unsigned long type of value stored in a

Returns:

value stored in unsigned long type

__STATIC_FORCEINLINE unsigned long __RV_EXPD82 (unsigned long a)

EXPD82 (Expand and Copy Byte 2 to 32bit(rv32) or 64bit(when rv64))

Type: DSP

Syntax:

EXPD82 Rd, Rs1

Purpose

:

Copy 8-bit data from 32-bit chunks into 4 bytes in a register.

Description

:

Moves Rs1.B[2][7:0] to Rd.[0][7:0], Rd.[1][7:0], Rd.[2][7:0], Rd.[3][7:0]

Operations:

Rd.W[x][31:0] = CONCAT(Rs1.B[2][7:0], Rs1.B[2][7:0], Rs1.B[2][7:0], Rs1.B[2][7:0]);
for RV32: x=0

Parameters:

a[in] unsigned long type of value stored in a

Returns:

value stored in unsigned long type

__STATIC_FORCEINLINE unsigned long __RV_EXPD83 (unsigned long a)

EXPD83 (Expand and Copy Byte 3 to 32bit(rv32) or 64bit(when rv64))

Type: DSP

Syntax:

EXPD83 Rd, Rs1

Purpose

:

Copy 8-bit data from 32-bit chunks into 4 bytes in a register.

Description

:

Moves Rs1.B[3][7:0] to Rd.[0][7:0], Rd.[1][7:0], Rd.[2][7:0], Rd.[3][7:0]

Operations:

Rd.W[x][31:0] = CONCAT(Rs1.B[3][7:0], Rs1.B[3][7:0], Rs1.B[3][7:0], Rs1.B[3][7:0]);
for RV32: x=0

Parameters:

a[in] unsigned long type of value stored in a

Returns:

value stored in unsigned long type