BSD 4 release
[unix-history] / usr / src / cmd / px / 02relset.s
CommitLineData
d843b78e 1#\f
31cef89c
BJ
2# Copyright (c) 1979 Regents of the University of California
3#
4# char sccsid[] = "@(#)02relset.s 4.1 10/10/80";
d843b78e
CH
5#
6# RELATIONALS ON SETS
7#
8_RELT:
9 cvtbl (r10)+,r5 #r5 has jump opcode
31cef89c 10 movzwl (r10)+,r1 #r1 has comparison length (bytes)
d843b78e
CH
11 movl r1,r4 #r4 has stack length
12 blbc r4,l0211
13 incl r4
14l0211:
15 addl3 sp,r4,r3 #r3 has addr of lower operand
16 addl2 r3,r4 #r4 points to cleared stack
d843b78e
CH
17 jsb *settab(r5) #calc condition, return boolean in r0
18 movl r4,sp #reset stack
19 cmpl r5,$20 #check for branch
20 bgtr l0212
21 movw r0,-(sp) #put boolean on stack
22 jmp (r8)
23l0212:
24 tstl r0
25 beql l0213
26 addl2 $2,r10 #continue on true
27 jmp (r8)
28l0213:
29 cvtwl (r10),r0 #skip on false
30 addl2 r0,r10
31 jmp (r8)
32
33 .align 1
31cef89c
BJ
34settab: #condition code branch table
35 .long seteq #generate boolean answer
d843b78e
CH
36 .long setne
37 .long setlt
38 .long setgt
39 .long setle
40 .long setge
31cef89c 41 .long seteq #branch on condition false
d843b78e
CH
42 .long setne
43 .long setlt
44 .long setgt
45 .long setle
46 .long setge
47
48setlt:
49 moval 4(sp),r2 #skip over return address
50 ashl $-1,r1,r1
51l0214:
52 bicw3 (r2),(r3),r0
53 bneq false
54 bicw2 (r3)+,(r2)+
55 bneq l0216 #need only check <= for remainder of set
56 sobgtr r1,l0214
57false:
58 clrl r0
59 rsb
60setle:
61 moval 4(sp),r2
62 ashl $-1,r1,r1
63l0215:
64 bicw2 (r2)+,(r3)+
65 bneq false
66l0216:
67 sobgtr r1,l0215
68true:
69 movl $1,r0
70 rsb
71seteq:
72 cmpc3 r1,(r3),4(sp)
73 beql true
74 clrl r0
75 rsb
76setne:
77 cmpc3 r1,(r3),4(sp)
78 bneq true
79 clrl r0
80 rsb
81setgt:
82 moval 4(sp),r2
83 ashl $-1,r1,r1
84l0217:
85 bicw3 (r3),(r2),r0
86 bneq false
87 bicw2 (r2)+,(r3)+
88 bneq l0219 #need only check >= for remainder of set
89 sobgtr r1,l0217
90 clrl r0
91 rsb
92setge:
93 moval 4(sp),r2
94 ashl $-1,r1,r1
95l0218:
96 bicw2 (r3)+,(r2)+
97 bneq false
98l0219:
99 sobgtr r1,l0218
100 movl $1,r0
101 rsb