NMSIS-Core
Version 1.2.0
NMSIS-Core support for Nuclei processor-based devices
|
(RV32 only)Nuclei Customized N3 DSP Instructions More...
Functions | |
__STATIC_FORCEINLINE unsigned long long | __RV_DKMMAC (unsigned long long t, unsigned long long a, unsigned long long b) |
DKMMAC (64-bit MSW 32x32 Signed Multiply and Saturating Add) More... | |
__STATIC_FORCEINLINE unsigned long long | __RV_DKMMAC_U (unsigned long long t, unsigned long long a, unsigned long long b) |
DKMMACU (64-bit MSW 32x32 Unsigned Multiply and Saturating Add) More... | |
__STATIC_FORCEINLINE unsigned long long | __RV_DKMMSB (unsigned long long t, unsigned long long a, unsigned long long b) |
DKMMSB (64-bit MSW 32x32 Signed Multiply and Saturating Sub) More... | |
__STATIC_FORCEINLINE unsigned long long | __RV_DKMMSB_U (unsigned long long t, unsigned long long a, unsigned long long b) |
DKMMSBU (64-bit MSW 32x32 Unsigned Multiply and Saturating Sub) More... | |
__STATIC_FORCEINLINE unsigned long long | __RV_DKMADA (unsigned long long t, unsigned long long a, unsigned long long b) |
DKMADA (Saturating Signed Multiply Two Halfs and Two Adds) More... | |
__STATIC_FORCEINLINE unsigned long long | __RV_DKMAXDA (unsigned long long t, unsigned long long a, unsigned long long b) |
DKMAXDA (Two Cross 16x16 with 32-bit Signed Double Add) More... | |
__STATIC_FORCEINLINE unsigned long long | __RV_DKMADS (unsigned long long t, unsigned long long a, unsigned long long b) |
DKMADS (Two 16x16 with 32-bit Signed Add and Sub) More... | |
__STATIC_FORCEINLINE unsigned long long | __RV_DKMADRS (unsigned long long t, unsigned long long a, unsigned long long b) |
DKMADRS (Two 16x16 with 32-bit Signed Add and Reversed Sub) More... | |
__STATIC_FORCEINLINE unsigned long long | __RV_DKMAXDS (unsigned long long t, unsigned long long a, unsigned long long b) |
DKMAXDS (Saturating Signed Crossed Multiply Two Halfs & Subtract & Add) More... | |
__STATIC_FORCEINLINE unsigned long long | __RV_DKMSDA (unsigned long long t, unsigned long long a, unsigned long long b) |
DKMSDA (Two 16x16 with 32-bit Signed Double Sub) More... | |
__STATIC_FORCEINLINE unsigned long long | __RV_DKMSXDA (unsigned long long t, unsigned long long a, unsigned long long b) |
DKMSXDA (Two Cross 16x16 with 32-bit Signed Double Sub) More... | |
__STATIC_FORCEINLINE unsigned long long | __RV_DSMAQA (unsigned long long t, unsigned long long a, unsigned long long b) |
DSMAQA (Four Signed 8x8 with 32-bit Signed Add) More... | |
__STATIC_FORCEINLINE unsigned long long | __RV_DSMAQA_SU (unsigned long long t, unsigned long long a, unsigned long long b) |
DSMAQASU (Four Signed 8 x Unsigned 8 with 32-bit Signed Add) More... | |
__STATIC_FORCEINLINE unsigned long long | __RV_DUMAQA (unsigned long long t, unsigned long long a, unsigned long long b) |
DUMAQA (Four Unsigned 8x8 with 32-bit Unsigned Add) More... | |
__STATIC_FORCEINLINE long long | __RV_DKMDA32 (unsigned long long a, unsigned long long b) |
DKMDA32 (Two Signed 32x32 with 64-bit Saturation Add) More... | |
__STATIC_FORCEINLINE long long | __RV_DKMXDA32 (unsigned long long a, unsigned long long b) |
DKMXDA32 (Two Cross Signed 32x32 with 64-bit Saturation Add) More... | |
__STATIC_FORCEINLINE long long | __RV_DKMADA32 (long long t, unsigned long long a, unsigned long long b) |
DKMADA32 (Two Signed 32x32 with 64-bit Saturation Add) More... | |
__STATIC_FORCEINLINE long long | __RV_DKMAXDA32 (long long t, unsigned long long a, unsigned long long b) |
DKMAXDA32 (Two Cross Signed 32x32 with 64-bit Saturation Add) More... | |
__STATIC_FORCEINLINE long long | __RV_DKMADS32 (long long t, unsigned long long a, unsigned long long b) |
DKMADS32 (Two Signed 32x32 with 64-bit Saturation Add and Sub) More... | |
__STATIC_FORCEINLINE long long | __RV_DKMADRS32 (long long t, unsigned long long a, unsigned long long b) |
DKMADRS32 (Two Signed 32x32 with 64-bit Saturation Revered Add and Sub) More... | |
__STATIC_FORCEINLINE long long | __RV_DKMAXDS32 (long long t, unsigned long long a, unsigned long long b) |
DKMAXDS32 (Two Cross Signed 32x32 with 64-bit Saturation Add and Sub) More... | |
__STATIC_FORCEINLINE long long | __RV_DKMSDA32 (long long t, unsigned long long a, unsigned long long b) |
DKMSDA32 (Two Signed 32x32 with 64-bit Saturation Sub) More... | |
__STATIC_FORCEINLINE long long | __RV_DKMSXDA32 (long long t, unsigned long long a, unsigned long long b) |
DKMSXDA32 (Two Cross Signed 32x32 with 64-bit Saturation Sub) More... | |
__STATIC_FORCEINLINE long long | __RV_DSMDS32 (unsigned long long a, unsigned long long b) |
DSMDS32 (Two Signed 32x32 with 64-bit Sub) More... | |
__STATIC_FORCEINLINE long long | __RV_DSMDRS32 (unsigned long long a, unsigned long long b) |
DSMDRS32 (Two Signed 32x32 with 64-bit Revered Sub) More... | |
__STATIC_FORCEINLINE long long | __RV_DSMXDS32 (unsigned long long a, unsigned long long b) |
DSMXDS32 (Two Cross Signed 32x32 with 64-bit Sub) More... | |
__STATIC_FORCEINLINE long long | __RV_DSMALDA (long long t, unsigned long long a, unsigned long long b) |
DSMALDA (Four Signed 16x16 with 64-bit Add) More... | |
__STATIC_FORCEINLINE long long | __RV_DSMALXDA (long long t, unsigned long long a, unsigned long long b) |
DSMALXDA (Four Signed 16x16 with 64-bit Add) More... | |
__STATIC_FORCEINLINE long long | __RV_DSMALDS (long long t, unsigned long long a, unsigned long long b) |
DSMALDS (Four Signed 16x16 with 64-bit Add and Sub) More... | |
__STATIC_FORCEINLINE long long | __RV_DSMALDRS (long long t, unsigned long long a, unsigned long long b) |
DSMALDRS (Four Signed 16x16 with 64-bit Add and Revered Sub) More... | |
__STATIC_FORCEINLINE long long | __RV_DSMALXDS (long long t, unsigned long long a, unsigned long long b) |
DSMALXDS (Four Cross Signed 16x16 with 64-bit Add and Sub) More... | |
__STATIC_FORCEINLINE long long | __RV_DSMSLDA (long long t, unsigned long long a, unsigned long long b) |
DSMSLDA (Four Signed 16x16 with 64-bit Sub) More... | |
__STATIC_FORCEINLINE long long | __RV_DSMSLXDA (long long t, unsigned long long a, unsigned long long b) |
DSMSLXDA (Four Cross Signed 16x16 with 64-bit Sub) More... | |
__STATIC_FORCEINLINE long long | __RV_DDSMAQA (long long t, unsigned long long a, unsigned long long b) |
DDSMAQA (Eight Signed 8x8 with 64-bit Add) More... | |
__STATIC_FORCEINLINE long long | __RV_DDSMAQASU (long long t, unsigned long long a, unsigned long long b) |
DDSMAQASU (Eight Signed 8 x Unsigned 8 with 64-bit Add) More... | |
__STATIC_FORCEINLINE long long | __RV_DDUMAQA (long long t, unsigned long long a, unsigned long long b) |
DDUMAQA (Eight Unsigned 8x8 with 64-bit Unsigned Add) More... | |
__STATIC_FORCEINLINE long | __RV_DSMA32_U (unsigned long long a, unsigned long long b) |
DSMA32.u (64-bit SIMD 32-bit Signed Multiply Addition With Rounding and Clip) More... | |
__STATIC_FORCEINLINE long | __RV_DSMXS32_U (unsigned long long a, unsigned long long b) |
DSMXS32.u (64-bit SIMD 32-bit Signed Multiply Cross Subtraction With Rounding and Clip) More... | |
__STATIC_FORCEINLINE long | __RV_DSMXA32_U (unsigned long long a, unsigned long long b) |
DSMXA32.u (64-bit SIMD 32-bit Signed Cross Multiply Addition with Rounding and Clip) More... | |
__STATIC_FORCEINLINE long | __RV_DSMS32_U (unsigned long long a, unsigned long long b) |
DSMS32.u (64-bit SIMD 32-bit Signed Multiply Subtraction with Rounding and Clip) More... | |
__STATIC_FORCEINLINE long | __RV_DSMADA16 (long long t, unsigned long long a, unsigned long long b) |
DSMADA16 (Signed Multiply Two Halfs and Two Adds 32-bit) More... | |
__STATIC_FORCEINLINE long | __RV_DSMAXDA16 (long long t, unsigned long long a, unsigned long long b) |
DSMAXDA16 (Signed Crossed Multiply Two Halfs and Two Adds 32-bit) More... | |
__STATIC_FORCEINLINE unsigned long long | __RV_DKSMS32_U (unsigned long long t, unsigned long long a, unsigned long long b) |
DKSMS32.u (Two Signed Multiply Shift-clip and Saturation with Rounding) More... | |
__STATIC_FORCEINLINE long | __RV_DMADA32 (long long t, unsigned long long a, unsigned long long b) |
DMADA32 ((Two Cross Signed 32x32 with 64-bit Add and Clip to 32-bit) More... | |
__STATIC_FORCEINLINE long long | __RV_DSMALBB (long long t, unsigned long long a, unsigned long long b) |
DSMALBB (Signed Multiply Bottom Halfs & Add 64-bit) More... | |
__STATIC_FORCEINLINE long long | __RV_DSMALBT (long long t, unsigned long long a, unsigned long long b) |
DSMALBT (Signed Multiply Bottom Half & Top Half & Add 64-bit) More... | |
__STATIC_FORCEINLINE long long | __RV_DSMALTT (long long t, unsigned long long a, unsigned long long b) |
DSMALTT (Signed Multiply Top Half & Add 64-bit) More... | |
__STATIC_FORCEINLINE long long | __RV_DKMABB32 (long long t, unsigned long long a, unsigned long long b) |
DKMABB32 (Saturating Signed Multiply Bottom Words & Add) More... | |
__STATIC_FORCEINLINE long long | __RV_DKMABT32 (long long t, unsigned long long a, unsigned long long b) |
DKMABT32 (Saturating Signed Multiply Bottom & Top Words & Add) More... | |
__STATIC_FORCEINLINE long long | __RV_DKMATT32 (long long t, unsigned long long a, unsigned long long b) |
DKMATT32 (Saturating Signed Multiply Bottom & Top Words & Add) More... | |
(RV32 only)Nuclei Customized N3 DSP Instructions
This is Nuclei customized DSP N3 instructions only for RV32
__STATIC_FORCEINLINE long long __RV_DDSMAQA | ( | long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DDSMAQA (Eight Signed 8x8 with 64-bit Add)
Type: DSP
Syntax:
Purpose:
Do eight signed 8x8 and add signed multiplication results and a third register. The results are written into Rd.
Description:
Do eight signed 8-bit multiplications from eight 8-bit chunks of two registers; and then adds the eight 16-bit results and the content of 64-bit chunks of a third register.
Operations:
[in] | t | long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 23123 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE long long __RV_DDSMAQASU | ( | long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DDSMAQASU (Eight Signed 8 x Unsigned 8 with 64-bit Add)
Type: DSP
Syntax:
Purpose:
Do eight signed 8 x unsigned 8 and add signed multiplication results and a third register. The results are written into Rd.
Description:
Do eight signed 8 x unsigned 8 and add signed multiplication results and a third register; and then adds the eight 16-bit results and the content of 64-bit chunks of a third register.
Operations:
[in] | t | long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 23174 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE long long __RV_DDUMAQA | ( | long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DDUMAQA (Eight Unsigned 8x8 with 64-bit Unsigned Add)
Type: DSP
Syntax:
Purpose:
Do eight unsigned 8x8 and add unsigned multiplication results and a third register. The results are written into Rd.
Description:
Do eight unsigned 8x8 and add unsigned multiplication results and a third register; and then adds the eight 16-bit results and the content of 64-bit chunks of a third register.
Operations:
[in] | t | long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 23225 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE long long __RV_DKMABB32 | ( | long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DKMABB32 (Saturating Signed Multiply Bottom Words & Add)
Type: SIMD
Syntax:
Purpose:
Multiply the signed 32-bit element in a register with the 32-bit element in another register and add the result to the content of 64-bit data in the third register. The addition result may besaturated and is written to the third register.
Description:
For the DKMABB32
instruction, it multiplies the bottom 32-bit element in Rs1 with the bottom 32-bit element in Rs2 The multiplication result is added to the content of 64-bit data in Rd. If the addition result is beyond the Q63 number range (-2^63 <= Q63 <= 2^63-1), it is saturated to the range and the OV bit is set to 1. The result after saturation is written to Rd. The 32-bit contents of Rs1 and Rs2 are treated as signed integers.
Operations:
[in] | t | long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 23730 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE long long __RV_DKMABT32 | ( | long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DKMABT32 (Saturating Signed Multiply Bottom & Top Words & Add)
Type: SIMD
Syntax:
Purpose:
Multiply the signed 32-bit element in a register with the 32-bit element in another register and add the result to the content of 64-bit data in the third register. The addition result may be saturated and is written to the third register.
Description:
For the DKMABT32
instruction, it multiplies the bottom 32-bit element in Rs1 with the top 32-bit element in Rs2 The multiplication result is added to the content of 64-bit data in Rd. If the addition result is beyond the Q63 number range (-2^63 <= Q63 <= 2^63-1), it is saturated to the range and the OV bit is set to 1. The result after saturation is written to Rd. The 32-bit contents of Rs1 and Rs2 are treated as signed integers.
Operations:
[in] | t | long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 23778 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE unsigned long long __RV_DKMADA | ( | unsigned long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DKMADA (Saturating Signed Multiply Two Halfs and Two Adds)
Type: DSP
Syntax:
Purpose:
Do two 16x16 with 32-bit signed double addition simultaneously. The results are written into Rd.
Description:
It multiplies the bottom 16-bit content of 32-bit elements in Rs1 with the bottom 16-bit content of 32-bit elements in Rs2 and then adds the result to the result of multiplying the top 16-bit content of 32-bit elements in Rs1 with the top 16-bit content of 32-bit elements in Rs2.
Operations:
[in] | t | unsigned long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 21809 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE long long __RV_DKMADA32 | ( | long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DKMADA32 (Two Signed 32x32 with 64-bit Saturation Add)
Type: DSP
Syntax:
Purpose:
Do two signed 32x32 and add the signed multiplication results and a third register with Q63 saturation. The results are written into Rd.
Description:
It multiplies the bottom 32-bit element of Rs1 with the bottom 32-bit element of Rs2 and then adds the result to the result of multiplying the top 32-bit element of Rs1 with the top 32-bit element of Rs2.
Operations:
[in] | t | long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 22360 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE unsigned long long __RV_DKMADRS | ( | unsigned long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DKMADRS (Two 16x16 with 32-bit Signed Add and Reversed Sub)
Type: DSP
Syntax:
Purpose:
Do two 16x16 with 32-bit signed addition and revered subtraction simultaneously. The results are written into Rd.
Description:
it multiplies the top 16-bit content of 32-bit elements in Rs1 with the top 16-bit content of 32-bit elements in Rs2 and then subtracts the result from the result of multiplying the bottom 16-bit content of 32-bit elements in Rs1 with the bottom 16-bit content of 32- bit elements in Rs2
Operations:
[in] | t | unsigned long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 21949 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE long long __RV_DKMADRS32 | ( | long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DKMADRS32 (Two Signed 32x32 with 64-bit Saturation Revered Add and Sub)
Type: DSP
Syntax:
Purpose:
Do two signed 32x32 and add the signed multiplication results and a third register with Q63 saturation. The results are written into Rd.Do two signed 32x32 and subtraction the top signed multiplication results and add bottom signed multiplication results and add a third register with Q63 saturation. The results are written into Rd.
Description:
It multiplies the top 32-bit element in Rs1 with the top 32-bit element in Rs2 and then subtracts the result from the result of multiplying the bottom 32-bit element in Rs1 with the bottom 32-bit element in Rs2.
Operations:
[in] | t | long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 22491 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE unsigned long long __RV_DKMADS | ( | unsigned long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DKMADS (Two 16x16 with 32-bit Signed Add and Sub)
Type: DSP
Syntax:
Purpose:
Do two 16x16 with 32-bit signed addition and subtraction simultaneously. The results are written into Rd.
Description:
It multiplies the bottom 16-bit content of 32-bit elements in Rs1 with the bottom 16-bit content of 32-bit elements in Rs2 and then subtracts the result from the result of multiplying the top 16-bit content of 32-bit elements in Rs1 with the top 16-bit content of 32-bit elements in Rs2.
Operations:
[in] | t | unsigned long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 21902 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE long long __RV_DKMADS32 | ( | long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DKMADS32 (Two Signed 32x32 with 64-bit Saturation Add and Sub)
Type: DSP
Syntax:
Purpose:
Do two signed 32x32 and add the top signed multiplication results and subtraction bottom signed multiplication results and add a third register with Q63 saturation. The results are written into Rd.
Description:
It multiplies the top 32-bit element in Rs1 with the bottom 32-bit element in Rs2 and then subtracts the result to the result of multiplying the top 32-bit element in Rs1 with the top 32-bit element in Rs2.
Operations:
[in] | t | long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 22447 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE long long __RV_DKMATT32 | ( | long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DKMATT32 (Saturating Signed Multiply Bottom & Top Words & Add)
Type: SIMD
Syntax:
Purpose:
Multiply the signed 32-bit element in a register with the 32-bit element in another register and add the result to the content of 64-bit data in the third register. The addition result may be saturated and is written to the third register.
Description:
For the DKMATT32
instruction, it multiplies the top 32-bit element in Rs1 with the top 32-bit element in Rs2 The multiplication result is added to the content of 64-bit data in Rd. If the addition result is beyond the Q63 number range (-2^63 <= Q63 <= 2^63-1), it is saturated to the range and the OV bit is set to 1. The result after saturation is written to Rd. The 32-bit contents of Rs1 and Rs2 are treated as signed integers.
Operations:
[in] | t | long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 23826 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE unsigned long long __RV_DKMAXDA | ( | unsigned long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DKMAXDA (Two Cross 16x16 with 32-bit Signed Double Add)
Type: DSP
Syntax:
Purpose:
Do two cross 16x16 with 32-bit signed double addition simultaneously. The results are written into Rd.
Description:
It multiplies the top 16-bit content of 32-bit elements in Rs1 with the bottom 16-bit content of 32-bit elements in Rs2 and then adds the result to the result of multiplying the bottom 16-bit content of 32-bit elements in Rs1 with the top 16-bit content of 32-bit elements in elements in Rs2.
Operations:
[in] | t | unsigned long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 21855 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE long long __RV_DKMAXDA32 | ( | long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DKMAXDA32 (Two Cross Signed 32x32 with 64-bit Saturation Add)
Type: DSP
Syntax:
Purpose:
Do two cross signed 32x32 and add the signed multiplication results and a third register with Q63 saturation. The results are written into Rd.
Description:
It multiplies the top 32-bit element in Rs1 with the bottom 32-bit element in Rs2 and then adds the result to the result of multiplying the bottom 32-bit element in Rs1 with the top 32-bit element in Rs2.
Operations:
[in] | t | long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 22403 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE unsigned long long __RV_DKMAXDS | ( | unsigned long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DKMAXDS (Saturating Signed Crossed Multiply Two Halfs & Subtract & Add)
Type: DSP
Syntax:
Purpose:
Do two cross 16x16 with 32-bit signed addition and subtraction simultaneously. The results are written into Rd.
Description:
Do two signed 16-bit multiplications from 32-bit elements in two registers; and then perform a subtraction operation between the two 32-bit results. Then add the subtraction result to the corresponding 32-bit elements in a third register. The addition result may be saturated.
Operations:
[in] | t | unsigned long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 21995 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE long long __RV_DKMAXDS32 | ( | long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DKMAXDS32 (Two Cross Signed 32x32 with 64-bit Saturation Add and Sub)
Type: DSP
Syntax:
Purpose:
Do two signed 32x32 and add the top signed multiplication results and subtraction bottom signed multiplication results and add a third register with Q63 saturation. The results are written into Rd.
Description:
It multiplies the bottom 32-bit element in Rs1 with the top 32-bit element in Rs2 and then subtracts the result from the result of multiplying the top 32-bit element in Rs1 with the bottom 32-bit element in Rs2.
Operations:
[in] | t | long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 22535 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE long long __RV_DKMDA32 | ( | unsigned long long | a, |
unsigned long long | b | ||
) |
DKMDA32 (Two Signed 32x32 with 64-bit Saturation Add)
Type: DSP
Syntax:
Purpose:
Do two signed 32x32 add the signed multiplication results with Q63 saturation. The results are written into Rd.
Description:
For the KMDA32
instruction, it multiplies the bottom 32-bit element of Rs1 with the bottom 32-bit element of Rs2 and then adds the result to the result of multiplying the top 32-bit element of Rs1 with the top 32-bit element of Rs2.
Operations:
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 22275 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE unsigned long long __RV_DKMMAC | ( | unsigned long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DKMMAC (64-bit MSW 32x32 Signed Multiply and Saturating Add)
Type: SIMD
Syntax:
Purpose:
Do MSW 32x32 element signed multiplications and saturating addition simultaneously. The results are written into Rd.
Description:
This instruction multiplies the signed 32-bit elements of Rs1 with the signed 32-bit elements of Rs2 and adds the most significant 32-bit multiplication results with the signed 32-bit elements of Rd. If the addition result is beyond the Q31 number range (-2^31 <= Q31 <= 2^31-1), it is saturated to the range and the OV bit is set to 1. The results after saturation are written to Rd. The .u form of the instruction additionally rounds up the most significant 32-bit of the 64-bit multiplication results by adding a 1 to bit 31 of the results.
Operations:
[in] | t | unsigned long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 21621 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE unsigned long long __RV_DKMMAC_U | ( | unsigned long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DKMMACU (64-bit MSW 32x32 Unsigned Multiply and Saturating Add)
Type: SIMD
Syntax:
Purpose:
Do MSW 32x32 element unsigned multiplications and saturating addition simultaneously. The results are written into Rd.
Description:
This instruction multiplies the signed 32-bit elements of Rs1 with the signed 32-bit elements of Rs2 and adds the most significant 32-bit multiplication results with the signed 32-bit elements of Rd. If the addition result is beyond the Q31 number range (-2^31 <= Q31 <= 2^31-1), it is saturated to the range and the OV bit is set to 1. The results after saturation are written to Rd. The .u form of the instruction additionally rounds up the most significant 32-bit of the 64-bit multiplication results by adding a 1 to bit 31 of the results.
Operations:
[in] | t | unsigned long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 21668 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE unsigned long long __RV_DKMMSB | ( | unsigned long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DKMMSB (64-bit MSW 32x32 Signed Multiply and Saturating Sub)
Type: SIMD
Syntax:
Purpose:
Do MSW 32x32 element signed multiplications and saturating subtraction simultaneously. The results are written into Rd.
Description:
This instruction multiplies the signed 32-bit elements of Rs1 with the signed 32-bit elements of Rs2 and subtracts the most significant 32-bit multiplication results from the signed 32-bit elements of Rd. If the subtraction result is beyond the Q31 number range (-2^31 <= Q31 <= 2^31-1), it is saturated to the range and the OV bit is set to 1. The results after saturation are written to Rd. The .u form of the instruction additionally rounds up the most significant 32-bit of the 64-bit multiplication results by adding a 1 to bit 31 of the results.
Operations:
[in] | t | unsigned long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 21715 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE unsigned long long __RV_DKMMSB_U | ( | unsigned long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DKMMSBU (64-bit MSW 32x32 Unsigned Multiply and Saturating Sub)
Type: SIMD
Syntax:
Purpose:
Do MSW 32x32 element unsigned multiplications and saturating subtraction simultaneously. The results are written into Rd.
Description:
This instruction multiplies the signed 32-bit elements of Rs1 with the signed 32-bit elements of Rs2 and subtracts the most significant 32-bit multiplication results from the signed 32-bit elements of Rd. If the subtraction result is beyond the Q31 number range (-2^31 <= Q31 <= 2^31-1), it is saturated to the range and the OV bit is set to 1. The results after saturation are written to Rd. The .u form of the instruction additionally rounds up the most significant 32-bit of the 64-bit multiplication results by adding a 1 to bit 31 of the results.
Operations:
[in] | t | unsigned long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 21762 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE unsigned long long __RV_DKMSDA | ( | unsigned long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DKMSDA (Two 16x16 with 32-bit Signed Double Sub)
Type: DSP
Syntax:
Purpose:
Do two 16x16 with 32-bit signed double subtraction simultaneously. The results are written into Rd.
Description:
it multiplies the bottom 16-bit content of the 32-bit elements of Rs1 with the bottom 16-bit content of the 32-bit elements of Rs2 and multiplies the top 16-bit content of the 32-bit elements of Rs1 with the top 16-bit content of the 32-bit elements of Rs2.
Operations:
[in] | t | unsigned long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 22041 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE long long __RV_DKMSDA32 | ( | long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DKMSDA32 (Two Signed 32x32 with 64-bit Saturation Sub)
Type: DSP
Syntax:
Purpose:
Do two signed 32x32 and subtraction the top signed multiplication results and subtraction bottom signed multiplication results and add a third register with Q63 saturation. The results are written into Rd.
Description:
It multiplies the bottom 32-bit element of Rs1 with the bottom 32-bit element of Rs2 and multiplies the top 32-bit element of Rs1 with the top 32-bit element of Rs2.
Operations:
[in] | t | long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 22578 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE unsigned long long __RV_DKMSXDA | ( | unsigned long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DKMSXDA (Two Cross 16x16 with 32-bit Signed Double Sub)
Type: DSP
Syntax:
Purpose:
Do two cross 16x16 with 32-bit signed double subtraction simultaneously. The results are written into Rd.
Description:
It multiplies the bottom 16-bit content of the 32-bit elements of Rs1 with the top 16-bit content of the 32-bit elements of Rs2 and multiplies the top 16-bit content of the 32-bit elements of Rs1 with the bottom 16-bit content of the 32-bit elements of Rs2.
Operations:
[in] | t | unsigned long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 22087 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE long long __RV_DKMSXDA32 | ( | long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DKMSXDA32 (Two Cross Signed 32x32 with 64-bit Saturation Sub)
Type: DSP
Syntax:
Purpose:
Do two cross signed 32x32 and subtraction the top signed multiplication results and subtraction bottom signed multiplication results and add a third register with Q63 saturation. The results are written into Rd.
Description:
It multiplies the bottom 32-bit element of Rs1 with the top 32-bit element of Rs2 and multiplies the top 32-bit element of Rs1 with the bottom 32-bit element of Rs2.
Operations:
[in] | t | long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 22621 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE long long __RV_DKMXDA32 | ( | unsigned long long | a, |
unsigned long long | b | ||
) |
DKMXDA32 (Two Cross Signed 32x32 with 64-bit Saturation Add)
Type: DSP
Syntax:
Purpose:
Do two cross signed 32x32 and add the signed multiplication results with Q63 saturation. The results are written into Rd.
Description:
It multiplies the bottom 32-bit element of Rs1 with the top 32-bit element of Rs2 and then adds the result to the result of multiplying the top 32-bit element of Rs1 with the bottom 32-bit element of Rs2.
Operations:
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 22317 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE unsigned long long __RV_DKSMS32_U | ( | unsigned long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DKSMS32.u (Two Signed Multiply Shift-clip and Saturation with Rounding)
Type: SIMD
Syntax:
Purpose:
Computes saturated multiplication of two pairs of q31 type with shifted rounding.
Description:
Compute the multiplication of Rs1 and Rs2 of type q31_t, intercept [47:16] for the resulting 64-bit product to get the 32-bit number, then add 1 to it to do rounding, and finally saturate the result after rounding.
Operations:
[in] | t | unsigned long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 23516 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE long __RV_DMADA32 | ( | long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DMADA32 ((Two Cross Signed 32x32 with 64-bit Add and Clip to 32-bit)
Type: SIMD
Syntax:
Purpose:
Do two cross signed 32x32 and add the signed multiplication results to q63, then clip the q63 result to q31 , the final results are written into Rd.
Description:
For the DMADA32
instruction, it multiplies the top 32-bit element in Rs1 with the bottom 32-bit element in Rs2 and then adds the result to the result of multiplying the bottom 32-bit element in Rs1 with the top 32-bit element in Rs2, then clip the q63 result to q31.
Operations:
[in] | t | long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 23555 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE long __RV_DSMA32_U | ( | unsigned long long | a, |
unsigned long long | b | ||
) |
DSMA32.u (64-bit SIMD 32-bit Signed Multiply Addition With Rounding and Clip)
Type: DSP
Syntax:
Purpose:
Do two signed 32x32 and add signed multiplication results with Rounding, then right shift 32-bit and clip q63 to q31. The result is written to Rd.
Description:
For the DSMA32.u
instruction, multiply the top 32-bit Q31 content of 64-bit chunks in Rs1 with the top 32-bit Q31 content of 64-bit chunks in Rs2. At the same time, multiply the bottom 32-bit Q31 content of 64-bit chunks in Rs1 with the bottom 32-bit Q31 content of 64-bit chunks in Rs2. Then, do the addtion for the results above and perform the addtional rounding operations, and then move the data to the right by 32-bit, and clip the 64-bit data into 32-bit.The result is written to Rd.
Operations:
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 23265 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE long __RV_DSMADA16 | ( | long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DSMADA16 (Signed Multiply Two Halfs and Two Adds 32-bit)
Type: SIMD
Syntax:
Purpose:
Do two signed 16-bit multiplications of two 32-bit registers; and then adds the 32-bit results and the 32-bit value of an even/odd pair of registers together.
Description:
This instruction multiplies the per 16-bit content of the 32-bit elements of Rs1 with the corresponding 16-bit content of the 32-bit elements of Rs2. The result is added to the 32-bit value of an even/odd pair of registers specified by Rd(4,1). The 32-bit addition result is written back to the register-pair. The 16-bit values of Rs1 and Rs2, and the 32-bit value of the register-pair are treated as signed integers.
Operations:
[in] | t | long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 23433 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE long long __RV_DSMALBB | ( | long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DSMALBB (Signed Multiply Bottom Halfs & Add 64-bit)
Type: SIMD
Syntax:
Purpose:
Multiply the signed 16-bit content of the 32-bit elements of a register with the 16-bit content of the corresponding 32-bit elements of another register and add the results with a 64-bit value of an even/odd pair of registers. The addition result is written back to the register-pair.
Description:
For the DSMALBB
instruction, it multiplies the bottom 16-bit content of Rs1 with the bottom 16-bit content of Rs2.The multiplication results are added with the 64-bit value of Rd. The 64-bit addition result is written back to Rd.
Operations:
[in] | t | long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 23596 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE long long __RV_DSMALBT | ( | long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DSMALBT (Signed Multiply Bottom Half & Top Half & Add 64-bit)
Type: SIMD
Syntax:
Purpose:
Multiply the signed 16-bit content of the 32-bit elements of a register with the 16-bit content of the corresponding 32-bit elements of another register and add the results with a 64-bit value of an even/odd pair of registers. The addition result is written back to the register-pair.
Description:
For the DSMALBT
instruction, it multiplies the bottom 16-bit content of the 32-bit elements of Rs1 with the top 16-bit content of the 32-bit elements of Rs2. The multiplication results are added with the 64-bit value of Rd. The 64-bit addition result is written back to Rd. The 16-bit values of Rs1 and Rs2, and the 64-bit value of Rd are treated as signed integers
Operations:
[in] | t | long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 23639 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE long long __RV_DSMALDA | ( | long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DSMALDA (Four Signed 16x16 with 64-bit Add)
Type: DSP
Syntax:
Purpose:
Do four signed 16x16 and add signed multiplication results and a third register. The results are written into Rd.
Description:
It multiplies the bottom 16-bit content of Rs1 with the bottom 16-bit content of Rs2 and then adds the result to the result of multiplying the top 16-bit content of Rs1 with the top 16-bit content of Rs2 with unlimited precision
Operations:
[in] | t | long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 22798 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE long long __RV_DSMALDRS | ( | long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DSMALDRS (Four Signed 16x16 with 64-bit Add and Revered Sub)
Type: DSP
Syntax:
Purpose:
Do two signed 16x16 and add and revered subtraction signed multiplication results and a third register. The results are written into Rd.
Description:
It multiplies the top 16-bit content of Rs1 with the top 16-bit content of Rs2 and then subtracts the result from the result of multiplying the bottom 16-bit content of Rs1 with the bottom 16-bit content of Rs2.
Operations:
[in] | t | long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 22936 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE long long __RV_DSMALDS | ( | long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DSMALDS (Four Signed 16x16 with 64-bit Add and Sub)
Type: DSP
Syntax:
Purpose:
Do four signed 16x16 and add and subtraction signed multiplication results and a third register. The results are written into Rd.
Description:
It multiplies the bottom 16-bit content of Rs1 with the bottom 16-bit content of Rs2 and then subtracts the result from the result of multiplying the top 16-bit content of Rs1 with the top 16-bit content of Rs2.
Operations:
[in] | t | long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 22890 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE long long __RV_DSMALTT | ( | long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DSMALTT (Signed Multiply Top Half & Add 64-bit)
Type: SIMD
Syntax:
Purpose:
Multiply the signed 16-bit content of the 32-bit elements of a register with the 16-bit content of the corresponding 32-bit elements of another register and add the results with a 64-bit value of an even/odd pair of registers. The addition result is written back to the register-pair.
Description:
For the DSMALTT
instruction, it multiplies the top 16-bit content of the 32-bit elements of Rs1 with the top 16-bit content of the 32-bit elements of Rs2. The multiplication results are added with the 64-bit value of Rd. The 64-bit addition result is written back to Rd. The 16-bit values of Rs1 and Rs2, and the 64-bit value of Rd are treated as signed integers.
Operations:
[in] | t | long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 23682 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE long long __RV_DSMALXDA | ( | long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DSMALXDA (Four Signed 16x16 with 64-bit Add)
Type: DSP
Syntax:
Purpose:
Do four cross signed 16x16 and add signed multiplication results and a third register. The results are written into Rd.
Description:
It multiplies the top 16-bit content of Rs1 with the bottom 16-bit content of Rs2 and then adds the result to the result of multiplying the bottom 16-bit content of Rs1 with the top 16-bit content of Rs2 with unlimited precision.
Operations:
[in] | t | long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 22844 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE long long __RV_DSMALXDS | ( | long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DSMALXDS (Four Cross Signed 16x16 with 64-bit Add and Sub)
Type: DSP
Syntax:
Purpose:
Do four cross signed 16x16 and add and subtraction signed multiplication results and a third register. The results are written into Rd.
Description:
It multiplies the bottom 16-bit content of Rs1 with the top 16-bit content of Rs2 and then subtracts the result from the result of multiplying the top 16-bit content of Rs1 with the bottom 16-bit content of Rs2.
Operations:
[in] | t | long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 22982 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE unsigned long long __RV_DSMAQA | ( | unsigned long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DSMAQA (Four Signed 8x8 with 32-bit Signed Add)
Type: DSP
Syntax:
Purpose:
Do four signed 8x8 with 32-bit signed addition simultaneously. The results are written into Rd.
Description:
This instruction multiplies the four signed 8-bit elements of 32-bit chunks of Rs1 with the four signed 8-bit elements of 32-bit chunks of Rs2 and then adds the four results together with the signed content of the corresponding 32-bit chunks of Rd. The final results are written back to the corresponding 32-bit chunks in Rd.
Operations:
[in] | t | unsigned long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 22136 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE unsigned long long __RV_DSMAQA_SU | ( | unsigned long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DSMAQASU (Four Signed 8 x Unsigned 8 with 32-bit Signed Add)
Type: DSP
Syntax:
Purpose:
Do four Signed 8 x Unsigned 8 with 32-bit unsigned addition simultaneously. The results are written into Rd.
Description:
This instruction multiplies the four unsigned 8-bit elements of 32-bit chunks of Rs1 with the four signed 8-bit elements of 32-bit chunks of Rs2 and then adds the four results together with the unsigned content of the corresponding 32-bit chunks of Rd. The final results are written back to the corresponding 32-bit chunks in Rd.
Operations:
[in] | t | unsigned long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 22185 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE long __RV_DSMAXDA16 | ( | long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DSMAXDA16 (Signed Crossed Multiply Two Halfs and Two Adds 32-bit)
Type: SIMD
Syntax:
Purpose:
Do two signed 16-bit multiplications of two 32-bit registers; and then adds the 32-bit results and the 32-bit value of an even/odd pair of registers together.
Description:
This instruction crossly multiplies the top 16-bit content of the 32-bit elements of Rs1 with the bottom 16-bit content of the 32-bit elements of Rs2 and then adds the result to the result of multiplying the bottom 16-bit content of the 32-bit elements of Rs1 with the top 16-bit content of the 32-bit elements of Rs2 with unlimited precision. The result is added to the 64-bit value of an even/odd pair of registers specified by Rd(4,1).The 64-bit addition result is clipped to 32-bit result.
Operations:
[in] | t | long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 23477 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE long long __RV_DSMDRS32 | ( | unsigned long long | a, |
unsigned long long | b | ||
) |
DSMDRS32 (Two Signed 32x32 with 64-bit Revered Sub)
Type: DSP
Syntax:
Purpose:
Do two signed 32x32 and subtraction the top signed multiplication results and add bottom signed multiplication. The results are written into Rd
Description:
It multiplies the top 32-bit element of Rs1 with the top 32-bit element of Rs2 and then subtracts the result from the result of multiplying the bottom 32-bit element of Rs1 with the bottom 32-bit element of Rs2.
Operations:
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 22707 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE long long __RV_DSMDS32 | ( | unsigned long long | a, |
unsigned long long | b | ||
) |
DSMDS32 (Two Signed 32x32 with 64-bit Sub)
Type: DSP
Syntax:
Purpose:
Do two signed 32x32 and add the top signed multiplication results and subtraction bottom signed multiplication. The results are written into Rd.
Description:
It multiplies the bottom 32-bit element of Rs1 with the bottom 32-bit element of Rs2 and then subtracts the result from the result of multiplying the top 32-bit element of Rs1 with the top 32-bit element of Rs2.
Operations:
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 22664 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE long __RV_DSMS32_U | ( | unsigned long long | a, |
unsigned long long | b | ||
) |
DSMS32.u (64-bit SIMD 32-bit Signed Multiply Subtraction with Rounding and Clip)
Type: DSP
Syntax:
Purpose:
Do two signed 32x32 and sub signed multiplication results with Rounding, then right shift 32-bit and clip q63 to q31. The result is written to Rd.
Description:
For the DSMS32.u
instruction, multiply the bottom 32-bit Q31 content of 64-bit chunks in Rs1 with the bottom 32-bit Q31 content of 64-bit chunks in Rs2. At the same time, multiply the top 32-bit Q31 content of 64-bit chunks in Rs1 with the top 32-bit Q31 content of 64-bit chunks in Rs2. Then, do the subtraction for the results above and perform the addtional rounding operations, and then move the data to the right by 32-bit, and clip the 64-bit data into 32-bit.The result is written to Rd.
Operations:
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 23388 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE long long __RV_DSMSLDA | ( | long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DSMSLDA (Four Signed 16x16 with 64-bit Sub)
Type: DSP
Syntax:
Purpose:
Do four signed 16x16 and subtraction signed multiplication results and add a third register. The results are written into Rd.
Description:
It multiplies the bottom 16-bit content of Rs1 with the bottom 16-bit content Rs2 and multiplies the top 16-bit content of Rs1 with the top 16-bit content of Rs2.
Operations:
[in] | t | long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 23027 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE long long __RV_DSMSLXDA | ( | long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DSMSLXDA (Four Cross Signed 16x16 with 64-bit Sub)
Type: DSP
Syntax:
Purpose:
Do four signed 16x16 and subtraction signed multiplication results and add a third register. The results are written into Rd.
Description:
It multiplies the top 16-bit content of Rs1 with the bottom 16-bit content of Rs2 and multiplies the bottom 16-bit content of Rs1 with the top 16-bit content of Rs2.
Operations:
[in] | t | long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 23072 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE long __RV_DSMXA32_U | ( | unsigned long long | a, |
unsigned long long | b | ||
) |
DSMXA32.u (64-bit SIMD 32-bit Signed Cross Multiply Addition with Rounding and Clip)
Type: DSP
Syntax:
Purpose:
Do two cross signed 32x32 and add signed multiplication results with Rounding, then right shift 32-bit and clip q63 to q31. The result is written to Rd.
Description:
For the DSMXA32.u
instruction,multiply the top 32-bit Q31 content of 64-bit chunks in Rs1 with the bottom 32-bit Q31 content of 64-bit chunks in Rs2. At the same time, multiply the bottom 32-bit Q31 content of 64-bit chunks in Rs1 with the top 32-bit Q31 content of 64-bit chunks in Rs2. Then, do the addtion for the results above and perform the addtional rounding operations, and then move the data to the right by 32-bit, and clip the 64-bit data into 32-bit.The result is written to Rd.
Operations:
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 23347 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE long long __RV_DSMXDS32 | ( | unsigned long long | a, |
unsigned long long | b | ||
) |
DSMXDS32 (Two Cross Signed 32x32 with 64-bit Sub)
Type: DSP
Syntax:
Purpose:
Do two cross signed 32x32 and add the top signed multiplication results and subtraction bottom signed multiplication. The results are written into Rd.
Description:
It multiplies the bottom 32-bit element of Rs1 with the top 32-bit element of Rs2 and then subtracts the result from the result of multiplying the top 32-bit element of Rs1 with the bottom 32-bit element of Rs2.
Operations:
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 22751 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE long __RV_DSMXS32_U | ( | unsigned long long | a, |
unsigned long long | b | ||
) |
DSMXS32.u (64-bit SIMD 32-bit Signed Multiply Cross Subtraction With Rounding and Clip)
Type: DSP
Syntax:
Purpose:
Do two cross signed 32x32 and sub signed multiplication results with Rounding, then right shift 32-bit and clip q63 to q31. The result is written to Rd.
Description:
For the DSMXS32.u
instruction, multiply the top 32-bit Q31 content of 64-bit chunks in Rs1 with the bottom 32-bit Q31 content of 64-bit chunks in Rs2. At the same time, multiply the bottom 32-bit Q31 content of 64-bit chunks in Rs1 with the top 32-bit Q31 content of 64-bit chunks in Rs2. Then, do the subtraction for the results above and perform the addtional rounding operations, and then move the data to the right by 32-bit, and clip the 64-bit data into 32-bit.The result is written to Rd.
Operations:
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 23306 of file core_feature_dsp.h.
References __ASM.
__STATIC_FORCEINLINE unsigned long long __RV_DUMAQA | ( | unsigned long long | t, |
unsigned long long | a, | ||
unsigned long long | b | ||
) |
DUMAQA (Four Unsigned 8x8 with 32-bit Unsigned Add)
Type: DSP
Syntax:
Purpose:
Do four unsigned 8x8 with 32-bit unsigned addition simultaneously. The results are written into Rd.
Description:
This instruction multiplies the four unsigned 8-bit elements of 32-bit chunks of Rs1 with the four unsigned 8-bit elements of 32-bit chunks of Rs2 and then adds the four results together with the unsigned content of the corresponding 32-bit chunks of Rd. The final results are written back to the corresponding 32-bit chunks in Rd.
Operations:
[in] | t | unsigned long long type of value stored in t |
[in] | a | unsigned long long type of value stored in a |
[in] | b | unsigned long long type of value stored in b |
Definition at line 22234 of file core_feature_dsp.h.
References __ASM.