"GPU-z, GPU caps viewer etc in general are not necessarily accurate. The ISVs that develop these tools don't have a way to query our HW"
While this MAY be true of GPU-Z, it is certainly NOT TRUE of gpu caps viewer.
100% certified honest to god absolutely positively NOT TRUE!
GPU caps viewer uses clGetDeviceInfo() with param_name = "CL_DEVICE_MAX_COMPUTE_UNITS" to obtain the number of compute units.
So the value reported by GPU caps viewer comes from an intel piece of softare: the intel opencl stack.
Maybe the intel opencl stack reports inacurate values?
From the link you provided (and which i have read before starting this discussion) we learn of a GT1.5 with 12 EUs, which is EXACTLY what GPU caps viewer reports.
Furthermore:
It appears then, that intel uses "HD 4400" for TWO different products: one with 20 EUs used in ultrabook haswells with GT2 graphics and one with 12 EUs used in desktop haswells with GT1.5 graphics.
God knows what the 4200 is really, then.
Can you confirm this?