Sunday, 2023-01-22

*** ghostmansd <ghostmansd!> has quit IRC00:40
ghostmansd[m]Nevermind, I think I sprted it out. At least the instruction which broke now works.00:43
ghostmansd[m]The trick is, whenever register is marked is destination, to output the extra index for the destination. And we actually don't bother if we write twice to the same bits where remapped value resides.00:45
ghostmansd[m]Because, well, the value is the same, and fields are the same, so we should only take care of extras.00:47
lkclit is added twice because the concept there is to allow different RA-as-dest01:12
lkclbut - again - the implementation has not been completed (just like with cr_ops) because there is so much to do01:13
lkcland, also, the thought occurred to me (a few months back) that, actually, after having this in the spec for 18+ months, actually it reduces the range of the ld/st-with-update instructions to extra201:15
lkcl> lol, we check it test_pysvp64dis :-)01:15
lkclthen it should be removed!01:15
*** ghostmansd[m] <ghostmansd[m]!> has quit IRC01:29
*** ghostmansd[m] <ghostmansd[m]!> has joined #libre-soc01:56
*** ghostmansd[m] <ghostmansd[m]!> has quit IRC04:23
*** ghostmansd[m] <ghostmansd[m]!> has joined #libre-soc04:50
*** ghostmansd[m] <ghostmansd[m]!> has quit IRC05:29
*** ghostmansd[m] <ghostmansd[m]!> has joined #libre-soc06:00
*** ghostmansd[m] <ghostmansd[m]!> has quit IRC06:19
*** ghostmansd[m] <ghostmansd[m]!> has joined #libre-soc06:43
*** ghostmansd[m] <ghostmansd[m]!> has quit IRC07:14
*** ghostmansd[m] <ghostmansd[m]!> has joined #libre-soc07:37
*** ghostmansd[m] <ghostmansd[m]!> has quit IRC07:54
*** ghostmansd[m] <ghostmansd[m]!> has joined #libre-soc08:18
*** ghostmansd[m] <ghostmansd[m]!> has quit IRC09:39
*** ghostmansd[m] <ghostmansd[m]!> has joined #libre-soc10:17
*** ghostmansd[m] <ghostmansd[m]!> has quit IRC11:10
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@> has joined #libre-soc11:11
programmerjakeafter consulting luke and david, we decided that unfortunately I ended up waiting too long to buy plane tickets to fosdem, so I won't be attending. sorry for the trouble.15:30
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@> has quit IRC16:42
*** ghostmansd[m] <ghostmansd[m]!> has joined #libre-soc16:42
*** ghostmansd <ghostmansd!> has joined #libre-soc17:00
*** ghostmansd <ghostmansd!> has quit IRC17:47
*** ghostmansd <ghostmansd!> has joined #libre-soc17:47
ghostmansdprogrammerjake, lkcl, I've added explicit macros to UTF-8 validation generated assembly:;a=blobdiff;f=src/openpower/test/algorithms/;h=f357378a0a88f65d229be15cf065896045025b92;hp=933a9fd87665104707f4efb2d8a8a358ac041f77;hb=42bc60a213a965ff3ab1529ec48901471c1133bb;hpb=817199925a0273b98ffe9af77442044aedcd146317:49
ghostmansdThe rationale is: we now output the real assembly and try to validate the operands, but this assumes these are expanded already.17:50
ghostmansdAlternative is: do not attempt to assemble word instructions unless these are "unofficial". This to me looks like a worse alternative, since we won't be able to check the machine-readable specs on vanilla PPC and potentially re-use it for binutils.17:51
ghostmansdAnother alternative is: before attempting to call translate() or translate_one() in pysvp64asm, iterate over the code and grab all macros, then store and reuse them later upon translation.17:52
ghostmansdPlease let me know your opinion.17:52
ghostmansdFor, this information was ready-to-use, so I simply gathered it as macros. We don't need the labels, though.17:53
ghostmansd[m] 1) outputs a real assembly unless an explicit style=power_insn.Style.LEGACY is given, then it does our "remap"; 2) makes no attempts to "expand" anything (it does not deal with macros).17:56
ghostmansd[m]So I simply passed the labels as macros, too, into pysvp64asm, and pysvp64asm takes care of macro expansion at the point where we "translate".17:57
ghostmansd[m]For now it reaches the goal of test working, but I would be glad to hear your suggestions and ideas.17:58
ghostmansd[m]On one hand, macros are handy; on another, it's a difficult subsystem on its own, and likely deserves a separate subsystem in openpower-isa, if we ever choose to support it properly.17:59
ghostmansd[m]A side note: UTF-8 tests are really cool, I'm impressed.18:00
*** ghostmansd <ghostmansd!> has quit IRC18:21
lkclghostmansd[m], that's a good idea. although the Program() system was never designed to run anything other than raw instructions18:43
ghostmansd[m]Sorry, what's a good idea? A subsystem on macros?18:44
lkclpassing in the macros as arguments18:44
lkclalthough... hmmm... it would be better i feel to have an explicit function which pre-processes all macros18:45
lkclthat has to be explicitly used if it is needed18:45
programmerjakeall the code in the utf8 assemble() fn works around the assembler and simulator not supporting labels, imho the best option in the long term is to make them support lables18:46
programmerjakea bunch of other code will also want labels too18:47
*** ghostmansd[m] <ghostmansd[m]!> has quit IRC19:04
lkcla separate suite/wrapper which does not involve adding more complexity to ISACaller would be good19:23
lkclbut although the utf8 code is good i was not expecting you to have put it in as a unit test, but to have used the command-line version19:24
lkcl(which does support macros properly)19:24
lkclthe good thing though is that the code that you wrote for calculating label-positions can in fact be moved to a correct (suitable - non-ISACaller) location for general-purpose use19:24
lkclduplicating binutils in its entirety however was never the intention19:25
programmerjakebasically what's needed from isacaller is to filter out labels (and other directives) after assembling but before simulating, since isacaller assumes one input array element is always 32-bits19:31
programmerjakewith the exception of .long19:32
*** ghostmansd <ghostmansd!> has joined #libre-soc19:37
ghostmansdprogrammerjake, when you're awake, could you, please, help me to understand the results here?
ghostmansdThe only change I did to CI (except for INSNDB variable equal to true) is that I increased --maxfail to 500 to see more logs immediately.19:39
programmerjakei set --maxfail low so gitlab wouldn't truncate the logs after the first 4MB19:51
programmerjakefirst error: in case_dsld0_ attempting to run `.long 0x106429b5` which doesn't work afaict cuz isacaller expects the assembly string passed in to start with `dsld.`, not `.long`20:10
programmerjakewhere the log says:20:10
programmerjake0x0000: 106429B5 .long 0x106429b520:10
programmerjakeillegal .long NONE.20:10
programmerjakename .long != NONE. - calling ILLEGAL trap, PC: 70020:10
programmerjakesecond error, do_case_ternlogi, `ternlogi.` is misassembled, you missed setting the RC bit20:15
programmerjakeafaict `ternlogi. 3, 4, 5, 0x80` should assemble to 0x14642c01 not 0x14642c0020:19
programmerjakeah, i think i found the bug, TLI form specifies the wrong XO field, it should stop at bit 30, not 3120:22
*** ghostmansd[m] <ghostmansd[m]!> has joined #libre-soc20:37
ghostmansdAh OK, got it.20:38
ghostmansdAs for logs... doesn't gitlab CI has some way to perform logs rotation?20:39
programmerjakenot for build jobs' logs afaict, it effectively has a separate file for each job, so traditional log rotation is not really applicable20:50
programmerjakethe 4MB limit is to prevent using GBs of space if you have something like `while true: print('broken')` in your codd20:51
programmerjakethey expect any reasonable job to not produce huge amounts of output text, unfortunately our code does do that20:52
programmerjakesince debian salsa stores those logs, they'd likely consider it abuse if we increased the limit to say 128MB20:55
*** ghostmansd[m] <ghostmansd[m]!> has quit IRC21:11
*** ghostmansd[m] <ghostmansd[m]!> has joined #libre-soc22:07
*** ghostmansd <ghostmansd!> has quit IRC22:10
*** lkcl <lkcl!> has quit IRC22:24
*** lkcl <lkcl!> has joined #libre-soc22:28
*** ghostmansd[m] <ghostmansd[m]!> has quit IRC23:31
*** ghostmansd[m] <ghostmansd[m]!> has joined #libre-soc23:57

Generated by 2.17.1 by Marius Gedminas - find it at!