Benchmarks compare how CPUs handle IEEE subnormal (denormal) floating-point numbers by running several tight kernels over arrays sized to fit in cache: scalar multiply by 0.75, array addition, divide by 3, a normal-input → subnormal-output case (multiply by 2^-1030), and a dependent chain of repeated multiplication (x *= 0.9999). Compilers used include GCC 15 and Clang variants with -O3 -march=native. Tested processors are Intel Xeon Granite Rapids and Emerald Rapids, AMD EPYC Zen 5, AWS Graviton 5 (Arm Neoverse V3), and Apple M4 Max.
Results show severe penalties on Intel: multiplications with subnormals run about 45-50× slower and divisions about 18× slower versus normal values (e.g., Granite Rapids multiply: 0.17 ns → 8.35 ns; divide: 0.51 ns → 9.38 ns). A dependent multiply chain jumps from ~1 ns per step to >30 ns, reflecting latency rising from 4 cycles to 128 cycles when subnormals are involved. Whether the subnormal is an input or the produced result makes no difference for multiplication/division. Additions and subtractions remain fast. AMD Zen 5, Arm Graviton 5 and Apple M4 show little to no slowdown, and even 1% subnormal occurrence can measurably degrade Intel performance.
Summary generated by AI from the linked article. hn.today is not affiliated with Hacker News or Y Combinator.