Size: a a a

Compiler Development

2019 October 11

E

EgorBo in Compiler Development
я не понял тебя
источник

E

EgorBo in Compiler Development
раст генерит тоже что и ллвм
источник

M

MaxGraey in Compiler Development
То есть получается это не LLVM а Clang халтурит
источник

E

EgorBo in Compiler Development
а ты про movsxd
источник

M

MaxGraey in Compiler Development
ну да
источник

E

EgorBo in Compiler Development
а почему раст в lea тогда не делает?)
источник

M

MaxGraey in Compiler Development
точнее про регистры и movsxd
источник

M

MaxGraey in Compiler Development
EgorBo
а почему раст в lea тогда не делает?)
Ну lea там действительно лишний
источник

E

EgorBo in Compiler Development
почему?
источник

E

EgorBo in Compiler Development
разве леа не посчитается на этапе декодинга?
источник

M

MaxGraey in Compiler Development
LEA не бесплатный (вернее не всегда). Это известный миф)
источник

E

EgorBo in Compiler Development
ага, но я сильно не в теме, помню что там из одного в другое переливается и выглядит как зеро латенси
источник

M

MaxGraey in Compiler Development
lea это может быть и alu + agu Так вот когда там agu latency у него иногда больше единицы
источник

E

EgorBo in Compiler Development
тут короче кланг эмитит sext
источник

E

EgorBo in Compiler Development
я так подозреваю ты ожидал там zext
источник

E

EgorBo in Compiler Development
define dso_local i64 @add1(i64, i32) local_unnamed_addr #0 {
 %3 = sext i32 %1 to i64
 %4 = add nsw i64 %3, %0
 ret i64 %4
}


https://llvm.org/docs/LangRef.html#sext-to-instruction
источник

E

EgorBo in Compiler Development
ща гляну что моно эмитит
источник

M

MaxGraey in Compiler Development
EgorBo
тут короче кланг эмитит sext
Ну правильно эмитит, там должен быть sext. потому что там знаковые операнды. Проблема с размерностью регистров
источник

M

MaxGraey in Compiler Development
то есть в первом случае это должно быть
%3 = sext i32 %1 to i64

во втором
%3 = sext i16 %1 to i64

и
%3 = sext i8 %1 to i64

в третьем
источник

M

MaxGraey in Compiler Development
И оно кстати верно эмитит:
https://godbolt.org/z/CXOU_4
источник