{"record":{"id":"43c27f9511ee6df4","repo":"dotnet/runtime","slug":"cpu-doesn-t-seem-to-support-any-vectorized-isa-by-43c27f","errorCode":null,"errorMessage":"CPU doesn't seem to support any vectorized ISA, bye-bye\n","messagePattern":"CPU doesn't seem to support any vectorized ISA, bye-bye\n","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/coreclr/gc/vxsort/standalone/simple_bench/demo.cpp","lineNumber":75,"sourceCode":"\n#if defined(CPU_FEATURES_ARCH_X86)\n    if (IsSupportedInstructionSet (InstructionSet::AVX2)) {\n        do_vxsort_avx2(begin, end, range_low, range_high);\n    }\n    else if (IsSupportedInstructionSet (InstructionSet::AVX512F))\n    {\n        do_vxsort_avx512(begin, end, range_low, range_high);\n    }\n    else\n#elif defined(CPU_FEATURES_ARCH_AARCH64)\n    if (IsSupportedInstructionSet (InstructionSet::NEON))\n    {\n        do_vxsort_neon(begin, end, range_low, range_high);\n    }\n    else\n#endif\n    {\n        fprintf(stderr, \"CPU doesn't seem to support any vectorized ISA, bye-bye\\n\");\n        exit(-2);\n    }\n\n    gettimeofday(&t1, 0);\n    long elapsed = (t1.tv_sec - t0.tv_sec) * 1000000 + t1.tv_usec - t0.tv_usec;\n\n    // Ensure sorted\n    prev = START - (1 << SHIFT);\n    for (auto & element : vtemp) {\n        // fprintf(stderr, \"%p\\n\", element);\n        assert(element == prev + (1 << SHIFT));\n        prev = element;\n    }\n\n    return elapsed;\n}\n\n","sourceCodeStart":57,"sourceCodeEnd":93,"githubUrl":"https://github.com/dotnet/runtime/blob/60108ba66eb7d1d12f595480091b4ad80a24b172/src/coreclr/gc/vxsort/standalone/simple_bench/demo.cpp#L57-L93","documentation":"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).","triggerScenarios":"Running simple_bench on an x86 CPU without AVX2/AVX512, or an ARM64 CPU without NEON, or a build where InitSupportedInstructionSet was never invoked.","commonSituations":"Older hardware, a VM with masked CPU features, or a build missing TARGET_AMD64/TARGET_ARM64 so the SIMD feature bits were never set.","solutions":["Run on a CPU with AVX2 (x86) or NEON (ARM64).","Rebuild with TARGET_AMD64/TARGET_ARM64 so InitSupportedInstructionSet initializes the correct bits.","In a VM, enable CPU feature passthrough."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"#if defined(CPU_FEATURES_ARCH_X86)\nif (!IsSupportedInstructionSet(InstructionSet::AVX2) &&\n    !IsSupportedInstructionSet(InstructionSet::AVX512F)) {\n    fprintf(stderr, \"AVX2/AVX512 required.\\n\");\n    return -2;\n}\n#elif defined(CPU_FEATURES_ARCH_AARCH64)\nif (!IsSupportedInstructionSet(InstructionSet::NEON)) {\n    fprintf(stderr, \"NEON required.\\n\");\n    return -2;\n}\n#endif","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Check SIMD support at the top of main() before calling demo_vxsort so a clean message replaces the mid-benchmark exit(-2).","Build with the correct TARGET_* define so InitSupportedInstructionSet initializes feature bits."],"tags":["dotnet","coreclr","vxsort","cpp","cpu-features","simd"],"backgroundTag":null,"analyzedSha":"60108ba66eb7d1d12f595480091b4ad80a24b172","analyzedAt":"2026-08-10T18:54:11.478Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}