sorear changed the topic of #riscv to: RISC-V instruction set architecture | https://riscv.org | Logs: https://libera.irclog.whitequark.org/riscv | Matrix: #riscv:catircservices.org
zjason` has quit [Ping timeout: 276 seconds]
agentcas- has quit [Ping timeout: 248 seconds]
_catircservices has quit [Quit: Bridge terminating on SIGTERM]
_catircservices has joined #riscv
agentcasey has joined #riscv
tux3 has quit [Quit: ZNC 1.8.2 - https://znc.in]
tux3 has joined #riscv
agentcasey has quit [Ping timeout: 260 seconds]
peepsalot has quit [Remote host closed the connection]
peepsalot has joined #riscv
saulosilva has joined #riscv
heat_ has quit [Ping timeout: 272 seconds]
vagrantc has quit [Quit: leaving]
saulosilva has quit [Quit: Client closed]
Tenkawa has quit [Quit: Was I really ever here?]
agentcasey has joined #riscv
BootLayer has joined #riscv
hexdump0815 has quit [Ping timeout: 265 seconds]
hexdump0815 has joined #riscv
mlw has joined #riscv
gnu0s has joined #riscv
gnu0s has quit [Ping timeout: 248 seconds]
gnu0s has joined #riscv
gnu0s has quit [Remote host closed the connection]
gnu0s has joined #riscv
BootLayer has quit [Quit: Leaving]
nexR has quit [Ping timeout: 252 seconds]
alifib has joined #riscv
felixonmars has joined #riscv
alifib has quit [Quit: .]
gnu0s has quit [Quit: Leaving]
nexR has joined #riscv
ldevulder has joined #riscv
crabbedhaloablut has joined #riscv
craigo has joined #riscv
JRepin has quit [Ping timeout: 246 seconds]
naoki has quit [Ping timeout: 260 seconds]
naoki has joined #riscv
naoki has quit [Ping timeout: 252 seconds]
naoki has joined #riscv
prabhakalad has quit [Quit: Konversation terminated!]
prabhakalad has joined #riscv
naoki has quit [Client Quit]
naoki has joined #riscv
heat_ has joined #riscv
naoki has quit [Read error: Connection reset by peer]
naoki1 has joined #riscv
naoki1 is now known as naoki
JRepin has joined #riscv
naoki1 has joined #riscv
naoki has quit [Ping timeout: 265 seconds]
naoki1 is now known as naoki
Perflosopher05 has joined #riscv
Perflosopher0 has quit [Ping timeout: 252 seconds]
Perflosopher05 is now known as Perflosopher0
TMM has quit [Quit: https://quassel-irc.org - Chat comfortably. Anywhere.]
TMM has joined #riscv
cousteau has joined #riscv
Nixkernal has joined #riscv
heat_ has quit [Ping timeout: 248 seconds]
danilogondolfo has joined #riscv
Nixkernal has quit [Quit: https://quassel-irc.org - Chat comfortably. Anywhere.]
JRepinc has joined #riscv
JRepin has quit [Ping timeout: 265 seconds]
naoki has quit [Quit: naoki]
JRepin has joined #riscv
getz has quit [Ping timeout: 265 seconds]
JRepinc has quit [Ping timeout: 260 seconds]
JRepin has quit [Quit: Konversation terminated!]
getz has joined #riscv
JRepin has joined #riscv
cousteau has quit [Quit: Client closed]
aklsh has joined #riscv
Tenkawa has joined #riscv
Tenkawa has quit [Client Quit]
Orac has joined #riscv
cousteau has joined #riscv
mlw has quit [Read error: Connection reset by peer]
<cousteau> I finally created the GCC bug requesting the -falign-labels=4 thing: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118356
<jrtc27> how much do the added c.nops all over the place cost you instead?
<jrtc27> those will surely have a cycle of overhead each on such simple pipelined cores?
Orac is now known as Tenkawa
mlw has joined #riscv
nexR has quit [Ping timeout: 246 seconds]
saulosilva has joined #riscv
tlwoerner has quit [Quit: Leaving]
tlwoerner has joined #riscv
nexR has joined #riscv
SpaceCoaster has quit [Ping timeout: 252 seconds]
alexghiti has joined #riscv
saulosilva has quit [Quit: Client closed]
alifib has joined #riscv
BootLayer has joined #riscv
crabbedhaloablut has quit []
heat_ has joined #riscv
dakralex has joined #riscv
<cousteau> jrtc27: the added nops might be replaced with expanded compressed instructions
<cousteau> so instead of a compressed instruction followed by a compressed nop and the 4-byte target, you get the expanded version of that instruction, no nop, and the target
<jrtc27> linker relaxation makes that very awkward to do
<cousteau> I think I've seen gcc do that
<cousteau> When I was messing with godbolt, I saw that -falign-labels=4 just added `R_RISCV_ALIGN *ABS*+0x2` lines to the generated assembly code.  I suppose that's a cue for the assembler/linker(?) to expand compressed instructions
<cousteau> Practical example: my use case went from sometimes taking 502k clock cycles and sometimes taking 452k clock cycles to always taking 452k clock cycles.
<cousteau> so yes, -falign-labels=4 did help
<cousteau> (in THAT use case, at least)
<jrtc27> you don't know if .option norelax was applied to the previous instruction though
<jrtc27> or the subsequent
<jrtc27> though that's way harder to expand
<jrtc27> ... nvm that doesn't help anyway
saulosilva has joined #riscv
<jrtc27> you only get positive information from R_RISCV_RELAX being applied to instructions
<jrtc27> but that's only for instructions that have known-relaxable relocations
<jrtc27> or norvc even
<cousteau> For context: when I mentioned this issue here a few months ago, someone suggested that I opened an issue in GCC bugzilla to discuss it, but since my logs are unreliable and spread across a multitude of machines I can't remember who it was (maybe you, not sure).  But I personally know very little about the implications of using -falign-labels=4,
<cousteau> linker voodoo, relocation, and all that stuff
<cousteau> ...oh, it was palmer who suggested it :)
<cousteau> palmer: I filed the bug as you suggested four months ago ^_^"
saulosilva has quit [Quit: Client closed]
heat_ has quit [Remote host closed the connection]
heat has joined #riscv
SpaceCoaster has joined #riscv
saulosilva has joined #riscv
<cousteau> jrtc27: ...and even if the added nops did have a cost, if the loop iterates more than once, it will be better to suffer the nop delay once than to suffer the misalignment delay N times.
<cousteau> But that only works under the assumption that the branch is going to be taken at least once.  It might not.
<jrtc27> for loop labels, sure
<jrtc27> not for labels where a high % of them are reached via fallthrough
<cousteau> are you suggesting to make a distinction between -falign-labels, -falign-jumps, -falign-loops?
<cousteau> (because I'm still not entirely sure how those work)
<jrtc27> yes, -falign-loops is the important one
<jrtc27> and you might as well do -falign-jumps
<jrtc27> but -falign-labels will include fallthroughs
vagrantc has joined #riscv
<cousteau> isn't -falign-labels = -falign-loops + -falign-jumps?
<jrtc27> that aren't loops
<jrtc27> it's a superset of that
<jrtc27> AFAIU
<cousteau> the documentation wasn't entirely clear to me in this regard, but I understood that -loops was for "loops", which I guess means "conditional branches", whereas -jumps was for "stuff that is not the target of conditional branches", and -labels was for both kinds of targets
<jrtc27> jumps doesn't include labels that have fallthrough
<cousteau> -falign-jumps  Align branch targets to a power-of-two boundary, for branch targets where the targets can only be reached by jumping.
<jrtc27> it's ones that are *only* reachable by jumps
<cousteau> -falign-loops  Align loops to a power-of-two boundary.  (for some obscure definition of "loop")
<cousteau> I think my assumption here back in the day was that loops were "targets that can not only be reached by jumping"
<cousteau> so that GCC classified targets as "can only be reached by jumping" and "can not only be reached by jumping", and that -jumps and -loops referred to each of them, whereas -labels was the union of both sets.
<cousteau> This was my assumption and not something I found the documentation to state explicitly, though.
<jrtc27> loops are whatever the compiler's loop detection heuristics decide is a loop
<cousteau> ok
<jrtc27> I would assume
<cousteau> oh, ok
<cousteau> I would assume that your assumption is better than my assumption :)
<cousteau> -falign-labels [...] If -falign-loops or -falign-jumps are applicable and are greater than this value, then their values are used instead.  ->  this statement led me to think that either one or the other were applicable for any given label.
<palmer> it's really a cost modeling thing, and IIRC that's kind of clunky here
mlw has quit [Ping timeout: 248 seconds]
damian101_ has joined #riscv
mlw has joined #riscv
<cousteau> ok, so let's assume there are three types of label: those that are only reachable by jumping (conditionally or unconditionally), those that can be reached by jumping or by fallthrough, but will frequently be reached by jumping, and those that can be reached by jumping or by fallthrough, but will rarely or never be reached by jumping
damian101 has quit [Ping timeout: 248 seconds]
pbsds30 has joined #riscv
<cousteau> in the first case, it doesn't matter if we pad them with nop before the target, because those nop will never be reached
<cousteau> in the second case, if we pad them with nop before the target, then sure, we will have to run the nop once, but the benefit will offset that cost
<cousteau> and in the third case, an extra nop before the target would always have a penalty and rarely a benefit
pbsds3 has quit [Ping timeout: 260 seconds]
pbsds30 is now known as pbsds3
<jrtc27> which is why -falign-labels itself defaults to 1
<cousteau> BUT, if the compiler is smart enough to replace that "extra nop" with a "decompressed instruction", then there won't be any such penalty
<jrtc27> and that's the wrinkle
<jrtc27> the compiler can't know that when linker relaxation is in use
<palmer> oh, I was posting on the bug, but we actually had some code to do that but we didn't merge it. It was for exactly this case, it'd save a cycle in Dhrystone on Rocket ;)
stolen has joined #riscv
TMM has quit [Quit: https://quassel-irc.org - Chat comfortably. Anywhere.]
TMM has joined #riscv
SpaceCoaster has quit [Read error: Connection reset by peer]
SpaceCoaster has joined #riscv
bjdooks has quit [Read error: Connection reset by peer]
bjdooks has joined #riscv
prabhakalad has quit [Ping timeout: 248 seconds]
pbsds33 has joined #riscv
pbsds3 has quit [Ping timeout: 276 seconds]
pbsds33 is now known as pbsds3
mightysands has joined #riscv
<mightysands> Anyone know if booting your Linux distro of choice (gentoo/slackware) onto a Milk-V Jupiter is as simple as dd-ing the iso onto a usb stick ?
<mightysands> I'm wondering how unique each risc-v machine's methods of booting a new OS are
coldfeet has joined #riscv
cousteau has quit [Quit: Client closed]
<palmer> mightysands: it's generally a bit clunkier than that in practice, we're not quite at the point where stuff is that portable yet
naoki has joined #riscv
<mightysands> palmer: Do you know how one might go about installing a new linux OS on the Jupiter ?
<mightysands> I take it every machine is a little different then ?
<mightysands> I found this apparent unofficial port of Slackware to risc64 architecture: https://gitlab.com/sndwvs/slarm64-current
coldfeet has quit [Quit: leaving]
<palmer> ya, there's generally just things like vendor kernel trees and bootloader issues. Nothing super fundamental, they're just poorly supported systems so things tend to be fragile. Best bet is to just look at the vendor docs
<wmat> mightysands: you might find something useful in the vendor's forums https://community.milkv.io/c/jupiter/15 as well
<mightysands> hmm. Says the Jupiter can boot through SD card, eMMC, and SSD (M.2 NVMe)
<mightysands> thanks for the link
heat has quit [Ping timeout: 248 seconds]
coldfeet has joined #riscv
heat has joined #riscv
mightysands has quit [Ping timeout: 245 seconds]
damian101 has joined #riscv
damian101_ has quit [Ping timeout: 244 seconds]
saulosilva has quit [Quit: Client closed]
___nick___ has joined #riscv
BootLayer has quit [Quit: Leaving]
___nick___ has quit [Client Quit]
___nick___ has joined #riscv
raym has joined #riscv
mightysands has joined #riscv
stolen has quit [Quit: Connection closed for inactivity]
___nick___ has quit [Ping timeout: 244 seconds]
heat has quit [Remote host closed the connection]
heat has joined #riscv
pbsds3 has quit [Quit: The Lounge - https://thelounge.chat]
pbsds3 has joined #riscv
psydroid has quit [Read error: Connection reset by peer]
psydroid has joined #riscv
danilogondolfo has quit [Quit: Leaving]
craigo has quit [Quit: Leaving]
fuwei has quit [Ping timeout: 276 seconds]
mightysands has quit [Remote host closed the connection]
coldfeet has quit [Remote host closed the connection]
damian101_ has joined #riscv
damian101 has quit [Ping timeout: 248 seconds]
alifib has quit [Ping timeout: 252 seconds]
coldfeet has joined #riscv
dakralex has quit [Quit: Leaving]
mlw has quit [Ping timeout: 276 seconds]
JanC has quit [Remote host closed the connection]
JanC has joined #riscv
ldevulder has quit [Quit: Leaving]
saulosilva has joined #riscv
<drmpeg> HiFive P550 running my ATSC 3.0 transmitter. This is the first RISC-V board with enough horsepower to run this flow. https://www.w6rz.net/p550.mp4
ganboing has joined #riscv
nexR has quit [Ping timeout: 260 seconds]
nexR has joined #riscv
<ganboing> drmpeg, I
<ganboing> I'm also doing some perf on the p550
<ganboing> Perhaps they disabled some features to workaround CPU erratas. I want to see if we can get more perf out of it
<drmpeg> Is that code even in the Ubuntu or Yocto code? I thought they're using a patched mainline OpenSBI.
<ganboing> On sifive forum, I'm trying to ask them if ASID/VMID can be enabled through those CSRs: https://forums.sifive.com/t/asid-vmid-support-in-p550-eic7700x/6887
<drmpeg> Ahh, I see. Patched a little differently.
<ganboing> No ASID support will also negatively impact perf
<drmpeg> We'll see if you get an answer. I guess it's not in the giant TRM.
saulosilva has quit [Quit: Client closed]
coldfeet has quit [Quit: Lost terminal]
saulosilva has joined #riscv
alexghiti has quit [Ping timeout: 265 seconds]
saulosilva has quit [Quit: Client closed]
nexR has quit [Read error: Connection reset by peer]
<drmpeg> BTW, if you build a new u-boot for the P550, I think this patch is buggy. It breaks es_burn. https://github.com/eswincomputing/u-boot/commit/8a666de5d83e66772b69eb10cec4d0c410c30189
<drmpeg> I had to use the USB recovery (which works good).
nexR has joined #riscv