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

Printed by demo_vxsort() in the vxsort simple_bench demo at src/coreclr/gc/vxsort/standalone/simple_bench/demo.cpp:75 when no supported vectorized ISA is detected. Unlike the standalone demo, it calls exit(-2), terminating the whole process immediately (so the introsort comparison never runs).

Source

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

#if defined(CPU_FEATURES_ARCH_X86)
    if (IsSupportedInstructionSet (InstructionSet::AVX2)) {
        do_vxsort_avx2(begin, end, range_low, range_high);
    }
    else if (IsSupportedInstructionSet (InstructionSet::AVX512F))
    {
        do_vxsort_avx512(begin, end, range_low, range_high);
    }
    else
#elif defined(CPU_FEATURES_ARCH_AARCH64)
    if (IsSupportedInstructionSet (InstructionSet::NEON))
    {
        do_vxsort_neon(begin, end, range_low, range_high);
    }
    else
#endif
    {
        fprintf(stderr, "CPU doesn't seem to support any vectorized ISA, bye-bye\n");
        exit(-2);
    }

    gettimeofday(&t1, 0);
    long elapsed = (t1.tv_sec - t0.tv_sec) * 1000000 + t1.tv_usec - t0.tv_usec;

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

    return elapsed;
}

View on GitHub (pinned to 60108ba66e)

Solutions

  1. Run on a CPU with AVX2 (x86) or NEON (ARM64).
  2. Rebuild with TARGET_AMD64/TARGET_ARM64 so InitSupportedInstructionSet initializes the correct bits.
  3. In a VM, enable CPU feature passthrough.
Defensive patterns

Strategy: validation

Validate before calling

#if defined(CPU_FEATURES_ARCH_X86)
if (!IsSupportedInstructionSet(InstructionSet::AVX2) &&
    !IsSupportedInstructionSet(InstructionSet::AVX512F)) {
    fprintf(stderr, "AVX2/AVX512 required.\n");
    return -2;
}
#elif defined(CPU_FEATURES_ARCH_AARCH64)
if (!IsSupportedInstructionSet(InstructionSet::NEON)) {
    fprintf(stderr, "NEON required.\n");
    return -2;
}
#endif

Prevention

When it happens

Trigger: Running simple_bench on an x86 CPU without AVX2/AVX512, or an ARM64 CPU without NEON, or a build where InitSupportedInstructionSet was never invoked.

Common situations: Older hardware, a VM with masked CPU features, or a build missing TARGET_AMD64/TARGET_ARM64 so the SIMD feature bits were never set.

Related errors


AI-assisted analysis of dotnet/runtime@60108ba66e (2026-08-10). Data as JSON: /api/errors/43c27f9511ee6df4. Report an issue: GitHub.