01:04:57 drmeister [~drmeister@184.71.117.234] has joined #sbcl 01:34:08 Bike_ [~Glossina@75-175-71-68.ptld.qwest.net] has joined #sbcl 01:36:19 -!- Bike [~Glossina@71-214-94-86.ptld.qwest.net] has quit [Ping timeout: 276 seconds] 01:46:43 -!- ASau [~user@p5797E401.dip0.t-ipconnect.de] has quit [Remote host closed the connection] 01:47:43 -!- Bike_ is now known as Bike 01:49:39 ASau [~user@p5797E401.dip0.t-ipconnect.de] has joined #sbcl 01:58:44 Bike_ [~Glossina@75-175-71-68.ptld.qwest.net] has joined #sbcl 01:58:57 -!- Bike [~Glossina@75-175-71-68.ptld.qwest.net] has quit [Disconnected by services] 01:59:02 -!- Bike_ is now known as Bike 02:21:07 psilord [~psilord@c-69-180-173-249.hsd1.mn.comcast.net] has joined #sbcl 02:38:45 -!- christoph_debian [~christoph@ppp-188-174-24-164.dynamic.mnet-online.de] has quit [Ping timeout: 246 seconds] 02:52:51 christoph_debian [~christoph@ppp-188-174-144-234.dynamic.mnet-online.de] has joined #sbcl 03:02:28 attila_lendvai [~attila_le@92.47.185.123] has joined #sbcl 03:02:28 -!- attila_lendvai [~attila_le@92.47.185.123] has quit [Changing host] 03:02:28 attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has joined #sbcl 03:28:31 fisxoj [~fisxoj@c-24-12-190-29.hsd1.il.comcast.net] has joined #sbcl 03:29:25 -!- attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has quit [Quit: Leaving.] 03:30:37 edgar-rft [~GOD@HSI-KBW-149-172-63-75.hsi13.kabel-badenwuerttemberg.de] has joined #sbcl 03:33:25 pranavrc [~pranavrc@122.174.33.130] has joined #sbcl 03:33:25 -!- pranavrc [~pranavrc@122.174.33.130] has quit [Changing host] 03:33:25 pranavrc [~pranavrc@unaffiliated/pranavrc] has joined #sbcl 03:39:24 -!- pranavrc [~pranavrc@unaffiliated/pranavrc] has quit [Read error: Connection reset by peer] 04:00:16 -!- fisxoj [~fisxoj@c-24-12-190-29.hsd1.il.comcast.net] has quit [Ping timeout: 240 seconds] 04:12:17 scymtym_ [~user@ip-5-147-122-209.unitymediagroup.de] has joined #sbcl 04:25:41 robgssp [~user@cpe-24-93-28-218.rochester.res.rr.com] has joined #sbcl 04:25:41 -!- drmeister [~drmeister@184.71.117.234] has quit [Remote host closed the connection] 04:26:19 drmeister [~drmeister@184.71.117.234] has joined #sbcl 04:30:52 -!- drmeister [~drmeister@184.71.117.234] has quit [Ping timeout: 256 seconds] 04:31:51 drmeister [~drmeister@184.71.117.234] has joined #sbcl 04:48:31 -!- drmeister [~drmeister@184.71.117.234] has quit [Remote host closed the connection] 04:48:59 drmeister [~drmeister@184.71.117.234] has joined #sbcl 04:53:25 -!- drmeister [~drmeister@184.71.117.234] has quit [Ping timeout: 248 seconds] 04:58:39 drmeister [~drmeister@184.71.117.234] has joined #sbcl 05:24:07 -!- scymtym_ [~user@ip-5-147-122-209.unitymediagroup.de] has quit [Read error: Operation timed out] 05:25:17 prxq [~mommer@mnhm-4d011f29.pool.mediaWays.net] has joined #sbcl 05:51:46 -!- stassats` [~stassats@wikipedia/stassats] has quit [Ping timeout: 276 seconds] 06:47:31 angavrilov [~angavrilo@217.71.227.190] has joined #sbcl 07:06:18 -!- scymtym [~user@2001:638:504:2093:226:b9ff:fe7d:3e1f] has quit [Remote host closed the connection] 07:10:42 -!- robgssp [~user@cpe-24-93-28-218.rochester.res.rr.com] has quit [Ping timeout: 246 seconds] 07:14:59 -!- drmeister [~drmeister@184.71.117.234] has quit [Remote host closed the connection] 07:15:27 drmeister [~drmeister@184.71.117.234] has joined #sbcl 07:20:19 -!- drmeister [~drmeister@184.71.117.234] has quit [Ping timeout: 264 seconds] 08:03:30 -!- segv- [~mb@95-91-241-41-dynip.superkabel.de] has quit [Ping timeout: 240 seconds] 08:05:35 -!- loke [~loke@203.127.16.194] has quit [Disconnected by services] 08:06:02 loke [~loke@203.127.16.194] has joined #sbcl 08:22:38 segv- [~mb@95-91-241-41-dynip.superkabel.de] has joined #sbcl 08:30:42 rudi [~rudi@1x-193-157-247-189.uio.no] has joined #sbcl 08:36:10 scymtym [~user@2001:638:504:2093:226:b9ff:fe7d:3e1f] has joined #sbcl 09:06:10 -!- Quadrescence [~quad@unaffiliated/quadrescence] has quit [Quit: This computer has gone to sleep] 09:06:49 -!- kanru [~kanru@118-163-10-190.HINET-IP.hinet.net] has quit [Remote host closed the connection] 09:12:01 -!- bege [~bege@S0106001d7e5132b0.ed.shawcable.net] has quit [*.net *.split] 09:12:02 -!- brucem [~bmitchene@waywardmonkeys.com] has quit [*.net *.split] 09:12:03 -!- danlentz [~danlentz@c-68-37-70-235.hsd1.nj.comcast.net] has quit [*.net *.split] 09:12:05 -!- prxq [~mommer@mnhm-4d011f29.pool.mediaWays.net] has quit [*.net *.split] 09:12:05 -!- edgar-rft [~GOD@HSI-KBW-149-172-63-75.hsi13.kabel-badenwuerttemberg.de] has quit [*.net *.split] 09:12:06 -!- milosn_ [~milosn@user-5af5043f.broadband.tesco.net] has quit [*.net *.split] 09:12:08 -!- pipping_ [~pipping@tchaikovsky.exherbo.org] has quit [*.net *.split] 09:12:09 -!- |3b| [bbb@2600:3c00::f03c:91ff:fedf:5b65] has quit [*.net *.split] 09:12:10 -!- Posterdati [~antani@host199-226-dynamic.16-87-r.retail.telecomitalia.it] has quit [*.net *.split] 09:12:11 -!- Krystof [~user@81.174.155.115] has quit [*.net *.split] 09:13:51 pipping_ [~pipping@tchaikovsky.exherbo.org] has joined #sbcl 09:13:51 |3b| [bbb@2600:3c00::f03c:91ff:fedf:5b65] has joined #sbcl 09:13:51 Posterdati [~antani@host199-226-dynamic.16-87-r.retail.telecomitalia.it] has joined #sbcl 09:15:35 prxq [~mommer@mnhm-4d011f29.pool.mediaWays.net] has joined #sbcl 09:15:35 edgar-rft [~GOD@HSI-KBW-149-172-63-75.hsi13.kabel-badenwuerttemberg.de] has joined #sbcl 09:15:35 danlentz [~danlentz@c-68-37-70-235.hsd1.nj.comcast.net] has joined #sbcl 09:15:35 milosn_ [~milosn@user-5af5043f.broadband.tesco.net] has joined #sbcl 09:15:35 Krystof [~user@81.174.155.115] has joined #sbcl 09:15:35 bege [~bege@S0106001d7e5132b0.ed.shawcable.net] has joined #sbcl 09:15:35 brucem [~bmitchene@waywardmonkeys.com] has joined #sbcl 09:15:35 -!- sendak.freenode.net has set mode +o Krystof 09:16:57 -!- Kromitvs [~quassel@mcqueen.rnl.ist.utl.pt] has quit [Ping timeout: 264 seconds] 09:40:59 kanru [~kanru@118-163-10-190.HINET-IP.hinet.net] has joined #sbcl 09:45:40 -!- loke [~loke@203.127.16.194] has quit [Disconnected by services] 09:46:05 loke_ [~loke@203.127.16.194] has joined #sbcl 09:53:42 Kromitvs [~quassel@mcqueen.rnl.ist.utl.pt] has joined #sbcl 09:58:59 -!- Bike [~Glossina@75-175-71-68.ptld.qwest.net] has quit [Ping timeout: 256 seconds] 10:01:02 Bike [~Glossina@71-214-88-68.ptld.qwest.net] has joined #sbcl 10:12:35 Quadrescence [~quad@unaffiliated/quadrescence] has joined #sbcl 10:17:37 -!- Quadrescence [~quad@unaffiliated/quadrescence] has quit [Quit: This computer has gone to sleep] 10:33:21 turbopape [~turbopape@41.230.44.101] has joined #sbcl 10:33:35 -!- turbopape [~turbopape@41.230.44.101] has left #sbcl 11:07:44 attila_lendvai [~attila_le@92.46.9.72] has joined #sbcl 11:07:44 -!- attila_lendvai [~attila_le@92.46.9.72] has quit [Changing host] 11:07:44 attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has joined #sbcl 11:08:22 -!- attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has quit [Client Quit] 11:08:29 attila_lendvai [~attila_le@92.46.9.72] has joined #sbcl 11:08:29 -!- attila_lendvai [~attila_le@92.46.9.72] has quit [Changing host] 11:08:29 attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has joined #sbcl 11:12:09 -!- attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has quit [Client Quit] 11:16:47 -!- ASau [~user@p5797E401.dip0.t-ipconnect.de] has quit [Excess Flood] 12:05:14 attila_lendvai [~attila_le@92.46.9.72] has joined #sbcl 12:05:14 -!- attila_lendvai [~attila_le@92.46.9.72] has quit [Changing host] 12:05:14 attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has joined #sbcl 12:07:09 -!- attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has quit [Client Quit] 12:54:00 -!- segv- [~mb@95-91-241-41-dynip.superkabel.de] has quit [Remote host closed the connection] 12:55:01 -!- psilord [~psilord@c-69-180-173-249.hsd1.mn.comcast.net] has quit [Quit: Leaving.] 12:56:11 pranavrc [~pranavrc@122.164.174.251] has joined #sbcl 12:56:11 -!- pranavrc [~pranavrc@122.164.174.251] has quit [Changing host] 12:56:11 pranavrc [~pranavrc@unaffiliated/pranavrc] has joined #sbcl 12:59:17 the binary release of sbcl 1.1.9 for x86_64 requires glibc 2.14, seemingly because of memcpy 12:59:50 in a brief experiment, __asm__(".symver memcpy,memcpy@GLIBC_2.2.5"); changed the required memcpy version 13:00:06 could this be a possibility for binary releases? 13:05:22 I should really build in a chroot 13:05:53 but I'm not sure how much time I should optimize for binary releases -- really my position has always been that the source is what's interesting 13:06:45 Krystof: sure; i usually built from source as well 13:07:08 is there a plan to enable sb-safepoint by default on Linux too ? 13:07:15 mc40 [~mc@host109-157-95-168.range109-157.btcentralplus.com] has joined #sbcl 13:07:24 psilord [~psilord@c-69-180-173-249.hsd1.mn.comcast.net] has joined #sbcl 13:11:19 besides binary releases, something like the above would make it easier to build SBCL on a newer system and have it work on older systems (if i understand correctly) 13:13:17 sure... although, where do we use memcpy? 13:13:20 presumably that line doesn't work on OS X or Windows, or alternative C libraries 13:14:24 pkhuong: src/runtime/gc-common.o, src/runtime/gencgc.o 13:15:14 Krystof: it would need #ifdef __GLIBC__ and possibly a switch in make.sh since newer memcpys may actually /be/ better in some regard 13:15:49 scymtym: mostly they break code that should use memmove ;) 13:16:42 pkhuong: :) 13:18:20 in other news, we have the worst memcpy/memmove on win32. They're nearly criminal to use in production systems. 13:19:07 what's so bad about it ? 13:19:15 no-one is using sbcl in production on windows, surely 13:20:21 fe[nl]ix: while (n--) *(((char *)dest)+n) = *(((char *)src)+n); 13:27:33 -!- rudi [~rudi@1x-193-157-247-189.uio.no] has quit [Quit: rudi] 13:35:00 davazp [~user@112.Red-88-15-121.dynamicIP.rima-tde.net] has joined #sbcl 13:37:55 wbooze [~wbooze@xdsl-87-79-197-56.netcologne.de] has joined #sbcl 13:40:11 -!- psilord [~psilord@c-69-180-173-249.hsd1.mn.comcast.net] has quit [Quit: Leaving.] 13:45:07 segv- [~mb@95-91-241-41-dynip.superkabel.de] has joined #sbcl 14:05:30 stassats` [~stassats@wikipedia/stassats] has joined #sbcl 14:20:58 -!- mc40 [~mc@host109-157-95-168.range109-157.btcentralplus.com] has quit [Quit: mc40] 14:23:12 psilord [~pkeller@23-25-144-217-static.hfc.comcastbusiness.net] has joined #sbcl 14:25:03 mc40 [~mc@host109-157-95-168.range109-157.btcentralplus.com] has joined #sbcl 14:25:12 drmeister [~drmeister@184.71.117.234] has joined #sbcl 14:35:39 -!- mc40 [~mc@host109-157-95-168.range109-157.btcentralplus.com] has quit [Quit: mc40] 14:53:19 -!- stassats` [~stassats@wikipedia/stassats] has quit [Ping timeout: 256 seconds] 14:55:18 stassats` [~stassats@wikipedia/stassats] has joined #sbcl 15:06:44 -!- stassats` [~stassats@wikipedia/stassats] has quit [Ping timeout: 268 seconds] 15:42:46 nyef [~nyef@pool-70-109-144-97.cncdnh.east.myfairpoint.net] has joined #sbcl 15:50:06 sdemarre [~serge@109.134.145.29] has joined #sbcl 15:52:26 -!- drmeister [~drmeister@184.71.117.234] has quit [Remote host closed the connection] 15:52:55 drmeister [~drmeister@184.71.117.234] has joined #sbcl 15:57:16 -!- drmeister [~drmeister@184.71.117.234] has quit [Ping timeout: 240 seconds] 15:59:06 benkard [~benkard@ppp-188-174-69-28.dynamic.mnet-online.de] has joined #sbcl 16:04:43 -!- sdemarre [~serge@109.134.145.29] has quit [Ping timeout: 264 seconds] 16:10:39 leuler [~user@p548FB184.dip0.t-ipconnect.de] has joined #sbcl 16:16:07 drmeister [~drmeister@184.71.117.234] has joined #sbcl 16:17:16 -!- benkard [~benkard@ppp-188-174-69-28.dynamic.mnet-online.de] has quit [Ping timeout: 240 seconds] 16:20:53 benkard [~benkard@ppp-188-174-69-28.dynamic.mnet-online.de] has joined #sbcl 16:25:22 -!- automaciej [~automacie@quinoa.blizinski.pl] has left #sbcl 16:28:52 -!- drmeister [~drmeister@184.71.117.234] has quit [Remote host closed the connection] 16:29:25 drmeister [~drmeister@184.71.117.234] has joined #sbcl 16:31:44 pkhuong: You successfully conjured me with your remarks from yesterday about control.lisp -- here I am. 16:33:46 -!- drmeister [~drmeister@184.71.117.234] has quit [Ping timeout: 240 seconds] 16:42:01 leuler: what do you think of delaying error blocks until the very end of the function, e.g. with an accumulator around the whole control-analyze-1-fun. 16:48:48 stassats` [~stassats@wikipedia/stassats] has joined #sbcl 16:49:12 However it may be implemented, my first question is: Do you have examples of bad block ordering that might be improved with this? I do not have even a rough idea what the typical properties (depth, width, etc.) of the DFO subtrees are, to guess what changes would be caused by such a change. 16:52:57 -!- davazp [~user@112.Red-88-15-121.dynamicIP.rima-tde.net] has quit [Ping timeout: 264 seconds] 16:53:19 For many functions it seems to me from reading their disassembly that the error blocks are already nicely grouped at the end. 16:56:33 mostly because of vops putting them in *elsewhere* 16:58:53 -!- benkard [~benkard@ppp-188-174-69-28.dynamic.mnet-online.de] has quit [Quit: Textual IRC Client: www.textualapp.com] 16:58:55 It seems to me that perhaps VOPs are operating at the wrong level of abstraction if they need an "elsewhere" segment to work with. 17:00:41 stassats: Thanks for the hint. I wasn't aware of that. I looked it up now. 17:01:56 nyef: for errors, maybe, but sometimes you may want to put rare-occurring events elsewhere 17:04:15 I think that my contention is that "rare-occurring events" should be manifest in the CFG directly, not inserted during VOP emission. 17:06:18 leuler: it feels wrong that stassats` would need to add more type checking VOPs only to get the error trap into elsewhere. 17:06:18 though, in large functions, the greater distance between the error and the location it's jumped from means larger instructions, since jump offsets are either 8-bit or 32-bit 17:06:41 not that it's a big issue, just a note 17:07:26 talking about x86-64, of course 17:09:02 Krystof: looking at the new modarith bugs. 17:09:07 I think I see what apd meant. 17:10:11 The issue is what to do when we only need 63 bits of results, but end up generating code for 64 bit modarith 17:10:21 pkhuong: and i'm a bit stuck with mod-check, i don't see a way to solve with the current infrastructure 17:11:00 stassats`: I'm leaning toward improving control analysis and just inserting a mod-test VOP 17:11:03 translating some function wouldn't work because the vop selection would just select the lowest cost operation 17:12:24 just inserting a mod-test VOP? but how that would solve handling tagged and untagged differently? 17:12:33 everything by hand inside a vop? that's not appealing 17:13:37 stassats`: no. generate a type test instead of a type check 17:13:57 what would that change? 17:13:57 get control.lisp to place the error trap somewhere decent 17:14:09 the problem is not with error traps 17:14:14 for now 17:15:12 and since you only need to replace code that does (and (<= 0 x) (< x limit)), you can assume that the value is an integer and dispatch on the SC if you must 17:16:49 that means doing boxing and unboxing by hand, because if i advertise that the args and results are (any-reg unsigned-reg), it won't mean that if arg is any-reg than result is any-reg too 17:17:13 stassats`: there is no result: you only have to generate a type *test* 17:19:41 robgssp [~user@cpe-24-93-28-218.rochester.res.rr.com] has joined #sbcl 17:20:50 maybe that'll work 17:21:13 but how i am going to motivate myself into solving vop selection? 17:27:32 pkhuong: I'm late with this reply, but since you addressed me personally: I see your point. If we can make the control analysis effect the same order surely -- error blocks at the end -- as *elsewhere* now, why not try it? 17:42:29 pkhuong: You wrote yesterday: "to avoid stupid code like [loop head] ... [jump over return] [return] [loop back]". If I am to comment on this, again I'd like to see an example. I have skimmed more than a few pages of disassembly and not found anything matching what I guess you meant there. 17:45:21 -!- Bike [~Glossina@71-214-88-68.ptld.qwest.net] has quit [Ping timeout: 256 seconds] 17:45:59 not loop, but (lambda (x) (if (evenp x) (1+ x) x)) jumps over return and back 17:46:52 Bike [~Glossina@71-214-80-15.ptld.qwest.net] has joined #sbcl 17:47:24 drmeister [~drmeister@184.71.117.234] has joined #sbcl 17:50:23 That's actually not a stupid order. If I am not mistaken, ordering the return block later would not improve upon the number of jumps needed. 17:51:29 maybe not the number, but the distance becomes greater 17:53:18 -!- Bike [~Glossina@71-214-80-15.ptld.qwest.net] has quit [Ping timeout: 246 seconds] 17:54:24 That's true. 17:55:10 Bike [~Glossina@71-214-90-184.ptld.qwest.net] has joined #sbcl 17:58:35 leuler: (dolist (x x) (unless x (return 42))). the (return 42) block is inserted in the middle of the loop 17:59:10 our loop ordering is really good at single-exit loops, but we easily get strange code for multiple-exist ones 18:04:01 -!- nyef [~nyef@pool-70-109-144-97.cncdnh.east.myfairpoint.net] has quit [Quit: G'night all.] 18:04:38 pkhuong: Thanks for the example. 18:05:47 This is partly the same as stassats's. Simply moving the RET block to the end would not reduce the number of jumps but their distance. But: 18:05:55 -!- pranavrc [~pranavrc@unaffiliated/pranavrc] has quit [Quit: Ping timeout: ] 18:06:47 -!- drmeister [~drmeister@184.71.117.234] has quit [Remote host closed the connection] 18:07:16 drmeister [~drmeister@184.71.117.234] has joined #sbcl 18:09:33 If the ordering can be made smart, the conditional jump after the comparison if x is NIL would fall through into the x-is-not-NIL case and branch into a sequence of two blocks at the end of the function: setting the return value to NIL and returning. 18:09:49 I don't know if that's possible to achieve. 18:11:27 leuler: I was thinking that blocks that leave a loop can be emitted in the (ancestor) loop they leave to. 18:11:28 -!- drmeister [~drmeister@184.71.117.234] has quit [Ping timeout: 240 seconds] 18:11:55 drmeister [~drmeister@184.71.117.234] has joined #sbcl 18:12:07 -!- Blkt [~user@82.84.149.56] has quit [Quit: brb] 18:14:37 I don't understand. What is a "block that leaves a loop"? 18:16:52 The first block after a taken conditional branch out of the loop? 18:19:25 leuler: right. 18:20:11 in my case(s), the sequence is: conditional branch -> block -> branch out. 18:20:31 OK, in the example: Both blocks setting the return values (to NIL and 42, respectively) are ordered behind the loop. Ordered even after these two is the block to return from the function. Sounds nice. 18:20:58 (loop for lv2 below 1 count t) ; oh, pfdietz, how we've missed you 18:22:25 pkhuong: and yet your rewrite looked so plausible 18:23:46 I have a fix :) 18:23:58 it's sane, and I think it's not an old issue. 18:25:12 Now, how does one find out in control.lisp whether a branch leaves a loop? 18:28:07 Krystof: see https://bugs.launchpad.net/sbcl/+bug/1199428 18:38:03 -!- maxm [~user@unaffiliated/maxm] has quit [Ping timeout: 256 seconds] 18:43:15 Hm 18:44:22 the fix isn't quite right, but I think it's attacking the right issue 18:44:22 I /thought/ that if we deduced that we could replace things with modular equivalents that proved that using the modular equivalents (throughout, consistently) would automatically give the right answer 18:45:20 nooo. we do stuff like (logand (* x y) ...) => (logand (modular-* x y) ...) 18:45:50 so, one fix would be to only trigger transforms when either of the arguments to logand is tiny enough 18:46:33 rather than when their intersection is somehow small enough. 18:47:31 I don't think anyone expects modarith to kick in when both arguments take a lot of bits, but their conjunction is known to fit in a few bits. 18:49:22 wait, but I thought this was exactly the thing 18:50:06 we do the (modular-* x y) because in the bits that matter that is the same as (* x y) 18:50:27 yes, but we might not have any code that guarantees that only the bits that matter are non-zero 18:50:54 oh, wait, do we never cut things off at the end? really? 18:51:12 really. 18:51:14 but in a (logand ... ...) case 18:51:20 hm, hm 18:51:44 are we in the realm here where both arguments to the logand are negative? Hm, yes 18:51:55 the interesting form is something like (* [negative] -6) 18:52:52 which gets transformed into (mod-* [negative] [logand m-p-w -6]), and that transform is only an identity in (mod 2^64). 18:53:17 and then we fail to mask off the noise from the other argument. 18:53:19 impressively, having high-speed low-debug gives a second wrong answer to the g1 bug 18:53:26 and is much easier to debug. 18:54:09 at some point we lie and use an unchecked unsigned->signed word move; I think that's where the discrepancy comes from 18:54:42 ok, I am willing to buy that no-one expected that signed modarith would be used to implement unsigned modarith in the case where two intermediate results would both be negative 18:55:39 no, it's unsigned moradith 18:55:43 *modarith. 18:55:56 but, wait, why is (* [negative] -6) not transformed into (mod-* [logand mpw negative] [logand mpw -6])? 18:56:04 yes 18:56:15 and the result is 64 bit,r ather than 63 or however many we need 18:56:16 why 18:56:26 (yes, it is transformed) 18:56:31 aha 18:57:18 I could have sworn that there used to be a final mask at some point in the past 18:57:37 maybe some too-clever maintainer managed to remove it at some point :-/ 18:59:11 all right. I'll commit a version that always inserts a mask when we perform a non-:good replacement. 18:59:30 and then, we'll see about detecting when the non-:good replacement is protected by a mask 19:00:03 so :good for this purpose means "does not ever cause widening"? 19:00:17 I was never totally clear on what it truly meant 19:00:28 "is *really* the exact same thing" 19:04:10 is really the exact same thing under the conditions that we have already derived the result to be an unsigned-word, or is really the exact same thing no matter what? 19:07:08 no matter what, I think. 19:07:20 -!- pjb [~t@AMontsouris-651-1-8-101.w90-46.abo.wanadoo.fr] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 19:07:39 pjb [~t@AMontsouris-651-1-8-101.w90-46.abo.wanadoo.fr] has joined #sbcl 19:08:29 given arguments that are of the requisite (modular) type? 19:08:53 that is, we have logior in there for unsigned, which is only :good if both of its arguments are unsigned-word, right? 19:10:01 ASau [~user@p4FF97755.dip0.t-ipconnect.de] has joined #sbcl 19:10:21 right. 19:10:26 so only logand is safe. 19:11:02 or m-s-f for signed? 19:11:37 rpg [~rpg@23-25-144-217-static.hfc.comcastbusiness.net] has joined #sbcl 19:13:48 hm. I think the intent might have been that you could assume that the two args were of the right type 19:14:09 so logior would then be :good but e.g. not logorc2 19:14:23 at least that was my understanding at some point in time 19:17:40 -!- abarch [~user@2001:638:504:2093:21d:9ff:fe30:1f87] has quit [Ping timeout: 245 seconds] 19:24:45 -!- yacks [~py@180.151.36.168] has quit [Ping timeout: 256 seconds] 19:25:14 yacks [~py@180.151.36.168] has joined #sbcl 19:30:16 -!- drmeister [~drmeister@184.71.117.234] has quit [Remote host closed the connection] 19:30:44 drmeister [~drmeister@184.71.117.234] has joined #sbcl 19:35:19 -!- drmeister [~drmeister@184.71.117.234] has quit [Ping timeout: 264 seconds] 19:39:02 drmeister [~drmeister@184.71.117.234] has joined #sbcl 19:53:25 rpg_ [~rpg@23-25-144-220-static.hfc.comcastbusiness.net] has joined #sbcl 19:53:48 -!- rpg_ [~rpg@23-25-144-220-static.hfc.comcastbusiness.net] has quit [Remote host closed the connection] 19:53:55 rpg_ [~rpg@23-25-144-217-static.hfc.comcastbusiness.net] has joined #sbcl 19:54:06 -!- rpg [~rpg@23-25-144-217-static.hfc.comcastbusiness.net] has quit [Read error: Connection reset by peer] 20:00:12 right, that makes sense (for :good) 20:00:24 ehaliewicz [~user@50-0-51-11.dsl.static.sonic.net] has joined #sbcl 20:01:37 -!- joshe [~joshe@2001:470:e862::1:1] has quit [*.net *.split] 20:06:42 joshe [~joshe@2001:470:e862::1:1] has joined #sbcl 20:11:45 pkhuong: re mod-check, i wouldn't be able to combine fixnum and comparison together 20:13:09 rpg [~rpg@23-25-144-220-static.hfc.comcastbusiness.net] has joined #sbcl 20:13:12 with powers of 2, i can, since it's done in one go, but not with other cases, which do TEST + CMP 20:13:21 -!- rpg [~rpg@23-25-144-220-static.hfc.comcastbusiness.net] has quit [Remote host closed the connection] 20:13:29 rpg [~rpg@23-25-144-217-static.hfc.comcastbusiness.net] has joined #sbcl 20:13:54 -!- rpg_ [~rpg@23-25-144-217-static.hfc.comcastbusiness.net] has quit [Read error: Connection reset by peer] 20:14:22 i can just opt out to do CMP, and leave the (and (typep ,n-object ',base) ...) part, but then the power-of-2 can't be optimized 20:16:05 why not? 20:16:21 accept untagged num SCs and any-reg/descriptor-reg 20:16:38 perform both the integerp and range check in the same VOP. 20:16:53 bignums can't be typep (mod [fixnum]). 20:17:01 how can i make a conditional VOP with two conditions? 20:17:37 right now i just jump to the error routine in both conditions 20:18:26 you can have an old-school conditional VOP with target/not-p info arguments 20:19:09 fisxoj [~fisxoj@c-24-12-190-29.hsd1.il.comcast.net] has joined #sbcl 20:19:49 i'm not sure how to integrate that into type transforms 20:20:02 like any other VOP 20:20:39 other vops don't pass targets 20:21:09 that's just how conditional VOPs work 20:21:38 (:conditional) (:info target not-p) 20:22:47 -!- fisxoj [~fisxoj@c-24-12-190-29.hsd1.il.comcast.net] has quit [Client Quit] 20:23:48 -!- joshe [~joshe@2001:470:e862::1:1] has quit [*.net *.split] 20:24:36 joshe [~joshe@2001:470:e862::1:1] has joined #sbcl 20:26:32 -!- drmeister [~drmeister@184.71.117.234] has quit [Remote host closed the connection] 20:26:57 -!- segv- [~mb@95-91-241-41-dynip.superkabel.de] has quit [Ping timeout: 246 seconds] 20:27:19 drmeister [~drmeister@184.71.117.234] has joined #sbcl 20:27:29 -!- drmeister [~drmeister@184.71.117.234] has quit [Read error: Connection reset by peer] 20:27:54 drmeister [~drmeister@184.71.117.234] has joined #sbcl 20:28:58 -!- drmeister [~drmeister@184.71.117.234] has quit [Remote host closed the connection] 20:29:24 Krystof: something like https://github.com/pkhuong/sbcl/tree/modarith-final-mask-2013-07-09 20:29:29 segv- [~mb@95-91-241-41-dynip.superkabel.de] has joined #sbcl 20:29:31 and how do i emit it during source transforms? 20:30:13 type-checks happen during ir2 transforms 20:30:27 emit what? 20:30:33 the vop 20:30:44 oh, you mean to signal either not fixnum or not mod. 20:30:53 you can also just always signal not mod. 20:31:21 or you mean just add a known function and translate it with a vop? 20:31:53 yes 20:33:23 can it be both :conditional and :translate? 20:33:43 well, i'm about to see 20:34:05 of course. that's how all conditional vops work. 20:38:41 -!- joshe [~joshe@2001:470:e862::1:1] has quit [*.net *.split] 20:41:02 why have you got logior in the conditional in linear-time cut-to-width"? 20:41:46 joshe [~joshe@2001:470:e862::1:1] has joined #sbcl 20:42:07 we've got a transform for logior now. 20:42:24 mm.. no, you're right. 20:45:21 but also, is (logior x -2^y) secretly the same as (mask-signed-field y x)? 20:45:53 ah, no 20:45:59 *phew* 20:46:12 unfortunately, no. Only if we know that the sign bit it set to 1 20:46:32 so, the linear time thingy doesn't work.. I'd have to add a test for signedp compatibility, and I don't think we want to go there. 20:47:16 in fact, I don't know why the current LOGAND test is there in the first place. 20:50:07 no, wait. So, if we're doing a logand, m-s-f with a result strictly smaller doesn't need to be walked 20:50:34 s/strictly// 20:50:55 if we're doing an m-s-f, a smaller logand doesn't need to be walked either. 20:51:38 wait, only if the result type is the right sign too. 20:51:41 and now it doesn't want to get translated. how do i manage to pass the limit to it? (:arg-types * (:constant fixnum)) and (:info hi target not-p) doesn't seem to work 20:51:42 -!- ASau [~user@p4FF97755.dip0.t-ipconnect.de] has quit [Ping timeout: 264 seconds] 20:52:41 stassats`: you could try to look at the arguments. 20:53:00 or at fast-conditional-c/fixnum in, say, compiler/ppc/arith.lisp. 20:53:34 so, it's after 20:54:25 if only we had an interactive development environment. 20:55:04 indeed, what with the current one just saying " full call to MOD-TYPE-TEST" 20:55:18 that's not the issue then. 20:55:31 :policy, maybe? 20:56:10 ASau [~user@p4FF97755.dip0.t-ipconnect.de] has joined #sbcl 20:56:43 are you tracing is-ok-template-use? 20:56:54 if not, that's where I'd start 20:57:25 :policy is where I'd start ;) 20:57:25 i was trying (typep 2 '(mod 10)), which didn't obviously work for any-reg descriptor-reg, (typep x '(mod 10)) does 20:58:01 stassats`: if (typep 2 '(mod 10)) doesn't get constant folded, we have issues. 20:58:16 that's not of concern right now 20:58:20 but you likely want to add constant-sc. 20:58:30 stassats`: i'll leave you to it then. 20:58:49 i just want to get at least something to work 20:59:41 if it's any consolation, on my four-hour train journey where I hoped to attack the array-type thing, I mostly succeeded in confusing myself. Towards the end, I noted some equivalencies that I wanted to have after any change, to at least have something to aim for 20:59:54 when I said "I noted" what I mean is "I typed them into *scratch*" 21:00:01 guess whose laptop failed to resume today? 21:00:07 -!- wbooze [~wbooze@xdsl-87-79-197-56.netcologne.de] has quit [Read error: Operation timed out] 21:01:35 arlight, (typep x '(mod 10)) now works properly 21:02:36 even if type-checks were without issues, getting typep to optimize is important too 21:03:28 optimizing (if (<= 0 x 10) ) would be even more interesting 21:04:25 or even more complex, (and (>= x 0) (< x 10)) 21:05:08 what you have is already pretty good 21:06:18 (typep x '(mod 32)) saves 29 bytes 21:07:07 and (mod 25) saves 27 bytes 21:07:58 such a large reduction because of redundant moves 21:12:15 we' must sprinkle our codebases with mod type tests! 21:13:33 -!- rpg [~rpg@23-25-144-217-static.hfc.comcastbusiness.net] has quit [Quit: rpg] 21:16:31 wbooze [~wbooze@xdsl-87-79-197-56.netcologne.de] has joined #sbcl 21:18:31 and now (lambda (x) (declare (fixnum x)) (typep x '(mod 25))) doesn't test for fixnumness twice 21:19:45 and (typep (aref (the (simple-array (unsigned-byte 64)) x) 0) '(mod 25)) doesn't perform tagging/untagging 21:20:06 -!- leuler [~user@p548FB184.dip0.t-ipconnect.de] has quit [Quit: ERC Version 5.1.2 $Revision: 1.796.2.6 $ (IRC client for Emacs)] 21:29:46 not-p appears to be always T no matter what i try, when is it NIL? 21:32:19 -!- wbooze [~wbooze@xdsl-87-79-197-56.netcologne.de] has quit [Ping timeout: 264 seconds] 21:32:41 when the fall through is mroe convenient the other way. 21:33:11 i understand, i just want a code to test it 21:33:30 wbooze [~wbooze@xdsl-78-35-153-46.netcologne.de] has joined #sbcl 21:34:31 negate the test. make sure at least one of the branches is substantial. 21:35:15 -!- flip214 [~marek@unaffiliated/flip214] has quit [Read error: Operation timed out] 21:35:54 -!- Bike [~Glossina@71-214-90-184.ptld.qwest.net] has quit [Ping timeout: 240 seconds] 21:37:59 Bike [~Glossina@75-175-69-243.ptld.qwest.net] has joined #sbcl 21:39:07 flip214 [~marek@86.59.100.100] has joined #sbcl 21:39:07 -!- flip214 [~marek@86.59.100.100] has quit [Changing host] 21:39:07 flip214 [~marek@unaffiliated/flip214] has joined #sbcl 21:43:21 -!- Bike [~Glossina@75-175-69-243.ptld.qwest.net] has quit [Ping timeout: 256 seconds] 21:44:14 Bike [~Glossina@75-175-75-20.ptld.qwest.net] has joined #sbcl 21:48:09 -!- psilord [~pkeller@23-25-144-217-static.hfc.comcastbusiness.net] has quit [Quit: Leaving.] 21:52:06 now i'm not sure how to handle it with two jumps 21:52:26 i can't jump to the target when not-p is NIL just upon testing for fixnums 21:54:39 i guess i need to jump over the comparison 21:58:26 that does the job 22:02:46 -!- Bike [~Glossina@75-175-75-20.ptld.qwest.net] has quit [Ping timeout: 240 seconds] 22:03:15 http://paste.lisp.org/display/138000 would welcome some reviewing 22:03:20 this seems to handle all the cases 22:03:44 Bike [~Glossina@75-175-75-20.ptld.qwest.net] has joined #sbcl 22:34:28 -!- angavrilov [~angavrilo@217.71.227.190] has quit [Remote host closed the connection] 22:44:58 -!- prxq [~mommer@mnhm-4d011f29.pool.mediaWays.net] has quit [Quit: Leaving] 22:56:09 -!- segv- [~mb@95-91-241-41-dynip.superkabel.de] has quit [Remote host closed the connection] 23:49:09 -!- ASau [~user@p4FF97755.dip0.t-ipconnect.de] has quit [Ping timeout: 256 seconds] 23:54:06 -!- Bike [~Glossina@75-175-75-20.ptld.qwest.net] has quit [Ping timeout: 264 seconds] 23:55:01 ASau [~user@p4FF97755.dip0.t-ipconnect.de] has joined #sbcl 23:55:50 Bike [~Glossina@67-5-227-204.ptld.qwest.net] has joined #sbcl