I oriented myself on the ARM Architecture Reference Manual. I did not investigate whether the currently present instructions are implemented correctly or whether all variants are present.
Two general points:
- Our
stm instruction mnemonics put the addressing mode before the condition, but it should come after the condition. So e.g. stmdaeq should be stmeqda.
- The instruction
svc, which was called swi in version 6.
Superflous instructions (for version 6)
- SDIV
- UDIV
Missing instructions (for complete version 6 base instruction set)
- BKPT
- BLX (1)
- BXJ
- CDP
- CDP2
- CLZ
- CPS
- CPY
- LDC
- LDC2
- LDRD
- LDRBT
- LDREX
- LDRT
- MCR
- MCR2
- MCRR
- MCRR2
- MRC
- MRC2
- MRRC
- MRRC2
- MSR
- MVN
- PKH (both forms)
- PLD
- QADD
- QADD16
- QADD8
- QADDSUBX
- QDADD
- QDSUB
- QSUB
- QSUB16
- QSUB8
- QSUBADDX
- REV (all forms)
- RFE
- RSC
- SADD (all forms)
- SEL
- SETEND
- SHADD (all forms)
- SHSUB (all forms)
- SMLAD
- SMLALD
- SMLA<x><y> (BB, TT, BT, TB)
- SMLAL<x><y (BB, TT, BT, TB)
- SMLAW<y> (B, T)
- SMLSD
- SMLSLD
- SMMLA
- SMMLS
- SMMUL
- SMUAD
- SMUL<x><y> (BB, TT, BT, TB)
- SMULW<y> (B, T)
- SMUSD
- SRS
- SSAT (both forms)
- SSUB (all forms)
- STC
- STC2
- STM (2)
- STRBT
- STRD
- STREX
- STRH
- STRT
- SWI
- SWP (depricated)
- SWPB (depricated)
- SXT (all forms)
- UADD (all forms)
- UHADD (all forms)
- UHSUB (all forms)
- UMAAL
- UQADD (all forms)
- UQSUB (all forms)
- USAD (both forms)
- USAT (both forms)
- USUB (all forms)
- UXT (all forms)
Missing instructions (for non-fp benchmarks)
These I have generated from the combined dump of all benchmark text sections. Pseudo instructions can be ignored.
- clz
- clzeq
- ldmgt // all conditional ldm are implemented
- ldrd
- lslcc (pseudo for mov)
- lsleq (pseudo for mov)
- lslne (pseudo for mov)
- lsrcs (pseudo for mov)
- lsreq (pseudo for mov)
- lsrhi (pseudo for mov)
- lsrne (pseudo for mov)
- lsrs (pseudo for mov)
- lsrsne (pseudo for mov)
- mvn
- mvneq
- mvnhi
- mvnne
- nop (pseudo for mov)
- pop (pseudo for ldr/ldm)
- popeq (pseudo for ldr/ldm)
- popge (pseudo for ldr/ldm)
- pople (pseudo for ldr/ldm)
- popls (pseudo for ldr/ldm)
- popne (pseudo for ldr/ldm)
- push (pseudo for str/stm)
- rev
- smlabb
- smulbb
- strd
- sxth
- sxthhi
- uxtab
- uxtah
- uxtb
- uxtbeq
- uxtbls
- uxtbne
- uxth
- uxthhi
- uxthne
I oriented myself on the ARM Architecture Reference Manual. I did not investigate whether the currently present instructions are implemented correctly or whether all variants are present.
Two general points:
stminstruction mnemonics put the addressing mode before the condition, but it should come after the condition. So e.g.stmdaeqshould bestmeqda.svc, which was calledswiin version 6.Superflous instructions (for version 6)
Missing instructions (for complete version 6 base instruction set)
Missing instructions (for non-fp benchmarks)
These I have generated from the combined dump of all benchmark text sections. Pseudo instructions can be ignored.