Monday, 2022-10-24

*** lxo <lxo!~lxo@gateway/tor-sasl/lxo> has quit IRC00:09
*** lxo <lxo!~lxo@gateway/tor-sasl/lxo> has joined #libre-soc00:21
*** lxo <lxo!~lxo@gateway/tor-sasl/lxo> has quit IRC03:06
*** openpowerbot <openpowerbot!> has quit IRC04:17
*** openpowerbot <openpowerbot!> has joined #libre-soc04:29
*** lxo <lxo!~lxo@gateway/tor-sasl/lxo> has joined #libre-soc04:29
*** openpowerbot <openpowerbot!> has quit IRC05:47
*** lxo <lxo!~lxo@gateway/tor-sasl/lxo> has quit IRC07:42
*** ghostmansd <ghostmansd!> has quit IRC08:07
*** openpowerbot <openpowerbot!> has joined #libre-soc08:09
*** octavius <octavius!> has joined #libre-soc08:26
*** ghostmansd[m] <ghostmansd[m]!> has quit IRC09:23
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@> has joined #libre-soc09:24
*** octavius <octavius!> has quit IRC09:45
markoslkcl, DCT 32x32, NEON, 14k lines in asm, 5k lines in C intrinsics, the original scalar code is 700 lines in C, wild guess, SVP64 asm will be < 2k lines maybe 3k if we include the comments10:53
markosand it's not fully unrolled10:54
lkclit should be a hell of a lot less than that10:55
lkclbut those twin-butterfly int ops are needed to do that10:56
lkclit's still completely mad10:56
markosthis is *with* the butterfly instructions for arm :)10:56
markoswhen I get some free time, I'll give it a shot10:57
lkclare you happy to wait until the budget is approved, then help instead adding the appropriate twin-butterfly int-ops?10:58
lkclthe target's under 100 instructions10:58
lkclmost of which, annoyingly, would be the setup of the cos coefficients10:58
markos100 instructions for 32x32 is pushing it10:58
markosbut sure10:59
lkclthat's 3D, right?10:59
lkclsorry, 2D10:59
markos3d dct I haven't done yet tbh :D10:59
markoswould be fun10:59
lkclok so how many individual operations?10:59
markoshaven't measured the resulting asm10:59
lkcl(total, across all 3 inner loops)10:59
lkclit's possible to work out from first principles11:00
markosis there a fast way to count that from the objdump?11:00
lkclno need, you can calculate it11:01
lkcl8-DCT is 4x1 + 2x2 + 1x411:02
lkcli.e. 3*4 operations = 1211:02
lkcl16-DCT is twice that plus 811:02
lkcl12*12=24 + 8 = 3011:02
lkcl32-DCT is twice that plus 1611:03
lkcl30+30 = 60 + 16 = 7211:03
lkcl72 operations11:03
lkclso that's *JUST* within the capability of 127 elements11:03
lkcla 2D automatic DCT would not be11:03
markosand the algorithm does a transpose after each pass and there are 2 passes11:04
markosbut with remap, we might skip the transposes11:04
lkclyep, i was going to do that automatically11:04
markoscan't wait to play with that11:04
lkclso instead, annoyingly, another 11 instructions would be needed to do the transposed DCT as an explicit step11:04
lkcli'm so sad11:05
lkclit's 16-bit arithmetic?11:05
lkcl(results are 16-bit?)11:05
lkcland the inputs are 16-bit as well?11:06
markos16-bit arithmetic for 8-bit video, 32-bit arithmetic for 10/12-bit video11:06
markosand some operations I have to expand to 64-bit arithmetic because extreme cases overflow11:06
lkclok mmm...11:06
markosunit tests basically11:06
lkclis the overflow a standard saturate?11:06
lkcl(if greater than 0xffff then equal 0xffff)11:07
markosyes I know, no unfortunately11:07
markosresults get messy11:08
lkclah then we can't use 32-bit or 16-bit arithmetic11:08
lkclperhaps vertical-first would be better11:08
markosthere are some feedback loops where the resulting matrix is fed as input recursively11:08
markoseven one bit can completely mess up the results11:09
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@> has quit IRC11:09
lkclas you can use intermediaries that use 64-bit temporary variables11:09
markosthat's what I'm doing11:09
markosfor 8-bit pixels I'm using 32-bit temporaries11:09
markosfor 16-bit pixels I'm using 64-bit temps11:09
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@> has joined #libre-soc11:09
markosthough they're not needed everywhere thankfully11:10
lkclsounding like VF would do the trick11:10
markosthat's what I thought11:10
markostransposing a 32x32 array is very costly11:11
lkclwhich is a bit longer (19-or-so instructions)11:11
lkclno need11:11
markosdoing it in 8x8 blocks and still it's a lot of instructions wasted there11:11
lkclah 8x8 blocks? ok then that's... yep more instructions (again)11:13
lkclestimated.... 500 or so11:13
markosI was being generous and said 2k instructions above :)11:14
lkclcore triple-loop around 19 (regardless of block size, number-of-regs-limited)11:14
markos3k lines if you included a ton of comments :)11:14
markosI think it's doable11:14
markoswhat I would like as a target is to have a complete port of say libvpx or dav1d even before available hardware11:15
markosand then measure exact number of instructions to decode a full video11:16
markosinside cavatools perhaps11:16
markosand compare with x86 & arm11:16
markoswould take probably a week, but it doesn't matter11:16
lkclcavatools i expect to be only around 1/10th to 1/20th slower than per-host-core11:23
lkcli.e. around the 250,000 instructions per second per host-core mark11:24
markosso even better11:30
*** octavius <octavius!> has joined #libre-soc11:43
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@> has quit IRC12:01
*** ghostmansd[m] <ghostmansd[m]!> has joined #libre-soc12:02
*** openpowerbot <openpowerbot!> has quit IRC12:05
*** openpowerbot <openpowerbot!> has joined #libre-soc12:25
*** ghostmansd[m] <ghostmansd[m]!> has quit IRC12:57
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@> has joined #libre-soc12:59
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@> has quit IRC13:06
*** ghostmansd[m] <ghostmansd[m]!> has joined #libre-soc13:06
*** lxo <lxo!~lxo@gateway/tor-sasl/lxo> has joined #libre-soc14:24
lkclwe got the 2 additional grants14:31
lkclso that leaves plenty of room to, how-to-say, "adapt tasks somewhat to what people would like to do"14:37
lkclwithin the criteria and
*** openpowerbot <openpowerbot!> has quit IRC14:56
*** lxo <lxo!~lxo@gateway/tor-sasl/lxo> has quit IRC15:02
*** openpowerbot <openpowerbot!> has joined #libre-soc15:03
*** lxo <lxo!~lxo@gateway/tor-sasl/lxo> has joined #libre-soc15:21
*** openpowerbot <openpowerbot!> has quit IRC15:23
programmerjakelkcl: in case you don't see the email, please work on fixing
*** lxo <lxo!~lxo@gateway/tor-sasl/lxo> has quit IRC15:29
*** lxo <lxo!~lxo@gateway/tor-sasl/lxo> has joined #libre-soc15:31
*** openpowerbot <openpowerbot!> has joined #libre-soc15:31
programmerjakebasically i'm not getting emails from libre-soc because gmail is bouncing them15:32
lkclprogrammerjake, that's not going to happen15:52
lkclclosing as invalid. we cannot request gmail to change their policies.15:52
*** lxo <lxo!~lxo@gateway/tor-sasl/lxo> has quit IRC15:53
*** lxo <lxo!~lxo@gateway/tor-sasl/lxo> has joined #libre-soc15:53
markosI had problems with gmail also recently, after 10+ years of using it, I finally migrated my domain to another system and canceled all the google apps used, no regrets15:59
markoshad enough of stupid gmail policies15:59
*** lxo <lxo!~lxo@gateway/tor-sasl/lxo> has quit IRC16:00
*** openpowerbot <openpowerbot!> has quit IRC16:01
*** lxo <lxo!~lxo@gateway/tor-sasl/lxo> has joined #libre-soc16:01
octaviushostinger seems to be working for me (I'm a newbie with network admin, so rented the email service + website)16:08
ghostmansd[m]lol, guys, I know what HEAD is :-)16:08
programmerjakeuuh, you could at least look at the server logs and see why it may be because dmarc and stuff is borked. i'm far from the only one using gmail so exerting some effort to try and make gmail work is imho necessary16:08
ghostmansd[m]For sure I'll link to some specific commit16:09
ghostmansd[m]That was a funny discussion, sorry I missed it :-)16:09
lkclprogrammerjake, i look at them regularly: the messages are "you are a bulk sender, you hit a limit, please deliver later"16:11
lkclthere is16:11
lkclabsolutely nothing16:11
lkclthat can16:11
lkclbe done16:11
lkclthis is gmail policies16:11
lkclwe cannot16:11
*** openpowerbot <openpowerbot!> has joined #libre-soc16:12
lkcloctavius, it actually doesn't matter what server you move to: if interacting with people who *use* gmail, mailing lists delivering *to* those people get classified as "bulk deliverers" and automatically get rate-limited16:13
programmerjakegmail not working will push lots of people away from libre-soc16:13
lkclto "solve" the problem, everyone *else* (the recipients) has to move to non-gmail16:13
octaviusOh, that's horrible16:13
lkcloctavius, it is what it is.16:13
lkclwe just have to put up with it.16:14
lkclnothing is lost: the server continues to retry until success16:14
*** ghostmansd[m] <ghostmansd[m]!> has quit IRC16:14
lkclbeyond 7 days is the "problem" point, but that's just the default in mailman.16:14
lkcli can set it much larger if necessary16:14
lkclthis is part of the SMTP protocol.16:15
lkclrecipient servers are not *required* to accept16:15
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@> has joined #libre-soc16:15
lkclthey have to be fully 100% deterministic, but they're perfectly entitled to say "please try later"16:15
lkclwhat you *cannot* do is say "yeah i received it" and then drop it on the floor16:15
lkclor, you can, but that's up to the recipient server admin :)16:16
lkclprogrammerjake, the majority of recipients are in fact on gmail.16:16
lkclthere's nothing that can be done.16:16
lkclwhat gmail servers accept - and when - is entirely up to the administrators of gmail servers16:17
lkclnot us16:17
lkclit is *completely* beyond our control.16:17
programmerjakewell, fixing dmarc will likely allow you to send more messages to gmail...16:22
*** octavius <octavius!> has quit IRC16:48
*** apen9uin <apen9uin!~apen9uin@2600:1005:b01b:a137:d4a4:f676:8921:b8ba> has joined #libre-soc16:56
*** apen9uin <apen9uin!~apen9uin@2600:1005:b01b:a137:d4a4:f676:8921:b8ba> has left #libre-soc16:56
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@> has quit IRC17:11
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@> has joined #libre-soc17:12
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@> has quit IRC17:40
*** ghostmansd[m] <ghostmansd[m]!> has joined #libre-soc17:43
*** jevinskie[m] <jevinskie[m]!~jevinskie@2001:470:69fc:105::bb3> has quit IRC17:44
*** programmerjake <programmerjake!~programme@2001:470:69fc:105::172f> has quit IRC17:44
*** sadoon[m] <sadoon[m]!~sadoonunr@2001:470:69fc:105::1:f0fa> has quit IRC17:44
*** EmanuelLoos[m] <EmanuelLoos[m]!~emanuel-l@2001:470:69fc:105::6260> has quit IRC17:44
*** psydroid <psydroid!~psydroid@user/psydroid> has quit IRC17:44
*** underpantsgnome[ <underpantsgnome[!~tinybronc@2001:470:69fc:105::2:1af6> has quit IRC17:44
*** cesar <cesar!~cesar@2001:470:69fc:105::76c> has quit IRC17:44
*** programmerjake <programmerjake!~programme@2001:470:69fc:105::172f> has joined #libre-soc17:49
*** cesar <cesar!~cesar@2001:470:69fc:105::76c> has joined #libre-soc18:05
*** EmanuelLoos[m] <EmanuelLoos[m]!~emanuel-l@2001:470:69fc:105::6260> has joined #libre-soc18:05
*** sadoon[m] <sadoon[m]!~sadoonunr@2001:470:69fc:105::1:f0fa> has joined #libre-soc18:05
*** jevinskie[m] <jevinskie[m]!~jevinskie@2001:470:69fc:105::bb3> has joined #libre-soc18:05
*** psydroid <psydroid!~psydroid@user/psydroid> has joined #libre-soc18:05
*** underpantsgnome[ <underpantsgnome[!~tinybronc@2001:470:69fc:105::2:1af6> has joined #libre-soc18:05
*** ghostmansd[m] <ghostmansd[m]!> has quit IRC18:05
*** ghostmansd[m] <ghostmansd[m]!> has joined #libre-soc18:07
*** ghostmansd <ghostmansd!> has joined #libre-soc18:48
*** ghostmansd <ghostmansd!> has quit IRC18:51
*** ghostmansd <ghostmansd!> has joined #libre-soc18:51
ghostmansdlkcl, did you reserve some opcodes from minor_4?18:52
ghostmansdI'm asking since we moved divmod2du to 58, and I'm thinking about the opcodes that I should choose for shadd/shadduw18:52
ghostmansdAlso, I don't quite get if Rc plays role there.18:52
ghostmansdShould I add this:     CR0                     (if Rc=1)18:52
ghostmansdThat is, will there be shadd and shadd. together (Rc=0, Rc=1 respectively)?19:17
programmerjakenote PO 58 used to be all the load/store extended opcodes ... basically it enabled 64-bit addresses in powerpc v1.0 where the current load/store ops were limited to 32-bit addresses19:20
programmerjakepage 289 (page 303) of that pdf19:21
programmerjakeso for backwards compatibility, any new opcodes in po 58 need to be able to be disabled so trap-and-emulate works19:23
ghostmansdI forgot, how do we fix HTTP erros when launch hdl-dev-repos at talos?19:47
ghostmansdAnd, also, any reason for not using git protocol?19:48
ghostmansdmake: *** No rule to make target 'mkpinmux'.  Stop.19:52
ghostmansdAll Libre-SOC dev dependenices should now be installed.19:52
ghostmansdOK found it's caused by gnutls19:56
programmerjakegit protocol is insecure and can be MITM, hence why i prefer ssh or https19:57
ghostmansd[m]Ok, ssh then?20:03
ghostmansd[m]Need to setup public key?20:03
programmerjakeyes, hence why i prefer https for in the scripts and stuff where we expect the general public to be able to run them20:04
programmerjakesince that way they don't need to ask for their ssh key to be added to the server20:05
lkclghostmansd[m], they're already in this page -
lkclurr fer frick's sake, not again.20:29
ghostmansdlkcl, one of this seems to be outdated: bit 21 is 0 and 1 for shadd/shadduw respectively, but, in code, bit 21 is for operand sm20:34
lkcl1 sec20:35
ghostmansd> urr fer frick's sake, not again20:35
ghostmansdWhat does this refer to?20:35
lkcldealing with 2 things20:35
ghostmansds/in code/in spec/20:35
lkclghostmansd, did you follow the exact procedure for creating chroots?20:35
ghostmansdI created it so far ago that it's both difficult to recall, and even after then the instruction could've changed20:36
lkclok, so i had to already fix the scripts (at least twice) to deal with gnutls fuckups20:36
ghostmansdBut nevermind, it works now, after my chroot changed libcurl3 version20:36
ghostmansdAh yeah, this is likely the reason20:37
lkclwhich the downstream team were blundering about with, followed by debian picking up at least two or three bugfixes20:37
lkclwe had to "pin" the version of libcurl3-gnutls20:37
ghostmansdBecause I called the hdl-install-repos (or how is it called) on the old chroot20:37
ghostmansdThat's what I did20:37
lkclPackage: *20:38
lkclPin: release a=buster-backports20:38
lkclPin-Priority: 10020:38
lkclPackage: libcurl3-gnutls20:38
lkclPin: version 7.64*20:38
lkclPin-Priority: 100120:38
ghostmansdYeah I managed to install repos20:38
ghostmansdShould be fine now20:38
lkclin this file, did you add the above contents? /etc/apt/preferences.d/99buster-backports20:38
ghostmansdNo, I simply set it via `libcurl3-gnutls=7.64.0-4+deb10u2`20:39
ghostmansdsudo apt-install libcurl3-gnutls=7.64.0-4+deb10u220:39
ghostmansdIn chroot20:39
ghostmansdYeah as I mentioned I used chroot which I created long ago20:39
lkclwell, the "pin" makes sure that no other package goes and tries to change it20:39
ghostmansdI hoped it was stable enough :-)20:39
ghostmansdAnd just wanted to update the repos from start20:40
lkcland the low-priority on buster-backports makes damn sure that anything that is from having to bring in the backports-version of qemu does not fuck up anything20:40
ghostmansdBut apparently things changed over years :-D20:40
lkclthen you want - *need* - to either completely start again from scratch20:40
lkclyou *manually* perform git pull on each repo20:40
ghostmansdIncluding fresh chroot?20:41
lkcldon't whatever you do attempt to re-run the devscripts in a pre-existing chroot20:41
ghostmansdThis is fricking insane!20:41
lkclif it's been created from the latest git checkout of the devscripts it's fine20:41
lkclthe scripts are *in no way* intended for the purposes of "updating/refreshing"20:41
lkclthey're a "jump-start"20:41
ghostmansdSufficient to proceed now; if there're errors outside of those I introduce, I'll recreate it.20:42
lkclwe cannot possibly be expected to create scripts that perform the dual role of "install" as well as "update/refresh"20:42
lkclthe jump-start (running from scratch) saves newbies appx 3 *weeks*.20:42
lkclfuck that20:42
lkclyou are 'avvin a larf20:42
ghostmansdknew that!20:42
ghostmansdknew the answer in advance20:43
lkclyou've tried dohkhaa i take it?20:43
ghostmansdNope, but likely will have too soon. My expectations are not that high, though.20:43
lkcli knew it was bad, but now "how bad" until i tried using it20:43
lkclyou can't use a dockahh file created from an earlier version of a project that you used, and move forward to a new version of dockkahh20:44
ghostmansdFolks around produce a lot of hype around this, so yeah, I really expect nothing really good there.20:44
lkclnot only did they add new "features", they *removed* existing ones.20:44
ghostmansdThe more thing is hyped the worse it ends up eventually.20:44
lkclbasic ones such as chmod and chown - file permission management20:44
ghostmansdKinda makes me surprise whether this kind of sick psychological compensation.20:45
lkclwell it's real simple: you just set a hard rule not to change the API20:45
lkcli was faced with a situation where it was absolutely necessary to install *multiple* versions of dockahh simultaneously in order to build *and then use* two distinct packages20:46
lkclit would be frankly irresponsible to inflict the devpackages on people with docker builds20:47
lkclwe'd spend more time instructing newbies on precisely and exactly which version of docker they'd not correctly installed....20:47
lkclcan i stop talking about it now, please? :)20:47
ghostmansdno please continue!20:48
ghostmansdjust kidding, sure you can20:48
lkclrrrrr :)20:48
ghostmansdfuck what did we wrong that much that pywriter depends on nmigen?20:48
ghostmansdI mean, what exactly needs the nmigen for a parser?...20:49
lkclused a massively complex piece of code, PowerDecoder220:49
lkclonce rather than twice20:49
lkclbecause otherwise it has to be written twice20:49
lkclonce in nmigen20:49
lkcland a second time absolutely identical except not in nmigen20:49
lkclok shadd.20:50
lkcl| 0.5|6.10|11.15|16.20| 21 | 22.23 | 24....30 |31| name      |  Form   |20:50
lkcl| NN | RT | RA  | RB  | 0  | itype | 1101 110 |Rc| shadd     | X-Form  |20:50
lkclwhich... arse.20:51
lkcllet me fix that20:51
lkcluse Z23-Form20:51
ghostmansdWell that I already got :-)20:52
ghostmansdWith Z2320:52
ghostmansdI mean, operands are fine as long as they're in Z23 form20:52
lkcl| NN | RT | RA  | RB  | sm0| sm1 0 | 1101 110 |Rc| shadd     | X-Form  |20:52
lkcl| NN | RT | RA  | RB  | sm0| sm1 1 | 1101 110 |Rc| shadduw   | X-Form  |20:52
ghostmansdIs the error on that page caused by incorrect form?20:52
ghostmansd# 1.6.27 Z23-FORM20:53
ghostmansd    |0     |6     |11    |15 |16     |21 |23    |31 |20:53
ghostmansd    | PO   |  RT  |   RA     |   RB  |sm |   XO |Rc |20:53
lkclrefresh the page, i've edited it already20:53
ghostmansdThere's one sm field20:53
ghostmansdNot sm0 and sm120:53
lkcli know. ignore that20:53
lkclok minor_22.csv is already converted to pattern...20:54
*** octavius <octavius!> has joined #libre-soc20:54
lkclthere's no Z23-form already in minor22.csv, can't use that as a template, drat...20:54
ghostmansdSorry, how do you even deduce it's minor 22?20:54
ghostmansdOpcode says NN20:55
lkclbecause i wrote the page
ghostmansdAnd here it says PO20:55
lkcland you can deduce it from maxs being in there20:55
lkcl(and absdu etc.)20:56
lkclokaaay we can deduce what's needed from absdu/maxs/cprop20:56
ghostmansdAh, so, the opcodes in the same table go to same minor?20:56
ghostmansdSorry if these questions are noob20:57
lkclin this case (this table), yes.  we're cramming (under severe pressure) as much into the EXT022 sandbox as possible20:57
ghostmansdFor now I used minor_420:57
ghostmansdBut I'll move these, np20:57
ghostmansd(this is a bit of copy & paste, not yet edited as it should)20:57
lkclyep they're already allocated, sorry i didn't make that clear20:57
lkcl1001001 110Rcav abss20:58
lkclmmm.... looking for a good match....20:59
lkclNNRTRARB0111110 110RcabsdacsX-Form20:59
lkclok that's a start-point20:59
lkcli needed to work out the start-offset (start bit) for minor_22.csv21:00
lkcland it's at bit 2121:00
lkclso you want21:00
lkcl--01101110- for shadd21:01
lkclyess, that's the right length21:01
lkcl--11101110- for shadduw21:01
lkclthen sm drops into the 1st 2 bits (21-22) as "don't care"s21:01
ghostmansd--01101110-,ALU,OP_SHADD,RA,RB,RC,RT,NONE,CR0,0,0,ZERO,0,NONE,0,0,0,0,0,0,RC_ONLY,0,0,shadd,Z23,,1,unofficial until submitted and approved/renumbered by the opf isa wg21:02
ghostmansd--11101110-,ALU,OP_SHADDUW,RA,RB,RC,RT,NONE,CR0,0,0,ZERO,0,NONE,0,0,0,0,0,0,RC_ONLY,0,0,shadduw,Z23,,1,unofficial until submitted and approved/renumbered by the opf isa wg21:02
lkcldon't cut/paste the absdac lines, they're overwrite21:02
ghostmansd(if it's with Rc)21:02
lkcllet me see...21:02
lkclyes, and RC_ONLY (they don't have OE forms)21:03
ghostmansdThese are not absdac, cooked it from setvl21:03
ghostmansdused your opcodes, changed the form and names, and arguments21:03
lkclthose have RA,RB,RC,RT,NONE21:03
ghostmansdah yes, forgot about RC21:03
* lkcl checking Z23-Form....21:03
ghostmansdAh no21:03
ghostmansdnot forgot21:03
lkclnope, no RC.21:04
lkclyou copied from minor_4 which has RA/RB/RC/RT21:04
lkclwhich these don't have21:04
ghostmansdAh fuck21:04
ghostmansdIt's sm21:04
ghostmansdyep, must be none21:04
lkclehmehmem... if you can pass both of them at a single OP - just OP_SHADD -21:05
lkclthen in hardware what we'll do is look at bit 2321:05
lkclOP_xxxx is purely for hardware, not for the Simulator21:05
lkcland we can't go mad creating hundreds of OP_x's21:06
ghostmansdHow do I distinguish it in pseudocode then?21:06
ghostmansdAh got it, by name21:06
ghostmansdNot OP21:06
lkclpseudocode has nothing to do with OP_... yehhh :)21:06
ghostmansd(I meant markdown)21:06
ghostmansd--01101110-,ALU,OP_SHADD,RA,RB,NONE,RT,NONE,CR0,0,0,ZERO,0,NONE,0,0,0,0,0,0,RC_ONLY,0,0,shadd,Z23,,1,unofficial until submitted and approved/renumbered by the opf isa wg21:06
ghostmansd--11101110-,ALU,OP_SHADD,RA,RB,NONE,RT,NONE,CR0,0,0,ZERO,0,NONE,0,0,0,0,0,0,RC_ONLY,0,0,shadduw,Z23,,1,unofficial until submitted and approved/renumbered by the opf isa wg21:06
lkclall zeros/defaults from CR0 onwards up to RC_ONLY... good21:07
lkclRA/RB/RT good21:07
lkclZero good21:07
lkcltwo "-"s at front for sm, one "-" at end for Rc, yep all good21:08
ghostmansdThank you for help!21:08
ghostmansdWill move to pseudocode21:08
ghostmansdLast time I tried pywriter barked on me with some operand, but I think I'll fix it soon21:09
lkclit should be... 2 lines each21:09
lkcloh - feel free to "cheat"21:10
lkcland use a switch/case21:10
lkclto avoid pissing about with ROTL64 and MASK()21:10
lkcli mean, literally spell it out, case (0): RT <- ((RB)[0:XLEN-2] || [0]) + (RA)21:11
ghostmansdThese already have pseudocode21:11
ghostmansdshift <- sm & 0x3           # Ensure sm is 2-bit21:11
ghostmansdshift <- shift + 1          # Shift is between 1-421:11
ghostmansdsum[0:63] <- ((RB) << shift) + (RA) # Shift RB, add RA21:11
ghostmansdRT <- sum               # Result stored in RT21:11
lkclno, they have *c* code assembler21:11
lkclwhich was originally derived from RV xbitmanip21:11
lkclthat is *not* the same as OPF pseudocode21:12
lkclthere is no "<<" symbol in the Power ISA pseudocode notation, you have to either do it manually as a switch statement (4 cases) or you have to do it using ROTL64() and MASK()21:12
ghostmansdlike pcdec?21:13
lkclyou can see dsld for how it's done21:13
lkcl1 sec21:13
ghostmansdor dsld?21:13
ghostmansdah you got here first21:13
ghostmansda total cheat21:14
lkclit's... meh.21:14
ghostmansdbut OK :-)21:14
ghostmansdOK will refactor this tomorrow21:14
ghostmansdNeed to look at it with the fresh head21:14
lkclhonestly i feel the switch-case is clearer but the use of ROTL64()/MASK() will be slightly shorter, perhaps21:14
lkcli hear ya21:14
ghostmansdit is indeed cleaner21:14
ghostmansdbecause it's obvious21:14
ghostmansd(I mean, both are quite simple, but switch kinda places it in your eyes)21:15
lkclyou _should_ be able to do only 5 lines.21:15
lkclcase(0): RT <-21:15
lkclcase(1): RT <-21:15
ghostmansdWhy don't we support shifts?21:16
ghostmansdOr, well, can we do it, unlike vanilla ISA?21:16
lkclbecause doing so requires proposing adding shifts to Section 1.3.2 of the Power ISA21:16
ghostmansdI mean, parser can be done to support it21:16
lkclwriting up an External RFC21:16
ghostmansdAha, that's also my guess21:16
lkclwhich then is submitted21:16
ghostmansdOK, no problems21:16
lkclqu.... can i stop now? :)21:17
ghostmansdlet's put switch for these folks21:17
ghostmansdthey certainly saved themselves from the review, didn't they?21:17
lkclwell, it's a seriously-responsible job21:17
ghostmansdnah, I understand21:18
ghostmansdjust kidding21:18
lkclsome of them have been working on this document literally 25 years, now21:18
lkclthe same people21:18
ghostmansdwell they won't be surprised by tiny little switches then lol21:19
*** hl <hl!~hl@user/hl> has quit IRC21:19
*** jn <jn!~quassel@user/jn/x-3390946> has quit IRC21:19
*** jn <jn!~quassel@2a02:908:1066:b7c0:20d:b9ff:fe49:15fc> has joined #libre-soc21:19
*** jn <jn!~quassel@2a02:908:1066:b7c0:20d:b9ff:fe49:15fc> has quit IRC21:20
*** jn <jn!~quassel@user/jn/x-3390946> has joined #libre-soc21:20
*** hl <hl!~hl@user/hl> has joined #libre-soc21:21
*** octavius <octavius!> has quit IRC21:24
*** openpowerbot <openpowerbot!> has quit IRC21:34
*** openpowerbot <openpowerbot!> has joined #libre-soc21:40
*** jab <jab!~jab@user/jab> has joined #libre-soc22:54
lkclghostmansd, sh is already 2-bit23:41
lkclthis line can go23:42
lkcl+    shift <- sm & 0x3                # Ensure sm is 2-bit23:42

Generated by 2.17.1 by Marius Gedminas - find it at!