TESTINST2("clz w17, w22", 0x0070FFFF01FFFFFFULL, x17, x22, 0);
+////////////////////////////////////////////////////////////////
+printf("CLS\n");
+
+TESTINST2("cls x17, x22", 0x0FFFFFFFFFFFFFFFULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0x1FFFFFFFFFFFFFFFULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0x2FFFFFFFFFFFFFFFULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0x3FFFFFFFFFFFFFFFULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0x4FFFFFFFFFFFFFFFULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0x5FFFFFFFFFFFFFFFULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0x6FFFFFFFFFFFFFFFULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0x7FFFFFFFFFFFFFFFULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0x8FFFFFFFFFFFFFFFULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0x9FFFFFFFFFFFFFFFULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0xAFFFFFFFFFFFFFFFULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0xBFFFFFFFFFFFFFFFULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0xCFFFFFFFFFFFFFFFULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0xDFFFFFFFFFFFFFFFULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0xEFFFFFFFFFFFFFFFULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0xFFFFFFFFFFFFFFFFULL, x17, x22, 0);
+
+TESTINST2("cls x17, x22", 0xFFFFFFFFFFFFFFF0ULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0xFFFFFFFFFFFFFFF1ULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0xFFFFFFFFFFFFFFF2ULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0xFFFFFFFFFFFFFFF3ULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0xFFFFFFFFFFFFFFF4ULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0xFFFFFFFFFFFFFFF5ULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0xFFFFFFFFFFFFFFF6ULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0xFFFFFFFFFFFFFFF7ULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0xFFFFFFFFFFFFFFF8ULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0xFFFFFFFFFFFFFFF9ULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0xFFFFFFFFFFFFFFFAULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0xFFFFFFFFFFFFFFFBULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0xFFFFFFFFFFFFFFFCULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0xFFFFFFFFFFFFFFFDULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0xFFFFFFFFFFFFFFFEULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0xFFFFFFFFFFFFFFFFULL, x17, x22, 0);
+
+TESTINST2("cls x17, x22", 0x0000000000000000ULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0x1000000000000000ULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0x2000000000000000ULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0x3000000000000000ULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0x4000000000000000ULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0x5000000000000000ULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0x6000000000000000ULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0x7000000000000000ULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0x8000000000000000ULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0x9000000000000000ULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0xA000000000000000ULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0xB000000000000000ULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0xC000000000000000ULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0xD000000000000000ULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0xE000000000000000ULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0xF000000000000000ULL, x17, x22, 0);
+
+TESTINST2("cls x17, x22", 0x0000000000000000ULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0x0000000000000001ULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0x0000000000000002ULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0x0000000000000003ULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0x0000000000000004ULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0x0000000000000005ULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0x0000000000000006ULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0x0000000000000007ULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0x0000000000000008ULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0x0000000000000009ULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0x000000000000000AULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0x000000000000000BULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0x000000000000000CULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0x000000000000000DULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0x000000000000000EULL, x17, x22, 0);
+TESTINST2("cls x17, x22", 0x000000000000000FULL, x17, x22, 0);
+
+TESTINST2("cls x17, x22", 0x0070FFFF01FFFFFFULL, x17, x22, 0);
+
+TESTINST2("cls w17, w22", 0xFFFFFFFFFFFFFFFFULL, x17, x22, 0);
+TESTINST2("cls w17, w22", 0xFFFFFFFFFFFFFFFFULL, x17, x22, 0);
+TESTINST2("cls w17, w22", 0xFFFFFFFF5FFFFFFFULL, x17, x22, 0);
+TESTINST2("cls w17, w22", 0xFFFFFFFFAFFFFFFFULL, x17, x22, 0);
+TESTINST2("cls w17, w22", 0xFFFFFFFF0FFFFFFFULL, x17, x22, 0);
+
+TESTINST2("cls w17, w22", 0xFFFFFFFFFFFFFFFFULL, x17, x22, 0);
+TESTINST2("cls w17, w22", 0xFFFFFFFFFFFFFFF5ULL, x17, x22, 0);
+TESTINST2("cls w17, w22", 0xFFFFFFFFFFFFFFFAULL, x17, x22, 0);
+TESTINST2("cls w17, w22", 0xFFFFFFFFFFFFFFF0ULL, x17, x22, 0);
+
+TESTINST2("cls w17, w22", 0x0000000000000000ULL, x17, x22, 0);
+
+TESTINST2("cls w17, w22", 0x0070FFFF01FFFFFFULL, x17, x22, 0);
+
+
////////////////////////////////////////////////////////////////
printf("LSLV/LSRV/ASRV\n");
clz w17, w22 :: rd 0000000000000000 rn ffffffffffffffff, cin 0, nzcv 00000000
clz w17, w22 :: rd 0000000000000020 rn 0000000000000000, cin 0, nzcv 00000000
clz w17, w22 :: rd 0000000000000007 rn 0070ffff01ffffff, cin 0, nzcv 00000000
+CLS
+cls x17, x22 :: rd 0000000000000003 rn 0fffffffffffffff, cin 0, nzcv 00000000
+cls x17, x22 :: rd 0000000000000002 rn 1fffffffffffffff, cin 0, nzcv 00000000
+cls x17, x22 :: rd 0000000000000001 rn 2fffffffffffffff, cin 0, nzcv 00000000
+cls x17, x22 :: rd 0000000000000001 rn 3fffffffffffffff, cin 0, nzcv 00000000
+cls x17, x22 :: rd 0000000000000000 rn 4fffffffffffffff, cin 0, nzcv 00000000
+cls x17, x22 :: rd 0000000000000000 rn 5fffffffffffffff, cin 0, nzcv 00000000
+cls x17, x22 :: rd 0000000000000000 rn 6fffffffffffffff, cin 0, nzcv 00000000
+cls x17, x22 :: rd 0000000000000000 rn 7fffffffffffffff, cin 0, nzcv 00000000
+cls x17, x22 :: rd 0000000000000000 rn 8fffffffffffffff, cin 0, nzcv 00000000
+cls x17, x22 :: rd 0000000000000000 rn 9fffffffffffffff, cin 0, nzcv 00000000
+cls x17, x22 :: rd 0000000000000000 rn afffffffffffffff, cin 0, nzcv 00000000
+cls x17, x22 :: rd 0000000000000000 rn bfffffffffffffff, cin 0, nzcv 00000000
+cls x17, x22 :: rd 0000000000000001 rn cfffffffffffffff, cin 0, nzcv 00000000
+cls x17, x22 :: rd 0000000000000001 rn dfffffffffffffff, cin 0, nzcv 00000000
+cls x17, x22 :: rd 0000000000000002 rn efffffffffffffff, cin 0, nzcv 00000000
+cls x17, x22 :: rd 000000000000003f rn ffffffffffffffff, cin 0, nzcv 00000000
+cls x17, x22 :: rd 000000000000003b rn fffffffffffffff0, cin 0, nzcv 00000000
+cls x17, x22 :: rd 000000000000003b rn fffffffffffffff1, cin 0, nzcv 00000000
+cls x17, x22 :: rd 000000000000003b rn fffffffffffffff2, cin 0, nzcv 00000000
+cls x17, x22 :: rd 000000000000003b rn fffffffffffffff3, cin 0, nzcv 00000000
+cls x17, x22 :: rd 000000000000003b rn fffffffffffffff4, cin 0, nzcv 00000000
+cls x17, x22 :: rd 000000000000003b rn fffffffffffffff5, cin 0, nzcv 00000000
+cls x17, x22 :: rd 000000000000003b rn fffffffffffffff6, cin 0, nzcv 00000000
+cls x17, x22 :: rd 000000000000003b rn fffffffffffffff7, cin 0, nzcv 00000000
+cls x17, x22 :: rd 000000000000003c rn fffffffffffffff8, cin 0, nzcv 00000000
+cls x17, x22 :: rd 000000000000003c rn fffffffffffffff9, cin 0, nzcv 00000000
+cls x17, x22 :: rd 000000000000003c rn fffffffffffffffa, cin 0, nzcv 00000000
+cls x17, x22 :: rd 000000000000003c rn fffffffffffffffb, cin 0, nzcv 00000000
+cls x17, x22 :: rd 000000000000003d rn fffffffffffffffc, cin 0, nzcv 00000000
+cls x17, x22 :: rd 000000000000003d rn fffffffffffffffd, cin 0, nzcv 00000000
+cls x17, x22 :: rd 000000000000003e rn fffffffffffffffe, cin 0, nzcv 00000000
+cls x17, x22 :: rd 000000000000003f rn ffffffffffffffff, cin 0, nzcv 00000000
+cls x17, x22 :: rd 000000000000003f rn 0000000000000000, cin 0, nzcv 00000000
+cls x17, x22 :: rd 0000000000000002 rn 1000000000000000, cin 0, nzcv 00000000
+cls x17, x22 :: rd 0000000000000001 rn 2000000000000000, cin 0, nzcv 00000000
+cls x17, x22 :: rd 0000000000000001 rn 3000000000000000, cin 0, nzcv 00000000
+cls x17, x22 :: rd 0000000000000000 rn 4000000000000000, cin 0, nzcv 00000000
+cls x17, x22 :: rd 0000000000000000 rn 5000000000000000, cin 0, nzcv 00000000
+cls x17, x22 :: rd 0000000000000000 rn 6000000000000000, cin 0, nzcv 00000000
+cls x17, x22 :: rd 0000000000000000 rn 7000000000000000, cin 0, nzcv 00000000
+cls x17, x22 :: rd 0000000000000000 rn 8000000000000000, cin 0, nzcv 00000000
+cls x17, x22 :: rd 0000000000000000 rn 9000000000000000, cin 0, nzcv 00000000
+cls x17, x22 :: rd 0000000000000000 rn a000000000000000, cin 0, nzcv 00000000
+cls x17, x22 :: rd 0000000000000000 rn b000000000000000, cin 0, nzcv 00000000
+cls x17, x22 :: rd 0000000000000001 rn c000000000000000, cin 0, nzcv 00000000
+cls x17, x22 :: rd 0000000000000001 rn d000000000000000, cin 0, nzcv 00000000
+cls x17, x22 :: rd 0000000000000002 rn e000000000000000, cin 0, nzcv 00000000
+cls x17, x22 :: rd 0000000000000003 rn f000000000000000, cin 0, nzcv 00000000
+cls x17, x22 :: rd 000000000000003f rn 0000000000000000, cin 0, nzcv 00000000
+cls x17, x22 :: rd 000000000000003e rn 0000000000000001, cin 0, nzcv 00000000
+cls x17, x22 :: rd 000000000000003d rn 0000000000000002, cin 0, nzcv 00000000
+cls x17, x22 :: rd 000000000000003d rn 0000000000000003, cin 0, nzcv 00000000
+cls x17, x22 :: rd 000000000000003c rn 0000000000000004, cin 0, nzcv 00000000
+cls x17, x22 :: rd 000000000000003c rn 0000000000000005, cin 0, nzcv 00000000
+cls x17, x22 :: rd 000000000000003c rn 0000000000000006, cin 0, nzcv 00000000
+cls x17, x22 :: rd 000000000000003c rn 0000000000000007, cin 0, nzcv 00000000
+cls x17, x22 :: rd 000000000000003b rn 0000000000000008, cin 0, nzcv 00000000
+cls x17, x22 :: rd 000000000000003b rn 0000000000000009, cin 0, nzcv 00000000
+cls x17, x22 :: rd 000000000000003b rn 000000000000000a, cin 0, nzcv 00000000
+cls x17, x22 :: rd 000000000000003b rn 000000000000000b, cin 0, nzcv 00000000
+cls x17, x22 :: rd 000000000000003b rn 000000000000000c, cin 0, nzcv 00000000
+cls x17, x22 :: rd 000000000000003b rn 000000000000000d, cin 0, nzcv 00000000
+cls x17, x22 :: rd 000000000000003b rn 000000000000000e, cin 0, nzcv 00000000
+cls x17, x22 :: rd 000000000000003b rn 000000000000000f, cin 0, nzcv 00000000
+cls x17, x22 :: rd 0000000000000008 rn 0070ffff01ffffff, cin 0, nzcv 00000000
+cls w17, w22 :: rd 000000000000001f rn ffffffffffffffff, cin 0, nzcv 00000000
+cls w17, w22 :: rd 000000000000001f rn ffffffffffffffff, cin 0, nzcv 00000000
+cls w17, w22 :: rd 0000000000000000 rn ffffffff5fffffff, cin 0, nzcv 00000000
+cls w17, w22 :: rd 0000000000000000 rn ffffffffafffffff, cin 0, nzcv 00000000
+cls w17, w22 :: rd 0000000000000003 rn ffffffff0fffffff, cin 0, nzcv 00000000
+cls w17, w22 :: rd 000000000000001f rn ffffffffffffffff, cin 0, nzcv 00000000
+cls w17, w22 :: rd 000000000000001b rn fffffffffffffff5, cin 0, nzcv 00000000
+cls w17, w22 :: rd 000000000000001c rn fffffffffffffffa, cin 0, nzcv 00000000
+cls w17, w22 :: rd 000000000000001b rn fffffffffffffff0, cin 0, nzcv 00000000
+cls w17, w22 :: rd 000000000000001f rn 0000000000000000, cin 0, nzcv 00000000
+cls w17, w22 :: rd 0000000000000006 rn 0070ffff01ffffff, cin 0, nzcv 00000000
LSLV/LSRV/ASRV
lslv x21,x20,x19 :: rd 2a8227efa64a2800 rm 4b154113f7d32514, rn cce230caafbf9cc9, cin 0, nzcv 00000000
lslv x21,x20,x19 :: rd 75655c8753c4c000 rm 33d5d595721d4f13, rn f4509311f443a7ce, cin 0, nzcv 00000000