Changeset 7910 for branches/ia32/level-0
- Timestamp:
- Dec 14, 2007, 1:53:35 AM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/ia32/level-0/X86/X8632/x8632-array.lisp
r7349 r7910 5 5 (require "X86-LAPMACROS")) 6 6 7 ;; rewrite in LAP someday (soon). 8 (defun %init-misc (val uvector) 9 (dotimes (i (uvsize uvector) uvector) 10 (setf (uvref uvector i) val))) 11 12 ;;; Make a new vector of size newsize whose subtag matches that of oldv-arg. 13 ;;; Blast the contents of the old vector into the new one as quickly as 14 ;;; possible; leave remaining elements of new vector undefined (0). 15 ;;; Return new-vector. 16 (defun %extend-vector (start oldv newsize) 17 (declare (fixnum start)) 18 (let* ((new (%alloc-misc newsize (typecode oldv))) 19 (oldsize (uvsize oldv))) 20 (declare (fixnum oldsize)) 21 (do* ((i 0 (1+ i)) 22 (j start (1+ j))) 23 ((= i oldsize) new) 24 (declare (fixnum i j)) 25 (setf (uvref new j) (uvref oldv i))))) 26 7 27 ;;; argument is a vector header or an array header. Or else. 8 (defx86 lapfunction %array-header-data-and-offset ((a arg_z))28 (defx8632lapfunction %array-header-data-and-offset ((a arg_z)) 9 29 (let ((offset arg_y) 10 30 (temp temp1)) … … 24 44 (jmp-subprim .SPvalues))) 25 45 26 (defx86 lapfunction %boole-clr ((idx 8) (b0 4) #|(ra 0)|# (b1 arg_y) (dest arg_z))46 (defx8632lapfunction %boole-clr ((idx 8) (b0 4) #|(ra 0)|# (b1 arg_y) (dest arg_z)) 27 47 (movl (@ idx (% esp)) (% temp0)) 28 48 (movl ($ 0) (@ x8632::misc-data-offset (% dest) (% temp0))) 29 49 (single-value-return 4)) 30 50 31 (defx86 lapfunction %boole-set ((idx 8) (b0 4) #|(ra 0)|# (b1 arg_y) (dest arg_z))51 (defx8632lapfunction %boole-set ((idx 8) (b0 4) #|(ra 0)|# (b1 arg_y) (dest arg_z)) 32 52 (movl (@ idx (% esp)) (% temp0)) 33 53 (movl ($ -1) (@ x8632::misc-data-offset (% dest) (% temp0))) 34 54 (single-value-return 4)) 35 55 36 (defx86 lapfunction %boole-1 ((idx 8) (b0 4) #|(ra 0)|# (b1 arg_y) (dest arg_z))37 (movl (@ idx (% esp)) (% temp0)) 38 (movl (@ b0 (% esp)) (% temp1)) 39 (movl (@ x8632::misc-data-offset (% temp1) (% temp0)) (% imm0)) 40 (movl (% imm0) (@ x8632::misc-data-offset (% dest) (% temp0))) 41 (single-value-return 4)) 42 43 (defx86 lapfunction %boole-2 ((idx 8) (b0 4) #|(ra 0)|# (b1 arg_y) (dest arg_z))44 (movl (@ idx (% esp)) (% temp0)) 45 (movl (@ x8632::misc-data-offset (% b1) (% temp0)) (% imm0)) 46 (movl (% imm0) (@ x8632::misc-data-offset (% dest) (% temp0))) 47 (single-value-return 4)) 48 49 (defx86 lapfunction %boole-c1 ((idx 8) (b0 4) #|(ra 0)|# (b1 arg_y) (dest arg_z))50 (movl (@ idx (% esp)) (% temp0)) 51 (movl (@ b0 (% esp)) (% temp1)) 52 (movl (@ x8632::misc-data-offset (% temp1) (% temp0)) (% imm0)) 53 (notl (% imm0)) 54 (movl (% imm0) (@ x8632::misc-data-offset (% dest) (% temp0))) 55 (single-value-return 4)) 56 57 (defx86 lapfunction %boole-c2 ((idx 8) (b0 4) #|(ra 0)|# (b1 arg_y) (dest arg_z))58 (movl (@ idx (% esp)) (% temp0)) 59 (movl (@ x8632::misc-data-offset (% b1) (% temp0)) (% imm0)) 60 (notl (% imm0)) 61 (movl (% imm0) (@ x8632::misc-data-offset (% dest) (% temp0))) 62 (single-value-return 4)) 63 64 (defx86 lapfunction %boole-and ((idx 8) (b0 4) #|(ra 0)|# (b1 arg_y) (dest arg_z))56 (defx8632lapfunction %boole-1 ((idx 8) (b0 4) #|(ra 0)|# (b1 arg_y) (dest arg_z)) 57 (movl (@ idx (% esp)) (% temp0)) 58 (movl (@ b0 (% esp)) (% temp1)) 59 (movl (@ x8632::misc-data-offset (% temp1) (% temp0)) (% imm0)) 60 (movl (% imm0) (@ x8632::misc-data-offset (% dest) (% temp0))) 61 (single-value-return 4)) 62 63 (defx8632lapfunction %boole-2 ((idx 8) (b0 4) #|(ra 0)|# (b1 arg_y) (dest arg_z)) 64 (movl (@ idx (% esp)) (% temp0)) 65 (movl (@ x8632::misc-data-offset (% b1) (% temp0)) (% imm0)) 66 (movl (% imm0) (@ x8632::misc-data-offset (% dest) (% temp0))) 67 (single-value-return 4)) 68 69 (defx8632lapfunction %boole-c1 ((idx 8) (b0 4) #|(ra 0)|# (b1 arg_y) (dest arg_z)) 70 (movl (@ idx (% esp)) (% temp0)) 71 (movl (@ b0 (% esp)) (% temp1)) 72 (movl (@ x8632::misc-data-offset (% temp1) (% temp0)) (% imm0)) 73 (notl (% imm0)) 74 (movl (% imm0) (@ x8632::misc-data-offset (% dest) (% temp0))) 75 (single-value-return 4)) 76 77 (defx8632lapfunction %boole-c2 ((idx 8) (b0 4) #|(ra 0)|# (b1 arg_y) (dest arg_z)) 78 (movl (@ idx (% esp)) (% temp0)) 79 (movl (@ x8632::misc-data-offset (% b1) (% temp0)) (% imm0)) 80 (notl (% imm0)) 81 (movl (% imm0) (@ x8632::misc-data-offset (% dest) (% temp0))) 82 (single-value-return 4)) 83 84 (defx8632lapfunction %boole-and ((idx 8) (b0 4) #|(ra 0)|# (b1 arg_y) (dest arg_z)) 65 85 (movl (@ idx (% esp)) (% temp0)) 66 86 (movl (@ b0 (% esp)) (% temp1)) … … 70 90 (single-value-return 4)) 71 91 72 (defx86 lapfunction %boole-ior ((idx 8) (b0 4) #|(ra 0)|# (b1 arg_y) (dest arg_z))92 (defx8632lapfunction %boole-ior ((idx 8) (b0 4) #|(ra 0)|# (b1 arg_y) (dest arg_z)) 73 93 (movl (@ idx (% esp)) (% temp0)) 74 94 (movl (@ b0 (% esp)) (% temp1)) … … 78 98 (single-value-return 4)) 79 99 80 (defx86 lapfunction %boole-xor ((idx 8) (b0 4) #|(ra 0)|# (b1 arg_y) (dest arg_z))100 (defx8632lapfunction %boole-xor ((idx 8) (b0 4) #|(ra 0)|# (b1 arg_y) (dest arg_z)) 81 101 (movl (@ idx (% esp)) (% temp0)) 82 102 (movl (@ b0 (% esp)) (% temp1)) … … 86 106 (single-value-return 4)) 87 107 88 (defx86 lapfunction %boole-eqv ((idx 8) (b0 4) #|(ra 0)|# (b1 arg_y) (dest arg_z))108 (defx8632lapfunction %boole-eqv ((idx 8) (b0 4) #|(ra 0)|# (b1 arg_y) (dest arg_z)) 89 109 (movl (@ idx (% esp)) (% temp0)) 90 110 (movl (@ b0 (% esp)) (% temp1)) … … 95 115 (single-value-return 4)) 96 116 97 (defx86 lapfunction %boole-nand ((idx 8) (b0 4) #|(ra 0)|# (b1 arg_y) (dest arg_z))117 (defx8632lapfunction %boole-nand ((idx 8) (b0 4) #|(ra 0)|# (b1 arg_y) (dest arg_z)) 98 118 (movl (@ idx (% esp)) (% temp0)) 99 119 (movl (@ b0 (% esp)) (% temp1)) … … 104 124 (single-value-return 4)) 105 125 106 (defx86 lapfunction %boole-nor ((idx 8) (b0 4) #|(ra 0)|# (b1 arg_y) (dest arg_z))126 (defx8632lapfunction %boole-nor ((idx 8) (b0 4) #|(ra 0)|# (b1 arg_y) (dest arg_z)) 107 127 (movl (@ idx (% esp)) (% temp0)) 108 128 (movl (@ b0 (% esp)) (% temp1)) … … 113 133 (single-value-return 4)) 114 134 115 (defx86 lapfunction %boole-andc1 ((idx 8) (b0 4) #|(ra 0)|# (b1 arg_y) (dest arg_z))135 (defx8632lapfunction %boole-andc1 ((idx 8) (b0 4) #|(ra 0)|# (b1 arg_y) (dest arg_z)) 116 136 (movl (@ idx (% esp)) (% temp0)) 117 137 (movl (@ b0 (% esp)) (% temp1)) … … 122 142 (single-value-return 4)) 123 143 124 (defx86 lapfunction %boole-andc2 ((idx 8) (b0 4) #|(ra 0)|# (b1 arg_y) (dest arg_z))144 (defx8632lapfunction %boole-andc2 ((idx 8) (b0 4) #|(ra 0)|# (b1 arg_y) (dest arg_z)) 125 145 (movl (@ idx (% esp)) (% temp0)) 126 146 (movl (@ b0 (% esp)) (% temp1)) … … 131 151 (single-value-return 4)) 132 152 133 (defx86 lapfunction %boole-orc1 ((idx 8) (b0 4) #|(ra 0)|# (b1 arg_y) (dest arg_z))153 (defx8632lapfunction %boole-orc1 ((idx 8) (b0 4) #|(ra 0)|# (b1 arg_y) (dest arg_z)) 134 154 (movl (@ idx (% esp)) (% temp0)) 135 155 (movl (@ b0 (% esp)) (% temp1)) … … 140 160 (single-value-return 4)) 141 161 142 (defx86 lapfunction %boole-orc2 ((idx 8) (b0 4) #|(ra 0)|# (b1 arg_y) (dest arg_z))162 (defx8632lapfunction %boole-orc2 ((idx 8) (b0 4) #|(ra 0)|# (b1 arg_y) (dest arg_z)) 143 163 (movl (@ idx (% esp)) (% temp0)) 144 164 (movl (@ b0 (% esp)) (% temp1)) … … 148 168 (movl (% imm0) (@ x8632::misc-data-offset (% dest) (% temp0))) 149 169 (single-value-return 4)) 170 171 (defparameter *simple-bit-boole-functions* ()) 172 173 (setq *simple-bit-boole-functions* 174 (vector 175 #'%boole-clr 176 #'%boole-set 177 #'%boole-1 178 #'%boole-2 179 #'%boole-c1 180 #'%boole-c2 181 #'%boole-and 182 #'%boole-ior 183 #'%boole-xor 184 #'%boole-eqv 185 #'%boole-nand 186 #'%boole-nor 187 #'%boole-andc1 188 #'%boole-andc2 189 #'%boole-orc1 190 #'%boole-orc2)) 191 192 (defun %simple-bit-boole (op b1 b2 result) 193 (let* ((f (svref *simple-bit-boole-functions* op))) 194 (dotimes (i (ash (the fixnum (+ (length result) 31)) -5) result) 195 (funcall f i b1 b2 result)))) 150 196 151 197 ;;; placeholders for future specialized versions
Note: See TracChangeset
for help on using the changeset viewer.