SORU
23 AĞUSTOS 2014, CUMARTESİ


Değil'benim derleme bağlama t: tanımsız dış işlev

Çoğunlukla öğrenme amaçlı bazı SIMD yazmaya çalışıyorum. Git montaj bağlantısı olabilir biliyorum, ama düzgün çalışması için alamadım.

İşte alabileceğim en az örnek (element-bilge vektör çarpım):

vec_amd64.s(not: asıl dosya hata yoksa neden olduğundan 6**) altında boşluk bir çizgi vardır

// func mul(v1, v2 Vec4) Vec4
TEXT .mul(SB),4,$0-48
    MOVUPS v1 0(FP),  X0
    MOVUPS v2 16(FP), X1
    MULPS  X1, X0
    // also tried ret 32 since I've seen some places do that
    MOVUPS X0, toReturn 32(FP)
    RET

kazandıktan.git

package simd

type Vec4 [4]float32

func (v1 Vec4) Mul(v2 Vec4) Vec4 {
    return Vec4{v1[0] * v2[0], v1[1] * v2[1], v1[2] * v2[2], v1[3] * v2[3]}
}

func mul(v1, v2 Vec4) Vec4

simd_test.git

package simd

import (
    "testing"
)

func TestMul(t *testing.T) {
    v1 := Vec4{1, 2, 3, 4}
    v2 := Vec4{5, 6, 7, 8}

    res := v1.Mul(v2)
    res2 := mul(v1, v2)

    // Placeholder until I get it to compile
    if res != res2 {
        t.Fatalf("Expected %v; got %v", res, res2)
    }
}

go test çalıştırmaya çalıştığımda hata alıyorum:

# testmain
simd.TestMul: call to external function simd.mul
simd.TestMul: undefined: simd.mul

go env komut 1,3 amd64 benim sürüm için* *13 raporlarım. Mimari soruna neden olmadığını doğrulamak için kullanır ve montaj _amd64.s dışındaki tüm Meclis dosyalar silinmiş başka bir paket buldum ve testleri iyi koştu.

Ben de bir gariplik, ama nafile neden bu durumda verilen bir tanımlayıcı olarak değiştirmeyi denedim. Ben oldukça yakından bir şeyleri Gözden kaçırıyorum basit ve apaçık ortada umarım math/big, gibi paketleri şablon izledi bence.

Git az olduğunu biliyorumçalışıyorbenim için bir sözdizimi hatası tanıtmak çünkü eğer Meclis kullanın .inşa aracı dosya nın bu konuda şikayet edecek.

Düzenleme:

Açık, go build için temiz bir şekilde derlenir, ama go test hata görünmesine neden olur.

CEVAP
23 AĞUSTOS 2014, CUMARTESİ


Yanlış nokta kullanıyorsunuz. yerine

TEXT .mul(SB),4,$0-48

yazın

TEXT ·mul(SB),4,$0-48

ve her şey gayet güzel çalışıyor.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jonathan D.

    Jonathan D.

    3 Kasım 2006
  • kndx

    kndx

    11 Mart 2006
  • kruno j

    kruno j

    6 Mayıs 2007