lkcl | programmerjake, it's perfectly fine to cut this back drastically | 09:42 |
---|---|---|
lkcl | https://bugs.libre-soc.org/show_bug.cgi?id=868 | 09:42 |
lkcl | we absolutely don't have time to do that much work | 09:44 |
lkcl | so i'm cutting it back, the budget doesn't change | 09:45 |
lkcl | we *need* to set goals that are *achievable within the timeframe* | 09:45 |
lkcl | then apply for follow-up grants afterwards | 09:46 |
lkcl | and make certain that the available budget right now is 100% allocated and spent on *achievable* tasks within the remaining 12 weeks | 09:46 |
lkcl | which makes 869 80% done already | 09:48 |
lkcl | i've allocated EUR 2500 to 868, which leaves EUR 2650 remaining to allocate, e.g. to fmul16, and i'd say we're good | 09:56 |
lkcl | lxo, i'm putting you down for EUR 1,000 on https://bugs.libre-soc.org/show_bug.cgi?id=238 | 10:05 |
lkcl | do you have an EU bank account (if not can you set up a transferwise account, use this link https://transferwise.com/u/marier50) | 10:06 |
lkcl | octavius, mooornin | 19:51 |
octavius | Hi lkcl, I have been awake, just doing other things XD | 19:52 |
lkcl | :) | 19:52 |
* lkcl been chucking in a boatload more RFPs | 19:52 | |
octavius | Now, I tried running the makefile for the powersim thing, getting a struct error | 19:53 |
lkcl | summary from yesterday: the bmask pseudocode is perfectly fine and is exactly the same implementation of the executable demo, bmask.py | 19:53 |
octavius | And the bitfields are MSB for good measure :D | 19:53 |
lkcl | i can help you with that one later, let's close the bmask one first | 19:53 |
lkcl | sigh yes | 19:54 |
lkcl | i think i mentioned it was 18 months before i suddenly realised i'd thought "naturally" in MSB0 order :) | 19:54 |
octavius | It's not too bad to think that way, the important thing is *WHERE* I need to think like this. | 19:55 |
octavius | Are all instructions MSB0 order? | 19:55 |
octavius | bitfields | 19:55 |
lkcl | if you can add a SOF and a SIF test case_1_bmask case_2_bmask based on the values from here | 19:55 |
lkcl | https://git.libre-soc.org/?p=libreriscv.git;a=blob;f=openpower/sv/sif.py;hb=HEAD | 19:55 |
lkcl | https://git.libre-soc.org/?p=libreriscv.git;a=blob;f=openpower/sv/sof.py;hb=HEAD | 19:55 |
lkcl | 22 m = 0b11000011 | 19:55 |
lkcl | 23 v3 = 0b10010100 # vmsof.m v2, v3 | 19:55 |
lkcl | 24 v2 = 0b01000000 # v2 | 19:55 |
lkcl | then we can call it a day and close that bugreport, put the RFP in | 19:56 |
lkcl | yes. | 19:56 |
octavius | What do v2/v3 mean, variables? | 19:56 |
lkcl | and the ISACaller simulator as well | 19:56 |
octavius | ok | 19:56 |
lkcl | look at the case_0_bmask | 19:56 |
lkcl | and compare the values inputted to those in sbf.py | 19:56 |
lkcl | https://git.libre-soc.org/?p=libreriscv.git;a=blob;f=openpower/sv/sbf.py;hb=HEAD | 19:57 |
octavius | No no, I'm talking about "v2", is it just a name for a variable? | 19:57 |
lkcl | this is literally a cut-paste job | 19:57 |
lkcl | yes | 19:57 |
lkcl | https://git.libre-soc.org/?p=openpower-isa.git;a=blob;f=src/openpower/test/bitmanip/av_cases.py;h=72455c73034564c2cb48d97d78c4de48dddde9af;hb=3ccf08c35610a74532c37307ab4c3e1d56b3e754#l452 | 19:58 |
lkcl | line 464 | 19:58 |
lkcl | let's keep it real simple | 19:58 |
lkcl | cut | 19:58 |
lkcl | paste | 19:58 |
lkcl | run | 19:58 |
lkcl | bang | 19:58 |
* lkcl just correcting the comments in case_1_bmask | 20:05 | |
lkcl | also note, generally, you shouldn't do unit tests that test for UNDEFINED behaviour | 20:06 |
octavius | Is that because it will never be allowed to execute? | 20:07 |
lkcl | it's because, strictly speaking, due to the result being *UNDEFINED*, how can you possibly correctly test that? | 20:07 |
lkcl | it's literally *undefined* | 20:07 |
lkcl | the answer could be literally anything | 20:08 |
lkcl | therefore how is it possible to make a test for something that could be completely random responses? | 20:08 |
octavius | You wrote 0 there, so I assumed the result is forced to be 0 | 20:08 |
lkcl | no, i had the word "UNDEFINED" | 20:08 |
lkcl | if mode3 = 3 then result <- undefined([0]*XLEN) | 20:08 |
lkcl | which *means*, "it's UNDEFINED" | 20:08 |
octavius | ok | 20:09 |
lkcl | there are a number of occurrences like this in the Power ISA spec | 20:09 |
lkcl | unnnnnfortunately.... | 20:09 |
lkcl | some idiots decide "oh because IBM POWER9 returns value zyz, we can rely on that" | 20:09 |
* lkcl bangs head repeatedly against desk | 20:09 | |
lkcl | which causes serious problems for other hardware implementors because they have to completely ignore the spec | 20:10 |
lkcl | and implement exactly what *IBM's implementation* impements | 20:10 |
lkcl | sigh | 20:10 |
octavius | In the sif.py code, the instruction is execute with v3 being the first arg, and m being the mask. Why is v2 there? Is v2 the expected result? | 20:25 |
lkcl | yyep | 20:26 |
octavius | The first two tests give the same result (v3 didn't change) | 20:26 |
lkcl | those actually come from the RVV spec | 20:26 |
lkcl | just do lines 22-24 | 20:26 |
lkcl | keep it real simple | 20:26 |
lkcl | 20 m = 0b11000011 | 20:27 |
lkcl | 21 v3 = 0b10010100 # vmsif.m v2, v3 | 20:27 |
lkcl | 22 v2 = 0b11000011 # v2 | 20:27 |
octavius | Yeah got it, it works | 20:29 |
octavius | SOF fails | 20:33 |
octavius | AssertionError: 128 != 64 : int reg 3 (sim) not equal (expected) '.long 0x58611251'. got 80 expected 40 at pc 4 4 | 20:33 |
lkcl | ok do commit it i'll take a look | 21:01 |
octavius | commited | 21:01 |
octavius | committed | 21:01 |
lkcl | yep v3 was wrong | 21:07 |
lkcl | https://github.com/riscv/riscv-v-spec/blob/master/v-spec.adoc#vmsof-m-set-only-first-mask-bit | 21:08 |
openpowerbot_ | [slack] <github> signin | 21:08 |
lkcl | ok i'm happy with that | 21:08 |
lkcl | octavius, all good. do put in an RFP. EUR 1,000 | 21:10 |
octavius | wow | 21:11 |
octavius | That's amazing XD | 21:11 |
lkcl | am in "not pissing about" mode. get work done, get RFP in, move on rapidly. | 21:12 |
octavius | Ah ok | 21:12 |
lkcl | it's partly about not embarrassing the hell out of NLnet | 21:15 |
lkcl | for backing us with really substantial amounts of money | 21:15 |
octavius | sure, can I send you the draft rfp to check? | 21:16 |
lkcl | the Video and the Vulkan3D drivers are *really* low utilisation | 21:16 |
lkcl | sure | 21:16 |
lkcl | use this | 21:17 |
lkcl | * [Bug #865](https://bugs.libre-soc.org/show_bug.cgi?id=865): | 21:17 |
lkcl | implement vector bitmanip opcodes | 21:17 |
lkcl | * €1000 out of total of €3500 | 21:17 |
lkcl | as the "Notes" section | 21:17 |
lkcl | the other NLnet grants aren't so bad | 21:17 |
octavius | Yeah, got out by generating the utils program :D | 21:17 |
octavius | *it | 21:17 |
lkcl | :) | 21:17 |
lkcl | coriolis2 is at EUR 45k and we should reach 50k | 21:18 |
lkcl | OpenPOWER standards is at 40k and we should also be able to reach 50k | 21:18 |
lkcl | the Formal Correctness one is *only 20k* out of 50k | 21:19 |
octavius | going afk | 21:53 |
ghostmansd[m] | I'm really fed up with the way svp64.py is done. This is bunch of hacks, and every single instruction added is not mentioned everywhere it should had been mentioned. | 22:03 |
ghostmansd[m] | I have a big commit in my local branch which groups all this crap into a dict. | 22:03 |
ghostmansd[m] | Ideally we should have been generated it from operands, bit I have no time now to write yet another parser for fields.txt. | 22:04 |
ghostmansd | I already checked src/openpower/decoder/isa/test_caller.py and src/openpower/decoder/isa/test_caller_svp64.py. Anything else I should be aware of? | 22:05 |
ghostmansd | I touched almost every single custom 32-bit instruction we have in pysvp64asm. | 22:05 |
ghostmansd | For now, the code resides in branch pysvp64asm (openpower-isa). | 22:05 |
ghostmansd | lkcl ^^^ | 22:06 |
octavius | Ooh, thanks ghostmansd! | 22:10 |
ghostmansd[m] | octavius, that was the least I could do :-) | 22:16 |
octavius | ;) | 22:17 |
ghostmansd[m] | And that's not just phraseology, it's really the least. :-) All this crap should be dropped in favor of some mechanism which is aware of fields.txt. However, this is a big task, and for now I just want to keep this code maintainable for a while. | 22:21 |
ghostmansd[m] | After all, as hacky as it is, it is still a reference. | 22:22 |
ghostmansd[m] | I'm interested in tests to launch. lkcl, of you could launch testing on pysvp64asm branch, it'd be great. | 22:23 |
ghostmansd[m] | I lost several hours until I finally came up with some reasonable code, so I'd be happy if you could share ideas on further improvements. | 22:25 |
octavius | I haven't done this, but since luke as away, I could have a go | 22:25 |
octavius | Just need to grab the pysvp64asm branch | 22:25 |
ghostmansd[m] | Perfect, thanks octavius! | 22:26 |
ghostmansd[m] | It's almost 1 AM here, so I'll have some rest. :-) | 22:26 |
octavius | Before you go off, is it this test you want to run: decoder/isa/test_caller_bitmanip_av.py? | 22:30 |
ghostmansd[m] | Well I checked only test_caller.py and test_caller_svp64.py. | 22:44 |
ghostmansd[m] | I'm not sure which tests should be run in addition. | 22:44 |
ghostmansd[m] | The one you mentioned certainly deserves to be run, since I touched av section as well. | 22:45 |
octavius | I just ran test_caller_bitmanip_av.py: https://pastebin.com/BHk5q2ZP | 22:47 |
octavius | I'll try the other ones | 22:47 |
octavius | wow, test_caller.py is taking some time | 22:49 |
ghostmansd[m] | Yeah this is slow. | 22:49 |
ghostmansd[m] | You know what, I can run these tomorrow on talos1, don't worry :-) | 22:50 |
ghostmansd[m] | I've actually been thinking there are more other tests I must launch. Stuff in decoder/isa I know, will check it. | 22:51 |
ghostmansd[m] | Thank you! | 22:51 |
octavius | Just ran test_caller.py, looks good | 22:52 |
octavius | you're welcome, gn! | 22:52 |
ghostmansd[m] | gn! | 22:54 |
ghostmansd[m] | bitmanip_av should be fixed now :-) | 22:54 |
ghostmansd[m] | I found that I missed adding some insns to table | 22:54 |
octavius | test_caller_svp64.py also ran fine | 22:55 |
octavius | (did it while I was on anyway) | 22:55 |
octavius | no I'll go XD | 22:55 |
Generated by irclog2html.py 2.17.1 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!