00:18
stmuk_ joined
02:36
hoelzro joined
02:37
Ven joined
02:48
ilbot3 joined
02:49
leego joined,
stmuk_ joined
03:10
leego joined
07:02
domidumont joined
07:12
brrt joined
|
|||
brrt | good * #moarvm | 07:16 | |
timotimo | good good | 07:17 | |
brrt | ohai timotimo | 07:20 | |
i've better news than before | |||
hmmm | |||
no scrap that | |||
okay it's still better news | |||
so i figured out that i know exactly when a tiles values are fully defined, and that 's prior to the allocation of a new register for a live range that starts afterwards | 07:23 | ||
(i'm thinking of a solution for the two-operand-form-problem that doesn't involve me reserving a register) | |||
i'm probably not going to implement that just yet because resserving a registe ris sooo much easier | 07:25 | ||
*register | |||
timotimo | yeah, i'd go with the easier route, too | ||
it's potentially easy to change it later on | 07:26 | ||
brrt nods | |||
timotimo | whatever gets us towards everybody being able to contribute earlier ;) | ||
brrt | but i feel it's also useful to explore the design space a bit as well | ||
:-) | |||
timotimo | that's also true | ||
brrt | commutative, is the word i'm looking for | 07:28 | |
binary operations like ADD, OR, AND, MUL, they are commutative | |||
others like SUB,XOR,LEFTSHIFT,RIGHTSHIFT, they're not | 07:29 | ||
timotimo | right | ||
do we gain a lot from switching the arguments around? | |||
brrt | well, if we don't have to switch the arguments arround, then r0 = r0 <op> r1 the same thing if r0 == r1 and if r0 == r2 | 07:30 | |
(the same thing as r0 = r1 <op> r2) | |||
timotimo | fair enough | 07:31 | |
brrt | so in that case, it's never necessary to allocate an extra register | 07:32 | |
or to issue a copy | |||
non-commutative operators, they do have to be copied, because r1 = r1 <op> r2 overwrites r1 (which is invalid), while r2 = r2 <op> r1 is something else | 07:33 | ||
(this of course is only relevant if r0 == r2) | |||
timotimo | fair enough, yeah | ||
brrt | i haveā¦ another solution, yes | 07:40 | |
basically; for all live ranges that have a single definition, their only definition is fully defined (registers are completely filled in) at the point of register allocation, because all its dependencies live in earlier live ranges | 07:41 | ||
so for those cases, i can check a): if it's a direct binary non-commutative operater were' implementing | 07:42 | ||
b): ensure that r0 != r2 if that is so | |||
if they have multiple definitions, and some of those are direct non-commutative binary operators, then i can 'split' them off into single-deifnition live-ranges with a *copy* to our current live range | 07:44 | ||
yes, preciousā¦. *gollum* | |||
timotimo | %) | 07:45 | |
07:45
Ven joined
|
|||
brrt | obviously there's a new matter of complexity there | 07:45 | |
if i do that, then my current assumption that (two synthetic live ranges are enough for everyone) is no longer enough for everyone | |||
doesā¦ any of this make any sense | 07:48 | ||
timotimo | well, yeah | 07:50 | |
now you need to care about one more register all the time | |||
brrt | well, we have registers, that's not really itā¦ | 07:52 | |
hmmm | |||
timotimo | i might have misunderstood or miscommunicated? | ||
brrt | well, it is i who has miscommunicated, if anyone | 07:53 | |
please allow me to check | |||
what do you think is my issue? | |||
(if you're wrong, it's my mistake, btw :-)) | |||
timotimo | well, since we might have to have that extra register to swap around before a two-operand register, that register has to be accounted for, so another live range appears | 07:54 | |
is that not it? | |||
brrt | well, mostly; that's actually the solution i had in mind | 07:56 | |
timotimo | i'm not sure i'm understanding everything, or if i'm just subconsciously bullshitting my way through our conversations :D | ||
brrt | as long as i believe it :-D | 07:57 | |
07:59
Ven joined
|
|||
timotimo | sleep has ended too soon, and instead of feeling energized and lively from getting up early, i feel drained :\ | 08:03 | |
maybe i'll try to sleep a little bit more, and then maybe i'll tackle what samcv left for me to do | 08:05 | ||
brrt | sleep well | 08:06 | |
08:07
domidumont joined
|
|||
brrt | aargh, i've broken the register allocator canary :'-( | 08:07 | |
timotimo | good thing it's there | 08:08 | |
brrt | yeah i suppose | ||
bbl | |||
08:26
zakharyas joined
08:30
Ven joined
08:45
Ven joined
09:15
Ven joined
09:30
Ven joined
09:41
domidumont1 joined
09:45
Ven joined
10:00
Ven joined
10:31
Ven joined
11:01
Ven joined
11:20
Ven joined
11:30
Ven joined
11:34
Geth joined
12:00
Ven joined
12:18
Ven joined
12:25
brrt joined
12:34
Ven joined
12:52
Ven joined
13:11
Ven joined
13:14
geekosaur joined
13:31
Ven joined
13:44
brrt joined
13:46
brrt1 joined
13:51
Ven joined
14:12
Ven joined
|
|||
timotimo | so ... making shifts work properly is fun | 14:16 | |
there's a function that takes one 16bit piece and spits out three characters into the array you point it at | |||
we now need an extra flag that gets communicated to signify "the last of the three was a 'initiate the shift' command" so that the first one in the next bit can properly be interpreted | 14:17 | ||
it very much looks like i want to build a little struct like our SerializationReader and Writer structs | 14:19 | ||
i think i want to have something like a queue that gets fed the un-tripled 16bit numbers | 14:20 | ||
and a following "pipeline stage" would nom single bits out and if there's nothing left it'll ask for a refill | 14:21 | ||
14:26
brrt joined
14:31
Ven joined
|
|||
timotimo AFKBBL | 14:35 | ||
14:46
lizmat joined
14:51
Ven joined
14:55
brrt joined
14:59
lizmat joined
|
|||
Geth | arVM/even-moar-jit: e261922d44 | (Bart Wiegmans)++ | 3 files Define properties on expression ops Flag negation is an expression op property, as is binary-noncommutativeness. |
15:03 | |
15:09
Ven joined
15:30
Ven joined
16:01
Ven joined
16:21
Ven joined
16:31
Ven joined
16:36
bruno joined
16:50
Ven joined
|
|||
timotimo | running this errand left me a lot more exhausted than i thought | 17:02 | |
17:10
Ven joined
17:29
lizmat joined
17:30
Ven joined
|
|||
brokenchicken | should've walked that errand! :) | 17:40 | |
17:50
Ven joined
|
|||
timotimo | clearly | 17:58 | |
18:10
Ven joined
18:30
FROGGS joined,
Ven joined
|
|||
timotimo | well, my first attempt at running the code i wrote results in tortured screams | 18:42 | |
U+0 'A' | |||
U+1 'A' | |||
U+2 'A' | |||
U+3 'A' | |||
U+4 'A' | |||
U+5 'A' | |||
[...] | |||
U+85D02 'A' | |||
U+85D03 'A' | 18:43 | ||
U+85D04 'A' | |||
U+85D05 'A' | |||
haha, now it's SPA SPA SPA SPA SPA SPA | |||
someone desparately needs some vacation, i see | |||
diakopter | :p | 18:44 | |
brokenchicken | :) | 18:45 | |
18:49
Ven joined
|
|||
timotimo | U+44 'HYPIGNWRITING' | 18:50 | |
U+45 'HENIGNWRITING' | |||
U+46 '-MIIGNWRITING' | |||
U+47 'NUSIGNWRITING' | |||
U+0 'SPACE' | 18:52 | ||
U+1 'EXCLAMATION MARK' | |||
U+2 '' | |||
U+3 'QUOTATION MARK' | 18:53 | ||
U+4 'NUMBER SIGNWRITING' | |||
that looks good! | |||
ah, i know where the empty strings come from at least | 18:54 | ||
looks like encoding has an off-by-one for the shift-table | 18:56 | ||
such that istead of SIGN it gives SIGNWRITING for the first few codepoints | |||
19:00
dogbert17 joined
19:09
Ven joined
19:18
Ven joined
|
|||
timotimo | got it to work it seems like | 19:22 | |
still at least one bug | 19:24 | ||
U+74C6 'MARTIAL ARTS UNJ' | |||
U+74C7 '' | |||
U+74C8 'CROISSANT' | |||
is supposed to be MARTIAL ARTS UNIFORM, then CROISSANT | |||
but i need really early rest today | |||
github.com/samcv/UCD/pull/1 - samcv, you'll get this per mail, too, but i figure i'll guide any sort of discussion into the channel here as well | 19:28 | ||
ah i know why UNIFORM gets mangled | 19:33 | ||
there's a 40th entry in the shift one table, which is UNIFORM, but it can't be coded properly, because we can only do up to 39 (because we also have 0) | 19:34 | ||
sorry, not UNIFORM. it's FORM of course | |||
19:39
Ven joined
|
|||
timotimo | today: | 19:40 | |
pasting the shift one list into pidgin makes it freeze and consume 100% cpu on one core | |||
20:04
Ven joined
20:23
Ven joined
20:25
brrt joined
20:43
Ven joined
20:51
zakharyas joined
21:03
Ven joined
21:10
lizmat joined
21:17
ggoebel joined
21:23
Ven joined
21:42
Ven joined,
lizmat_ joined
22:02
Ven joined
22:13
lizmat joined
22:22
Ven joined
23:02
Ven joined
23:22
Ven joined
23:42
Ven joined
|