ROプレイヤーのためのPC雑談スレ その13
[128:(○口○*)さん (24/06/30 18:57 ID:YYbkZDye0)]
◆//baz.B252いる?
コテスレを救ってくれ、お前が居ないとダメなんだわ
哀れなコテスレ民を先生の力で導いてくれ
[129:(○口○*)さん (24/07/05 18:14 ID:JrV38J5J0)]
ここ◆//baz.B252に見捨てられて完全に終わってんな
そろそろ◆//baz.B252をコテスレに誘致したきらら潰さね?
これはPCスレとコテスレの戦争だよ
[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`)
read.cgi ver5.26 + n2 (02/10/01)