>> http://svn.freebsd.org/viewvc/base/release/8.2.0/sys/amd64/a...
>> да, но я в упор не вижу в каких именно функциях(алгоритмах) используются
>> сами регистры XMM при использовании SSE инструкций...
> А это и не дело ядра, это дело userland'а, и система это
> не регулирует.Вы не правы.... Система (ядро) регулирует ВСЕ вычислительные ресурсы...
Одно из дел ядра (от которого зависит удобство его использования) - это БЫСТРОЕ распределение вычислительных ресурсов системы....
Так вот используя специализированные конвееры CPU, в некоторых случаях это очень даже помагает уменьшить количество драгоценных тактов процессора на определенные операции, и даже с учетом переключиний всяких там контекстов.... (об /usr/src/sys/crypto/aesni уже отмечалось )
Вот некоторые аргументы, для того же XNU, уже использующего это: ( http://xnu-dev.googlecode.com/files/SSE3%20Emulator.pdf ) разработчики той ОС нашли где это можно в ядре использовать ;) с выгодой...
> Автору кода нужно или самому рисовать напрямую использование команд с этими регистрами
> (для gcc это Intel'овый набор функций SSE), или разрешать их использование,
> тогда компилятор будет их рисовать по необходимости.
>> P.S. не подумайте это не ради священных воин... просто хочу понять как
>> это можно реализовать для FreeBSD amd64...
> Точно так же как под любую другую архитектуру, которая этому не мешает.
Э... тоже не совсем так...
У разных архитектур по разному осуществляется инициализация таких конвееров, если не прав - исправьте...
На примере FreeBSD для i386 есть функция sse2_pagezero (/usr/src/sys/i386/i386/support.s), которая выполняется как pagezero, если CPU поддерживает SSE2, а для amd64 не вижу такого аналога - просто используется pagezero в /usr/src/sys/amd64/amd64/support.S - либо не оптимизировали, либо эта функция не будет выгоднее по тактам для amd64...это тоже останется для меня загадкой... либо может ответ быть совсем прост - некому это сделать, либо никто не хочет...