V7/usr/src/libfpsim/fp2.s
/ fp2 -- floating point simulation
i.ldx:
mov (r3)+,(r2)+
mov (r3)+,(r2)+
bit $m.ext,fpsr
beq 1f
mov (r3)+,(r2)+
mov (r3)+,(r2)+
rts pc
1:
clr (r2)+
clr (r2)+
rts pc
i.stx:
mov (r2)+,(r3)+
mov (r2)+,(r3)+
bit $m.ext,fpsr
beq 1f
mov (r2)+,(r3)+
mov (r2)+,(r3)+
1:
jmp ret / does not set cc's
i.clrx:
clr (r3)+
clr (r3)+
bit $m.ext,fpsr
beq 1f
clr (r3)+
clr (r3)+
1:
rts pc
i.negx:
tst (r3)
beq 1f
add $100000,(r3)
1:
rts pc
i.absx:
bic $!77777,(r3)
rts pc
i.tstx:
rts pc
i.cmpx:
mov $areg,r5
tst (r2)
bge 1f
tst (r3)
bge 1f
cmp (r2),(r3)
bgt 4f
blt 3f
1:
cmp (r2)+,(r3)+
bgt 3f
blt 4f
cmp (r2)+,(r3)+
bne 1f
bit $m.ext,fpsr
beq 2f
cmp (r2)+,(r3)+
bne 1f
cmp (r2)+,(r3)+
beq 2f
1:
bhi 3f
4:
movb $1,1(r5)
rts pc
3:
mov $-1,(r5)
rts pc
2:
clr (r5)
rts pc
i.ldcyx:
mov (r3)+,(r2)+
mov (r3)+,(r2)+
bit $m.ext,fpsr
bne 1f
mov (r3)+,(r2)+
mov (r3)+,(r2)+
rts pc
1:
clr (r2)+
clr (r2)+
rts pc
i.stcxy:
mov (r2)+,(r3)+
mov (r2)+,(r3)+
bit $m.ext,fpsr
bne 1f
clr (r3)+
clr (r3)+
1:
rts pc
i.ldcjx:
mov $asign,r0
mov $1,(r0)+
mov (r3)+,(r0)+
bit $m.lngi,fpsr
beq 1f
mov (r3)+,(r0)+
clr (r0)+
clr (r0)+
mov $32.-8,(r0)+
jmp saret
1:
clr (r0)+
clr (r0)+
clr (r0)+
mov $16.-8,(r0)
jmp saret
i.stcxj:
mov r3,r5
mov $asign,r0
jsr pc,seta
clr r4
mov $areg,r0
mov (r0)+,r1
mov (r0)+,r2
mov (r0)+,r3
mov aexp,r0
1:
cmp r0,$48.-8
bge 1f
clc
ror r1
ror r2
ror r3
inc r0
br 1b
1:
bgt 7f
tst r1
beq 1f
7:
bis $1,r4 / C-bit
1:
bit $m.lngi,fpsr
beq 1f
tst asign
bge 2f
neg r3
adc r2
bcs 2f
neg r2
bis $10,r4 / N-bit
2:
mov r2,(r5)
mov r3,2(r5)
bis r2,r3
br 8f
1:
tst r2
beq 1f
bis $1,r4 / C-bit
1:
tst asign
bge 2f
neg r3
bis $10,r4 / N-bit
2:
mov r3,(r5)
8:
bne 1f
bis $4,r4 / Z-bit
1:
bic $17,sps
bic $17,fpsr
bis r4,sps
bis r4,fpsr
jmp ret
xoflo:
bis $1,fpsr / set fixed overflow (carry)
jmp ret
i.ldexp:
mov $asign,r0
jsr pc,seta
mov (r3),aexp
jsr pc,reta
jmp sret
i.stexp:
mov $asign,r0
jsr pc,seta
mov aexp,(r3)
mov r3,r5
bic $17,sps
tst (r3)
bmi 1f
bne 2f
bis $4,sps / Z-bit
br 2f
1:
bis $10,sps / N-bit
2:
jmp sret
i.ldfps:
mov (r3),fpsr
jmp ret
i.stfps:
mov fpsr,(r3)
jmp ret