增加值在我的代碼我解決如何從載體到彼此
y=x^2-4x+6
我用SSE積分 - 它可以讓我在一個時間上的4個值進行操作。我製作了一個程序,用0到5的值分解爲5個4元素向量n1,n2,n3,n4來求解該積分。
.data
n1: .float 0.3125,0.625,0.9375,1.25
n2: .float 1.5625,1.875,2.1875,2.5
n3: .float 2.8125,3.12500,3.4375,3.75
n4: .float 4.0625,4.37500,4.6875,5
szostka: .float 6,6,6,6
czworka: .float 4,4,4,4
.text
.global main
main:
movups (n1),%xmm0
mulps %xmm0,%xmm0
movups (szostka),%xmm2
addps %xmm2,%xmm0
movups (n1),%xmm1
movups (czworka),%xmm2
mulps %xmm2,%xmm1
subps %xmm1,%xmm0
movups %xmm0,%xmm7
movups (n2),%xmm0
mulps %xmm0,%xmm0
movups (szostka),%xmm2
addps %xmm2,%xmm0
movups (n1),%xmm1
movups (czworka),%xmm2
mulps %xmm2,%xmm1
subps %xmm1,%xmm0
movups %xmm0,%xmm6
movups (n3),%xmm0
mulps %xmm0,%xmm0
movups (szostka),%xmm2
addps %xmm2,%xmm0
movups (n1),%xmm1
movups (czworka),%xmm2
mulps %xmm2,%xmm1
subps %xmm1,%xmm0
movups %xmm0,%xmm5
movups (n4),%xmm0
mulps %xmm0,%xmm0
movups (szostka),%xmm2
addps %xmm2,%xmm0
movups (n1),%xmm1
movups (czworka),%xmm2
mulps %xmm2,%xmm1
subps %xmm1,%xmm0
movups %xmm0,%xmm4
mov $1,%eax
mov $0,%ebx
int $0x80
最後,我在寄存器xmm7,xmm6,xmm5,xmm4中有4個向量。爲了求積分,我需要向對方添加矢量(這很簡單),然後將矢量的值也相互添加。
我該怎麼做?
假設你要添加的元素水平,你可以用'haddps'。你需要調用它兩次來總結所有4個元素。 –
請記住,''haddps''需要SSE3支持。 –
那麼還有什麼我可以做的嗎? – DzikiChrzan