ack/mach/vc4/test/opcodes.s

363 lines
5.1 KiB
ArmAsm
Raw Normal View History

#
/*
* VideoCore IV assembler test file
* © 2013 David Given
* This file is redistributable under the terms of the 3-clause BSD license.
* See the file 'Copying' in the root of the distribution for the full text.
*/
.sect .text
.sect .rom
.sect .data
.sect .bss
.sect .text
main:
nop
rti
b r0
b r31
bl r0
bl r31
tbb r0
tbb r15
tbs r0
tbs r15
nop
mov r0, r1
cmn r0, r1
add r0, r1
bic r0, r1
mul r0, r1
eor r0, r1
sub r0, r1
and r0, r1
mvn r0, r1
ror r0, r1
cmp r0, r1
rsb r0, r1
btst r0, r1
or r0, r1
extu r0, r1
max r0, r1
bset r0, r1
min r0, r1
bclr r0, r1
adds2 r0, r1
bchg r0, r1
adds4 r0, r1
adds8 r0, r1
adds16 r0, r1
exts r0, r1
neg r0, r1
lsr r0, r1
clz r0, r1
lsl r0, r1
brev r0, r1
asr r0, r1
abs r0, r1
nop
mov.f r0, r1
cmn.f r0, r1
add.f r0, r1
bic.f r0, r1
mul.f r0, r1
eor.f r0, r1
sub.f r0, r1
and.f r0, r1
mvn.f r0, r1
ror.f r0, r1
cmp.f r0, r1
rsb.f r0, r1
btst.f r0, r1
or.f r0, r1
extu.f r0, r1
max.f r0, r1
bset.f r0, r1
min.f r0, r1
bclr.f r0, r1
adds2.f r0, r1
bchg.f r0, r1
adds4.f r0, r1
adds8.f r0, r1
adds16.f r0, r1
exts.f r0, r1
neg.f r0, r1
lsr.f r0, r1
clz.f r0, r1
lsl.f r0, r1
brev.f r0, r1
asr.f r0, r1
abs.f r0, r1
nop
mov r0, r1, r2
cmn r0, r1, r2
add r0, r1, r2
bic r0, r1, r2
mul r0, r1, r2
eor r0, r1, r2
sub r0, r1, r2
and r0, r1, r2
mvn r0, r1, r2
ror r0, r1, r2
cmp r0, r1, r2
rsb r0, r1, r2
btst r0, r1, r2
or r0, r1, r2
extu r0, r1, r2
max r0, r1, r2
bset r0, r1, r2
min r0, r1, r2
bclr r0, r1, r2
adds2 r0, r1, r2
bchg r0, r1, r2
adds4 r0, r1, r2
adds8 r0, r1, r2
adds16 r0, r1, r2
exts r0, r1, r2
neg r0, r1, r2
lsr r0, r1, r2
clz r0, r1, r2
lsl r0, r1, r2
brev r0, r1, r2
asr r0, r1, r2
abs r0, r1, r2
nop
mov r0, #0x1f
cmn r0, #0x1f
add r0, #0x1f
bic r0, #0x1f
mul r0, #0x1f
eor r0, #0x1f
sub r0, #0x1f
and r0, #0x1f
mvn r0, #0x1f
ror r0, #0x1f
cmp r0, #0x1f
rsb r0, #0x1f
btst r0, #0x1f
or r0, #0x1f
extu r0, #0x1f
max r0, #0x1f
bset r0, #0x1f
min r0, #0x1f
bclr r0, #0x1f
adds2 r0, #0x1f
bchg r0, #0x1f
adds4 r0, #0x1f
adds8 r0, #0x1f
adds16 r0, #0x1f
exts r0, #0x1f
neg r0, #0x1f
lsr r0, #0x1f
clz r0, #0x1f
lsl r0, #0x1f
brev r0, #0x1f
asr r0, #0x1f
abs r0, #0x1f
nop
mov.f r0, #0x1f
cmn.f r0, #0x1f
add.f r0, #0x1f
bic.f r0, #0x1f
mul.f r0, #0x1f
eor.f r0, #0x1f
sub.f r0, #0x1f
and.f r0, #0x1f
mvn.f r0, #0x1f
ror.f r0, #0x1f
cmp.f r0, #0x1f
rsb.f r0, #0x1f
btst.f r0, #0x1f
or.f r0, #0x1f
extu.f r0, #0x1f
max.f r0, #0x1f
bset.f r0, #0x1f
min.f r0, #0x1f
bclr.f r0, #0x1f
adds2.f r0, #0x1f
bchg.f r0, #0x1f
adds4.f r0, #0x1f
adds8.f r0, #0x1f
adds16.f r0, #0x1f
exts.f r0, #0x1f
neg.f r0, #0x1f
lsr.f r0, #0x1f
clz.f r0, #0x1f
lsl.f r0, #0x1f
brev.f r0, #0x1f
asr.f r0, #0x1f
abs.f r0, #0x1f
add r0, #0x12345678
add r0, r1, #0x12345678
sub r0, #0x12345678
nop
fadd r0, r1, r2
fsub r0, r1, r2
fmul r0, r1, r2
fdiv r0, r1, r2
fcmp r0, r1, r2
fabs r0, r1, r2
frsb r0, r1, r2
fmax r0, r1, r2
frcp r0, r1, r2
frsqrt r0, r1, r2
fnmul r0, r1, r2
fmin r0, r1, r2
fld1 r0, r1, r2
fld0 r0, r1, r2
log2 r0, r1, r2
exp2 r0, r1, r2
divs r0, r1, r2
divu r0, r1, r2
divs r0, r1, #31
divu r0, r1, #31
adds256 r0, r1, r2
nop
fadd.f r0, r1, r2
fsub.f r0, r1, r2
fmul.f r0, r1, r2
fdiv.f r0, r1, r2
fcmp.f r0, r1, r2
fabs.f r0, r1, r2
frsb.f r0, r1, r2
fmax.f r0, r1, r2
frcp.f r0, r1, r2
frsqrt.f r0, r1, r2
fnmul.f r0, r1, r2
fmin.f r0, r1, r2
fld1.f r0, r1, r2
fld0.f r0, r1, r2
log2.f r0, r1, r2
exp2.f r0, r1, r2
divs.f r0, r1, r2
divu.f r0, r1, r2
divs.f r0, r1, #31
divu.f r0, r1, #31
adds256.f r0, r1, r2
label:
b label
b forward
b label
b main
b.f label
b.f forward
b.f main
bl label
bl forward
bl main
forward:
push r0
push r0, lr
push r0-r5
push r0-r5, lr
push r6
push r16
push r24
push lr
pop r0
pop r0, pc
pop r0-r5
pop r0-r5, pc
pop r6
pop r16
pop r24
pop pc
nop
ld r0, (sp)
st r0, (sp)
ld r0, 4(sp)
st r0, 4(sp)
ld r0, -4(sp)
st r0, -4(sp)
ld r0, 5(sp)
st r0, 5(sp)
ld r0, -5(sp)
st r0, -5(sp)
ld r0, (r1)
st r0, (r1)
ld r16, (r1)
st r16, (r1)
ldh r0, (r1)
sth r0, (r1)
ldb r0, (r1)
stb r0, (r1)
ldhs r0, (r1)
sths r0, (r1)
ldh r16, (r1)
sth r16, (r1)
ldb r16, (r1)
stb r16, (r1)
ldhs r16, (r1)
sths r16, (r1)
ld r0, 0x3c (r1)
st r0, 0x3c (r1)
ld r0, 0xfff (r1)
st r0, 0xfff (r1)
ld r1, 0xffff (r0)
st r1, 0xffff (r0)
ld r0, -1 (r1)
st r0, -1 (r1)
ld r16, 0x3c (r1)
st r16, 0x3c (r1)
ld r16, 0xfff (r1)
st r16, 0xfff (r1)
ld r16, 0xffff (r0)
st r16, 0xffff (r0)
ld r16, -1 (r1)
st r16, -1 (r1)
ld.f r0, (r1)
st.f r0, (r1)
ld.f r0, 8 (r1)
st.f r0, 8 (r1)
ld r0, (r1, r2)
st r0, (r1, r2)
ld.f r0, (pc, pc)
st.f r0, (pc, pc)
near:
ld r0, (r1)++
st r0, (r1)++
ld.f pc, (pc)++
st.f pc, (pc)++
ld r0, near
ld r0, main
st r0, near
st r0, main
ldb r0, near
ldb r0, main
stb r0, near
stb r0, main
b.eq r0, r1, near
b r0, r1, near
addcmpb r0, r1, r2, .
addcmpb r0, #1, r2, .
addcmpb r0, r1, #1, .
addcmpb r0, #1, #2, .