Raymond Toy pushed to branch sparc64-dev at cmucl / cmucl
Commits:
-
aae9e027
by Raymond Toy at 2018-01-02T21:22:18-08:00
-
f52af343
by Raymond Toy at 2018-01-02T21:22:52-08:00
6 changed files:
- src/compiler/sparc64/alloc.lisp
- src/compiler/sparc64/arith.lisp
- src/compiler/sparc64/array.lisp
- src/compiler/sparc64/c-call.lisp
- src/compiler/sparc64/call.lisp
- src/compiler/sparc64/memory.lisp
Changes:
| ... | ... | @@ -61,6 +61,7 @@ |
| 61 | 61 |
(:variant-vars star)
|
| 62 | 62 |
(:policy :safe)
|
| 63 | 63 |
(:generator 0
|
| 64 |
+ (emit-not-implemented)
|
|
| 64 | 65 |
(cond ((zerop num)
|
| 65 | 66 |
(move result null-tn))
|
| 66 | 67 |
((and star (= num 1))
|
| ... | ... | @@ -116,6 +117,7 @@ |
| 116 | 117 |
(:temporary (:scs (any-reg) :from (:argument 0)) boxed)
|
| 117 | 118 |
(:temporary (:scs (non-descriptor-reg) :from (:argument 1)) unboxed)
|
| 118 | 119 |
(:generator 100
|
| 120 |
+ (emit-not-implemented)
|
|
| 119 | 121 |
(inst add boxed boxed-arg (fixnumize (1+ code-trace-table-offset-slot)))
|
| 120 | 122 |
(inst and boxed (lognot lowtag-mask))
|
| 121 | 123 |
(inst srln unboxed unboxed-arg word-shift)
|
| ... | ... | @@ -139,6 +141,7 @@ |
| 139 | 141 |
(:policy :fast-safe)
|
| 140 | 142 |
(:translate make-fdefn)
|
| 141 | 143 |
(:generator 37
|
| 144 |
+ (emit-not-implemented)
|
|
| 142 | 145 |
(with-fixed-allocation (result temp fdefn-type fdefn-size)
|
| 143 | 146 |
;; For the linkage-table stuff, we need to look up the address
|
| 144 | 147 |
;; of undefined_tramp from the linkage table instead of using
|
| ... | ... | @@ -156,6 +159,7 @@ |
| 156 | 159 |
(:temporary (:scs (non-descriptor-reg)) temp)
|
| 157 | 160 |
(:results (result :scs (descriptor-reg)))
|
| 158 | 161 |
(:generator 10
|
| 162 |
+ (emit-not-implemented)
|
|
| 159 | 163 |
(let ((size (+ length closure-info-offset)))
|
| 160 | 164 |
(with-fixed-allocation (result temp closure-header-type size
|
| 161 | 165 |
:lowtag function-pointer-type
|
| ... | ... | @@ -169,6 +173,7 @@ |
| 169 | 173 |
(:temporary (:scs (non-descriptor-reg)) temp)
|
| 170 | 174 |
(:results (result :scs (descriptor-reg)))
|
| 171 | 175 |
(:generator 10
|
| 176 |
+ (emit-not-implemented)
|
|
| 172 | 177 |
(with-fixed-allocation
|
| 173 | 178 |
(result temp value-cell-header-type value-cell-size)
|
| 174 | 179 |
(storew value result value-cell-value-slot other-pointer-type))))
|
| ... | ... | @@ -181,6 +186,7 @@ |
| 181 | 186 |
(:args)
|
| 182 | 187 |
(:results (result :scs (any-reg)))
|
| 183 | 188 |
(:generator 1
|
| 189 |
+ (emit-not-implemented)
|
|
| 184 | 190 |
(inst li result unbound-marker-type)))
|
| 185 | 191 |
|
| 186 | 192 |
(define-vop (fixed-alloc)
|
| ... | ... | @@ -190,6 +196,7 @@ |
| 190 | 196 |
(:results (result :scs (descriptor-reg)))
|
| 191 | 197 |
(:temporary (:scs (non-descriptor-reg)) temp)
|
| 192 | 198 |
(:generator 4
|
| 199 |
+ (emit-not-implemented)
|
|
| 193 | 200 |
(with-fixed-allocation (result temp type words :lowtag lowtag :stack-p dynamic-extent)
|
| 194 | 201 |
)))
|
| 195 | 202 |
|
| ... | ... | @@ -203,6 +210,7 @@ |
| 203 | 210 |
(:temporary (:scs (non-descriptor-reg)) header)
|
| 204 | 211 |
(:temporary (:scs (any-reg)) temp)
|
| 205 | 212 |
(:generator 6
|
| 213 |
+ (emit-not-implemented)
|
|
| 206 | 214 |
(inst add bytes extra (* (1+ words) word-bytes))
|
| 207 | 215 |
(inst slln header bytes (- type-bits vm:fixnum-tag-bits)) ; because bytes is already a fixnum
|
| 208 | 216 |
(inst add header header (+ (ash -2 type-bits) type))
|
| ... | ... | @@ -336,6 +336,7 @@ |
| 336 | 336 |
(and (backend-featurep :sparc-v9)
|
| 337 | 337 |
(not (backend-featurep :sparc-64)))))
|
| 338 | 338 |
(:generator 12
|
| 339 |
+ (emit-not-implemented)
|
|
| 339 | 340 |
(let ((zero (generate-error-code vop division-by-zero-error x y)))
|
| 340 | 341 |
(inst cmp y zero-tn)
|
| 341 | 342 |
(inst b :eq zero #+sparc-v9 :pn)
|
| ... | ... | @@ -370,6 +371,7 @@ |
| 370 | 371 |
(and (backend-featurep :sparc-v9)
|
| 371 | 372 |
(not (backend-featurep :sparc-64)))))
|
| 372 | 373 |
(:generator 8
|
| 374 |
+ (emit-not-implemented)
|
|
| 373 | 375 |
(let ((zero (generate-error-code vop division-by-zero-error x y)))
|
| 374 | 376 |
(inst cmp y zero-tn)
|
| 375 | 377 |
(inst b :eq zero #+sparc-v9 :pn)
|
| ... | ... | @@ -400,6 +402,7 @@ |
| 400 | 402 |
(:save-p :compute-only)
|
| 401 | 403 |
(:guard (backend-featurep :sparc-64))
|
| 402 | 404 |
(:generator 8
|
| 405 |
+ (emit-not-implemented)
|
|
| 403 | 406 |
(let ((zero (generate-error-code vop division-by-zero-error x y)))
|
| 404 | 407 |
(inst cmp y zero-tn)
|
| 405 | 408 |
(inst b :eq zero :pn)
|
| ... | ... | @@ -456,6 +459,7 @@ |
| 456 | 459 |
(:save-p :compute-only)
|
| 457 | 460 |
(:guard (backend-featurep :sparc-64))
|
| 458 | 461 |
(:generator 8
|
| 462 |
+ (emit-not-implemented)
|
|
| 459 | 463 |
(let ((zero (generate-error-code vop division-by-zero-error x y)))
|
| 460 | 464 |
(inst cmp y zero-tn)
|
| 461 | 465 |
(inst b :eq zero :pn)
|
| ... | ... | @@ -482,6 +486,7 @@ |
| 482 | 486 |
(:policy :fast-safe)
|
| 483 | 487 |
(:temporary (:sc non-descriptor-reg) ndesc)
|
| 484 | 488 |
(:generator 5
|
| 489 |
+ (emit-not-implemented)
|
|
| 485 | 490 |
(sc-case amount
|
| 486 | 491 |
(signed-reg
|
| 487 | 492 |
(cond ((backend-featurep :sparc-v9)
|
| ... | ... | @@ -539,6 +544,7 @@ |
| 539 | 544 |
(:policy :fast-safe)
|
| 540 | 545 |
(:temporary (:sc non-descriptor-reg) ndesc)
|
| 541 | 546 |
(:generator 5
|
| 547 |
+ (emit-not-implemented)
|
|
| 542 | 548 |
(sc-case amount
|
| 543 | 549 |
(signed-reg
|
| 544 | 550 |
(cond ((backend-featurep :sparc-v9)
|
| ... | ... | @@ -594,6 +600,7 @@ |
| 594 | 600 |
(:translate ash)
|
| 595 | 601 |
(:policy :fast-safe)
|
| 596 | 602 |
(:generator 4
|
| 603 |
+ (emit-not-implemented)
|
|
| 597 | 604 |
(cond
|
| 598 | 605 |
((< count -31) (move result zero-tn))
|
| 599 | 606 |
((< count 0) (inst srl result number (min (- count) 31)))
|
| ... | ... | @@ -614,6 +621,7 @@ |
| 614 | 621 |
(:result-types ,type)
|
| 615 | 622 |
(:policy :fast-safe)
|
| 616 | 623 |
(:generator ,cost
|
| 624 |
+ (emit-not-implemented)
|
|
| 617 | 625 |
;; The result-type assures us that this shift will not
|
| 618 | 626 |
;; overflow. And for fixnum's, the zero bits that get
|
| 619 | 627 |
;; shifted in are just fine for the fixnum tag.
|
| ... | ... | @@ -642,6 +650,7 @@ |
| 642 | 650 |
(:result-types ,type)
|
| 643 | 651 |
(:policy :fast-safe)
|
| 644 | 652 |
(:generator ,cost
|
| 653 |
+ (emit-not-implemented)
|
|
| 645 | 654 |
;; The result-type assures us that this shift will not
|
| 646 | 655 |
;; overflow. And for fixnum's, the zero bits that get
|
| 647 | 656 |
;; shifted in are just fine for the fixnum tag.
|
| ... | ... | @@ -716,6 +725,7 @@ |
| 716 | 725 |
(:result-types ,type)
|
| 717 | 726 |
(:policy :fast-safe)
|
| 718 | 727 |
(:generator ,cost
|
| 728 |
+ (emit-not-implemented)
|
|
| 719 | 729 |
(sc-case amount
|
| 720 | 730 |
((signed-reg unsigned-reg)
|
| 721 | 731 |
(inst ,shift-inst result number amount))
|
| ... | ... | @@ -748,6 +758,7 @@ |
| 748 | 758 |
(:result-types ,type)
|
| 749 | 759 |
(:policy :fast-safe)
|
| 750 | 760 |
(:generator ,cost
|
| 761 |
+ (emit-not-implemented)
|
|
| 751 | 762 |
(if (zerop amount)
|
| 752 | 763 |
(move result number)
|
| 753 | 764 |
(inst ,shift-inst result number amount))))))
|
| ... | ... | @@ -789,6 +800,7 @@ |
| 789 | 800 |
(:temporary (:sc non-descriptor-reg :target result) temp)
|
| 790 | 801 |
(:policy :fast-safe)
|
| 791 | 802 |
(:generator 2
|
| 803 |
+ (emit-not-implemented)
|
|
| 792 | 804 |
;; Shift the fixnum right by the desired amount. Then zap out the
|
| 793 | 805 |
;; 2 LSBs to make it a fixnum again. (Those bits are junk.)
|
| 794 | 806 |
(sc-case amount
|
| ... | ... | @@ -811,6 +823,7 @@ |
| 811 | 823 |
(:result-types positive-fixnum)
|
| 812 | 824 |
(:temporary (:scs (non-descriptor-reg) :from (:argument 0)) shift)
|
| 813 | 825 |
(:generator 30
|
| 826 |
+ (emit-not-implemented)
|
|
| 814 | 827 |
(let ((loop (gen-label))
|
| 815 | 828 |
(test (gen-label)))
|
| 816 | 829 |
(inst addcc shift zero-tn arg)
|
| ... | ... | @@ -837,6 +850,7 @@ |
| 837 | 850 |
(:result-types positive-fixnum)
|
| 838 | 851 |
(:temporary (:scs (non-descriptor-reg) :from (:argument 0)) shift)
|
| 839 | 852 |
(:generator 30
|
| 853 |
+ (emit-not-implemented)
|
|
| 840 | 854 |
(let ((loop (gen-label))
|
| 841 | 855 |
(test (gen-label)))
|
| 842 | 856 |
(move shift arg)
|
| ... | ... | @@ -862,6 +876,7 @@ |
| 862 | 876 |
(:result-types positive-fixnum)
|
| 863 | 877 |
(:temporary (:scs (non-descriptor-reg) :from (:argument 0)) mask temp)
|
| 864 | 878 |
(:generator 35
|
| 879 |
+ (emit-not-implemented)
|
|
| 865 | 880 |
(move res arg)
|
| 866 | 881 |
|
| 867 | 882 |
(dolist (stuff '((1 #x55555555) (2 #x33333333) (4 #x0f0f0f0f)
|
| ... | ... | @@ -886,6 +901,7 @@ |
| 886 | 901 |
(and (backend-featurep :sparc-v9)
|
| 887 | 902 |
(not (backend-featurep :sparc-64)))))
|
| 888 | 903 |
(:generator 2
|
| 904 |
+ (emit-not-implemented)
|
|
| 889 | 905 |
;; The cost here should be less than the cost for
|
| 890 | 906 |
;; */signed=>signed. Why? A fixnum product using signed=>signed
|
| 891 | 907 |
;; has to convert both args to signed-nums. But using this, we
|
| ... | ... | @@ -900,6 +916,7 @@ |
| 900 | 916 |
(and (backend-featurep :sparc-v9)
|
| 901 | 917 |
(not (backend-featurep :sparc-64)))))
|
| 902 | 918 |
(:generator 2
|
| 919 |
+ (emit-not-implemented)
|
|
| 903 | 920 |
(inst umul r x y)))
|
| 904 | 921 |
|
| 905 | 922 |
(define-vop (fast-v8-*-c/signed=>signed fast-signed-binop-c)
|
| ... | ... | @@ -908,6 +925,7 @@ |
| 908 | 925 |
(and (backend-featurep :sparc-v9)
|
| 909 | 926 |
(not (backend-featurep :sparc-64)))))
|
| 910 | 927 |
(:generator 2
|
| 928 |
+ (emit-not-implemented)
|
|
| 911 | 929 |
(inst smul r x y)))
|
| 912 | 930 |
|
| 913 | 931 |
(define-vop (fast-v8-*-c/fixnum=>fixnum fast-safe-arith-op)
|
| ... | ... | @@ -923,6 +941,7 @@ |
| 923 | 941 |
(and (backend-featurep :sparc-v9)
|
| 924 | 942 |
(not (backend-featurep :sparc-64)))))
|
| 925 | 943 |
(:generator 1
|
| 944 |
+ (emit-not-implemented)
|
|
| 926 | 945 |
(inst smul r x y)))
|
| 927 | 946 |
|
| 928 | 947 |
|
| ... | ... | @@ -932,6 +951,7 @@ |
| 932 | 951 |
(and (backend-featurep :sparc-v9)
|
| 933 | 952 |
(not (backend-featurep :sparc-64)))))
|
| 934 | 953 |
(:generator 3
|
| 954 |
+ (emit-not-implemented)
|
|
| 935 | 955 |
(inst smul r x y)))
|
| 936 | 956 |
|
| 937 | 957 |
(define-vop (fast-v8-*/unsigned=>unsigned fast-unsigned-binop)
|
| ... | ... | @@ -940,6 +960,7 @@ |
| 940 | 960 |
(and (backend-featurep :sparc-v9)
|
| 941 | 961 |
(not (backend-featurep :sparc-64)))))
|
| 942 | 962 |
(:generator 3
|
| 963 |
+ (emit-not-implemented)
|
|
| 943 | 964 |
(inst umul r x y)))
|
| 944 | 965 |
|
| 945 | 966 |
;; The smul and umul instructions are deprecated on the Sparc V9. Use
|
| ... | ... | @@ -949,6 +970,7 @@ |
| 949 | 970 |
(:translate *)
|
| 950 | 971 |
(:guard (backend-featurep :sparc-64))
|
| 951 | 972 |
(:generator 4
|
| 973 |
+ (emit-not-implemented)
|
|
| 952 | 974 |
(inst sran temp y fixnum-tag-bits)
|
| 953 | 975 |
(inst mulx r x temp)))
|
| 954 | 976 |
|
| ... | ... | @@ -956,12 +978,14 @@ |
| 956 | 978 |
(:translate *)
|
| 957 | 979 |
(:guard (backend-featurep :sparc-64))
|
| 958 | 980 |
(:generator 3
|
| 981 |
+ (emit-not-implemented)
|
|
| 959 | 982 |
(inst mulx r x y)))
|
| 960 | 983 |
|
| 961 | 984 |
(define-vop (fast-v9-*/unsigned=>unsigned fast-unsigned-binop)
|
| 962 | 985 |
(:translate *)
|
| 963 | 986 |
(:guard (backend-featurep :sparc-64))
|
| 964 | 987 |
(:generator 3
|
| 988 |
+ (emit-not-implemented)
|
|
| 965 | 989 |
(inst mulx r x y)))
|
| 966 | 990 |
|
| 967 | 991 |
|
| ... | ... | @@ -1028,6 +1052,7 @@ |
| 1028 | 1052 |
suffix)))
|
| 1029 | 1053 |
(:translate ,tran)
|
| 1030 | 1054 |
(:generator ,cost
|
| 1055 |
+ (emit-not-implemented)
|
|
| 1031 | 1056 |
(inst cmp x
|
| 1032 | 1057 |
,(if (eq suffix '-c/fixnum) '(fixnumize y) 'y))
|
| 1033 | 1058 |
(inst b (if not-p
|
| ... | ... | @@ -1062,6 +1087,7 @@ |
| 1062 | 1087 |
(:note _N"inline fixnum comparison")
|
| 1063 | 1088 |
(:translate eql)
|
| 1064 | 1089 |
(:generator 4
|
| 1090 |
+ (emit-not-implemented)
|
|
| 1065 | 1091 |
(inst cmp x y)
|
| 1066 | 1092 |
(inst b (if not-p :ne :eq) target)
|
| 1067 | 1093 |
(inst nop)))
|
| ... | ... | @@ -1078,6 +1104,7 @@ |
| 1078 | 1104 |
(:info target not-p y)
|
| 1079 | 1105 |
(:translate eql)
|
| 1080 | 1106 |
(:generator 2
|
| 1107 |
+ (emit-not-implemented)
|
|
| 1081 | 1108 |
(inst cmp x (fixnumize y))
|
| 1082 | 1109 |
(inst b (if not-p :ne :eq) target)
|
| 1083 | 1110 |
(inst nop)))
|
| ... | ... | @@ -1103,6 +1130,7 @@ |
| 1103 | 1130 |
(:result-types unsigned-num)
|
| 1104 | 1131 |
(:policy :fast-safe)
|
| 1105 | 1132 |
(:generator 4
|
| 1133 |
+ (emit-not-implemented)
|
|
| 1106 | 1134 |
(let ((done (gen-label)))
|
| 1107 | 1135 |
(inst cmp shift)
|
| 1108 | 1136 |
(inst b :eq done)
|
| ... | ... | @@ -1127,11 +1155,13 @@ |
| 1127 | 1155 |
(:args (x :scs (unsigned-reg zero)))
|
| 1128 | 1156 |
(:arg-types unsigned-num)
|
| 1129 | 1157 |
(:generator 1
|
| 1158 |
+ (emit-not-implemented)
|
|
| 1130 | 1159 |
(inst not r x)))
|
| 1131 | 1160 |
|
| 1132 | 1161 |
(define-vop (32bit-logical-and 32bit-logical)
|
| 1133 | 1162 |
(:translate 32bit-logical-and)
|
| 1134 | 1163 |
(:generator 1
|
| 1164 |
+ (emit-not-implemented)
|
|
| 1135 | 1165 |
(inst and r x y)))
|
| 1136 | 1166 |
|
| 1137 | 1167 |
(deftransform 32bit-logical-nand ((x y) (* *))
|
| ... | ... | @@ -1140,6 +1170,7 @@ |
| 1140 | 1170 |
(define-vop (32bit-logical-or 32bit-logical)
|
| 1141 | 1171 |
(:translate 32bit-logical-or)
|
| 1142 | 1172 |
(:generator 1
|
| 1173 |
+ (emit-not-implemented)
|
|
| 1143 | 1174 |
(inst or r x y)))
|
| 1144 | 1175 |
|
| 1145 | 1176 |
(deftransform 32bit-logical-nor ((x y) (* *))
|
| ... | ... | @@ -1148,6 +1179,7 @@ |
| 1148 | 1179 |
(define-vop (32bit-logical-xor 32bit-logical)
|
| 1149 | 1180 |
(:translate 32bit-logical-xor)
|
| 1150 | 1181 |
(:generator 1
|
| 1182 |
+ (emit-not-implemented)
|
|
| 1151 | 1183 |
(inst xor r x y)))
|
| 1152 | 1184 |
|
| 1153 | 1185 |
(define-vop (32bit-logical-eqv 32bit-logical)
|
| ... | ... | @@ -1158,6 +1190,7 @@ |
| 1158 | 1190 |
(define-vop (32bit-logical-orc2 32bit-logical)
|
| 1159 | 1191 |
(:translate 32bit-logical-orc2)
|
| 1160 | 1192 |
(:generator 1
|
| 1193 |
+ (emit-not-implemented)
|
|
| 1161 | 1194 |
(inst orn r x y)))
|
| 1162 | 1195 |
|
| 1163 | 1196 |
(deftransform 32bit-logical-orc1 ((x y) (* *))
|
| ... | ... | @@ -1166,6 +1199,7 @@ |
| 1166 | 1199 |
(define-vop (32bit-logical-andc2 32bit-logical)
|
| 1167 | 1200 |
(:translate 32bit-logical-andc2)
|
| 1168 | 1201 |
(:generator 1
|
| 1202 |
+ (emit-not-implemented)
|
|
| 1169 | 1203 |
(inst andn r x y)))
|
| 1170 | 1204 |
|
| 1171 | 1205 |
(deftransform 32bit-logical-andc1 ((x y) (* *))
|
| ... | ... | @@ -1184,12 +1218,14 @@ |
| 1184 | 1218 |
(:translate shift-towards-start)
|
| 1185 | 1219 |
(:note _N"shift-towards-start")
|
| 1186 | 1220 |
(:generator 1
|
| 1221 |
+ (emit-not-implemented)
|
|
| 1187 | 1222 |
(inst slln r num amount)))
|
| 1188 | 1223 |
|
| 1189 | 1224 |
(define-vop (shift-towards-end shift-towards-someplace)
|
| 1190 | 1225 |
(:translate shift-towards-end)
|
| 1191 | 1226 |
(:note _N"shift-towards-end")
|
| 1192 | 1227 |
(:generator 1
|
| 1228 |
+ (emit-not-implemented)
|
|
| 1193 | 1229 |
(inst srln r num amount)))
|
| 1194 | 1230 |
|
| 1195 | 1231 |
|
| ... | ... | @@ -1229,6 +1265,7 @@ |
| 1229 | 1265 |
(:results (result :scs (descriptor-reg)))
|
| 1230 | 1266 |
(:guard (not (backend-featurep :sparc-v9)))
|
| 1231 | 1267 |
(:generator 3
|
| 1268 |
+ (emit-not-implemented)
|
|
| 1232 | 1269 |
(let ((done (gen-label)))
|
| 1233 | 1270 |
(inst cmp digit)
|
| 1234 | 1271 |
(inst b :lt done)
|
| ... | ... | @@ -1244,6 +1281,7 @@ |
| 1244 | 1281 |
(:results (result :scs (descriptor-reg)))
|
| 1245 | 1282 |
(:guard (backend-featurep :sparc-v9))
|
| 1246 | 1283 |
(:generator 3
|
| 1284 |
+ (emit-not-implemented)
|
|
| 1247 | 1285 |
(inst cmp digit)
|
| 1248 | 1286 |
(load-symbol result t)
|
| 1249 | 1287 |
(inst cmove :lt result null-tn)))
|
| ... | ... | @@ -1275,6 +1313,7 @@ |
| 1275 | 1313 |
(carry :scs (unsigned-reg)))
|
| 1276 | 1314 |
(:result-types unsigned-num positive-fixnum)
|
| 1277 | 1315 |
(:generator 3
|
| 1316 |
+ (emit-not-implemented)
|
|
| 1278 | 1317 |
(inst addcc zero-tn c -1)
|
| 1279 | 1318 |
(inst addxcc result a b)
|
| 1280 | 1319 |
(inst addx carry zero-tn zero-tn)))
|
| ... | ... | @@ -1290,6 +1329,7 @@ |
| 1290 | 1329 |
(borrow :scs (unsigned-reg)))
|
| 1291 | 1330 |
(:result-types unsigned-num positive-fixnum)
|
| 1292 | 1331 |
(:generator 4
|
| 1332 |
+ (emit-not-implemented)
|
|
| 1293 | 1333 |
(inst subcc zero-tn c 1)
|
| 1294 | 1334 |
(inst subxcc result a b)
|
| 1295 | 1335 |
(inst addx borrow zero-tn zero-tn)
|
| ... | ... | @@ -1357,6 +1397,7 @@ |
| 1357 | 1397 |
(lo :scs (unsigned-reg) :from (:eval 1)))
|
| 1358 | 1398 |
(:result-types unsigned-num unsigned-num)
|
| 1359 | 1399 |
(:generator 40
|
| 1400 |
+ (emit-not-implemented)
|
|
| 1360 | 1401 |
(emit-multiply x y hi lo)
|
| 1361 | 1402 |
(inst addcc lo carry-in)
|
| 1362 | 1403 |
(inst addx hi zero-tn)))
|
| ... | ... | @@ -1373,6 +1414,7 @@ |
| 1373 | 1414 |
(lo :scs (unsigned-reg) :from (:eval 1)))
|
| 1374 | 1415 |
(:result-types unsigned-num unsigned-num)
|
| 1375 | 1416 |
(:generator 40
|
| 1417 |
+ (emit-not-implemented)
|
|
| 1376 | 1418 |
(emit-multiply x y hi lo)
|
| 1377 | 1419 |
(inst addcc lo carry-in)
|
| 1378 | 1420 |
(inst addx hi zero-tn)
|
| ... | ... | @@ -1389,6 +1431,7 @@ |
| 1389 | 1431 |
(lo :scs (unsigned-reg)))
|
| 1390 | 1432 |
(:result-types unsigned-num unsigned-num)
|
| 1391 | 1433 |
(:generator 40
|
| 1434 |
+ (emit-not-implemented)
|
|
| 1392 | 1435 |
(emit-multiply x y hi lo)))
|
| 1393 | 1436 |
|
| 1394 | 1437 |
(define-vop (bignum-lognot)
|
| ... | ... | @@ -1399,6 +1442,7 @@ |
| 1399 | 1442 |
(:results (r :scs (unsigned-reg)))
|
| 1400 | 1443 |
(:result-types unsigned-num)
|
| 1401 | 1444 |
(:generator 1
|
| 1445 |
+ (emit-not-implemented)
|
|
| 1402 | 1446 |
(inst not r x)))
|
| 1403 | 1447 |
|
| 1404 | 1448 |
(define-vop (fixnum-to-digit)
|
| ... | ... | @@ -1409,6 +1453,7 @@ |
| 1409 | 1453 |
(:results (digit :scs (unsigned-reg)))
|
| 1410 | 1454 |
(:result-types unsigned-num)
|
| 1411 | 1455 |
(:generator 1
|
| 1456 |
+ (emit-not-implemented)
|
|
| 1412 | 1457 |
(inst sran digit fixnum fixnum-tag-bits)))
|
| 1413 | 1458 |
|
| 1414 | 1459 |
(define-vop (bignum-floor)
|
| ... | ... | @@ -1424,6 +1469,7 @@ |
| 1424 | 1469 |
(:guard (not (or (backend-featurep :sparc-v8)
|
| 1425 | 1470 |
(backend-featurep :sparc-v9))))
|
| 1426 | 1471 |
(:generator 300
|
| 1472 |
+ (emit-not-implemented)
|
|
| 1427 | 1473 |
(move rem div-high)
|
| 1428 | 1474 |
(move quo div-low)
|
| 1429 | 1475 |
(dotimes (i 33)
|
| ... | ... | @@ -1454,6 +1500,7 @@ |
| 1454 | 1500 |
(and (backend-featurep :sparc-v9)
|
| 1455 | 1501 |
(not (backend-featurep :sparc-64)))))
|
| 1456 | 1502 |
(:generator 15
|
| 1503 |
+ (emit-not-implemented)
|
|
| 1457 | 1504 |
(inst wry div-high)
|
| 1458 | 1505 |
(inst nop)
|
| 1459 | 1506 |
(inst nop)
|
| ... | ... | @@ -1480,6 +1527,7 @@ |
| 1480 | 1527 |
(:result-types unsigned-num unsigned-num)
|
| 1481 | 1528 |
(:guard (backend-featurep :sparc-64))
|
| 1482 | 1529 |
(:generator 5
|
| 1530 |
+ (emit-not-implemented)
|
|
| 1483 | 1531 |
;; Set dividend to be div-high and div-low
|
| 1484 | 1532 |
(inst sllx dividend div-high 32)
|
| 1485 | 1533 |
(inst add dividend div-low)
|
| ... | ... | @@ -1497,6 +1545,7 @@ |
| 1497 | 1545 |
(:results (res :scs (any-reg signed-reg)))
|
| 1498 | 1546 |
(:result-types signed-num)
|
| 1499 | 1547 |
(:generator 1
|
| 1548 |
+ (emit-not-implemented)
|
|
| 1500 | 1549 |
(sc-case res
|
| 1501 | 1550 |
(any-reg
|
| 1502 | 1551 |
(inst slln res digit fixnum-tag-bits))
|
| ... | ... | @@ -1513,6 +1562,7 @@ |
| 1513 | 1562 |
(:results (result :scs (unsigned-reg)))
|
| 1514 | 1563 |
(:result-types unsigned-num)
|
| 1515 | 1564 |
(:generator 1
|
| 1565 |
+ (emit-not-implemented)
|
|
| 1516 | 1566 |
(sc-case count
|
| 1517 | 1567 |
((signed-reg unsigned-reg)
|
| 1518 | 1568 |
(inst sran result digit count))
|
| ... | ... | @@ -1522,6 +1572,7 @@ |
| 1522 | 1572 |
(define-vop (digit-lshr digit-ashr)
|
| 1523 | 1573 |
(:translate bignum::%digit-logical-shift-right)
|
| 1524 | 1574 |
(:generator 1
|
| 1575 |
+ (emit-not-implemented)
|
|
| 1525 | 1576 |
(sc-case count
|
| 1526 | 1577 |
((signed-reg unsigned-reg)
|
| 1527 | 1578 |
(inst srln result digit count))
|
| ... | ... | @@ -1531,6 +1582,7 @@ |
| 1531 | 1582 |
(define-vop (digit-ashl digit-ashr)
|
| 1532 | 1583 |
(:translate bignum::%ashl)
|
| 1533 | 1584 |
(:generator 1
|
| 1585 |
+ (emit-not-implemented)
|
|
| 1534 | 1586 |
(sc-case count
|
| 1535 | 1587 |
((signed-reg unsigned-reg)
|
| 1536 | 1588 |
(inst slln result digit count))
|
| ... | ... | @@ -1758,7 +1810,7 @@ |
| 1758 | 1810 |
|
| 1759 | 1811 |
;; Unary operations
|
| 1760 | 1812 |
|
| 1761 |
-#+(and sparc-v9 sparc-v8plus)
|
|
| 1813 |
+#+(and nil sparc-v9 sparc-v8plus)
|
|
| 1762 | 1814 |
(progn
|
| 1763 | 1815 |
|
| 1764 | 1816 |
;;; The vops for the 64-bit operations are written this way because I
|
| ... | ... | @@ -32,6 +32,7 @@ |
| 32 | 32 |
(:temporary (:scs (non-descriptor-reg)) gc-temp) ; gencgc
|
| 33 | 33 |
(:results (result :scs (descriptor-reg)))
|
| 34 | 34 |
(:generator 0
|
| 35 |
+ (emit-not-implemented)
|
|
| 35 | 36 |
(pseudo-atomic ()
|
| 36 | 37 |
(inst add ndescr rank (* (1+ array-dimensions-offset) vm:word-bytes))
|
| 37 | 38 |
(inst andn ndescr 4)
|
| ... | ... | @@ -74,6 +75,7 @@ |
| 74 | 75 |
(:temporary (:scs (non-descriptor-reg)) temp)
|
| 75 | 76 |
(:results (res :scs (any-reg descriptor-reg)))
|
| 76 | 77 |
(:generator 6
|
| 78 |
+ (emit-not-implemented)
|
|
| 77 | 79 |
(loadw temp x 0 vm:other-pointer-type)
|
| 78 | 80 |
(inst sra temp vm:type-bits)
|
| 79 | 81 |
(inst sub temp (1- vm:array-dimensions-offset))
|
| ... | ... | @@ -94,6 +96,7 @@ |
| 94 | 96 |
(:vop-var vop)
|
| 95 | 97 |
(:save-p :compute-only)
|
| 96 | 98 |
(:generator 5
|
| 99 |
+ (emit-not-implemented)
|
|
| 97 | 100 |
(let ((error (generate-error-code vop invalid-array-index-error
|
| 98 | 101 |
array bound index)))
|
| 99 | 102 |
(inst cmp index bound)
|
| ... | ... | @@ -185,6 +188,7 @@ |
| 185 | 188 |
(:result-types positive-fixnum)
|
| 186 | 189 |
(:temporary (:scs (non-descriptor-reg) :to (:result 0)) temp result)
|
| 187 | 190 |
(:generator 20
|
| 191 |
+ (emit-not-implemented)
|
|
| 188 | 192 |
;; temp = floor(index bit-shift), to get address of word
|
| 189 | 193 |
;; containing our bits.
|
| 190 | 194 |
(inst srln temp index ,bit-shift)
|
| ... | ... | @@ -352,6 +356,7 @@ |
| 352 | 356 |
(:temporary (:scs (non-descriptor-reg)) offset)
|
| 353 | 357 |
(:result-types single-float)
|
| 354 | 358 |
(:generator 5
|
| 359 |
+ (emit-not-implemented)
|
|
| 355 | 360 |
(inst add offset index (- (* vm:vector-data-offset vm:word-bytes)
|
| 356 | 361 |
vm:other-pointer-type))
|
| 357 | 362 |
(inst ldf value object offset)))
|
| ... | ... | @@ -367,6 +372,7 @@ |
| 367 | 372 |
(:temporary (:scs (non-descriptor-reg)) temp)
|
| 368 | 373 |
(:result-types single-float)
|
| 369 | 374 |
(:generator 3
|
| 375 |
+ (emit-not-implemented)
|
|
| 370 | 376 |
(let ((offset (+ (fixnumize index)
|
| 371 | 377 |
(- (* vm:vector-data-offset vm:word-bytes)
|
| 372 | 378 |
vm:other-pointer-type))))
|
| ... | ... | @@ -389,6 +395,7 @@ |
| 389 | 395 |
(:result-types single-float)
|
| 390 | 396 |
(:temporary (:scs (non-descriptor-reg)) offset)
|
| 391 | 397 |
(:generator 5
|
| 398 |
+ (emit-not-implemented)
|
|
| 392 | 399 |
(inst add offset index
|
| 393 | 400 |
(- (* vm:vector-data-offset vm:word-bytes)
|
| 394 | 401 |
vm:other-pointer-type))
|
| ... | ... | @@ -410,6 +417,7 @@ |
| 410 | 417 |
(:result-types single-float)
|
| 411 | 418 |
(:temporary (:scs (non-descriptor-reg)) temp)
|
| 412 | 419 |
(:generator 2
|
| 420 |
+ (emit-not-implemented)
|
|
| 413 | 421 |
(let ((offset (+ (fixnumize index)
|
| 414 | 422 |
(- (* vm:vector-data-offset vm:word-bytes)
|
| 415 | 423 |
vm:other-pointer-type))))
|
| ... | ... | @@ -432,6 +440,7 @@ |
| 432 | 440 |
(:result-types double-float)
|
| 433 | 441 |
(:temporary (:scs (non-descriptor-reg)) offset)
|
| 434 | 442 |
(:generator 7
|
| 443 |
+ (emit-not-implemented)
|
|
| 435 | 444 |
(inst slln offset index (- 3 fixnum-tag-bits))
|
| 436 | 445 |
(inst add offset (- (* vm:vector-data-offset vm:word-bytes)
|
| 437 | 446 |
vm:other-pointer-type))
|
| ... | ... | @@ -448,6 +457,7 @@ |
| 448 | 457 |
(:result-types double-float)
|
| 449 | 458 |
(:temporary (:scs (non-descriptor-reg)) temp)
|
| 450 | 459 |
(:generator 3
|
| 460 |
+ (emit-not-implemented)
|
|
| 451 | 461 |
(let ((offset (+ (* index double-float-bytes)
|
| 452 | 462 |
(- (* vm:vector-data-offset vm:word-bytes)
|
| 453 | 463 |
vm:other-pointer-type))))
|
| ... | ... | @@ -469,6 +479,7 @@ |
| 469 | 479 |
(:result-types double-float)
|
| 470 | 480 |
(:temporary (:scs (non-descriptor-reg)) offset)
|
| 471 | 481 |
(:generator 20
|
| 482 |
+ (emit-not-implemented)
|
|
| 472 | 483 |
(inst slln offset index (- 3 fixnum-tag-bits))
|
| 473 | 484 |
(inst add offset (- (* vm:vector-data-offset vm:word-bytes)
|
| 474 | 485 |
vm:other-pointer-type))
|
| ... | ... | @@ -490,6 +501,7 @@ |
| 490 | 501 |
(:result-types double-float)
|
| 491 | 502 |
(:temporary (:scs (non-descriptor-reg)) temp)
|
| 492 | 503 |
(:generator 10
|
| 504 |
+ (emit-not-implemented)
|
|
| 493 | 505 |
(let ((offset (+ (* index double-float-bytes)
|
| 494 | 506 |
(- (* vm:vector-data-offset vm:word-bytes)
|
| 495 | 507 |
vm:other-pointer-type))))
|
| ... | ... | @@ -609,6 +621,7 @@ |
| 609 | 621 |
(:temporary (:scs (non-descriptor-reg) :from (:argument 1)) offset)
|
| 610 | 622 |
(:result-types complex-single-float)
|
| 611 | 623 |
(:generator 5
|
| 624 |
+ (emit-not-implemented)
|
|
| 612 | 625 |
(let ((real-tn (complex-single-reg-real-tn value)))
|
| 613 | 626 |
(inst slln offset index (- 3 fixnum-tag-bits))
|
| 614 | 627 |
(inst add offset (- (* vm:vector-data-offset vm:word-bytes)
|
| ... | ... | @@ -630,6 +643,7 @@ |
| 630 | 643 |
(:temporary (:scs (non-descriptor-reg) :from (:argument 1)) temp)
|
| 631 | 644 |
(:result-types complex-single-float)
|
| 632 | 645 |
(:generator 3
|
| 646 |
+ (emit-not-implemented)
|
|
| 633 | 647 |
(let ((offset (+ (* index (* 2 single-float-bytes))
|
| 634 | 648 |
(- (* vm:vector-data-offset vm:word-bytes)
|
| 635 | 649 |
vm:other-pointer-type)))
|
| ... | ... | @@ -657,6 +671,7 @@ |
| 657 | 671 |
(:result-types complex-single-float)
|
| 658 | 672 |
(:temporary (:scs (non-descriptor-reg) :from (:argument 1)) offset)
|
| 659 | 673 |
(:generator 5
|
| 674 |
+ (emit-not-implemented)
|
|
| 660 | 675 |
(let ((value-real (complex-single-reg-real-tn value))
|
| 661 | 676 |
(result-real (complex-single-reg-real-tn result)))
|
| 662 | 677 |
(inst slln offset index (- 3 fixnum-tag-bits))
|
| ... | ... | @@ -686,6 +701,7 @@ |
| 686 | 701 |
(:result-types complex-single-float)
|
| 687 | 702 |
(:temporary (:scs (non-descriptor-reg) :from (:argument 1)) temp)
|
| 688 | 703 |
(:generator 3
|
| 704 |
+ (emit-not-implemented)
|
|
| 689 | 705 |
(let ((offset (+ (* index (* 2 single-float-bytes))
|
| 690 | 706 |
(- (* vm:vector-data-offset vm:word-bytes)
|
| 691 | 707 |
vm:other-pointer-type)))
|
| ... | ... | @@ -717,6 +733,7 @@ |
| 717 | 733 |
(:result-types complex-double-float)
|
| 718 | 734 |
(:temporary (:scs (non-descriptor-reg) :from (:argument 1)) offset)
|
| 719 | 735 |
(:generator 7
|
| 736 |
+ (emit-not-implemented)
|
|
| 720 | 737 |
(let ((real-tn (complex-double-reg-real-tn value)))
|
| 721 | 738 |
(inst slln offset index (- 4 fixnum-tag-bits))
|
| 722 | 739 |
(inst add offset (- (* vm:vector-data-offset vm:word-bytes)
|
| ... | ... | @@ -737,6 +754,7 @@ |
| 737 | 754 |
(:result-types complex-double-float)
|
| 738 | 755 |
(:temporary (:scs (non-descriptor-reg) :from (:argument 1)) temp)
|
| 739 | 756 |
(:generator 5
|
| 757 |
+ (emit-not-implemented)
|
|
| 740 | 758 |
(let ((offset (+ (* index (* 2 double-float-bytes))
|
| 741 | 759 |
(- (* vm:vector-data-offset vm:word-bytes)
|
| 742 | 760 |
vm:other-pointer-type)))
|
| ... | ... | @@ -764,6 +782,7 @@ |
| 764 | 782 |
(:result-types complex-double-float)
|
| 765 | 783 |
(:temporary (:scs (non-descriptor-reg) :from (:argument 1)) offset)
|
| 766 | 784 |
(:generator 20
|
| 785 |
+ (emit-not-implemented)
|
|
| 767 | 786 |
(let ((value-real (complex-double-reg-real-tn value))
|
| 768 | 787 |
(result-real (complex-double-reg-real-tn result)))
|
| 769 | 788 |
(inst slln offset index (- 4 fixnum-tag-bits))
|
| ... | ... | @@ -793,6 +812,7 @@ |
| 793 | 812 |
(:result-types complex-double-float)
|
| 794 | 813 |
(:temporary (:scs (non-descriptor-reg) :from (:argument 1)) temp)
|
| 795 | 814 |
(:generator 15
|
| 815 |
+ (emit-not-implemented)
|
|
| 796 | 816 |
(let ((value-real (complex-double-reg-real-tn value))
|
| 797 | 817 |
(result-real (complex-double-reg-real-tn result))
|
| 798 | 818 |
(value-imag (complex-double-reg-imag-tn value))
|
| ... | ... | @@ -1008,6 +1028,7 @@ |
| 1008 | 1028 |
(:result-types double-double-float)
|
| 1009 | 1029 |
(:temporary (:scs (non-descriptor-reg) :from (:argument 1)) offset)
|
| 1010 | 1030 |
(:generator 7
|
| 1031 |
+ (emit-not-implemented)
|
|
| 1011 | 1032 |
(let ((hi-tn (double-double-reg-hi-tn value)))
|
| 1012 | 1033 |
(inst slln offset index (- 4 fixnum-tag-bits))
|
| 1013 | 1034 |
(inst add offset (- (* vm:vector-data-offset vm:word-bytes)
|
| ... | ... | @@ -1028,6 +1049,7 @@ |
| 1028 | 1049 |
(:result-types double-double-float)
|
| 1029 | 1050 |
(:temporary (:scs (non-descriptor-reg) :from (:argument 1)) temp)
|
| 1030 | 1051 |
(:generator 5
|
| 1052 |
+ (emit-not-implemented)
|
|
| 1031 | 1053 |
(let ((offset (+ (* index (* 2 double-float-bytes))
|
| 1032 | 1054 |
(- (* vm:vector-data-offset vm:word-bytes)
|
| 1033 | 1055 |
vm:other-pointer-type)))
|
| ... | ... | @@ -1055,6 +1077,7 @@ |
| 1055 | 1077 |
(:result-types double-double-float)
|
| 1056 | 1078 |
(:temporary (:scs (non-descriptor-reg) :from (:argument 1)) offset)
|
| 1057 | 1079 |
(:generator 20
|
| 1080 |
+ (emit-not-implemented)
|
|
| 1058 | 1081 |
(let ((value-hi (double-double-reg-hi-tn value))
|
| 1059 | 1082 |
(result-hi (double-double-reg-hi-tn result)))
|
| 1060 | 1083 |
(inst slln offset index (- 4 fixnum-tag-bits))
|
| ... | ... | @@ -1084,6 +1107,7 @@ |
| 1084 | 1107 |
(:result-types double-double-float)
|
| 1085 | 1108 |
(:temporary (:scs (non-descriptor-reg) :from (:argument 1)) temp)
|
| 1086 | 1109 |
(:generator 15
|
| 1110 |
+ (emit-not-implemented)
|
|
| 1087 | 1111 |
(let ((value-hi (double-double-reg-hi-tn value))
|
| 1088 | 1112 |
(result-hi (double-double-reg-hi-tn result))
|
| 1089 | 1113 |
(value-lo (double-double-reg-lo-tn value))
|
| ... | ... | @@ -1119,6 +1143,7 @@ |
| 1119 | 1143 |
(:result-types complex-double-double-float)
|
| 1120 | 1144 |
(:temporary (:scs (non-descriptor-reg) :from (:argument 1)) offset)
|
| 1121 | 1145 |
(:generator 7
|
| 1146 |
+ (emit-not-implemented)
|
|
| 1122 | 1147 |
(let ((real-tn (complex-double-double-reg-real-hi-tn value)))
|
| 1123 | 1148 |
(inst slln offset index (- 5 fixnum-tag-bits))
|
| 1124 | 1149 |
(inst add offset (- (* vm:vector-data-offset vm:word-bytes)
|
| ... | ... | @@ -1145,6 +1170,7 @@ |
| 1145 | 1170 |
(:result-types complex-double-double-float)
|
| 1146 | 1171 |
(:temporary (:scs (non-descriptor-reg) :from (:argument 1)) temp)
|
| 1147 | 1172 |
(:generator 5
|
| 1173 |
+ (emit-not-implemented)
|
|
| 1148 | 1174 |
(let ((offset (+ (* index (* 2 double-float-bytes))
|
| 1149 | 1175 |
(- (* vm:vector-data-offset vm:word-bytes)
|
| 1150 | 1176 |
vm:other-pointer-type)))
|
| ... | ... | @@ -1180,6 +1206,7 @@ |
| 1180 | 1206 |
(:result-types complex-double-double-float)
|
| 1181 | 1207 |
(:temporary (:scs (non-descriptor-reg) :from (:argument 1)) offset)
|
| 1182 | 1208 |
(:generator 20
|
| 1209 |
+ (emit-not-implemented)
|
|
| 1183 | 1210 |
(let ((value-real (complex-double-double-reg-real-hi-tn value))
|
| 1184 | 1211 |
(result-real (complex-double-double-reg-real-hi-tn result)))
|
| 1185 | 1212 |
(inst slln offset index (- 5 fixnum-tag-bits))
|
| ... | ... | @@ -1221,6 +1248,7 @@ |
| 1221 | 1248 |
(:result-types complex-double-double-float)
|
| 1222 | 1249 |
(:temporary (:scs (non-descriptor-reg) :from (:argument 1)) temp)
|
| 1223 | 1250 |
(:generator 15
|
| 1251 |
+ (emit-not-implemented)
|
|
| 1224 | 1252 |
(let ((value-real (complex-double-double-reg-real-hi-tn value))
|
| 1225 | 1253 |
(result-real (complex-double-double-reg-real-hi-tn result))
|
| 1226 | 1254 |
(value-imag (complex-double-double-reg-imag-hi-tn value))
|
| ... | ... | @@ -241,6 +241,7 @@ |
| 241 | 241 |
(:results (res :scs (sap-reg)))
|
| 242 | 242 |
(:result-types system-area-pointer)
|
| 243 | 243 |
(:generator 2
|
| 244 |
+ (emit-not-implemented)
|
|
| 244 | 245 |
(inst li res (make-fixup (extern-alien-name foreign-symbol)
|
| 245 | 246 |
:foreign))))
|
| 246 | 247 |
|
| ... | ... | @@ -254,6 +255,7 @@ |
| 254 | 255 |
(:result-types system-area-pointer)
|
| 255 | 256 |
(:temporary (:scs (non-descriptor-reg)) addr)
|
| 256 | 257 |
(:generator 2
|
| 258 |
+ (emit-not-implemented)
|
|
| 257 | 259 |
(inst li addr (make-fixup (extern-alien-name foreign-symbol)
|
| 258 | 260 |
:foreign-data))
|
| 259 | 261 |
(loadw res addr)))
|
| ... | ... | @@ -271,6 +273,7 @@ |
| 271 | 273 |
(:temporary (:sc control-stack :offset nfp-save-offset) nfp-save)
|
| 272 | 274 |
(:vop-var vop)
|
| 273 | 275 |
(:generator 0
|
| 276 |
+ (emit-not-implemented)
|
|
| 274 | 277 |
(let ((cur-nfp (current-nfp-tn vop)))
|
| 275 | 278 |
(when cur-nfp
|
| 276 | 279 |
(store-stack-tn nfp-save cur-nfp))
|
| ... | ... | @@ -287,6 +290,7 @@ |
| 287 | 290 |
(:results (result :scs (sap-reg any-reg)))
|
| 288 | 291 |
(:temporary (:scs (unsigned-reg) :to (:result 0)) temp)
|
| 289 | 292 |
(:generator 0
|
| 293 |
+ (emit-not-implemented)
|
|
| 290 | 294 |
(unless (zerop amount)
|
| 291 | 295 |
(let ((delta (logandc2 (+ amount 7) 7)))
|
| 292 | 296 |
(cond ((< delta (ash 1 12))
|
| ... | ... | @@ -305,6 +309,7 @@ |
| 305 | 309 |
(:policy :fast-safe)
|
| 306 | 310 |
(:temporary (:scs (unsigned-reg) :to (:result 0)) temp)
|
| 307 | 311 |
(:generator 0
|
| 312 |
+ (emit-not-implemented)
|
|
| 308 | 313 |
(unless (zerop amount)
|
| 309 | 314 |
(let ((delta (logandc2 (+ amount 7) 7)))
|
| 310 | 315 |
(cond ((< delta (ash 1 12))
|
| ... | ... | @@ -244,6 +244,7 @@ |
| 244 | 244 |
(inst b :gt zero-out-loop)
|
| 245 | 245 |
(inst stn zero-tn csp-tn temp)
|
| 246 | 246 |
))
|
| 247 |
+ (emit-not-implemented)
|
|
| 247 | 248 |
(let ((size (* vm:word-bytes (sb-allocated-size 'control-stack))))
|
| 248 | 249 |
(cond ((typep size '(signed-byte 13))
|
| 249 | 250 |
(inst add csp-tn csp-tn size))
|
| ... | ... | @@ -349,7 +350,7 @@ default-value-8 |
| 349 | 350 |
(inst nop))
|
| 350 | 351 |
(inst compute-code-from-lra code-tn code-tn lra-label temp))
|
| 351 | 352 |
(let ((regs-defaulted (gen-label))
|
| 352 |
- (defaulting-done (gen-label))
|
|
| 353 |
+ (defaulting-done (gen-label))
|
|
| 353 | 354 |
(default-stack-vals (gen-label)))
|
| 354 | 355 |
;; Branch off to the MV case.
|
| 355 | 356 |
(new-assem:without-scheduling ()
|
| ... | ... | @@ -514,6 +515,7 @@ default-value-8 |
| 514 | 515 |
(:ignore arg-locs args ocfp)
|
| 515 | 516 |
(:generator 5
|
| 516 | 517 |
(trace-table-entry trace-table-call-site)
|
| 518 |
+ (emit-not-implemented)
|
|
| 517 | 519 |
(let ((label (gen-label))
|
| 518 | 520 |
(cur-nfp (current-nfp-tn vop)))
|
| 519 | 521 |
(when cur-nfp
|
| ... | ... | @@ -554,6 +556,7 @@ default-value-8 |
| 554 | 556 |
(:temporary (:sc control-stack :offset nfp-save-offset) nfp-save)
|
| 555 | 557 |
(:generator 20
|
| 556 | 558 |
(trace-table-entry trace-table-call-site)
|
| 559 |
+ (emit-not-implemented)
|
|
| 557 | 560 |
(let ((label (gen-label))
|
| 558 | 561 |
(cur-nfp (current-nfp-tn vop)))
|
| 559 | 562 |
(when cur-nfp
|
| ... | ... | @@ -598,6 +601,7 @@ default-value-8 |
| 598 | 601 |
(:temporary (:scs (non-descriptor-reg)) temp)
|
| 599 | 602 |
(:generator 5
|
| 600 | 603 |
(trace-table-entry trace-table-call-site)
|
| 604 |
+ (emit-not-implemented)
|
|
| 601 | 605 |
(let ((label (gen-label))
|
| 602 | 606 |
(cur-nfp (current-nfp-tn vop)))
|
| 603 | 607 |
(when cur-nfp
|
| ... | ... | @@ -637,6 +641,7 @@ default-value-8 |
| 637 | 641 |
(:vop-var vop)
|
| 638 | 642 |
(:generator 6
|
| 639 | 643 |
(trace-table-entry trace-table-function-epilogue)
|
| 644 |
+ (emit-not-implemented)
|
|
| 640 | 645 |
(maybe-load-stack-tn old-fp-temp old-fp)
|
| 641 | 646 |
(maybe-load-stack-tn return-pc-temp return-pc)
|
| 642 | 647 |
(move csp-tn cfp-tn)
|
| ... | ... | @@ -928,7 +933,7 @@ default-value-8 |
| 928 | 933 |
(:vop-var vop)
|
| 929 | 934 |
|
| 930 | 935 |
(:generator 75
|
| 931 |
- |
|
| 936 |
+ (emit-not-implemented)
|
|
| 932 | 937 |
;; Move these into the passing locations if they are not already there.
|
| 933 | 938 |
(move args args-arg)
|
| 934 | 939 |
(move lexenv function-arg)
|
| ... | ... | @@ -961,6 +966,7 @@ default-value-8 |
| 961 | 966 |
(:generator 6
|
| 962 | 967 |
(trace-table-entry trace-table-function-epilogue)
|
| 963 | 968 |
;; Clear the number stack.
|
| 969 |
+ (emit-not-implemented)
|
|
| 964 | 970 |
(let ((cur-nfp (current-nfp-tn vop)))
|
| 965 | 971 |
(when cur-nfp
|
| 966 | 972 |
(inst add nsp-tn cur-nfp
|
| ... | ... | @@ -1005,6 +1011,7 @@ default-value-8 |
| 1005 | 1011 |
(:generator 6
|
| 1006 | 1012 |
(trace-table-entry trace-table-function-epilogue)
|
| 1007 | 1013 |
;; Clear the number stack.
|
| 1014 |
+ (emit-not-implemented)
|
|
| 1008 | 1015 |
(let ((cur-nfp (current-nfp-tn vop)))
|
| 1009 | 1016 |
(when cur-nfp
|
| 1010 | 1017 |
(inst add nsp-tn cur-nfp
|
| ... | ... | @@ -1056,6 +1063,7 @@ default-value-8 |
| 1056 | 1063 |
|
| 1057 | 1064 |
(:generator 13
|
| 1058 | 1065 |
(trace-table-entry trace-table-function-epilogue)
|
| 1066 |
+ (emit-not-implemented)
|
|
| 1059 | 1067 |
(let ((not-single (gen-label)))
|
| 1060 | 1068 |
;; Clear the number stack.
|
| 1061 | 1069 |
(let ((cur-nfp (current-nfp-tn vop)))
|
| ... | ... | @@ -1109,6 +1117,7 @@ default-value-8 |
| 1109 | 1117 |
(:ignore label)
|
| 1110 | 1118 |
(:generator 6
|
| 1111 | 1119 |
;; Get result.
|
| 1120 |
+ (emit-not-implemented)
|
|
| 1112 | 1121 |
(move closure lexenv)))
|
| 1113 | 1122 |
|
| 1114 | 1123 |
;;; Copy a more arg from the argument area to the end of the current frame.
|
| ... | ... | @@ -1122,6 +1131,7 @@ default-value-8 |
| 1122 | 1131 |
(:temporary (:sc descriptor-reg :offset cname-offset) temp)
|
| 1123 | 1132 |
(:info fixed)
|
| 1124 | 1133 |
(:generator 20
|
| 1134 |
+ (emit-not-implemented)
|
|
| 1125 | 1135 |
(let ((loop (gen-label))
|
| 1126 | 1136 |
(do-regs (gen-label))
|
| 1127 | 1137 |
(done (gen-label)))
|
| ... | ... | @@ -1196,6 +1206,7 @@ default-value-8 |
| 1196 | 1206 |
(:translate %listify-rest-args)
|
| 1197 | 1207 |
(:policy :safe)
|
| 1198 | 1208 |
(:generator 20
|
| 1209 |
+ (emit-not-implemented)
|
|
| 1199 | 1210 |
(move context context-arg)
|
| 1200 | 1211 |
(move count count-arg)
|
| 1201 | 1212 |
;; Check to see if there are any arguments.
|
| ... | ... | @@ -1259,6 +1270,7 @@ default-value-8 |
| 1259 | 1270 |
(:result-types t tagged-num)
|
| 1260 | 1271 |
(:note _N"more-arg-context")
|
| 1261 | 1272 |
(:generator 5
|
| 1273 |
+ (emit-not-implemented)
|
|
| 1262 | 1274 |
(inst sub count supplied (fixnumize fixed))
|
| 1263 | 1275 |
(inst sub context csp-tn count)))
|
| 1264 | 1276 |
|
| ... | ... | @@ -1295,6 +1307,7 @@ default-value-8 |
| 1295 | 1307 |
(:vop-var vop)
|
| 1296 | 1308 |
(:save-p :compute-only)
|
| 1297 | 1309 |
(:generator 1000
|
| 1310 |
+ (emit-not-implemented)
|
|
| 1298 | 1311 |
(error-call vop ,error ,@args)))))
|
| 1299 | 1312 |
(frob argument-count-error invalid-argument-count-error
|
| 1300 | 1313 |
c::%argument-count-error nargs)
|
| ... | ... | @@ -101,7 +101,9 @@ |
| 101 | 101 |
(inst ,op value object temp)))))
|
| 102 | 102 |
(t
|
| 103 | 103 |
,@(unless (zerop shift)
|
| 104 |
- `((inst srln temp index ,shift)))
|
|
| 104 |
+ (if (minusp shift)
|
|
| 105 |
+ `((inst slln temp index ,(- shift)))
|
|
| 106 |
+ `((inst srln temp index ,shift))))
|
|
| 105 | 107 |
(inst add temp ,(if (zerop shift) 'index 'temp)
|
| 106 | 108 |
(- (ash offset vm:word-shift) lowtag))
|
| 107 | 109 |
(inst ,op value object temp)))
|
| ... | ... | @@ -112,8 +114,8 @@ |
| 112 | 114 |
(define-indexer signed-word-index-ref nil ldsw 0)
|
| 113 | 115 |
#+sparc-v9
|
| 114 | 116 |
(define-indexer signed-word-index-set nil st 0)
|
| 115 |
-(define-indexer word-index-ref nil ld 0)
|
|
| 116 |
-(define-indexer word-index-set t st 0)
|
|
| 117 |
+(define-indexer word-index-ref nil ldn -1)
|
|
| 118 |
+(define-indexer word-index-set t stn -1)
|
|
| 117 | 119 |
(define-indexer halfword-index-ref nil lduh 1)
|
| 118 | 120 |
(define-indexer signed-halfword-index-ref nil ldsh 1)
|
| 119 | 121 |
(define-indexer halfword-index-set t sth 1)
|