Size: a a a

Compiler Development

2020 November 22

E

EgorBo in Compiler Development
MaxGraey
Забавно, этот fast path clang применяет аж с 4й версии
товарищ проверил вживую - на Zen3 не нужно. но я больше напрягся с того что мой 8700K проводит деление за 5нс, а зен3 за 0.2нс
источник

IK

Ivan Kochurkin in Compiler Development
А ещё divrem с делением, умножением и вычитанием быстрее, чем последовательное использование / и %
источник

IK

Ivan Kochurkin in Compiler Development
Такое часто встречается
источник

E

EgorBo in Compiler Development
Ivan Kochurkin
А ещё divrem с делением, умножением и вычитанием быстрее, чем последовательное использование / и %
нет же)
источник

M

MaxGraey in Compiler Development
EgorBo
товарищ проверил вживую - на Zen3 не нужно. но я больше напрягся с того что мой 8700K проводит деление за 5нс, а зен3 за 0.2нс
да zen3 вообще зверь какой то, вот срани задержки такты хотя бы того же zen2 и haswell
источник

E

EgorBo in Compiler Development
> haskell :D
источник

M

MaxGraey in Compiler Development
EgorBo
> haskell :D
опечтка по фрейду)
источник

E

EgorBo in Compiler Development
да, зену пофигу что делить
источник

IK

Ivan Kochurkin in Compiler Development
EgorBo
нет же)
Разве? В дотнете даже операция есть math.divrem, в которой происходит / * -, а ещё вроде у тебя даже риквест был, который заменяет таким образом)
источник

E

EgorBo in Compiler Development
Ivan Kochurkin
Разве? В дотнете даже операция есть math.divrem, в которой происходит / * -, а ещё вроде у тебя даже риквест был, который заменяет таким образом)
потому что в дотнете джит не умел забрать и деление и остаток из одной инструкции. но сейчас там немного переписали джит и архитектура позволяет опкодам возращать несколько значений
источник

M

MaxGraey in Compiler Development
EgorBo
да, зену пофигу что делить
Я так думаю что они применяют новую схему деления через вычесления обратного делителя. она довольно недавно придумана (она работает за константное время). но я не встречал еще ее в хардварном исполнении
источник

E

EgorBo in Compiler Development
но не факт что это нужно, т.к. хакерская версия divrem и так быстрая
источник

h

hazer_hazer in Compiler Development
Alan-love
Слыхали про него?
Лайкает на гитхабе все что с япами связано
источник

IK

Ivan Kochurkin in Compiler Development
EgorBo
потому что в дотнете джит не умел забрать и деление и остаток из одной инструкции. но сейчас там немного переписали джит и архитектура позволяет опкодам возращать несколько значений
источник

E

EgorBo in Compiler Development
как это противоречит тому что я написал? :)
источник

IK

Ivan Kochurkin in Compiler Development
А, ну я просто подумал, что есть какая-то хакерская версия divrem, где даже умножение и вычитание не используется, а все делается одной операцией.
источник

IK

Ivan Kochurkin in Compiler Development
источник

E

EgorBo in Compiler Development
Ivan Kochurkin
А, ну я просто подумал, что есть какая-то хакерская версия divrem, где даже умножение и вычитание не используется, а все делается одной операцией.
у меня есть прототип на фикс (и распознавание паттерна /, %) но его надо допиливать, а мне немного влом)
источник

E

EgorBo in Compiler Development
просто там изначально внутренний язык джита не сильно был дружественен к инструкциям, которые возвращали результат в 2 регистра, но недавно исправили это
источник
2020 November 23

M

MaxGraey in Compiler Development
А есть у кого то реальные бенчмарки показывающие потенциальнцю выгоду на x64 от такого трюка? Ну или хотя бы реальные кейсы где это может пригодиться. На ум приходит только криптография основанная на Монтгомери редукции
источник