Hallo zusammen,
ich habe gerade ein paar sehr interessante Befehle gefunden. Einer davon
ist der SADD8 Befehl.
Den Auszug aus dem Datenblatt habe ich mal angehängt.
Meine Frage (ich kanns so schwer testen) ist ob der Befehl das tut, was
ich denke?
Beispiel:
auszug aus der core_cm4_simd.h
1 | /*------ CM4 SIMD Intrinsics -----------------------------------------------------*/
|
2 | __attribute__( ( always_inline ) ) static __INLINE uint32_t __SADD8(uint32_t op1, uint32_t op2)
|
3 | {
|
4 | uint32_t result;
|
5 | __ASM volatile ("sadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
|
6 | return(result);
|
7 | }
|
mainfile:
1 | [...]
|
2 | int main( void )
|
3 | {
|
4 | uint32_t op1 = 0x0102F1FF;
|
5 | uint32_t op1 = 0x10200F11;
|
6 | uint32_t res = __SADD8( op1, op2 ); // = 0x11220010 ???
|
7 | }
|
('Quick n' Dirty'-Fehler bitte überlesen, ich glaube man versteht was
ich meine oder?)
Also in einem Befehl werden 4 mal je 2 Bytes addiert?
Oder verstehe ich das jetzt falsch?
Vielen Dank