LINUX.ORG.RU

История изменений

Исправление 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
    }
может быть связано с -mcpu=elbrus-v3 (Эльбрус-4С 65нм)
Надо бы компильнуть под 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СВ и посмотреть что там будет.

Исходная версия 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СВ и посмотреть что там будет.