Raymond Toy pushed to branch issue-284-optimize-signed-byte-32-int-len-vop at cmucl / cmucl
Commits:
274feae4 by Raymond Toy at 2024-03-22T09:58:37-07:00
Update release notes for #284
- - - - -
1 changed file:
- src/general-info/release-21f.md
Changes:
=====================================
src/general-info/release-21f.md
=====================================
@@ -61,6 +61,7 @@ public domain.
least-positive-float
* ~~#278~~ Add some more debugging prints to gencgc
* ~~#283~~ Add VOP for `integer-length` for `(unsigned-byte 32)` arg.
+ * ~~#284~~ Microoptimize `signed-byte-32-int-len` VOP for x86.
* Other changes:
* Improvements to the PCL implementation of CLOS:
* Changes to building procedure:
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/commit/274feae4e9922e319b1e1c9…
--
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/commit/274feae4e9922e319b1e1c9…
You're receiving this email because of your account on gitlab.common-lisp.net.
Raymond Toy pushed to branch master at cmucl / cmucl
Commits:
62c23d27 by Raymond Toy at 2024-03-22T09:14:28-07:00
Checkout ansi-tests cmucl-expected-failures again
Issue https://gitlab.common-lisp.net/cmucl/cmucl/-/issues/276 has
landed and we've merged the ansi-test branch issue-276-xoroshiro to
cmucl-expected-failures. Thus, we can check out
cmucl-expected-failures again for running ansi-tests.
- - - - -
1 changed file:
- bin/run-ansi-tests.sh
Changes:
=====================================
bin/run-ansi-tests.sh
=====================================
@@ -41,7 +41,7 @@ else
fi
cd ../ansi-test
-git checkout issue-276-xoroshiro
+git checkout cmucl-expected-failures
make LISP="$LISP batch -noinit -nositeinit"
# There should be no unexpected successes or failures; check these separately
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/commit/62c23d276620926d311ea9c…
--
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/commit/62c23d276620926d311ea9c…
You're receiving this email because of your account on gitlab.common-lisp.net.
Raymond Toy pushed to branch master at cmucl / cmucl
Commits:
453f2c86 by Raymond Toy at 2024-03-22T09:12:33-07:00
Update release notes for #283
Forgot to update release notes after fixing #283.
- - - - -
1 changed file:
- src/general-info/release-21f.md
Changes:
=====================================
src/general-info/release-21f.md
=====================================
@@ -60,6 +60,7 @@ public domain.
* ~~#277~~ `float-ratio-float` returns 0 for numbers close to
least-positive-float
* ~~#278~~ Add some more debugging prints to gencgc
+ * ~~#283~~ Add VOP for `integer-length` for `(unsigned-byte 32)` arg.
* Other changes:
* Improvements to the PCL implementation of CLOS:
* Changes to building procedure:
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/commit/453f2c866544fa5f113ab9a…
--
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/commit/453f2c866544fa5f113ab9a…
You're receiving this email because of your account on gitlab.common-lisp.net.
Raymond Toy pushed to branch master at cmucl / cmucl
Commits:
45d30576 by Raymond Toy at 2024-03-22T15:15:57+00:00
Fix #283: Add VOP for integer-length for an (unsigned-byte 32) arg
- - - - -
4d33af09 by Raymond Toy at 2024-03-22T15:15:58+00:00
Merge branch 'issue-283-unsigned-integer-length-vop' into 'master'
Fix #283: Add VOP for integer-length for an (unsigned-byte 32) arg
Closes #283
See merge request cmucl/cmucl!194
- - - - -
2 changed files:
- src/compiler/x86/arith.lisp
- src/i18n/locale/cmucl-x86-vm.pot
Changes:
=====================================
src/compiler/x86/arith.lisp
=====================================
@@ -755,6 +755,28 @@
(inst xor res res)
DONE))
+(define-vop (unsigned-byte-32-len)
+ (:translate integer-length)
+ (:note _N"inline (unsigned-byte 32) integer-length")
+ (:policy :fast-safe)
+ (:args (arg :scs (unsigned-reg)))
+ (:arg-types unsigned-num)
+ (:results (res :scs (any-reg)))
+ (:result-types positive-fixnum)
+ (:generator 30
+ (move res arg)
+ ;; The Intel docs say that BSR leaves the destination register
+ ;; undefined if the source is 0. But AMD64 says the destination
+ ;; register is unchanged. This also appears to be the case for
+ ;; GCC and LLVM.
+ (inst bsr res res)
+ (inst jmp :z DONE)
+ ;; The result of BSR is one too small for what we want, so
+ ;; increment the result.
+ (inst inc res)
+ (inst shl res 2)
+ DONE))
+
(define-vop (unsigned-byte-32-count)
(:translate logcount)
(:note _N"inline (unsigned-byte 32) logcount")
=====================================
src/i18n/locale/cmucl-x86-vm.pot
=====================================
@@ -296,6 +296,10 @@ msgstr ""
msgid "inline (signed-byte 32) integer-length"
msgstr ""
+#: src/compiler/x86/arith.lisp
+msgid "inline (unsigned-byte 32) integer-length"
+msgstr ""
+
#: src/compiler/x86/arith.lisp
msgid "inline (unsigned-byte 32) logcount"
msgstr ""
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/compare/36299b0c96171700026c16…
--
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/compare/36299b0c96171700026c16…
You're receiving this email because of your account on gitlab.common-lisp.net.
Raymond Toy pushed to branch issue-283-unsigned-integer-length-vop at cmucl / cmucl
Commits:
8bf5b284 by Raymond Toy at 2024-03-22T07:56:03-07:00
Use ZF flag for the 0 case
Instead of explicitly testing for 0, using the ZF flag after the `BSR`
instruction which is set to true if the source is 0.
We also assume that `BSR` in this case leaves the destination
unchanged even though the Intel docs say the result is undefined in
this case, but the AMD docs say it is unchanged. See !194 for more
references that say this is true for Intel too.
- - - - -
1 changed file:
- src/compiler/x86/arith.lisp
Changes:
=====================================
src/compiler/x86/arith.lisp
=====================================
@@ -765,10 +765,12 @@
(:result-types positive-fixnum)
(:generator 30
(move res arg)
- ;; BSR is undefined if the source is 0, so check for that here.
- (inst cmp res 0)
- (inst jmp :eq DONE)
+ ;; The Intel docs say that BSR leaves the destination register
+ ;; undefined if the source is 0. But AMD64 says the destination
+ ;; register is unchanged. This also appears to be the case for
+ ;; GCC and LLVM.
(inst bsr res res)
+ (inst jmp :z DONE)
;; The result of BSR is one too small for what we want, so
;; increment the result.
(inst inc res)
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/commit/8bf5b28444fe3d962efad9d…
--
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/commit/8bf5b28444fe3d962efad9d…
You're receiving this email because of your account on gitlab.common-lisp.net.
Raymond Toy pushed to branch master at cmucl / cmucl
Commits:
36299b0c by Raymond Toy at 2024-03-17T07:23:28-07:00
Update notes with more fixed issue numbers
Forgot to update the release notes when we fixed various issues.
- - - - -
1 changed file:
- src/general-info/release-21f.md
Changes:
=====================================
src/general-info/release-21f.md
=====================================
@@ -42,12 +42,24 @@ public domain.
* ~~#249~~ Replace LEA instruction with simpler shorter instructions in arithmetic vops for x86
* ~~#253~~ Block-compile list-to-hashtable and callers
* ~~#258~~ Remove `get-page-size` from linux-os.lisp
+ * ~~#252~~ Add script to run ansi-tests
* ~~#256~~ loop for var nil works
+ * ~~#259~~ `system::*software-version*` undefined when compiling
+ on linux
+ * ~~#260~~ Command line options `-edit` and `-slave` no longer
+ available for Hemlock
+ * ~~#261~~ Remove `get-system-info` from "bsd-os.lisp"
+ * ~~#268~~ Can't clone ansi-test repo on Mac OS CI box
+ * ~~#265~~ CI for mac os is broken
* ~~#269~~ Add function to get user's home directory
* ~~#266~~ Support "~user" in namestrings
* ~~#271~~ Update ASDF to 3.3.7
* ~~#272~~ Move scavenge code for static vectors to its own function
+ * ~~#274~~ 1d99999999 hangs
* ~~#276~~ Implement xoroshiro128** generator for x86
+ * ~~#277~~ `float-ratio-float` returns 0 for numbers close to
+ least-positive-float
+ * ~~#278~~ Add some more debugging prints to gencgc
* Other changes:
* Improvements to the PCL implementation of CLOS:
* Changes to building procedure:
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/commit/36299b0c96171700026c160…
--
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/commit/36299b0c96171700026c160…
You're receiving this email because of your account on gitlab.common-lisp.net.
Raymond Toy pushed to branch issue-276-xoroshiro128starstar at cmucl / cmucl
Commits:
88e0e74f by Raymond Toy at 2024-03-13T13:01:17-07:00
Fix comment about old xoroshiro128+
We use xoroshiro128** everywhere now, fix up comments referencing old
xoroshiro128+.
- - - - -
b309998d by Raymond Toy at 2024-03-13T13:02:02-07:00
Pull updates for ansi-test repo
If the ansi-test repo already exists, we need to pull any updates in
case the repo has had changes made since it was last cloned.
- - - - -
2 changed files:
- bin/run-ansi-tests.sh
- src/code/rand-xoroshiro.lisp
Changes:
=====================================
bin/run-ansi-tests.sh
=====================================
@@ -33,8 +33,9 @@ shift $[$OPTIND - 1]
set -x
if [ -d ../ansi-test ]; then
- # We already have clone; make sure it's clean by stashing any changes.
- (cd ../ansi-test; git stash)
+ # We already have clone; make sure it's clean by stashing any
+ # changes. Then pull any updates.
+ (cd ../ansi-test; git stash; git pull --rebase)
else
(cd ../; git clone https://gitlab.common-lisp.net/cmucl/ansi-test.git)
fi
=====================================
src/code/rand-xoroshiro.lisp
=====================================
@@ -10,7 +10,7 @@
;;;
;;; **********************************************************************
;;;
-;;; Support for the xoroshiro128+ random number generator by David
+;;; Support for the xoroshiro128** random number generator by David
;;; Blackman and Sebastiano Vigna (vigna(a)acm.org). See
;;; http://xoroshiro.di.unimi.it/.
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/compare/b80289c54de16cdbfb49ad…
--
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/compare/b80289c54de16cdbfb49ad…
You're receiving this email because of your account on gitlab.common-lisp.net.