blob: 84068404e74a13c13e7ad885a21be8ee115e131b [file] [log] [blame]
.data
foodata: .word 42
.text
footext:
.macro test insn text=""
.export \insn
\insn:
\insn \text
.endm
test abs r0
test addc "r1,r2" // A double forward slash starts a line comment
test addi "r3, 1" # So does a hash
test addu "r4, r5" // White space between operands should be ignored
test and "r6,r7" ; test andi "r8,#2" // A semicolon seperates statements
test andn "r9, r10"
test asr "r11, R12" // Uppercase R is allowed as a register prefix
test asrc "r13"
test asri "r14,#0x1f"
test bclri "r15,0"
test bf footext
test bgeni "sp, 7" // r0 can also be refered to as 'sp'
test BGENI "r0, 8" // Officially upper case or mixed case
test BGENi "r0, 31" // mnemonics should not be allowed, but we relax this...
test bgenr "r1, r2"
test bkpt
test bmaski "r3,#8"
test BMASKI "r3,0x1f"
test br . // Dot means the current address
test brev r4
test bseti "r5,30"
test bsr footext
test bt footext
test btsti "r6, 27"
test clrc
test clrf r7
test clrt r8
test cmphs "r9,r10"
test cmplt "r11,r12"
test cmplei "r11, 14"
test cmplti "r13,32"
test cmpne "r14, r15"
test cmpnei "r0,0"
test decf r1
test decgt r2
test declt r3
test decne r4
test dect r5
test divs "r6,r1"
test divu "r8, r1"
test doze
test ff1 r10
test incf r11
test inct r12
test ixh "r13,r14"
test ixw "r15,r0"
test jbf footext
test jbr fooloop
test jbsr footext
test jbt fooloop
test jmp r1
test jmpi footext
test jsr r2
test jsri footext
test ld.b "r3,(r4,0)"
test ld.h "r5 , ( r6, #2)"
test ld.w "r7, (r8, 0x4)"
test ldb "r9,(r10,#0xf)"
test ldh "r11, (r12, 30)"
test ld "r13, (r14, 20)"
test ldw "r13, (r14, 60)"
test ldm "r2-r15,(r0)"
.export fooloop
fooloop:
test ldq "r4-r7,(r1)"
test loopt "r8, fooloop"
test LRW "r9, [foolit]"
test lrw "r9, 0x4321" // PC rel indirect
.global foolit
foolit:
.word 0x1234
test lsl "r10,r11"
test lslc r12
.literals // Dump literals table
test lsli "r13,31"
test lsr "r14,r15"
test lsrc r0
test lsri "r1,1"
test mclri "r4, 64"
test mfcr "r2, cr0"
test mov "r3,r4"
test movf "r5, r6"
test movi "r7, 127"
test movt "r8, r9"
test mtcr "r10, psr"
test mult "r11, r12"
test mvc r13
test mvcv r14
test neg r2
test not r15
test or "r0,r1"
test rfi
test rolc "r6, 1"
test rori "r9, 6"
test rotlc "r6, 1"
test rotli "r2, #10"
test rotri "r9, 6"
test rsub "r3, r4"
test rsubi "r5, 0x0"
test rte
test rts
test setc
test sextb r6
test sexth r7
test st.b "r8, (r9, 0)"
test st.h "r10, (r11, 2)"
test st.w "r12, (r13, 4)"
test stb "r14, (r15, 15)"
test sth "r0, (r1, 30)"
test stw "r2, (r3, 0x3c)"
test st "r4, (r5, 0)"
test stm "r14 - r15 , (r0)"
test stop
test stq "r4 - r7 , (r1)"
test subc "r7, r13"
test subi "r14, 32"
test subu "r9, r3"
test sync
test tstlt r5
test tstne r7
test trap 2
test tst "r14, r14"
test tstnbz r2
test wait
test xor "r15,r0"
test xsr r11
test xtrb0 "r1, r1"
test xtrb1 "r1, r2"
test xtrb2 "r1, r0"
test xtrb3 "r1, r13"
test zextb r8
test zexth r4
clrc // These two instructions pad the object file
clrc // out to a 16 byte boundary.