diff options
Diffstat (limited to 'gas/testsuite/gas/ft32/insn.s')
-rw-r--r-- | gas/testsuite/gas/ft32/insn.s | 185 |
1 files changed, 185 insertions, 0 deletions
diff --git a/gas/testsuite/gas/ft32/insn.s b/gas/testsuite/gas/ft32/insn.s new file mode 100644 index 00000000000..344749fa522 --- /dev/null +++ b/gas/testsuite/gas/ft32/insn.s @@ -0,0 +1,185 @@ + # Used for all instructions that have a 3-address form + .macro TERNARY insn + # reg-reg + \insn $r31, $r0, $r0 + \insn $r0, $r31, $r0 + \insn $r0, $r0, $r31 + \insn $r1, $r2, $r4 + \insn $r8, $r16, $r0 + + # immediate + \insn $r31, $r0, -512 + \insn $r0, $r31, 0 + \insn $r0, $r31, 1 + \insn $r0, $r31, 511 + + # short and byte + \insn\().s $r0, $r31, $r1 + \insn\().s $r0, $r31, 77 + \insn\().b $r0, $r31, $r1 + \insn\().b $r0, $r31, 77 + + .endm + + .macro RegUImm insn + \insn r0, r0, 0 + \insn r0, r0, 65535 + \insn r0, r31, 0 + \insn r0, r31, 65535 + \insn r31, r0, 0 + \insn r31, r0, 65535 + .endm + + .macro CMPOP insn + # reg-reg + \insn $r0, $r0 + \insn $r31, $r0 + \insn $r0, $r31 + + # immediate + \insn $r0, -512 + \insn $r31, 0 + \insn $r31, 1 + \insn $r31, 511 + + # short and byte + \insn\().s $r31, $r1 + \insn\().s $r31, 77 + \insn\().b $r31, $r1 + \insn\().b $r31, 77 + + .endm + + .section .data +dalabel: + .long 0 + + .section .text +pmlabel: + + TERNARY add + TERNARY sub + TERNARY and + TERNARY or + TERNARY xor + TERNARY xnor + TERNARY ashl + TERNARY lshr + TERNARY ashr + TERNARY ror + TERNARY ldl + TERNARY bins + TERNARY bexts + TERNARY bextu + TERNARY flip + + CMPOP addcc + CMPOP cmp + CMPOP tst + CMPOP btst + + # LDI, STI, EXI + ldi.l $r0,$r31,-128 + ldi.l $r31,$r0,127 + ldi.s $r0,$r31,-128 + ldi.s $r0,$r31,127 + ldi.b $r31,$r0,-128 + ldi.b $r31,$r0,127 + sti.l $r31,-128,$r0 + sti.l $r0,127,$r31 + sti.s $r31,-128,$r0 + sti.s $r31,127,$r0 + sti.b $r0,-128,$r31 + sti.b $r0,127,$r31 + exi.l $r0,$r31,-128 + exi.l $r31,$r0,127 + exi.s $r0,$r31,-128 + exi.s $r0,$r31,127 + exi.b $r31,$r0,-128 + exi.b $r31,$r0,127 + + # LPM, LPMI + lpm.l $r0,pmlabel + lpm.s $r16,pmlabel + lpm.b $r31,pmlabel + lpmi.l $r0,$r1,-128 + lpmi.s $r16,$r1,127 + lpmi.b $r31,$r1,-128 + + # JMP + jmp pmlabel + jmpi $r16 + jmpx 31,$r28,1,pmlabel + jmpc nz,pmlabel + + # CALL + call pmlabel + calli $r16 + callx 31,$r28,1,pmlabel + callc nz,pmlabel + + # PUSH, POP + push $r0 + push $r16 + push $r31 + pop $r0 + pop $r16 + pop $r31 + + # LINK,UNLINK + link $r0,0 + link $r16,65535 + link $r31,1017 + unlink $r0 + unlink $r16 + unlink $r31 + + # RETURN,RETI + return + reti + + # LDA,STA,EXA + lda.l $r0,dalabel + lda.s $r16,dalabel + lda.b $r31,dalabel + sta.l dalabel,$r0 + sta.s dalabel,$r16 + sta.b dalabel,$r31 + exa.l $r0,dalabel + exa.s $r16,dalabel + exa.b $r31,dalabel + + # LDK + ldk $r0,-524288 + ldk $r0,524287 + ldk $r0,0 + + move $r0,$r31 + move $r31,$r0 + + TERNARY udiv + TERNARY umod + TERNARY div + TERNARY mod + TERNARY strcmp + TERNARY memcpy + TERNARY memset + TERNARY mul + TERNARY muluh + TERNARY streamin + TERNARY streamini + TERNARY streamout + TERNARY streamouti + + strlen.l $r0,$r31 + strlen.l $r31,$r0 + strlen.s $r0,$r31 + strlen.s $r31,$r0 + strlen.b $r0,$r31 + strlen.b $r31,$r0 + stpcpy.l $r0,$r31 + stpcpy.l $r31,$r0 + stpcpy.s $r0,$r31 + stpcpy.s $r31,$r0 + stpcpy.b $r0,$r31 + stpcpy.b $r31,$r0 |