dotnet/runtime · error

CPU doesn't seem to support any vectorized ISA, bye-bye

Error message

CPU doesn't seem to support any vectorized ISA, bye-bye

What it means

After InitSupportedInstructionSet, the vxsort demo (demo.cpp:74-77) checks for AVX2, then AVX512F on x86 (NEON on AArch64). If none of the supported vectorized ISAs are present, it falls into the else block, prints this, and returns -2. The CPU cannot run the vectorized sort kernels.

Source

Thrown at src/coreclr/gc/vxsort/standalone/demo/demo.cpp:76

    }
    else if (IsSupportedInstructionSet (InstructionSet::AVX512F))
    {
        fprintf(stderr, "Sorting with AVX512...");
        do_vxsort_avx512(begin, end, range_low, range_high);
        fprintf(stderr, "...done!\n");
    }
    else
#elif defined(CPU_FEATURES_ARCH_AARCH64)
    if (IsSupportedInstructionSet (InstructionSet::NEON))
    {
        fprintf(stderr, "Sorting with NEON...");
        do_vxsort_neon(begin, end, range_low, range_high);
        fprintf(stderr, "...done!\n");
    }
    else
#endif
    {
        fprintf(stderr, "CPU doesn't seem to support any vectorized ISA, bye-bye\n");
        return -2;
    }

    auto prev = START - (1 << SHIFT);
    for (auto & element : v) {
        fprintf(stderr, "%p\n", element);
        assert(element == prev + (1 << SHIFT));
        prev = element;
    }

    return 0;
}

View on GitHub (pinned to 290d5ab72c)

Solutions

  1. Run on a host whose CPU supports AVX2 (most Intel Haswell+/AMD Ryzen and later) or NEON.
  2. Expose AVX to the VM (check hypervisor CPU flag passthrough).
  3. If only testing, use a different sort path / do not rely on this demo.

Example fix

// before (VM hides AVX)
./demo 1000000   # CPU doesn't seem to support any vectorized ISA, bye-bye
// after (enable AVX2 passthrough in hypervisor)
./demo 1000000
Defensive patterns

Strategy: validation

Validate before calling

// Detect AVX2/AVX512 (x86) or NEON (ARM) before running the demo.
#include <cpuid.h>
unsigned int eax, ebx, ecx, edx;
__cpuid(7, 0, eax, ebx, ecx, edx);
bool hasAvx2 = (ebx & (1 << 5)) != 0;
bool hasAvx512 = (ebx & (1 << 16)) != 0;
if (!(hasAvx2 || hasAvx512)) { fprintf(stderr, "no vectorized ISA; aborting\n"); return EXIT_FAILURE; }

Prevention

When it happens

Trigger: Running the x86 demo on a CPU without AVX2 and AVX512F; running on a VM that hides AVX support; an older Intel/AMD CPU; an AArch64 core without NEON (rare).

Common situations: Benchmarking on a legacy/Atom CPU; a cloud VM with a restricted CPU feature set; running under an emulator lacking AVX.

Related errors


AI-assisted analysis of dotnet/runtime@290d5ab72c (2026-08-06). Data as JSON: /api/errors/bfccd32059b77a55. Report an issue: GitHub.