Size: a a a

Compiler Development

2020 November 27

M

MrSmith in Compiler Development
Sergey Makarov
ну а какую последовательность store-load использовать так, чтобы выполнялось требование SSA про то, что у переменной ровно одно статическое определение?
я говорю про стэк
источник

AT

Alexander Tchitchigi... in Compiler Development
MrSmith
Странно это все выходит значение хранит в себе cfg
А то, что конструкция if-else связывает DFG и CFG Вам странным не кажется? 😉
источник

M

MrSmith in Compiler Development
Нет
источник

ВВ

Вадим Великодный... in Compiler Development
Alexander Tchitchigin
Вы тред и ответы на него читали? Речь не про endianness вообще.
Сейчас прочитаю. Наверное, не так понял этот твит.
источник

E

EgorBo in Compiler Development
Вадим Великодный
Как переключение endianness на лету, так и инструкция для JS — это стандартные штуки ARM. Но тред выглядит так, будто Apple сама всё это придумала.
причем тут endianess я тоже не понял. а вообще эпл вроде как сама много чего в арм законтрибьютила (и впилила поддержку в ллвм) - те же authenticated pointers, по-моему раудинг жс-стайл - это тоже их работа
источник

AT

Alexander Tchitchigi... in Compiler Development
Pavel Samolysov
Чтобы не тратить время на расчет куда вставить тот или иной барьер и на их генерацию?
Тут, очевидно, возможны 2 варианта — но я это очень грубо описываю, поскольку не специалист ни разу.
Либо мы долго и упорно вычисляем, где минимально расставить барьеры, так чтобы получить необходимую семантику, либо реализуем нужную семантику в железе и она "автоматически" использует минимальное количество барьеров. Понятно, что меньше барьеров — быстрее. При этом расставить минимально, насколько я знаю, даже AOT компиляторы не способны. Что уж говорить про трансляцию "на лету"?
источник

E

EgorBo in Compiler Development
Alexander Tchitchigin
Тут, очевидно, возможны 2 варианта — но я это очень грубо описываю, поскольку не специалист ни разу.
Либо мы долго и упорно вычисляем, где минимально расставить барьеры, так чтобы получить необходимую семантику, либо реализуем нужную семантику в железе и она "автоматически" использует минимальное количество барьеров. Понятно, что меньше барьеров — быстрее. При этом расставить минимально, насколько я знаю, даже AOT компиляторы не способны. Что уж говорить про трансляцию "на лету"?
++ очевидное решение - расставлять везде подряд
источник

AT

Alexander Tchitchigi... in Compiler Development
Вадим Великодный
Сейчас прочитаю. Наверное, не так понял этот твит.
При этом в данном чате этот вопрос уже тоже обсудили. 😉
источник

AT

Alexander Tchitchigi... in Compiler Development
MrSmith
Нет
Странно. 😃
источник

ВВ

Вадим Великодный... in Compiler Development
EgorBo
причем тут endianess я тоже не понял. а вообще эпл вроде как сама много чего в арм законтрибьютила (и впилила поддержку в ллвм) - те же authenticated pointers, по-моему раудинг жс-стайл - это тоже их работа
Я memory ordering как byte order прочитал в том твите.
источник

AT

Alexander Tchitchigi... in Compiler Development
EgorBo
++ очевидное решение - расставлять везде подряд
Да, слишком очевидное и слишком медленное. 😊
источник

E

EgorBo in Compiler Development
Alexander Tchitchigin
Да, слишком очевидное и слишком медленное. 😊
поэтому можно у всех тредов дернуть это "переключить на ител-стайл" и все как раньше :)
источник

E

EgorBo in Compiler Development
пролема только в том, что эпл говорит что возможна ситуация, когда не у всех ядер-потоков будет эта возможность
источник

E

EgorBo in Compiler Development
по-крайней мере в DTK которые они рассылали разработчикам было так
источник

M

MrSmith in Compiler Development
Alexander Tchitchigin
Странно. 😃
https://ru.wiktionary.org/wiki/%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%BD%D0%BE
не так, как ожидалось, не так как всегда, удивительно или подозрительно

Не видел ни одного языка программирования где можно узакать значение с cfg. А языки где есть ветвления помойму, почти каждый
источник

PS

Pavel Samolysov in Compiler Development
Глупый вопрос задам, но: а у ARM ослабленная семантика ордеринга как у Power по сравнению с x86? Но не настолько как у DEC Alpha?
источник

AT

Alexander Tchitchigi... in Compiler Development
MrSmith
https://ru.wiktionary.org/wiki/%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%BD%D0%BE
не так, как ожидалось, не так как всегда, удивительно или подозрительно

Не видел ни одного языка программирования где можно узакать значение с cfg. А языки где есть ветвления помойму, почти каждый
> узакать значение с cfg

Это что значит? 😊
источник

M

MrSmith in Compiler Development
То и значит
%retval = phi i32 [%a, %btrue], [%b, %bfalse]
результат функции i32, и все дальнейшие действия и арифметика с ним будут как с i32. Но не сложно увидеть что функция принимает не только ссылки на значения но и cfg, тоесть функция от ссылок и cfg, Если бы мы хотели выразить тип i32 более явно, то это не обычный i32, а именно withCfg<i32>
источник

M

MrSmith in Compiler Development
Не видел ни одного языка программирования где можно  let ident: withCfg<T> = (...., [ val, cfg]);
источник

E

EgorBo in Compiler Development
даешь строгую типизацию и генерики в IR!
источник