blob: 641ff185046c664428e2a094ae2deee22db15683 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
# $ls[0:32] = k
# $ls[32:64] = j >= k
# $lr[0:32] = A[j] < A[k]
# $lr[0:32] = (j >= k) and (A[j] < A[k])
imm i"1" $s3/1000
imm i"2" $s5/1000
imm i"3" $s7/1000
imm i"4" $s9/1000
iadd $aluf $s3v2 $s11v2
iadd $aluf $s9 $s19v2
iadd $aluf $s9 $s27v2/1110
# 4.times { |i| puts "lsub $mabid $ls#{i*8}v $omr1"; puts "lpassa/$imr1 $ls2 $ls#{32+i*8}v" }
lsub $mabid $ls0v $omr1
lpassa/$imr1 $ls2 $ls32v
lsub $mabid $ls8v $omr1
lpassa/$imr1 $ls2 $ls40v
lsub $mabid $ls16v $omr1
lpassa/$imr1 $ls2 $ls48v
lsub $mabid $ls24v $omr1
lpassa/$imr1 $ls2 $ls56v
lpackbit $mabid $ln0 $t
lpassa $llm0v $llr0v
lpassa $llm16v $llr16v
# 4.times { |i| puts "lsub $lmt0 $lr#{i*8}v $omr1"; puts "lpassa/$imr1 $ls2 $lr#{i*8}v" }
# 4.times { |i| puts "llnot $lr#{i*8}v $lr#{i*8}v" }
lsub $lmt0 $lr0v $omr1
lpassa/$imr1 $ls2 $lr0v
lsub $lmt0 $lr8v $omr1
lpassa/$imr1 $ls2 $lr8v
lsub $lmt0 $lr16v $omr1
lpassa/$imr1 $ls2 $lr16v
lsub $lmt0 $lr24v $omr1
lpassa/$imr1 $ls2 $lr24v
llnot $lr0v $lr0v
llnot $lr8v $lr8v
llnot $lr16v $lr16v
llnot $lr24v $lr24v
# d getd $ls32n0c0b0p0 16
# d getd $lr0n0c0b0p0 16
# 4.times { |i| puts "land $ls#{32+i*8}v $lr#{i*8}v $lr#{i*8}v" }
land $ls32v $lr0v $lr0v
land $ls40v $lr8v $lr8v
land $ls48v $lr16v $lr16v
land $ls56v $lr24v $lr24v
# d getd $lr0n0c0b0p0 16
nop
# 4.times { |i| puts "l1bmrliadd $lr#{i*8}v $lbi"; puts "l1bmm $lbi $lm#{i*8}v" }
l1bmrliadd $lr0v $lbi
l1bmrliadd $lr8v $lbi; l1bmm $lbi $lm0v
l1bmrliadd $lr16v $lbi; l1bmm $lbi $lm8v
l1bmrliadd $lr24v $lbi; l1bmm $lbi $lm16v
l1bmm $lbi $lm24v
lpackbit $mabid $ln0 $t
nop
l1bmrliadd $lmt0 $lbi
l1bmm $lbi $ln0
|