summaryrefslogtreecommitdiff
path: root/gas/testsuite/gas/ft32/insn.s
diff options
context:
space:
mode:
Diffstat (limited to 'gas/testsuite/gas/ft32/insn.s')
-rw-r--r--gas/testsuite/gas/ft32/insn.s185
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