■掲示板に戻る■ 1- 最新10

ROプレイヤーのためのPC雑談スレ その13

[130: ◆//baz.B252 (24/07/05 19:07 ID:vlXghMFu0)]
>>123
/arch:avx /O2 の場合のloop内は次のようになる('A`)

macro使用時
$LL4@test:
vmovss xmm1, DWORD PTR [rax-4]
vmovss xmm2, DWORD PTR [rax]
vmovss xmm6, DWORD PTR [rax-8]
vcmpltss xmm0, xmm2, xmm1
vblendvps xmm0, xmm2, xmm1, xmm0
vcomiss xmm6, xmm0
ja SHORT $LN12@test
vcmpltss xmm0, xmm2, xmm1
vblendvps xmm6, xmm2, xmm1, xmm0
$LN12@test:
add rax, 4
cmp rax, rcx
jne SHORT $LL4@test

std::max呼出時
$LL4@test:
vmovss xmm0, DWORD PTR [rax]
vmovss xmm2, DWORD PTR [rax-8]
lea rdx, QWORD PTR [rax-4]
vcomiss xmm0, DWORD PTR [rdx]
cmova rdx, rax
add rax, 4
vmovss xmm1, DWORD PTR [rdx]
vcmpltss xmm0, xmm2, xmm1
vblendvps xmm0, xmm2, xmm1, xmm0
vmovss DWORD PTR result$[rsp], xmm0
cmp rax, rcx
jne SHORT $LL4@test

乱数を与えた際の ja SHORT $LN12@test が重いわけだ('A`)


[131: ◆//baz.B252 (24/07/06 05:31 ID:7BAs1gtj0)]
特定の値をとらないのであればmaxssでもよく、次のように書けるわけだがperformanceが芳しくない('A`)

__m128 a, b, c;
a.m128_f32[0] = *(i - 2);
b.m128_f32[0] = *(i - 1);
c.m128_f32[0] = *i;
result = _mm_max_ss(a, _mm_max_ss(b, c)).m128_f32[0];

$LL4@test:
vmovss xmm0, DWORD PTR [rax-4]
vmovups xmm3, XMMWORD PTR b$99[rsp]
vmovss xmm2, DWORD PTR [rax-8]
vmovups xmm6, XMMWORD PTR a$100[rsp]
vmovss3 xmm3, xmm3, xmm0
vmovss3 xmm6, xmm6, xmm2
vmovups XMMWORD PTR b$99[rsp], xmm3
vmaxss xmm3, xmm3, DWORD PTR [rax]
add rax, 4
vmovups XMMWORD PTR a$100[rsp], xmm6
vmaxss xmm6, xmm6, xmm3
cmp rax, rcx
jne SHORT $LL4@test


[132: ◆//baz.B252 (24/07/06 05:35 ID:7BAs1gtj0)]
それとなく察してregisterを0で初期化してやるといくらかマシにはなる('A`)
下位32bitsのみに興味があるわけだが、伝統的にSIMD周りは最適化がなってないぜ('A`)

__m128 a=_mm_setzero_ps(), b=_mm_setzero_ps(), c=_mm_setzero_ps();
a.m128_f32[0] = *(i - 2);
b.m128_f32[0] = *(i - 1);
c.m128_f32[0] = *i;
result = _mm_max_ss(a, _mm_max_ss(b, c)).m128_f32[0];


vxorps xmm4, xmm4, xmm4
$LL4@test:
vmovss xmm0, DWORD PTR [rax-4]
vmovss xmm2, DWORD PTR [rax-8]
vmovss3 xmm3, xmm4, xmm0
vmaxss xmm3, xmm3, DWORD PTR [rax]
add rax, 4
vmovss3 xmm6, xmm4, xmm2
vmaxss xmm6, xmm6, xmm3
cmp rax, rcx
jne SHORT $LL4@test


[133:(○口○*)さん (24/07/06 07:07 ID:OKDe70fA0)]
低レベル過ぎてさっぱりわからん
雑談する気があるならもう少しPCパーツ記事程度には噛み砕いてくれ


[134: ◆//baz.B252 (24/07/06 12:27 ID:7BAs1gtj0)]
low levelな方がわかりやすいだろ('A`)


[135:(○口○*)さん (24/07/06 13:46 ID:OCOtI/mb0)]
raw levelでいいんじゃね?


[136:(○口○*)さん (24/07/06 16:24 ID:gEImlW0/0)]
コテスレはプリティストア行かない奴にはついていけないスレ
PCスレは難解な独り言を理解出来なきゃついていけないスレ
もう新たな新天地作らないか?
きららと◆//baz.B252が居る限り雑談なんて出来やしない


[137: ◆//baz.B252 (24/07/06 17:25 ID:7BAs1gtj0)]
law levelならhigh levelかもな('A`)


[138:(○口○*)さん (24/07/06 21:48 ID:v0hp6duO0)]
Intelの14世代でPC組みたい
15まで待つべき?
用途はWebメール動画視聴仮想マシン


[139:(○口○*)さん (24/07/06 22:07 ID:ppdSnxY30)]
1世代差で大きく変わるわけじゃないしヘビーな用途に使わないならとっとと買って気分よくPC使った方が良いと思う
型落ち14世代を安く買うとか円安が少しでも解消されてから買うとか、15世代を買うのではなく安く買う為に待つのはありかと


次10 前10 最新10
NAME:MAIL:

read.cgi ver5.26 + n2 (02/10/01)