verifyops: Add test for popcount
diff --git a/src/etnaviv_verifyops.c b/src/etnaviv_verifyops.c
index 189b30f..a8e7eed 100644
--- a/src/etnaviv_verifyops.c
+++ b/src/etnaviv_verifyops.c
@@ -116,6 +116,7 @@
         for (unsigned i=0; i<code_ptr; ++i)
             etna_set_state(stream, VIVS_SH_INST_MEM(i), code[i]);
     }
+
     /* Set uniforms */
     etna_set_state_from_bo(stream, uniform_base + 0*4, out, ETNA_RELOC_WRITE); /* u0.x */
     etna_set_state_from_bo(stream, uniform_base + 1*4, in0, ETNA_RELOC_READ); /* u0.y */
@@ -374,6 +375,7 @@
 CPU_COMPUTE_FUNC1_BCAST(xoru32_compute_cpu, uint32_t, A ^ B);
 CPU_COMPUTE_FUNC1_BCAST(notu32_compute_cpu, uint32_t, ~A);
 CPU_COMPUTE_FUNC1_BCAST(leadzerou32_compute_cpu, uint32_t, (A != 0) ? __builtin_clz(A) : 0x20);
+CPU_COMPUTE_FUNC1_BCAST(popcountu32_compute_cpu, uint32_t, __builtin_popcount(A));
 /* 4-wide u32 (GC3000) */
 CPU_COMPUTE_FUNC1_MULTI(addu32_4w_compute_cpu, uint32_t, AI(i) + BI(i));
 CPU_COMPUTE_FUNC1_MULTI(lshiftu32_4w_compute_cpu, uint32_t, AI(i) << (BI(i)&31));
@@ -384,6 +386,7 @@
 CPU_COMPUTE_FUNC1_MULTI(xoru32_4w_compute_cpu, uint32_t, AI(i) ^ BI(i));
 CPU_COMPUTE_FUNC1_MULTI(notu32_4w_compute_cpu, uint32_t, ~AI(i));
 CPU_COMPUTE_FUNC1_MULTI(leadzerou32_4w_compute_cpu, uint32_t, (AI(i) != 0) ? __builtin_clz(AI(i)) : 0x20);
+CPU_COMPUTE_FUNC1_MULTI(popcountu32_4w_compute_cpu, uint32_t, __builtin_popcount(AI(i)));
 /* float */
 CPU_COMPUTE_FUNC1_MULTI(addf32_compute_cpu, float, AI(i) + BI(i));
 CPU_COMPUTE_FUNC1_MULTI(mulf32_compute_cpu, float, AI(i) * BI(i));
@@ -485,6 +488,12 @@
             0x07841018, 0x00200000, 0x80010000, 0x00390028, /* leadzero.u32  t4, void, void, t2 */
         }))
     },
+    {"popcount.u32", HWT_GC2000, CT_INT32_BCAST, i32_generate_values_h, NULL, (void*)popcountu32_compute_cpu,
+        GPU_CODE(((uint32_t[]){
+            0x07841021, 0x00200000, 0x80010000, 0x00390028, /* popcount.u32    t4, void, void, t2 */
+        }))
+    },
+
     /** Conversion instructions - GC2000 */
     {"f2i.s32", HWT_GC2000, CT_INT32_BCAST, i32_generate_values_h, NULL, (void*)f2i_s32_compute_cpu,
         GPU_CODE(((uint32_t[]){
@@ -556,6 +565,11 @@
             0x07841018, 0x00200000, 0x80010000, 0x00390028, /* leadzero.u32  t4, void, void, t2 */
         }))
     },
+    {"popcount.u32", HWT_GC3000, CT_INT32, i32_generate_values_h, NULL, (void*)popcountu32_4w_compute_cpu,
+        GPU_CODE(((uint32_t[]){
+            0x07841021, 0x00200000, 0x80010000, 0x00390028, /* popcount.u32    t4, void, void, t2 */
+        }))
+    },
 
     /** Conversion instructions - GC3000 */
     {"f2i.s32", HWT_GC3000, CT_INT32, i32_generate_values_h, NULL, (void*)f2i_s32_4w_compute_cpu,