To by bylo krasne, kdyby podpora pro dispatch SIMD instrukci byla primo v kompilatorech, aby se zbytecne nemusely resit vsemozne varianty x86-64-vN. Binarky by sice nabobtnaly, ale koho to dnes zajima, ze...
Todle se uz normalne pouziva - kriticky kod umistite do jednoho nebo vice .c soboru a nekolikrat prelozite s ruznymi nastavenimi prekladace a nalinkujete do jedne binarky pod ruznymi jmeny (nebo verzemi) symbolu. Prekladac sam to nemuze moc dobre vyresit, protoze nevi, ktera cast programu je kriticka a ktera ne.
Jasne, nejak jsem to nerozvadel do detailu, samozrejme se neda vektorizovat uplne vsechno automaticky. Ale libilo by se mi mit treba neco jako `#pragma simd begin/end`, cimz bych oznacil bloky kodu, kde se ma vektorizace udelat, a prekladac at si ty ruzne symboly a podobne blbiny vygeneruje sam a samo at se stane, ze se za behu vybere "nejlepsi" varianta.
To uz dneska kompilatory umi celkem slusne. Podle ffmpeg je automaticky vektorizovany kod jen cca o 10-15% pomalejsi nez rucne napsany kod vyuzivajici intrinsics: https://docs.google.com/document/d/1cemgw6mZBWyIx7ARLv2mscpcJQQsNXK9MNspZvqtoxI/edit?tab=t.0 .