Ich versuche, diesen Neon-Code intrinsics zu konvertieren:Wie laden Sie 3 Floats mit Neon-Spezifika
vld1.32 {d0}, [%[pInVertex1]]
flds s2, [%[pInVertex1], #8]
Diese Lasten 3 32-Bit aus der Variablen pInVertex1 in den d0 und d1 Register schwimmt. Ich kann keine gleichwertige Version für Instrinsics finden. Es gibt vld1q_f32, aber das funktioniert nur für 4 Floats. Wer weiß von einem effizienten Weg, dies zu tun (ich meine, ohne extra Kopieren)?
Ist es möglich, die Registerverwendungs so zu optimieren, dass sie mit einer einspurigen 'vld3', dh' s0' arbeiten konnte, 's2',' s4' statt 's0',' s1', 's2'? (obwohl ich mir nicht sicher bin, wie das in intrinsics aussehen würde.) Ansonsten ist es vielleicht eine Überlegung wert, dass das Laden von 4 Elementen mit einem einzigen 'vld1' und das Ignorieren eines von ihnen nicht weniger effizient ist als zwei separate Anweisungen (und möglicherweise auch), vorausgesetzt, a) es ist in Ordnung, 's3' zu zerlegen und b) Sie legen die Daten so aus, dass es nie problematisch ist, über das Ende hinaus zu lesen. – Notlikethat
Vielleicht könnte ich es tun, aber es würde nur zum Laden von Werten funktionieren. Wenn ich die 3 Werte in das Array schreibe, habe ich das gleiche Problem. Wenn ich 4 Werte schreibe, überschreibe ich Daten von einem anderen Knoten. – user3259383