ntt

Vega56 driver, popcnt illegal instruction

Discussion created by ntt on Aug 30, 2019

Hello,
my PC is a bit special in the way that I'm currently using an old (overclocked) Core 2 Quad Q6600 CPU with Vega 56 GPU. I'm using Windows 10 Pro 64-bit and the problem is that I can install and use the Crimson 17.11.4 drivers, but newer 18 and 19 Adrenalin series drivers fail to install and load. (I don't have any problems with the amdgpu driver in Linux.)


Driver installation itself doesn't give any error message, but Vega 56 crashes during it (I guess that might be when it tries to load the new driver), and Windows 10 reverts back to the default basic driver.
After restarting, the driver fails to load and Windows log shows that mostly module atidxx64.dll (version 26.20.11015.5009, Adrenalin 19.5.2) in dwm.exe or dxgiadaptercache.exe causes exception 0xc000001d (STATUS_ILLEGAL_INSTRUCTION) Fault Offset 0x0000000000818a90, which I suppose may be the reason for the driver not working (?).
Graphics card in device manager shows that it was stopped as it reported problems.

 

I checked the atidxx64.dll with 'objdump -d atidxx64.dll atidxx64.asm' if there are some SSE4 or AVX instructions that my CPU wouldn't support, and it looks like there is POPCNT instruction at similar address as the fault offset in Windows log.
So it looks like it tries to execute POPCNT instruction which indeed is not supported by my CPU.


The 17.11 driver that works seems to have SSE4 and AVX instructions too so I was wondering if it is intentional or a bug/mistake to have POPCNT used on all CPUs? i.e. will my old CPU ever be able to run new drivers?
If some AMD engineer follows these forums it'd be fun to know so that I don't have to check future drivers for nothing.

 

In the case support for Core 2 CPUs was intentionally dropped in Adrenalin driver, the installer should be improved to warn the user beforehand about incompatible system.

 

 

 

Attached are search results from the atidxx64.dll files:

Outcomes