История изменений
Исправление uin, (текущая версия) :
Ну так и операции то над 64 битными числами же (все равно много?)
Причем одна такая инструкция за эти такты может умножать/складывать как одно 64 битное число так и два 32 битных (? 4x16 (? 8x8 )) и таких мини-SIMDов в одной ШК может быть до четырех. В поздних процессорах - до 6и и регистры там уже 128 битные, но наверняка это все то же не бесплатно.
Или это как-то связано с loop_mode
Да нет в других местах задержки те же: ... может быть связано с -mcpu=elbrus-v3 (Эльбрус-4С 65нм)
Надо бы компильнуть под 28нм 8С/8СВ и посмотреть что там будет.
faddd/fsubd
А, так падажжи ёбана, да - только в накрученом цикле столько почему то
Исправление uin, :
Ну так и операции то над 64 битными числами же (все равно много?)
Причем одна такая инструкция за эти такты может умножать/складывать как одно 64 битное число так и два 32 битных (? 4x16 (? 8x8 )) и таких мини-SIMDов в одной ШК может быть до четырех. В поздних процессорах - до 6и и регистры там уже 128 битные, но наверняка это все то же не бесплатно.
Или это как-то связано с loop_mode
Да нет в других местах задержки те же: ... может быть связано с -mcpu=elbrus-v3 (Эльбрус-4С 65нм)
Надо бы компильнуть под 28нм 8С/8СВ и посмотреть что там будет.
faddd/fsubd
А, так падажжи ёбана, да - только в накрученом цикле столько почему то
Исправление uin, :
Ну так и операции то над 64 битными числами же (все равно много?)
Причем одна такая инструкция за эти такты может умножать/складывать как одно 64 битное число так и два 32 битных (? 4x16 (? 8x8 )) и таких мини-SIMDов в одной ШК может быть до четырех. В поздних процессорах - до 6и и регистры там уже 128 битные, но наверняка это все то же не бесплатно.
Или это как-то связано с loop_mode
Да нет в других местах задержки те же: ... может быть связано с -mcpu=elbrus-v3 (Эльбрус-4С 65нм)
Надо бы компильнуть под 28нм 8С/8СВ и посмотреть что там будет.
faddd/fsubd
А, так падажжи ёбана, да - только в накрученом цикле столько почему то
Исправление uin, :
Ну так и операции то над 64 битными числами же (все равно много?)
Причем одна такая инструкция за эти такты может умножать/складывать как одно 64 битное число так и два 32 битных (? 4x16 (? 8x8 )) и таких мини-SIMDов в одной ШК может быть до четырех. В поздних процессорах - до 6и и регистры там уже 128 битные, но наверняка это все то же не бесплатно.
Или это как-то связано с loop_mode
Да нет в других местах задержки те же:
{
setwd wsz = 0x20, nfx = 0x1
setbn rsz = 0x5, rbs = 0x1a, rcur = 0x2
disp %ctpr3, $_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l; ipd 2
cmplsb,0,sm 0x0, %r12, %pred0
addd,1,sm 0x0, _f64,_lts1 0x1ff2100000000, %dr2
adds,2 %r8, 0x1, %r8
addd,3,sm 0x0, 0x0, %dr11
}
{
cmplsb,0 %r8, 0x6, %pred1
addd,1,sm 0x1, 0x0, %db[2]
addd,2,sm 0x0, %dr14, %db[1]
addd,3,sm 0x0, %dr15, %db[0]
}
{
addd,0,sm 0x0, %dr1, %dr9
merges,1,sm 0x1, %r12, %r1, %pred0
}
{
fdtoidtr,0 %dr9, %dr4
sxt,1,sm 0x6, %r1, %dr1
}
{
nop 4
insfd,0,sm %dr2, _f16s,_lts0lo 0x800, %dr1, %dr10
}
{
sxt,0 0x6, %r4, %dr1
}
{
nop 3
idtofd,0 %dr1, %dr1
}
{
nop 3
fmuld,0 %dr1, _f64,_lts0 0x3df0000000000000, %dr1
}
{
nop 3
fmuld,0 %dr1, _f64,_lts0 0x4030000000000000, %dr1
}
{
nop 5
fdtoidtr,0 %dr1, %dr1
}
Надо бы компильнуть под 28нм 8С/8СВ и посмотреть что там будет.
Исправление uin, :
Ну так и операции то над 64 битными числами же (все равно много?)
Причем одна такая инструкция за эти такты может умножать/складывать как одно 64 битное число так и два 32 битных (? 4x16 (? 8x8 )) и таких мини-SIMDов в одной ШК может быть до четырех. В поздних процессорах - до 6и и регистры там уже 128 битные, но наверняка это все то же не бесплатно.
Или это как-то связано с loop_mode
Да нет в других местах задержки те же:
{
setwd wsz = 0x20, nfx = 0x1
setbn rsz = 0x5, rbs = 0x1a, rcur = 0x2
disp %ctpr3, $_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l; ipd 2
cmplsb,0,sm 0x0, %r12, %pred0
addd,1,sm 0x0, _f64,_lts1 0x1ff2100000000, %dr2
adds,2 %r8, 0x1, %r8
addd,3,sm 0x0, 0x0, %dr11
}
{
cmplsb,0 %r8, 0x6, %pred1
addd,1,sm 0x1, 0x0, %db[2]
addd,2,sm 0x0, %dr14, %db[1]
addd,3,sm 0x0, %dr15, %db[0]
}
{
addd,0,sm 0x0, %dr1, %dr9
merges,1,sm 0x1, %r12, %r1, %pred0
}
{
fdtoidtr,0 %dr9, %dr4
sxt,1,sm 0x6, %r1, %dr1
}
{
nop 4
insfd,0,sm %dr2, _f16s,_lts0lo 0x800, %dr1, %dr10
}
{
sxt,0 0x6, %r4, %dr1
}
{
nop 3
idtofd,0 %dr1, %dr1
}
{
nop 3
fmuld,0 %dr1, _f64,_lts0 0x3df0000000000000, %dr1
}
{
nop 3
fmuld,0 %dr1, _f64,_lts0 0x4030000000000000, %dr1
}
{
nop 5
fdtoidtr,0 %dr1, %dr1
}
Надо бы компильнуть под 28нм 8С/8СВ и посмотреть что там будет.
Исходная версия uin, :
Ну так и операции то над 64 битными числами же (все равно много?)
Причем одна такая инструкция за эти такты может умножать/складывать как одно 64 битное число так и два 32 битных (? 4x16 (? 8x8 )) и таких мини-SIMDов в одной ШК может быть до четырех. В поздних процессорах - до 6и и регистры там уже 128 битные, но наверняка это все то же не бесплатно.
Или это как-то связано с loop_mode
Да нет в других местах задержки те же:
{
setwd wsz = 0x20, nfx = 0x1
setbn rsz = 0x5, rbs = 0x1a, rcur = 0x2
disp %ctpr3, $_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l; ipd 2
cmplsb,0,sm 0x0, %r12, %pred0
addd,1,sm 0x0, _f64,_lts1 0x1ff2100000000, %dr2
adds,2 %r8, 0x1, %r8
addd,3,sm 0x0, 0x0, %dr11
}
{
cmplsb,0 %r8, 0x6, %pred1
addd,1,sm 0x1, 0x0, %db[2]
addd,2,sm 0x0, %dr14, %db[1]
addd,3,sm 0x0, %dr15, %db[0]
}
{
addd,0,sm 0x0, %dr1, %dr9
merges,1,sm 0x1, %r12, %r1, %pred0
}
{
fdtoidtr,0 %dr9, %dr4
sxt,1,sm 0x6, %r1, %dr1
}
{
nop 4
insfd,0,sm %dr2, _f16s,_lts0lo 0x800, %dr1, %dr10
}
{
sxt,0 0x6, %r4, %dr1
}
{
nop 3
idtofd,0 %dr1, %dr1
}
{
nop 3
fmuld,0 %dr1, _f64,_lts0 0x3df0000000000000, %dr1
}
{
nop 3
fmuld,0 %dr1, _f64,_lts0 0x4030000000000000, %dr1
}
{
nop 5
fdtoidtr,0 %dr1, %dr1
}
может быть связано с -mcpu=elbrus-v3 (Эльбрус-4С 65нм)
Надо бы компильнуть под 28нм 8С/8СВ и посмотреть что там будет.