For those who don't get the joke, certain instructions like addi r0,r0,1 (encoded as addi 0,0,1) actually get turned into addi r0,0,1 -- instead of adding one to the contents of r0, they add one to zero, putting one in r0. This is to facilitate loading immediates, so a typical "load32" does an addis (same r0 limitation) to load the upper 16 bits followed by an ori (doesn't) to load the bottom.
This is maddening if you don't watch what you're doing, which is why RISC architectures that make a register explicitly always zero are sometimes less obnoxious (MIPS).
The article is, however, disingenuous about branching. Virtually any PPC (dis)assembler worth its salt will use extended mnemonics for the bc instructions the author complains about. Plus, you can branch on arbitrary bits in the condition register fields, which the bzero32 routine in Mac OS X uses to great effect (mtcrf 0x01,r4 puts the lower four bits into the condition field, and then it just tests each individual bit with a bf branch -- no compares needed!).
https://en.wikipedia.org/wiki/Enforce_In-order_Execution_of_...
...I also liked instructions like rlwinm and stfsux. There was no "stfu" but it does sound plausible...
addis/addi was the suggested way to load a 32-but value in the Compiler Writer's Guide to take advantage of some mythical 3-input adder hardware, but was there ever an implementation that actual had one and a fetch/issue that supported it? Not in 603/604 afaict.
ETA: [stuff about mtcr serialization which I misremembered.] The early stuff had low penalty branch mispredicts, so you would just do andi. or cmpi and however many branches.
SPR numbering included non-problem state (privileged) registers. That's why it's sparse looking from user space.
I sort of got that from the article, though: The official PowerPC assembly syntax is confusing, so (dis)assemblers added some extensions to make it more readable/writable. E.g.: "This is ridiculously confusing,² so nobody uses the purely numeric names. People call them r0 through r31. (Some assemblers call them r.0 through r.31.)"
or is there any other group that cares about this today?
Even on low-end phones you can safely use c.
The real irony was the existence and support of Windows NT on PowerPC (up to the W2K betas), so Microsoft actually didn't have much of a beef with supporting the architecture in general after all; they just didn't think doing the engineering on the 615 specifically was worth the cost.
https://www.itprotoday.com/windows-8/windows-nt-powerpc-no-m...
https://www.computer.org/csdl/proceedings/cmpcon/1994/5380/0...
I remember rumours that Motorola also paid Microsoft money for the privilege of doing all the work.
And to think people complain about the number of ARM instruction sets :)
There's still a lot of Power chips in the embedded space and high end server hardware, and there are also boutique systems like the modern Amiga (mostly embedded chips) and the Talos II (POWER9).
https://blogs.msdn.microsoft.com/oldnewthing/20180720-00/?p=...