Сообщение Re[4]: Очередной "шедевр" от MS от 11.03.2017 17:16
Изменено 11.03.2017 17:19 pilgrim_
Re[4]: Очередной "шедевр" от MS
Здравствуйте, rus blood, Вы писали:
RB>А это точно итоговый код?
RB>Условие (i==0) никогда не выполняется.
RB>Его не должно быть в итоговом коде, а проверка там есть.
Проверил локально, удивительно, для /O2 (для /Ox аналогично), но походу да:
x64
x86
RB>А это точно итоговый код?
RB>Условие (i==0) никогда не выполняется.
RB>Его не должно быть в итоговом коде, а проверка там есть.
Проверил локально, удивительно, для /O2 (для /Ox аналогично), но походу да:
x64
cl /O2 /DNDEBUG fast.cpp -o fast.exe /FA
Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23918 for x64
$LL4@Measure:
; Line 22
movd xmm0, edi
pshufd xmm0, xmm0, 0
paddd xmm0, xmm0
cvtdq2pd xmm0, xmm0
mulpd xmm0, xmm7
call __vdecl_sin2
xor eax, eax
mov ecx, 500 ; 000001f4H
npad 15
$LL7@Measure:
movups xmm1, XMMWORD PTR ?randoms_dbl@@3PANA[rax+rbp]
addpd xmm1, xmm0
addpd xmm1, xmm6
movups XMMWORD PTR ?outputs_dbl@@3PANA[rax+rbp], xmm1
add rax, 16
sub rcx, 1
jne SHORT $LL7@Measure
; Line 23
test edi, edi
jne SHORT $LN2@Measure
lea rdx, OFFSET FLAT:??_C@_0BJ@JOJDFEDH@msvc?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$AA@
lea rcx, OFFSET FLAT:?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A ; std::cout
call ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBD@Z ; std::operator<<<std::char_traits<char> >
$LN2@Measure:
; Line 21
inc edi
cmp edi, 100000 ; 000186a0H
jl SHORT $LL4@Measure
x86
Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23918 for x86
$LL4@Measure:
; Line 22
movd xmm0, esi
pshufd xmm0, xmm0, 0
paddd xmm0, xmm0
cvtdq2pd xmm0, xmm0
mulpd xmm0, XMMWORD PTR __xmm@400921fb54442d18400921fb54442d18
call ___vdecl_sin2
movaps xmm2, XMMWORD PTR __xmm@3fd80000000000003fd8000000000000
xor eax, eax
npad 9
$LL7@Measure:
movups xmm1, XMMWORD PTR ?randoms_dbl@@3PANA[eax]
addpd xmm1, xmm0
addpd xmm1, xmm2
movups XMMWORD PTR ?outputs_dbl@@3PANA[eax], xmm1
add eax, 16 ; 00000010H
cmp eax, 8000 ; 00001f40H
jl SHORT $LL7@Measure
; Line 23
test esi, esi
jne SHORT $LN2@Measure
push OFFSET ??_C@_0BJ@JOJDFEDH@msvc?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$AA@
push OFFSET ?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A ; std::cout
call ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBD@Z ; std::operator<<<std::char_traits<char> >
add esp, 8
$LN2@Measure:
; Line 21
inc esi
cmp esi, 100000 ; 000186a0H
jl SHORT $LL4@Measure
Re[4]: Очередной "шедевр" от MS
Здравствуйте, rus blood, Вы писали:
RB>А это точно итоговый код?
RB>Условие (i==0) никогда не выполняется.
RB>Его не должно быть в итоговом коде, а проверка там есть.
Проверил локально, удивительно, для /O2 (для /Ox аналогично), но походу да:
x64
x86
UPD: т.е. по факту они вставили код if (true) goto next;
RB>А это точно итоговый код?
RB>Условие (i==0) никогда не выполняется.
RB>Его не должно быть в итоговом коде, а проверка там есть.
Проверил локально, удивительно, для /O2 (для /Ox аналогично), но походу да:
x64
cl /O2 /DNDEBUG fast.cpp -o fast.exe /FA
Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23918 for x64
$LL4@Measure:
; Line 22
movd xmm0, edi
pshufd xmm0, xmm0, 0
paddd xmm0, xmm0
cvtdq2pd xmm0, xmm0
mulpd xmm0, xmm7
call __vdecl_sin2
xor eax, eax
mov ecx, 500 ; 000001f4H
npad 15
$LL7@Measure:
movups xmm1, XMMWORD PTR ?randoms_dbl@@3PANA[rax+rbp]
addpd xmm1, xmm0
addpd xmm1, xmm6
movups XMMWORD PTR ?outputs_dbl@@3PANA[rax+rbp], xmm1
add rax, 16
sub rcx, 1
jne SHORT $LL7@Measure
; Line 23
test edi, edi
jne SHORT $LN2@Measure
lea rdx, OFFSET FLAT:??_C@_0BJ@JOJDFEDH@msvc?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$AA@
lea rcx, OFFSET FLAT:?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A ; std::cout
call ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBD@Z ; std::operator<<<std::char_traits<char> >
$LN2@Measure:
; Line 21
inc edi
cmp edi, 100000 ; 000186a0H
jl SHORT $LL4@Measure
x86
Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23918 for x86
$LL4@Measure:
; Line 22
movd xmm0, esi
pshufd xmm0, xmm0, 0
paddd xmm0, xmm0
cvtdq2pd xmm0, xmm0
mulpd xmm0, XMMWORD PTR __xmm@400921fb54442d18400921fb54442d18
call ___vdecl_sin2
movaps xmm2, XMMWORD PTR __xmm@3fd80000000000003fd8000000000000
xor eax, eax
npad 9
$LL7@Measure:
movups xmm1, XMMWORD PTR ?randoms_dbl@@3PANA[eax]
addpd xmm1, xmm0
addpd xmm1, xmm2
movups XMMWORD PTR ?outputs_dbl@@3PANA[eax], xmm1
add eax, 16 ; 00000010H
cmp eax, 8000 ; 00001f40H
jl SHORT $LL7@Measure
; Line 23
test esi, esi
jne SHORT $LN2@Measure
push OFFSET ??_C@_0BJ@JOJDFEDH@msvc?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$DP?$AA@
push OFFSET ?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A ; std::cout
call ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBD@Z ; std::operator<<<std::char_traits<char> >
add esp, 8
$LN2@Measure:
; Line 21
inc esi
cmp esi, 100000 ; 000186a0H
jl SHORT $LL4@Measure
UPD: т.е. по факту они вставили код if (true) goto next;