BSD 3 development
authorCharles B. Haley <cbh@research.uucp>
Fri, 9 Nov 1979 10:51:49 +0000 (02:51 -0800)
committerCharles B. Haley <cbh@research.uucp>
Fri, 9 Nov 1979 10:51:49 +0000 (02:51 -0800)
Work on file usr/src/cmd/px/02relset.s

Co-Authored-By: Bill Joy <wnj@ucbvax.Berkeley.EDU>
Co-Authored-By: Ken Thompson <ken@research.uucp>
Synthesized-from: 3bsd

usr/src/cmd/px/02relset.s [new file with mode: 0644]

diff --git a/usr/src/cmd/px/02relset.s b/usr/src/cmd/px/02relset.s
new file mode 100644 (file)
index 0000000..40d0e6e
--- /dev/null
@@ -0,0 +1,100 @@
+#\f
+# 02relset.s
+#
+# RELATIONALS ON SETS
+#
+_RELT:
+       cvtbl   (r10)+,r5       #r5 has jump opcode
+       cvtwl   (r10)+,r1       #r1 has comparison length (bytes)
+       movl    r1,r4           #r4 has stack length
+       blbc    r4,l0211
+       incl    r4
+l0211:
+       addl3   sp,r4,r3        #r3 has addr of lower operand
+       addl2   r3,r4           #r4 points to cleared stack
+       ashl    $1,r5,r5        #maintain compatability
+       jsb     *settab(r5)     #calc condition, return boolean in r0
+       movl    r4,sp           #reset stack
+       cmpl    r5,$20          #check for branch
+       bgtr    l0212
+       movw    r0,-(sp)        #put boolean on stack
+       jmp     (r8)
+l0212:
+       tstl    r0
+       beql    l0213
+       addl2   $2,r10          #continue on true
+       jmp     (r8)
+l0213:
+       cvtwl   (r10),r0        #skip on false
+       addl2   r0,r10
+       jmp     (r8)
+
+       .align  1
+settab:                        #condition code branch table
+       .long   seteq   #generate boolean answer
+       .long   setne
+       .long   setlt
+       .long   setgt
+       .long   setle
+       .long   setge
+       .long   seteq   #branch on condition false
+       .long   setne
+       .long   setlt
+       .long   setgt
+       .long   setle
+       .long   setge
+
+setlt:
+       moval   4(sp),r2        #skip over return address
+       ashl    $-1,r1,r1
+l0214:
+       bicw3   (r2),(r3),r0
+       bneq    false
+       bicw2   (r3)+,(r2)+
+       bneq    l0216           #need only check <= for remainder of set
+       sobgtr  r1,l0214
+false:
+       clrl    r0
+       rsb
+setle:
+       moval   4(sp),r2
+       ashl    $-1,r1,r1
+l0215:
+       bicw2   (r2)+,(r3)+
+       bneq    false
+l0216:
+       sobgtr  r1,l0215
+true:
+       movl    $1,r0
+       rsb
+seteq:
+       cmpc3   r1,(r3),4(sp)
+       beql    true
+       clrl    r0
+       rsb
+setne:
+       cmpc3   r1,(r3),4(sp)
+       bneq    true
+       clrl    r0
+       rsb
+setgt:
+       moval   4(sp),r2
+       ashl    $-1,r1,r1
+l0217:
+       bicw3   (r3),(r2),r0
+       bneq    false
+       bicw2   (r2)+,(r3)+
+       bneq    l0219           #need only check >= for remainder of set
+       sobgtr  r1,l0217
+       clrl    r0
+       rsb
+setge:
+       moval   4(sp),r2
+       ashl    $-1,r1,r1
+l0218:
+       bicw2   (r3)+,(r2)+
+       bneq    false
+l0219:
+       sobgtr  r1,l0218
+       movl    $1,r0
+       rsb