top | item 6931741

PS4's LLVM-based Developer Toolchain [pdf]

95 points| adamnemecek | 12 years ago |llvm.org | reply

19 comments

order
[+] jmgrosen|12 years ago|reply
Function-level optnone is definitely something I would appreciate as well. Optimized code can often look nothing like the original code... and having the whole binary non-optimized is just too slow.
[+] jevinskie|12 years ago|reply
I'm eagerly awaiting its inclusion. It isn't as simple of a task as it would seem. Unfortunately, you can't simply disable all of the passes in LLVM. Some aren't optimizations at all and are transforms required for subsequent optimization passes. MachineFunction passes are even trickier. Some are strictly necessary for correct codegen.
[+] chucknelson|12 years ago|reply
Anyone else find it strange that these slides are filled with some pretty hardcore technical jargon, yet on one of the slides they feel the need to clarify "GDDR5 is very high end graphics memory only found on PC graphics cards"? :)
[+] adamnemecek|12 years ago|reply
It was given at some LLVM conference so most people in the audience are probably compiler people who will probably know a lot about compilers and less about GPUs.
[+] aardvark179|12 years ago|reply
Often if you are representing a large company or product you have to go through some brand approval process with your presentation, so spec summaries frequently get the standard marketing descriptions added. It seems stupid in context, but the concern is often the slide being shown out of context.
[+] shaggyfrog|12 years ago|reply
My kingdom for a proper technical report instead of a slide deck consisting of thick walls of bullet points.
[+] nomadlogic|12 years ago|reply
Wonder how big of a factor that the upstream PS4 OS codebase now using LLVM/Clang was in this decision. Even if the PS4 wasn't FreeBSD based I can see the switch making sense on it's own tbh.
[+] Sanddancer|12 years ago|reply
Doesn't seem like any factor, there. The PS4 is using FreeBSD 9 as the kernel, which was still built with gcc.
[+] wereHamster|12 years ago|reply
I wonder why they wrote their own linker instead of improving gold.
[+] axman6|12 years ago|reply
Isn't gold specifically targetted at x86 and/or linux only (I can't remember which)? Having it as part of the LLVM project means they can use a lot of the infrastructure that already exists, and exists to used as libraries, and also allows them to write the code as another set of libraries for use in other unforseen systems. It's also aimed at being a generic linker for use on many different platforms. I don't think gold has these goals; from I remember they were just after speed on their target platform.
[+] unknown|12 years ago|reply

[deleted]

[+] asmman1|12 years ago|reply
What was used before? gcc?
[+] maximilianburke|12 years ago|reply
The PS3 uses both SNC and GCC (4.1). The developer has a choice of using SNC or GCC when generating code for the PPU -- the general purpose processor on the PS3 -- but only GCC is available when building code for the SPUs.

SNC is (was?) a great compiler. The code it generated was faster and significantly smaller than that generated by GCC, while being much faster at building to boot. Later versions of SNC added limited C++11 support as well.

[+] alepper|12 years ago|reply
Slide 13. TL;DR: From Sony, yes - as well as an independent third party toolchain.