cancel
Showing results for 
Search instead for 
Did you mean: 

Archives Discussions

realhet
Miniboss

Why GCN3 ISA is so incompatible with the previous version?

Hi,

s_load_buffer changed from 32 to 64 bits, so it supports a bigger offset, that's reasonable.

But why rearrange the flag bits in the MUBUF encoding?

Also in VOP3a, only the clamp bit is repositioned.

And most interestingly VOP2 opcodes are changed as well. o.O (I haven't seen the other opcodes yet, but I can guess they changed as well.)

Is this incompatibility has a higher purpose? Less transistor count in the chip for example?

For the assembler it is not that good, as now it has to support both the old and the new ISA. Including Evergreen there is now 3 different ISAs to produce in total.

(Also the disassembler still not works on ISA-only elf files, but I guess it is for the protection of kernel files to make them harder to reverse-engineer.)

On the hardware side, it's a great new gpu. I always find some new stuff, like now I've found a real time clock (s_memrealtime), and a special 16bit shl thingy.

1 Solution
matszpk
Adept III

Unfortunatelly GCN1.2 (GCN 3 gen) is not compatible bit-by-bit with older GCN architectures. Many (maybe almost) opcodes has been changed, SMRD encoding has been replaced by SMEM (now GCN1.2 allow to read and write to scalar memory). These are part of the changes between GCN1.0/1.1 gen and GCN1.2 arch.

Nevertheless, couple months ago, I wrote a working disassembler that supports GCN1.2. Now, I am finishing assembler will support GCN1.2.

I don't know, whether new documentation is correct in the almost cases. While writing disassembler I based on the reverse-engineering of the builtin disassembler from Catalyst drivers. I didn't verify my stuff in 100% percent, because I don't have access to Fiji or Tonga GPU's.

However, maybe my work will be useful for people which want to learn about new GCN architecture.

I refer to my work: CLRadeonExtender . This work contains the OpenCL (Catalyst and GalliumCompute) binaries generator, an assembler (still unfinished) and a disassembler and other stuff.

I am using the Linux (OpenSUSE), so my project was tested on the Linux systems.

View solution in original post

0 Likes
27 Replies