Re: [Sbcl-commits] master: x86-64: TRUNCATE using the Lemire, Kaser, Kurz transform

Douglas Katzman via Sbcl-devel <[email protected]> Sun, 19 Apr 2026 16:52:00 -0400
Newsgroups gmane.lisp.steel-bank.devel
Message-ID <CAOrNasxFgu2xmkOcbvUf2crrtb6j5OLt43fAZ2gDpNf1C=_sHA@mail.gmail.com>
--0000000000003b81fb064fd65b59
Content-Type: multipart/alternative; boundary="0000000000003b81fa064fd65b57"

--0000000000003b81fa064fd65b57
Content-Type: text/plain; charset="UTF-8"

The attached patch is a better way of doing this but I need help about
inserting an ERASE-NODE-TYPE on the result, I think.

The division-to-multiplication transform wants to return something
like (VALUES 0 (SB-VM::FASTREM-32 SB-C::X 613566757 7))
which instantly fails in arith.pure e.g.
(defun f (x)
  (declare (optimize (speed 3) (space 1) (compilation-speed 0)) (type
(integer 10000 10100) x))
  (mod x 7))
Because 0 is not a valid primary result of TRUNCATE given the constraint on
X it compiles to an error

; 5F: L0:   CC1D             INT3 29                          ;
OBJECT-NOT-TYPE-ERROR

; 61:       08               BYTE #X08                        ; RDX(d)

; 62:       13               BYTE #X13                        ; '(INTEGER
10000 10100)

; Origin #xB800A99063 (segment 2 of 2)                        ; F

; 63: L1:   CC2B             INT3 43                          ;
UNREACHABLE-ERROR

--0000000000003b81fa064fd65b57
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr">The attached patch is a better way of doi=
ng this but I need help about inserting an ERASE-NODE-TYPE on the result, I=
 think.<div><br><div>The division-to-multiplication transform wants to retu=
rn something like=C2=A0(VALUES 0 (SB-VM::FASTREM-32 SB-C::X 613566757 7))</=
div><div>which instantly fails in arith.pure e.g.</div><div>(defun f (x)<br=
>=C2=A0 (declare (optimize (speed 3) (space 1) (compilation-speed 0)) (type=
 (integer 10000 10100) x))<br>=C2=A0 (mod x 7))</div><div>Because 0 is not =
a valid primary=C2=A0result=C2=A0of TRUNCATE given the constraint on X it c=
ompiles to an error</div><div>





<p style=3D"margin:0px;font-style:normal;font-variant:normal;font-size-adju=
st:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;=
font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span=
 style=3D"font-variant-ligatures:no-common-ligatures">; 5F: L0: <span>=C2=
=A0 </span>CC1D <span>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 </span>INT3=
 29<span>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 </span>; OBJECT-NOT-TYPE-ERROR</span></p>
<p style=3D"margin:0px;font-style:normal;font-variant:normal;font-size-adju=
st:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;=
font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span=
 style=3D"font-variant-ligatures:no-common-ligatures">; 61: <span>=C2=A0 =
=C2=A0 =C2=A0 </span>08 <span>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 </span>BYTE #X08<span>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 </span>; RDX(d)</span></p>
<p style=3D"margin:0px;font-style:normal;font-variant:normal;font-size-adju=
st:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;=
font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span=
 style=3D"font-variant-ligatures:no-common-ligatures">; 62: <span>=C2=A0 =
=C2=A0 =C2=A0 </span>13 <span>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 </span>BYTE #X13<span>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 </span>; &#39;(INTEGER 10000 10100)</spa=
n></p>
<p style=3D"margin:0px;font-style:normal;font-variant:normal;font-size-adju=
st:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;=
font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span=
 style=3D"font-variant-ligatures:no-common-ligatures">; Origin #xB800A99063=
 (segment 2 of 2)<span>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 </span>; F</span></p>
<p style=3D"margin:0px;font-style:normal;font-variant:normal;font-size-adju=
st:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;=
font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span=
 style=3D"font-variant-ligatures:no-common-ligatures">; 63: L1: <span>=C2=
=A0 </span>CC2B <span>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 </span>INT3=
 43<span>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 </span>; UNREACHABLE-ERROR</span></p></div><div><b=
r></div></div></div>
</div>

--0000000000003b81fa064fd65b57--
--0000000000003b81fb064fd65b59
Content-Type: application/x-patch; 
	name="0001-Implement-choice-of-using-fastrem-in-IR1-transform.patch"
Content-Disposition: attachment; 
	filename="0001-Implement-choice-of-using-fastrem-in-IR1-transform.patch"
Content-Transfer-Encoding: base64
Content-ID: <f_mo68qif70>
X-Attachment-Id: f_mo68qif70

RnJvbSA1ZjUwYWQ5NjVkYmVjM2NkOGUzYjFmYTM4NjViZDBkNTRjZTk2ZjYzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEb3VnbGFzIEthdHptYW4gPGRvdWdrQGdvb2dsZS5jb20+CkRh
dGU6IFN1biwgMTkgQXByIDIwMjYgMTY6MzA6MjQgLTA0MDAKU3ViamVjdDogW1BBVENIXSBJbXBs
ZW1lbnQgY2hvaWNlIG9mIHVzaW5nIGZhc3RyZW0gaW4gSVIxIHRyYW5zZm9ybQoKLS0tCiBzcmMv
Y29tcGlsZXIvc3JjdHJhbi5saXNwICAgICAgfCAzNyArKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrCiBzcmMvY29tcGlsZXIveDg2LTY0L2FyaXRoLmxpc3AgfCA0MCArLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB0ZXN0cy9pbnRlZ2VyZGl2LnB1cmUubGlzcCAgICAgfCAg
NCArKystCiAzIGZpbGVzIGNoYW5nZWQsIDQxIGluc2VydGlvbnMoKyksIDQwIGRlbGV0aW9ucygt
KQoKZGlmZiAtLWdpdCBhL3NyYy9jb21waWxlci9zcmN0cmFuLmxpc3AgYi9zcmMvY29tcGlsZXIv
c3JjdHJhbi5saXNwCmluZGV4IDRjNzIyYTI3Yy4uYjY4ZmNlNmIwIDEwMDY0NAotLS0gYS9zcmMv
Y29tcGlsZXIvc3JjdHJhbi5saXNwCisrKyBiL3NyYy9jb21waWxlci9zcmN0cmFuLmxpc3AKQEAg
LTUxMjMsNiArNTEyMywzMCBAQAogICAgICAgICAgICAgICAgICAgICAoZGVmaW5lLXNvdXJjZS10
cmFuc2Zvcm0gJW11bHRpcGx5LWhpZ2ggKHggeSkKICAgICAgICAgICAgICAgICAgICAgICBgKHZh
bHVlcyAoc2ItYmlnbnVtOiVtdWx0aXBseSAseCAseSkpKSkKIAorKGRlZnVuIHRyeS1mYXN0cmVt
LWFsZ29yaXRobSAobnVtZXJhdG9yLXByZWNpc2lvbiBkaXZpc29yKQorICA7OyBUaGUgcmVhc29u
IGZvciB0aGUgY29uY2VybiBhYm91dCBpbnB1dHMgaXMgdGhhdCBmb3IgdGhlIGdlbmVyYWwgYWxn
b3JpdGhtIHRvIGFjY2VwdAorICA7OyBhbnkgNjQtYml0IGludGVnZXIgKGlmIEZJWE5VTSwgNjIg
Yml0cykgaXQgbmVlZHMgNCBNVUwgaW5zdHJ1Y3Rpb25zCisgIDs7IChjb25maXJtZWQgYnkgbG9v
a2luZyBhdCBodHRwczovL2dpdGh1Yi5jb20vbGVtaXJlL2Zhc3Rtb2QpCisgIDs7IEJ1dCAyIE1V
TCBpbnN0cnVjdGlvbnMgYXJlIGVub3VnaCBmb3IgcmVhc29uYWJsZSBpbnB1dHMuIEJvdGggdGhl
IGRpdmlzb3IgYW5kIHRoZQorICA7OyBtYXhpbXVtIGlucHV0IGFmZmVjdCBob3cgbWFueSBiaXRz
IGFyZSBuZWVkZWQgaW4gaW50ZXJtZWRpYXRlIHJlc3VsdHMuCisgIChiaW5kaW5nKiAoKChtYWdp
YyBzbWFsbGVzdC1uYml0cykKKyAgICAgICAgICAgICAgKHNiLWM6Y29tcHV0ZS1mYXN0cmVtLWNv
ZWZmaWNpZW50IGRpdmlzb3IgbnVtZXJhdG9yLXByZWNpc2lvbiA6bWluaW11bSkpCisgICAgICAg
ICAgICAgKGZyYWMtYml0cworICAgICAgICAgICAgICA7OyAic21hbGxlc3QiIGlzIGhvdyBtYW55
IGJpdHMgeW91IG5lZWQgZm9yIHRoZSBhbGdvcml0aG0gdG8gd29yaywgYXNzdW1pbmcKKyAgICAg
ICAgICAgICAgOzsgeW91IGNvdWxkIGFjdHVhbGx5IGNhbGN1bGF0ZSBvbiBiaXQgZmllbGRzIG9m
IGFyYml0cmFyeSBzaXplLiBCdXQgdG8gbWFrZSBpdAorICAgICAgICAgICAgICA7OyBlZmZpY2ll
bnQsIHlvdSBuZWVkIGEgZml4ZWQtYmluYXJ5LXBvaW50IHJlY2lwcm9jYWwgaW4gZXhhY3RseSAz
MiBiaXRzCisgICAgICAgICAgICAgIDs7IG9yIGV4YWN0bHkgNjQgYml0cyAob3IgMTI4LCBpZiBm
dWxseSBzdXBwb3J0aW5nIDY0LWJpdCBpbnRzKQorICAgICAgICAgICAgICAoY29uZCAoKDw9IHNt
YWxsZXN0LW5iaXRzIDMyKSAzMikKKyAgICAgICAgICAgICAgICAgICAgIys2NC1iaXQKKyAgICAg
ICAgICAgICAgICAgICAgKCg8PSBzbWFsbGVzdC1uYml0cyA2NCkgNjQpKSkpCisgICAgKHdoZW4g
ZnJhYy1iaXRzCisgICAgICAod2hlbiAoLz0gc21hbGxlc3QtbmJpdHMgZnJhYy1iaXRzKSA7IHJl
Y29tcHV0ZSBNQUdJQyB0byByZXF1aXJlZCBudW1iZXIgb2YgYml0cworICAgICAgICAoc2V0cSBt
YWdpYyAoc2ItYzpjb21wdXRlLWZhc3RyZW0tY29lZmZpY2llbnQgZGl2aXNvciBudW1lcmF0b3It
cHJlY2lzaW9uIGZyYWMtYml0cykpKQorICAgICAgKGNhc2UgZnJhYy1iaXRzCisgICAgICAgICgz
MiBgKHZhbHVlcyAwIChzYi12bTo6ZmFzdHJlbS0zMiB4ICxtYWdpYyAsZGl2aXNvcikpKQorICAg
ICAgICAjKzY0LWJpdAorICAgICAgICAoNjQgYCh2YWx1ZXMgMCAoc2Itdm06OmZhc3RyZW0tNjQg
eCAsbWFnaWMgLGRpdmlzb3IpKSkpKSkpCisKIDs7OyBJZiB0aGUgZGl2aXNvciBpcyBjb25zdGFu
dCBhbmQgYm90aCBhcmdzIGFyZSBwb3NpdGl2ZSBhbmQgZml0IGluIGEKIDs7OyBtYWNoaW5lIHdv
cmQsIHJlcGxhY2UgdGhlIGRpdmlzaW9uIGJ5IGEgbXVsdGlwbGljYXRpb24gYW5kIHBvc3NpYmx5
CiA7Ozsgc29tZSBzaGlmdHMgYW5kIGFuIGFkZGl0aW9uLiBDYWxjdWxhdGUgdGhlIHJlbWFpbmRl
ciBieSBhIHNlY29uZApAQCAtNTEzNCw2ICs1MTU4LDggQEAKIDs7OyB0aGlzIG9wdGltaXphdGlv
biBvbiBpdHMgb3duLikKIChkZWZ0cmFuc2Zvcm0gdHJ1bmNhdGUgKCh4IHkpICh3b3JkIChjb25z
dGFudC1hcmcgd29yZCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAqCisgICAgICAgICAgICAg
ICAgICAgICAgICA7OyBUaGlzIHBvbGljeSBpcyBxdWl0ZSBib2d1cyBhcyBhIGRlY2lkaW5nIGZh
Y3RvciBmb3IgdGhlIGZhc3RyZW0KKyAgICAgICAgICAgICAgICAgICAgICAgIDs7IHRyYW5zZm9y
bSB3aGljaCBfcmVkdWNlc18gY29kZSBzaXplIHdoaWxlIHJ1bmluZyBmYXN0ZXIuIE9oIHdlbGwu
CiAgICAgICAgICAgICAgICAgICAgICAgICA6cG9saWN5IChhbmQgKD4gc3BlZWQgY29tcGlsYXRp
b24tc3BlZWQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKD4gc3BlZWQg
c3BhY2UpKQogICAgICAgICAgICAgICAgICAgICAgICAgOnJlc3VsdCByZXN1bHQKQEAgLTUxNTIs
NyArNTE3OCwxNSBAQAogICAgIChsZXQgKChyZW0gKGFuZCAobXYtYmluZC11bnVzZWQtcCByZXN1
bHQgMCkKICAgICAgICAgICAgICAgICAgICAgKG12LWJpbmQtZGVzdCByZXN1bHQgMSB0KSkpCiAg
ICAgICAgICAgcGx1c3ApCisgICAgICA7OyBXaGVuIG9ubHkgYSByZW1haW5kZXIgaXMgbmVlZGVk
LCB0aGVyZSBhcmUgdHdvIHdheXMgb2YgZ29pbmcgYWJvdXQgaXQ6CisgICAgICA7OyAqIFVzaW5n
IHRoZSB3ZWxsLWVudHJlbmNoZWQgZGl2aWRlLWJ5LW11bHRpcGx5aW5nIHRlY2huaXF1ZSwgY29t
cHV0ZSB0aGUgcXVvdGllbnQgYW5kCisgICAgICA7OyAgIHRoZW4gc3VidHJhY3QgdGhlIHRoZSBw
cm9kdWN0IG9mIHRoZSBxdW90aWVudCB4IGRpdmlzb3IgZnJvbSB0aGUgb3JpZ2luYWwgaW5wdXQu
CisgICAgICA7OyAqIFRoZSBMZW1pcmUgZXQuIGFsLiB0ZWNobmlxdWUgYXZvaWRzIHN1YnRyYWN0
aW5nLiAgSXQgYWxzbyBvZmZlcnMgYSB3YXkgdG8gZGV0ZXJtaW5lCisgICAgICA7OyAgIGRpdmlz
aWJpbGl0eSAoMCByZW1haW5kZXIpIHdpdGggMSBmZXdlciBzdGVwLCB0aG91Z2ggb3VyIHdheSBp
cyBmYWlybHkgZ29vZCB0b28uCisgICAgICA7OyBUaGVyZWZvcmUsIGlmIGp1c3QgZ2V0dGluZyBh
IHJlbWFpbmRlciBhbmQgbmVpdGhlciBDT01CSU5BVElPTi1NQVRDSEVTLVAgaXMgdHJ1ZSwKKyAg
ICAgIDs7IHdlIHRyeSB0aGUgTGVtaXJlIHRyYW5zZm9ybSBiZWZvcmUgZmFsbGluZyBiYWNrIHRv
IHRoZSB0cmFkaXRpb25hbCB3YXkuCiAgICAgICAob3IKKyAgICAgICA7OyBDaG9pY2UgMQogICAg
ICAgICh3aGVuIChhbmQgcmVtCiAgICAgICAgICAgICAgICAgICAob3IgKGNvbWJpbmF0aW9uLW1h
dGNoZXMgJ2VxICcoKiAwKSByZW0pCiAgICAgICAgICAgICAgICAgICAgICAgKGFuZCAoY29tYmlu
YXRpb24tbWF0Y2hlcyAnPiAnKCogMCkgcmVtKQpAQCAtNTE4Myw2ICs1MjE3LDkgQEAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCg+IChyb3RhdGUtcmlnaHQtd29y
ZCAodHJ1bHktdGhlIHdvcmQgKGxvZ2FuZCAoKiB4ICxpbnYpICxtYXgteCkpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLHpl
cm9zKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCh0cnVu
Y2F0ZSBtYXgteCB5KSkpKSkpKSkpCisgICAgICAgOzsgQ2hvaWNlIDIKKyAgICAgICAoYW5kIHJl
bSAodHJ5LWZhc3RyZW0tYWxnb3JpdGhtIChpbnRlZ2VyLWxlbmd0aCBtYXgteCkgeSkpCisgICAg
ICAgOzsgQ2hvaWNlIDMKICAgICAgICBgKGxldCogKChxdW90ICh0cnVseS10aGUgKGludGVnZXIg
MCAsKHRydW5jYXRlIG1heC14IHkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAs
KGdlbi11bnNpZ25lZC1kaXYtYnktY29uc3RhbnQtZXhwciB5IG1heC14KSkpCiAgICAgICAgICAg
ICAgICAocmVtICh0cnVseS10aGUgKG1vZCAseSkKZGlmZiAtLWdpdCBhL3NyYy9jb21waWxlci94
ODYtNjQvYXJpdGgubGlzcCBiL3NyYy9jb21waWxlci94ODYtNjQvYXJpdGgubGlzcAppbmRleCA0
ZjdkYTRlMGMuLjc0MjA5ZjY0YSAxMDA2NDQKLS0tIGEvc3JjL2NvbXBpbGVyL3g4Ni02NC9hcml0
aC5saXNwCisrKyBiL3NyYy9jb21waWxlci94ODYtNjQvYXJpdGgubGlzcApAQCAtMjA3MSw0NCAr
MjA3MSw2IEBACiAgICg6bm90ZSAiaW5saW5lIGZpeG51bSBhcml0aG1ldGljIikKICAgKDp2b3At
dmFyIHZvcCkKICAgKDpnZW5lcmF0b3IgMzAKLSAgIChibG9jayBuaWwKLSAgICA7OyBUaGlzIG91
Z2h0IHRvIGJlIGRvbmUgbWFjaGluZS1pbmRlcGVuZGVudGx5LCBidXQgdGhlcmUgYXJlIGFscmVh
ZHkgMjMgdHJhbnNmb3JtcwotICAgIDs7IG9uIFRSVU5DQVRFIGFuZCBJIGRvbid0IHVuZGVyc3Rh
bmQgaG93IHRoZXkgZ2V0IHRyaWVkIGluIHRoZSBvcHRpbWFsIG9yZGVyLgotICAgIDs7IFRoZSBi
ZW5lZml0IG9mIHRoYXQgaXMgd2UgY291bGQganVzdCBpbnZva2UgdGhlIGZhc3RyZW0tMzIgb3Ig
ZmFzdHJlbS02NCB2b3AKLSAgICA7OyByYXRoZXIgdGhhbiBoYXZpbmcgdG8gcmVwbGljYXRlIHRo
ZW0gaW5zaWRlIGhlcmUuCi0gICAgKHdoZW4gKGFuZCAoZXEgKHRuLWtpbmQgcXVvKSA6dW51c2Vk
KQotICAgICAgICAgICAgICAgKHR5cGVwIHkgJyh1bnNpZ25lZC1ieXRlIDY0KSkKLSAgICAgICAg
ICAgICAgIChjc3VidHlwZXAgKHRuLXJlZi10eXBlICh2b3AtYXJncyB2b3ApKSAoc3BlY2lmaWVy
LXR5cGUgJyh1bnNpZ25lZC1ieXRlIDY0KSkpKQotICAgICAgOzsgVGhlIHJlYXNvbiBmb3IgdGhl
IGNvbmNlcm4gYWJvdXQgaW5wdXRzIGlzIHRoYXQgdGhlIGdlbmVyYWwgYWxnb3JpdGhtIHRvIGFj
Y2VwdAotICAgICAgOzsgYW55IDY0LWJpdCBpbnRlZ2VyICh3aGljaCBhcyBGSVhOVU0gd291bGQg
bGltaXQgYmUgNjIgYml0cykgbmVlZHMgNCBNVUwgaW5zdHJ1Y3Rpb25zCi0gICAgICA7OyAoY29u
ZmlybWVkIGJ5IGxvb2tpbmcgYXQgaHR0cHM6Ly9naXRodWIuY29tL2xlbWlyZS9mYXN0bW9kKQot
ICAgICAgOzsgQnV0IDIgTVVMIGluc3RydWN0aW9ucyBpcyBlbm91Z2ggZm9yIHJlYXNvbmFibGUg
aW5wdXRzLiBCb3RoIHRoZSBkaXZpc29yIGFuZCB0aGUKLSAgICAgIDs7IG1heGltdW0gaW5wdXQg
YWZmZWN0IGhvdyBtYW55IGJpdHMgYXJlIG5lZWRlZCBpbiBpbnRlcm1lZGlhdGUgcmVzdWx0cy4K
LSAgICAgIChiaW5kaW5nKiAoKG51bWVyYXRvci1wcmVjaXNpb24KLSAgICAgICAgICAgICAgICAg
ICh0eXBlLXdpZHRoLWluLWJpdHMgKHRuLXJlZi10eXBlICh2b3AtYXJncyB2b3ApKSkgOmV4aXQt
aWYtbnVsbCkKLSAgICAgICAgICAgICAgICAgKChtYWdpYyBzbWFsbGVzdC1uYml0cykKLSAgICAg
ICAgICAgICAgICAgIChzYi1jOmNvbXB1dGUtZmFzdHJlbS1jb2VmZmljaWVudCB5IG51bWVyYXRv
ci1wcmVjaXNpb24gOm1pbmltdW0pKQotICAgICAgICAgICAgICAgICAoKGZyYWMtYml0cyBvcGVy
YW5kLXNpemUpCi0gICAgICAgICAgICAgICAgICA7OyAic21hbGxlc3QiIGlzIGhvdyBtYW55IGJp
dHMgeW91IG5lZWQgZm9yIHRoZSBhbGdvcml0aG0gdG8gd29yaywgYXNzdW1pbmcKLSAgICAgICAg
ICAgICAgICAgIDs7IHlvdSBjb3VsZCBhY3R1YWxseSBjYWxjdWxhdGUgb24gYml0IGZpZWxkcyBv
ZiBhcmJpdHJhcnkgc2l6ZS4gQnV0IHRvIG1ha2UgaXQKLSAgICAgICAgICAgICAgICAgIDs7IGVm
ZmljaWVudCwgeW91IG5lZWQgYSBmaXhlZC1iaW5hcnktcG9pbnQgcmVjaXByb2NhbCBpbiBleGFj
dGx5IDMyIGJpdHMKLSAgICAgICAgICAgICAgICAgIDs7IG9yIGV4YWN0bHkgNjQgYml0cyAob3Ig
MTI4LCBpZiBmdWxseSBzdXBwb3J0aW5nIDY0LWJpdCBpbnRzKQotICAgICAgICAgICAgICAgICAg
KGNvbmQgKCg8PSBzbWFsbGVzdC1uYml0cyAzMikgKHZhbHVlcyAzMiA6ZHdvcmQpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgKCg8PSBzbWFsbGVzdC1uYml0cyA2NCkgKHZhbHVlcyA2NCA6cXdv
cmQpKSkpKQotICAgICAgICAod2hlbiBvcGVyYW5kLXNpemUKLSAgICAgICAgICAod2hlbiAoLz0g
c21hbGxlc3QtbmJpdHMgZnJhYy1iaXRzKSA7IHJlY29tcHV0ZSBNQUdJQyB0byByZXF1aXJlZCBu
dW1iZXIgb2YgYml0cwotICAgICAgICAgICAgKHNldHEgbWFnaWMgKHNiLWM6Y29tcHV0ZS1mYXN0
cmVtLWNvZWZmaWNpZW50IHkgbnVtZXJhdG9yLXByZWNpc2lvbiBmcmFjLWJpdHMpKSkKLSAgICAg
ICAgICAobGV0ICgoYXJnLXNpemUgKGlmICg8PSBudW1lcmF0b3ItcHJlY2lzaW9uIDMxKSA6ZHdv
cmQgOnF3b3JkKSkpCi0gICAgICAgICAgICAobW92ZSByYXggeCBhcmctc2l6ZSkKLSAgICAgICAg
ICAgIChpbnN0IHNociBhcmctc2l6ZSByYXggbi1maXhudW0tdGFnLWJpdHMpKSA7IHVudGFnIGl0
Ci0gICAgICAgICAgKGluc3QgbXVsIG9wZXJhbmQtc2l6ZSAocmVnaXN0ZXItaW5saW5lLWNvbnN0
YW50IG9wZXJhbmQtc2l6ZSBtYWdpYykpCi0gICAgICAgICAgKGluc3QgbXVsIG9wZXJhbmQtc2l6
ZSAocmVnaXN0ZXItaW5saW5lLWNvbnN0YW50IG9wZXJhbmQtc2l6ZSB5KSkKLSAgICAgICAgICA7
OyBUaGUgcmVzdWx0IG1pZ2h0IGZpdCBpbnRvIGEgOkRXT1JEIGRlcGVuZGluZyBvbiB0aGUgZGl2
aXNvcgotICAgICAgICAgIChsZXQgKChyZXMtc2l6ZSAoaWYgKDw9IChpbnRlZ2VyLWxlbmd0aCAo
MS0geSkpIDMxKSA6ZHdvcmQgOnF3b3JkKSkpIDsgKHRhZ2dlZCkKLSAgICAgICAgICAgIChpZiAo
bG9jYXRpb249IHJlbSByZHgpCi0gICAgICAgICAgICAgICAgKGluc3Qgc2hsIHJlcy1zaXplIHJl
bSAxKQotICAgICAgICAgICAgICAgIChpbnN0IGxlYSByZXMtc2l6ZSByZW0gKGVhIHJkeCByZHgp
KSkpCi0gICAgICAgICAgKHJldHVybikpKSkKICAgICAobW92ZSByYXggeCkKICAgICAoaW5zdCBj
cW8pCiAgICAgKGluc3QgbW92IHktYXJnIChmaXhudW1pemUgeSkpCkBAIC0yMTE5LDcgKzIwODEs
NyBAQAogICAgICAgICAgIChpZiAoPSBuLWZpeG51bS10YWctYml0cyAxKQogICAgICAgICAgICAg
ICAoaW5zdCBsZWEgcXVvIChlYSByYXggcmF4KSkKICAgICAgICAgICAgICAgKGluc3QgbGVhIHF1
byAoZWEgbmlsIHJheCAoYXNoIDEgbi1maXhudW0tdGFnLWJpdHMpKSkpKSkKLSAgICAobW92ZSBy
ZW0gcmR4KSkpKQorICAgIChtb3ZlIHJlbSByZHgpKSkKIAogKGRlZmluZS12b3AgKGZhc3QtdHJ1
bmNhdGUvdW5zaWduZWQ9PnVuc2lnbmVkIGZhc3Qtc2FmZS1hcml0aC1vcCkKICAgKDp0cmFuc2xh
dGUgdHJ1bmNhdGUpCmRpZmYgLS1naXQgYS90ZXN0cy9pbnRlZ2VyZGl2LnB1cmUubGlzcCBiL3Rl
c3RzL2ludGVnZXJkaXYucHVyZS5saXNwCmluZGV4IGUyODc2Mzc1Ni4uZjRhMGIxZDM3IDEwMDY0
NAotLS0gYS90ZXN0cy9pbnRlZ2VyZGl2LnB1cmUubGlzcAorKysgYi90ZXN0cy9pbnRlZ2VyZGl2
LnB1cmUubGlzcApAQCAtMTU3LDcgKzE1Nyw5IEBACiAgIChkb2xpc3QgKGRpdmlkZW5kLWJpdHMg
JygyNCA1OCkpCiAgICAgOzsgYSBkaXZpc29yIG9mIDEyMzUgbmVlZHMgdG9vIG1hbnkgaW50ZXJt
ZWRpYXRlIGJpdHMgZm9yIGRpdmlkZW5kLWJpdHM9NTgKICAgICAoZG9saXN0IChkaXZpc29yIGAo
MyA3IDEzMyAsKGlmICg9IGRpdmlkZW5kLWJpdHMgMjQpIDEyMzUgMTQ5KSkpCi0gICAgICAoY29t
cGlsZSAncmVtTiBgKGxhbWJkYSAoeCkgKHJlbSAodGhlICh1bnNpZ25lZC1ieXRlICxkaXZpZGVu
ZC1iaXRzKSB4KSAsZGl2aXNvcikpKQorICAgICAgKGNvbXBpbGUgJ3JlbU4gYChsYW1iZGEgKHgp
CisgICAgICAgICAgICAgICAgICAgICAgICAoZGVjbGFyZSAob3B0aW1pemUgc3BlZWQpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgKHJlbSAodGhlICh1bnNpZ25lZC1ieXRlICxkaXZpZGVuZC1i
aXRzKSB4KSAsZGl2aXNvcikpKQogICAgICAgOzsgc2hvdWxkIG5vdCB1c2UgRElWIG9yIElESVYg
aW5zdHJ1Y3Rpb25zCiAgICAgICAoYXNzZXJ0IChub3QgKHNlYXJjaCAiRElWIiAod2l0aC1vdXRw
dXQtdG8tc3RyaW5nIChzKSAoZGlzYXNzZW1ibGUgJ3JlbU4gOnN0cmVhbSBzKSkpKSkKICAgICAg
IChkb3RpbWVzIChpIDEwMDAwKQotLSAKMi41NC4wLnJjMS41MTMuZ2FkOGFiZTdhNWEtZ29vZwoK
--0000000000003b81fb064fd65b59
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline


--0000000000003b81fb064fd65b59
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Sbcl-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sbcl-devel

--0000000000003b81fb064fd65b59--