05.06.2012
Migracja z Cortex-M3 do Cortex-M4
Tab. 3.
Operacja | Opis | Instrukcja asemblerowa | Liczba cykli |
Wartość bezwzględna (Absolute value) | z liczby zmiennoprzecinkowej pojedynczej precyzji | VABS.F32 | 1 |
Dodawanie (Addition) | liczb zmiennoprzecinkowych pojedynczej precyzji | VADD.F32 | 1 |
Porównanie (Compare) | liczby zmiennoprzecinkowej pojedynczej precyzji z wartością rejestru lub zerem | VCMP.F32 | 1 |
liczby zmiennoprzecinkowej pojedynczej precyzji z wartością rejestru lub zerem | VCMPE.F32 | 1 | |
Konwersja formatów (Convert) |
Pomiędzy liczbami: całkowitą, stałoprzecinkową połówkowej precyzji, i zmiennoprzecinkową pojedynczej precyzji | VCVT.F32 | 1 |
Dzielenie (Divide) |
liczb zmiennoprzecinkowych pojedynczej precyzji | VDIV.F32 | 14 |
Ładowanie (Load) |
wielu liczb zmiennoprzecin-kowych podwójnej precyzji | VLDM.64 | 1+2*N, gdzie N jest liczbą liczb zmiennoprze-cinkowych podwójnej precyzji |
wielu liczb zmiennoprzecinkowych pojedynczej precyzji | VLDM.32 | 1+N, gdzie N jest liczbą liczb zmiennoprze-cinkowych po-jedynczej precyzji. | |
pojedynczej liczby zmiennoprzecinkowej podwójnej precyzji | VLDR.64 | 3 | |
pojedynczej liczby zmiennoprzecinkowej pojedynczej precyzji | VLDR.32 | 2 | |
Przesunięcie (Move) | na początek/koniec połówki liczby zmiennoprzecinkowej podwójnej precyzji do/z rejestru rdzenia | VMOV | 1 |
natychmiastowe/liczby zmiennoprzecinkowej pojedynczej precyzji do rejestru liczby zmiennoprzecinkowej pojedynczej precyzji | VMOV | 1 | |
dwóch liczb zmiennoprzecinkowych pojedynczej precyzji/jednej liczby zmiennoprzecinkowej podwójnej precyzji do/z dwóch rejestrów rdzenia lub jednej liczby zmiennoprzecinkowej pojedynczej precyzji do/z jednego rejestru rdzenia | VMOV | 2 | |
wartości zmiennoprzecinkowych kontroli/statusu do rejestru rdzenia | VMRS | 1 | |
wartości rejestru rdzenia do wartości zmiennoprzecinkowych kontroli/statusu | VMSR | 1 | |
Mnożenie (Multiply) | liczb zmiennoprzecinkowych pojedynczej precyzji | VMUL.F32 | 1 |
następnie sumowanie liczby zmiennoprzecinkowej pojedynczej precyzji | VMLA.F32 | 3 | |
następnie odejmowanie liczby zmiennoprzecinkowej pojedynczej precyzji | VMLS.F32 | 3 | |
następnie sumowanie i następnie negowanie liczby zmiennoprzecinkowej pojedynczej precyzji | VNMLA.F32 | 3 | |
następnie odejmowanie i następnie negowanie liczby zmiennoprzecinkowej pojedynczej precyzji | VNMLS.F32 | 3 | |
Mnożenie z zaokrąglaniem wyniku (Fused Multiply) |
następnie sumowanie liczby zmiennoprzecinkowej pojedynczej precyzji | VFMA.F32 | 3 |
następnie odejmowanie liczby zmiennoprzecinkowej pojedynczej precyzji | VFMS.F32 | 3 | |
następnie sumowanie i następnie negowanie liczby zmiennoprzecinkowej pojedynczej precyzji | VFNMA.F32 | 3 | |
następnie odejmowanie i następnie negowanie liczby zmiennoprzecinkowej pojedynczej precyzji | VFNMS.F32 | 3 | |
Negacja (Negate) |
liczby zmiennoprzecinkowej pojedynczej precyzji | VNEG.F32 | 1 |
oraz mnożenie liczby zmiennoprzecinkowej pojedynczej precyzji | VNMUL.F32 | 1 | |
Zdejmowanie (Pop) |
wartości rejestrów liczby zmiennoprzecinkowej podwójnej precyzji ze stosu | VPOP.64 | 1+2*N, gdzie N jest liczbą reje-strów liczby zmiennoprze-cinkowej po-dwójnej precy-zji. |
wartości rejestrów liczby zmiennoprzecinkowej pojedynczej precyzji ze stosu | VPOP.32 | 1+N gdzie N jest liczbą rejestrów | |
Umieszczanie (Push) |
wartości rejestrów liczby zmiennoprzecinkowej po-dwójnej precyzji na stosie | VPUSH.64 | 1+2*N, gdzie N jest liczbą reje-strów liczby zmiennoprze-cinkowej po-dwójnej precy-zji. |
wartości rejestrów liczby zmiennoprzecinkowej pojedynczej precyzji na stosie | VPUSH.32 | 1+N, gdzie N jest liczbą rejestrów | |
Pierwiastkowanie (Square-root) | liczby zmiennoprzecinkowej pojedynczej precyzji | VSQRT.F32 | 14 |
Zapisywanie (Store) |
rejestrów wielu liczb zmiennoprzecinkowych podwójnej precyzji | VSTM.64 | 1+2*N, gdzie N jest liczbą liczb zmiennoprze-cinkowych po-dwójnej precy-zji. |
rejestrów wielu liczb zmiennoprzecinkowych pojedynczej precyzji | VSTM.32 | 1+N, gdzie N jest liczbą liczb zmiennoprze-cinkowych po-jedynczej pre-cyzji. | |
rejestru pojedynczej liczby zmiennoprzecinkowej podwójnej precyzji | VSTR.64 | 3 | |
rejestru pojedynczej liczby zmiennoprzecinkowej pojedynczej precyzji | VSTR.32 | 2 | |
Odejmowanie (Subtract) | liczb zmiennoprzecinkowych pojedynczej precyzji | VSUB.F32 | 1 |