GC3000 supports some 4-wide integer ops
Wladimir J. van der Laan
laanwj at gmail.com
Fri Dec 9 08:37:03 UTC 2016
On Thu, Dec 08, 2016 at 01:40:50PM +0100, Wladimir J. van der Laan wrote:
>
> Just something I happened to stumble upon after updating verify_ops in
> etnaviv_gpu_tests for GC3000. There, some of the integer shader op tests were
> failing.
>
> First I thought they broke some instructions, but it turns out that the bitwise
> instructions went from 1-wide to 4-wide!
>
> - add.u32 and imul variants are still scalar.
Wrong: the integer add instruction has also become 4-wide SIMD!
I was testing the add int instruction wrongly in verifyops.
(e.g. the test harness was testing
0x00841001, 0x00202800, 0x80000000, 0x00000038
0: add.u32 t4.x___, t2.xxxx, void, t3.xxxx
instead of:
0x07841001, 0x39202800, 0x80000000, 0x00390038,
0: add.u32 t4, t2, void, t3
... so my observations about it are partially wrong. Will update isa.xml)
I checked if the same mistake was made for imullo0/imulhi0/imadlo0 but no -
the integer *multiplications* are really still scalar. This makes some sense
as an integer multiplier is an expensive piece of circuitry to spam
four times, can't really re-task the floating point multiplier for it either
due to the larger range.
Wladimir
More information about the etnaviv
mailing list