Sunday, 2022-05-08

ghostmansd[m]Also added svshape.00:38
lkclghostmansd[m], ah: sv.setvl does *not* exist.03:43
lkcland it will never be added.03:43
lkclsetvl is *definitely* and *only* a 32-bit scalar instruction.  there will *never* be a 64-bit instruction called "sv.setvl"03:44
lkclyes, once one 32-bit instruction is added, new ones get real easy03:45
littlebobeeplkcl: Hi sorry if this is OT, but if you know about FPGAs...?  Do you have an assessment on this project:   vs.  this:
littlebobeepI am curious which I can use for a Xilinx Kintex-703:52
littlebobeepI don't know if this is realistic for running Libre-Soc??03:52
littlebobeepI've never used an FPGA before so still coming to understand03:53
lkcllitex is fine for starting out, and as long as you do not want to make any modifications to what they provide it is fine.04:27
lkcla deeper investigation into litex is where the problems start.04:28
lkclprjxray says that experimentation has begun with kintex-704:29
littlebobeeplkcl: Do you know much about the problems with litex?08:05
ghostmansdlkcl, cf. these08:20
ghostmansda usual sweet and simple setvl:;a=blob;f=src/openpower/sv/trans/
ghostmansd...and with the prefix yielded above:;a=blob;f=src/openpower/sv/trans/
ghostmansdsame applies to many other insns, the code is identical08:20
lkclghostmansd[m], that's added as a *32-bit* instruction12:33
lkclall of those instructions are added as 32-bit, because that's how SVP64 works12:33
lkclyou cannot have a "sv."-only instruction because SVP64 is a prefix system12:33
lkclthe 32-bit instruction *has* to be added before the 64-bit prefixed variant can even be added12:34
lkcl(and this is the important bit)12:34
lkclsetvl, svstep, svshape and svremap are *control* instructions, *NOT* Vector instructions.12:35
lkclthey *control* the Vector system, they are not themselves actually Vectorised.12:35
lkclthey must remain 32-bit only.12:35
lkclthere will never, under any circumstances, be:12:35
lkclif anyone makes such instructions, they must be raised as illegal syntax errors12:36
lkclthe only reason i added them, like fsins (line 257) is precisely because the scalar binutils doesn't have them12:36
lkclif the RM-NN-MM-OO.csv files actually contain setvl, svstep, svshape or svremap that's a major mistake12:37
* lkcl checking12:38
lkcl$ grep setvl *12:38
lkclminor_22.csv:0b00000,VL,OP_SETVL,RA_OR_ZERO,NONE,NONE,RT_OR_ZERO,NONE,CR0,0,0,ZERO,0,NONE,0,0,0,0,0,0,RC,0,0,setvl,SVL,,1,unofficial until submitted and approved/renumbered by the opf isa wg12:38
lkclit's not in any of the RM-1P-1D.csv etc. so that's correct12:39
lkcl$ grep sv *.csv12:40
lkclminor_22.csv:0b00001,VL,OP_SVSHAPE,NONE,NONE,NONE,NONE,NONE,NONE,0,0,ZERO,0,NONE,0,0,0,0,0,0,RC,0,0,svshape,SVM,,1,unofficial until submitted and approved/renumbered by the opf isa wg12:40
lkclminor_22.csv:0b00010,VL,OP_SVREMAP,NONE,NONE,NONE,NONE,NONE,NONE,0,0,ZERO,0,NONE,0,0,0,0,0,0,RC,0,0,svremap,SVRM,,1,unofficial until submitted and approved/renumbered by the opf isa wg12:40
lkclminor_22.csv:0b00011,VL,OP_SVSTEP,NONE,NONE,NONE,RT,NONE,CR0,0,0,ZERO,0,NONE,0,0,0,0,0,0,RC,0,0,svstep,SVL,,1,unofficial until submitted and approved/renumbered by the opf isa wg12:40
lkcland likewise svstep, svremap, svstep - all *NOT* in the RM-NN-MM.csv files12:41
lkclthink of it this way: setvl sets the global (QTY 1) SVSTATE Special Purpose Register which controls the entire Vector system, setting how many elements there are12:41
lkcl"sv.setvl" would be:12:42
lkcl    please set a Vector of Vectors of SVSTATE Special Purpose Registers, from 0 to VL-112:42
lkclthat's not going to work, is it? :)12:42
lkcllittlebobeep, the primary developer of litex was so spiteful and unethical i'd prefer not to talk about litex on this channel. he was that rude and caused immense problems, wasting a lot of my time in attempting to damage my reputation and that of this project12:49
ghostmansd[m]lkcl, what about this?15:21
ghostmansd[m]This is after splitting sv. prefix15:21
ghostmansd[m]First, we yield prefix:;a=blob;f=src/openpower/sv/trans/
ghostmansd[m]Then insn itself:;a=blob;f=src/openpower/sv/trans/
ghostmansd[m]Also, regarding sv.setvl...15:23
ghostmansd[m]This seems to check it, eh?15:23
ghostmansd[m]This is kinda confusing, because there should be no sv.setvl insn15:24
ghostmansd[m]But considers it15:25
lkclghostmansd[m], again, those are there because, again, binutils does not support the assembler mnemonic "setvl" or "svstep".19:04
ghostmansd[m]Please correct me if I'm wrong19:05
ghostmansd[m]You handle _both_ sv.setvl and setvl19:05
ghostmansd[m]First, we check opcode19:05
lkcltht code should never be reached19:05
lkcli will delete it now to make it absolutely clear.19:06
ghostmansd[m]And how this should be guessed?19:06
ghostmansd[m]Yes, please do19:06
ghostmansd[m]Because, well, this looks kinda outdated19:06
ghostmansd[m]And this is the whole reason why I raised this topic :-)19:06
ghostmansd[m]I'd re-visit the whole svp64 once you have time19:08
lkclok, in *theory* it's possible, not because it's Vectorised19:08
ghostmansd[m]Because _you_ have the whole picture19:08
ghostmansd[m]But not _me_19:08
lkclbut because of something called "Scalar Identity"19:09
lkclthe only valid circumstance where you could have "sv.setvl" is if there's absolutely no modifier flags whatsoever19:09
lkclno sv.setvl/ew=xxx, no sv.setvl/sm=yyyy19:09
lkclwhich is pointless and a waste of 24-bits of opcode space19:09
lkclso it's something to reserve for later19:10
ghostmansd[m]Yes, but, still: after the code checks for sv. and remaps, it handles some insns specifically19:10
ghostmansd[m]So, you know, I had no other option but ask19:10
ghostmansd[m]Ok, seems clearer now :-)19:11
ghostmansd[m]But, still, I have no idea how it appeared for the first place19:12
ghostmansd[m]If this is bothering and stupid, just let me know19:12
lkclcut/paste error? don't know19:12
lkclno, it's important19:12
lkclsome things, like the disastrous ld-st-with-shift experiment, still haven't fully been cut out19:13
ghostmansd[m]I suggest to raise a standalone task with it's own budget to update to current state of art.19:14
ghostmansd[m]Because this _is_ important.19:14
ghostmansd[m]Because, well, I've entered this stuff at somewhat outdated stage, you know19:15
ghostmansd[m]And, long before binutils are ready, we have the current solution, which _does_ work19:15
ghostmansd[m]And I'd really like this to be tied to current state of art19:16
lkclyeah it's going to have to be integrated into unit tests as an option to use19:16

Generated by 2.17.1 by Marius Gedminas - find it at!