
Alexander
10.12.2017
15:16:32
пусть компиляторописатели парятся об этом
я им уже сегодня нарепортил кучу говна, где они генерируют неоптимальный код

Evgeniy
10.12.2017
15:27:48

Alexander
10.12.2017
15:28:07

Google

Evgeniy
10.12.2017
15:28:31

Alexander
10.12.2017
15:28:50
не в один день... у меня доклад был про это

Evgeniy
10.12.2017
15:29:04

Alexander
10.12.2017
15:29:18
я просто не смотрел

Evgeniy
10.12.2017
15:29:48

Alexander
10.12.2017
15:30:43
думаю что нет
это ещё не всё зарепорчено даже. GCC в математические оптимизации умеет лучше всего

Evgeniy
10.12.2017
15:32:20
люди пишут 1/tan
так сложилось

Alexander
10.12.2017
15:33:17
люди пишут 1/tan
либа на то и стнадартная либа, что если у меня есть на бумажке формула, то я хочу просто перебить её на комп
а не заниматься такими заменами, пусть и простыми

Google

Evgeniy
10.12.2017
15:34:33
что на бумажке люди не пишут котангенс
ну точнее
в России он используется, а вот здесь например нет вообще
я не видел котангенс кроме вольфрама нигде уже давно

Egor
10.12.2017
16:24:03

Alexander
10.12.2017
17:11:21
ахахах, оптимизаторы хороши!
https://godbolt.org/g/eNRjqj

Vladislav
10.12.2017
17:15:00
такое очень давно умели, казалось бы

Alexander
10.12.2017
17:15:22
и он из-за этого фейлит. Чувствуется, как там всё писано

Ioann V
10.12.2017
17:16:26
Согласен - что за разработчики там только сидят ...

Vladislav
10.12.2017
17:16:43
а, в этом смысле)
лол, да
я только на gcc посмотрел что-то

Alexander
10.12.2017
17:17:14
ладно msvc - ему простительно
но вот clang и icc - плоховато вышло как-то у них

Vladislav
10.12.2017
17:20:33
хех, а в даблах наоборот у шланга самый адекватный результат https://godbolt.org/g/eLq9kn

Alexander
10.12.2017
17:21:58
мне уже надоело это делать сегодня

Google

Ioann V
10.12.2017
17:23:15
Вот только посмотрите на код Студии
Что за WTF
И вы еще говорите, что руками писать вставки - не ок
Ну как так то братцы ?
По-моему там просто еще код биткоин майнера добавляется

Alexander
10.12.2017
17:24:20
у них в последнем апдейте новый оптимизатор появился
так что теперь не всё так плохо у них
но всё равно - это пиздец

Ioann V
10.12.2017
17:25:32
А на годболте старый стоит оптимайзер ?

Alexander
10.12.2017
17:25:39
инфа сотка

Vladislav
10.12.2017
17:26:25
а /Ox - правильная настройка?


Vladislav
10.12.2017
17:26:32
я не умею в флаги msvc
с /O3 совсем уж ересь выдает
tv65 = 0
$T1 = 8
_Left$ = 32
_Right$ = 40
std::max<double>, COMDAT PROC
mov QWORD PTR [rsp+16], rdx
mov QWORD PTR [rsp+8], rcx
sub rsp, 24
mov rax, QWORD PTR _Right$[rsp]
mov rcx, QWORD PTR _Left$[rsp]
movsd xmm0, QWORD PTR [rax]
comisd xmm0, QWORD PTR [rcx]
jbe SHORT $LN3@max
mov rax, QWORD PTR _Right$[rsp]
mov QWORD PTR tv65[rsp], rax
jmp SHORT $LN4@max
$LN3@max:
mov rax, QWORD PTR _Left$[rsp]
mov QWORD PTR tv65[rsp], rax
$LN4@max:
mov rax, QWORD PTR tv65[rsp]
mov QWORD PTR $T1[rsp], rax
mov rax, QWORD PTR $T1[rsp]
add rsp, 24
ret 0
std::max<double> ENDP
tv65 = 32
a$ = 64
b$ = 72
test PROC
movsd QWORD PTR [rsp+16], xmm1
movsd QWORD PTR [rsp+8], xmm0
sub rsp, 56 ; 00000038H
lea rdx, QWORD PTR a$[rsp]
lea rcx, QWORD PTR b$[rsp]
call std::max<double>
mov QWORD PTR tv65[rsp], rax
lea rdx, QWORD PTR b$[rsp]
lea rcx, QWORD PTR a$[rsp]
call std::max<double>
mov rcx, QWORD PTR tv65[rsp]
mov rdx, rcx
mov rcx, rax
call std::max<double>
movsd xmm0, QWORD PTR [rax]
add rsp, 56 ; 00000038H
ret 0
test ENDP


Ioann V
10.12.2017
17:26:57
Вроде верная. Кек.

/dev
10.12.2017
17:27:28

Vladislav
10.12.2017
17:27:44
а march ему никак не указать?
интересно что gcc выдает чуть более адекватный код если убрать -ffast-math

Google

Vladislav
10.12.2017
17:29:28
а шланг наоборот ><

Alexander
10.12.2017
17:31:00

Ioann V
10.12.2017
17:31:04

Vladislav
10.12.2017
17:31:27
или fast-math ему включить

Admin
ERROR: S client not available

Alexander
10.12.2017
17:31:33
ахахах, вы только посмотрите на msvc
https://godbolt.org/g/8PV96o

Vladislav
10.12.2017
17:59:26

Ioann V
10.12.2017
17:59:58
А что не так ?
ахахах, вы только посмотрите на msvc
https://godbolt.org/g/8PV96o
На сколько я вижу, сверху код инстанцирования шаблонов макс, мин, а вот снизу - да, 4 строчки кода который бегает по циклу
до константы, но макс мин не вызывает
так что, не все так плачевно :)

Evgeniy
10.12.2017
18:01:27

Ioann V
10.12.2017
18:02:00
Ну, блин, там свои проблемы есть. В х64 нельзя в вставки. А в х32 можно.
Только отдельный АСМ собрать и слинковать кек. Ну слава богу MASM64 есть в комплекте

Google

Ioann V
10.12.2017
18:05:07
Правильно делать так, берем GCC, ICC - генерируем ASM, открываем MSVC - делаем ASM вставку, того из компиляторов, что дал лучшие результаты, в код. PROFIT ???

Antony
10.12.2017
19:42:07

Alexander
10.12.2017
19:42:45
применение ровно такое же, как и у тангенса, это очевидно. Просто это настолько очевидная вещь, что до меня это наверняка обсуждали и не раз.
Ты с комитета, тебе виднее

Antony
10.12.2017
19:44:09

Alexander
10.12.2017
19:45:14
смотри в Depends on

Antony
10.12.2017
19:47:22

Alexander
10.12.2017
19:48:18
Если там кто-то заведёт речь про "Слишком специализировано, не нужно", то не верь им - это ложь

Matwey
10.12.2017
19:50:32
А зачем вам котангенс?