xet7 has quit [Read error: Connection reset by peer]
ikarso has quit [Quit: Connection closed for inactivity]
vagrantc has quit [Quit: leaving]
KREYREN has joined #beagle
Shadyman has joined #beagle
brook_ has joined #beagle
brook has quit [Ping timeout: 276 seconds]
buzzmarshall has quit [Quit: Konversation terminated!]
KREYREN has quit [Remote host closed the connection]
KREYREN has joined #beagle
KREYREN has quit [Remote host closed the connection]
KREYREN has joined #beagle
KREYREN has quit [Remote host closed the connection]
KREYREN has joined #beagle
KREYREN has quit [Remote host closed the connection]
KREYREN has joined #beagle
KREYREN has quit [Remote host closed the connection]
KREYREN has joined #beagle
KREYREN has quit [Remote host closed the connection]
KREYREN has joined #beagle
KREYREN has quit [Remote host closed the connection]
Shadyman has quit [Quit: Leaving.]
xet7 has joined #beagle
<zmatt>
dinuxbg: just general stupidity, things like a mov rA, rB where rA is subsequently only used within the same basic block during which rB remains alive and unchanged
<zmatt>
lemme see if I can find some concrete examples
<zmatt>
lol I definitely can
<zmatt>
dinuxbg: here's some beautiful examples of clpru output of very basic expressions, at high optimization level: https://pastebin.com/UbBBX8Yt (I've reformatted the asm to be mode gnu-style for readability, clpru's use of || in labels breaks syntax highlighting in my editor :P )
<zmatt>
some of these I can understand (but not necessarily excuse), some baffle me
<zmatt>
like, the last example, I understand what's happening there but there's really not a valid excuse for this happening... like, when you're compiling C (with its tendency to promote things to signed int) to a cpu that has no signed comparison instructions it seems pretty obvious to me that you need to catch obvious cases where comparison arguments can't be negative and therefore unsigned comparison can ...
<zmatt>
...be done instead
<zmatt>
even the most rudimentary form of range analysis should have caught this
<zmatt>
in this case range analysis would also tell you that (a - 3) never wraps and therefore this comparison can be implemented using two instructions (subtract, extract sign bit)
<zmatt>
the two functions above it use a temporary register and two or even three instructions to set a single bit in a variable, even though the cpu has a dedicated 'set' instruction for that
<zmatt>
there's just lots of little things like this. general stupidity resulting in diffusely poor code output
<zmatt>
given that clpru is based on their earlier compilers like cl6x, you'd think there's surely already a target-independent range analysis pass in the compiler, but maybe the target-specific backend is just failing to take advantage of it
<set_>
Is there a way to flash the firmware to the BBAI-64?
<set_>
I reserved my right to ruin it by default by this command...
<set_>
blkdiscard /dev/mmcblk*
<set_>
I was in a ash shell under a initramfs root...
<set_>
I tried another image to boot. No go. I also tried to boot back into a u-boot instance. No go.
<set_>
One LED and no flashy business going on w/ the user LED. Just PWR.
<set_>
bbl...off to OZ.
Stat_headcrabed has joined #beagle
SJFriedl has quit [Quit: Leaving]
SJFriedl has joined #beagle
Stat_headcrabed has quit [Quit: Stat_headcrabed]
Stat_headcrabed has joined #beagle
Stat_headcrabed has quit [Quit: Stat_headcrabed]
<dinuxbg>
zmatt: My ulterior motive was to see how GCC fares in comparison to clpru :) For all your particular examples, latest GCC produces efficient code.