gsrc: Add convenience macros for masking VF operations (#3824)

Migrates all code, there should be no change in the compilation output
(linter should check this)

At first i was considering making these builtins, which short of a bunch
of code generation, would require some sort of dynamic definition in
`Atoms.cpp`. This isn't hard but, i figured it would be better to keep
it simple and just generate the OG macros.

Fixes https://github.com/open-goal/jak-project/issues/233
This commit is contained in:
Tyler Wilding
2025-01-11 12:16:05 -05:00
committed by GitHub
parent e836f09212
commit 6f093f98ff
419 changed files with 8186 additions and 5708 deletions
File diff suppressed because it is too large Load Diff
+5
View File
@@ -1259,6 +1259,11 @@
(defmacro string? (val)
`(type? ,val string))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Lib Extensions
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(asm-file "goal_src/common/lib/vf-macros.gc")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Load Project
+15 -15
View File
@@ -1218,20 +1218,20 @@
; )
; (.add.vf vf6 vf5 vf5)
; ;; set vf2
; (.add.w.vf vf2 vf0 vf5 :mask #b0001)
; (.add.z.vf vf2 vf0 vf5 :mask #b0010)
; (.sub.y.vf vf2 vf0 vf5 :mask #b0100)
; (.sub.w.vf vf2 vf0 vf0 :mask #b1000)
; (.add.w.vf.x vf2 vf0 vf5)
; (.add.z.vf.y vf2 vf0 vf5)
; (.sub.y.vf.z vf2 vf0 vf5)
; (.sub.w.vf.w vf2 vf0 vf0)
; ;; set vf3
; (.sub.z.vf vf3 vf0 vf5 :mask #b0001)
; (.add.w.vf vf3 vf0 vf5 :mask #b0010)
; (.add.x.vf vf3 vf0 vf5 :mask #b0100)
; (.sub.w.vf vf3 vf0 vf0 :mask #b1000)
; (.sub.z.vf.x vf3 vf0 vf5)
; (.add.w.vf.y vf3 vf0 vf5)
; (.add.x.vf.z vf3 vf0 vf5)
; (.sub.w.vf.w vf3 vf0 vf0)
; ;; set vf4
; (.add.y.vf vf4 vf0 vf5 :mask #b0001)
; (.sub.x.vf vf4 vf0 vf5 :mask #b0010)
; (.add.w.vf vf4 vf0 vf5 :mask #b0100)
; (.sub.w.vf vf4 vf0 vf0 :mask #b1000)
; (.add.y.vf.x vf4 vf0 vf5)
; (.sub.x.vf.y vf4 vf0 vf5)
; (.add.w.vf.z vf4 vf0 vf5)
; (.sub.w.vf.w vf4 vf0 vf0)
; ;; outer prods
; (.outer.product.a.vf acc vf6 vf2)
; (.outer.product.b.vf vf2 vf2 vf6 acc)
@@ -1240,9 +1240,9 @@
; (.outer.product.a.vf acc vf6 vf4)
; (.outer.product.b.vf vf4 vf4 vf6 acc)
; ;; add ones
; (.add.w.vf vf2 vf2 vf0 :mask #b0001)
; (.add.w.vf vf3 vf3 vf0 :mask #b0010)
; (.add.w.vf vf4 vf4 vf0 :mask #b0100)
; (.add.w.vf.x vf2 vf2 vf0)
; (.add.w.vf.y vf3 vf3 vf0)
; (.add.w.vf.z vf4 vf4 vf0)
; ;; things for cond blocks
; (.lvf vf7 (-> t0 transform vector 0))
+6 -6
View File
@@ -841,8 +841,8 @@
(set! sv-128 s2-0)
(set! sv-112 (-> arg0 vector))
(let ((f0-6 (* 0.8 (tan (/ arg2 2))))) (.lvf vf1 (&-> sv-112 0 quad)) (let ((v1-6 f0-6)) (.mov vf2 v1-6)))
(.add.x.vf vf1 vf0 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.add.x.vf.w vf1 vf0 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> sv-128 quad) vf1)
(vector+! s2-0 s2-0 (-> arg0 vector 2))
(vector-normalize! s2-0 1.0)
@@ -861,8 +861,8 @@
(set! sv-160 s2-0)
(set! sv-144 (-> arg0 vector 1))
(let ((f0-15 (* 0.525 (tan (/ arg2 2))))) (.lvf vf1 (&-> sv-144 quad)) (let ((v1-23 f0-15)) (.mov vf2 v1-23)))
(.add.x.vf vf1 vf0 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.add.x.vf.w vf1 vf0 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> sv-160 quad) vf1)
(vector+! s2-0 s2-0 (-> arg0 vector 2))
(vector-normalize! s2-0 1.0)
@@ -917,9 +917,9 @@
(vector-! sv-192 (-> arg0 point-of-interest) arg1)
(vector-normalize! sv-192 (* f28-0 (-> arg0 point-of-interest-blend value)))
(let ((v1-3 s1-0))
(let ((a0-5 s1-0)) (.mov.vf vf6 vf0 :mask #b1000) (.lvf vf4 (&-> a0-5 quad)))
(let ((a0-5 s1-0)) (.mov.vf.w vf6 vf0) (.lvf vf4 (&-> a0-5 quad)))
(.lvf vf5 (&-> sv-192 quad))
(.add.vf vf6 vf4 vf5 :mask #b111)
(.add.vf.xyz vf6 vf4 vf5)
(.svf (&-> v1-3 quad) vf6))
(vector-normalize! s1-0 f28-0)))
(else (vector-! s1-0 (-> arg0 follow-pt) arg1)))
+66 -66
View File
@@ -181,16 +181,16 @@
(let ((a1-6 (-> obj num-prims-u))
(a2-8 (the-as (inline-array collide-cache-tri) (-> obj tris (-> obj num-tris)))))
(.mov vf5 v1-28)
(.add.x.vf vf1 vf0 vf5 :mask #b10)
(.add.x.vf.y vf1 vf0 vf5)
(set! (-> a2-8 0 extra-quad) (the-as uint128 0))
(set! (-> a2-8 0 prim-index) a1-6)
(.add.x.vf vf3 vf0 vf5 :mask #b10)
(.add.x.vf.y vf3 vf0 vf5)
(set! (-> a2-8 1 extra-quad) (the-as uint128 0))
(set! (-> a2-8 1 prim-index) a1-6)
(.mov.vf vf2 vf1)
(.mov.vf vf4 vf1)
(.add.z.vf vf2 vf0 vf3 :mask #b100)
(.add.x.vf vf4 vf0 vf3 :mask #b1)
(.add.z.vf.z vf2 vf0 vf3)
(.add.x.vf.x vf4 vf0 vf3)
(.svf (&-> a2-8 0 vertex 0 quad) vf1)
(.svf (&-> a2-8 0 vertex 1 quad) vf2)
(.svf (&-> a2-8 0 vertex 2 quad) vf3)
@@ -229,25 +229,25 @@
(.lvf vf2 (&-> arg0 max quad))
(nop!)
(set! (-> obj proc) arg2)
(.mov.vf vf1 vf0 :mask #b1000)
(.mov.vf.w vf1 vf0)
(let ((a0-1 *collide-work*))
(.mov.vf vf2 vf0 :mask #b1000)
(.mov.vf.w vf2 vf0)
(set! (-> obj ignore-mask) arg3)
(.ftoi.vf vf3 vf1)
(.lvf vf6 (&-> v1-0 quad))
(.ftoi.vf vf4 vf2)
(set! (-> obj num-tris) 0)
(.add.vf vf5 vf2 vf1 :mask #b111)
(.add.vf.xyz vf5 vf2 vf1)
(.svf (&-> obj collide-box min quad) vf1)
(.mul.x.vf vf5 vf5 vf6 :mask #b111)
(.mul.x.vf.xyz vf5 vf5 vf6)
(.svf (&-> obj collide-box max quad) vf2)
(.sub.vf vf7 vf5 vf1 :mask #b111)
(.sub.vf vf5 vf5 vf5 :mask #b1000)
(.mul.vf vf7 vf7 vf7 :mask #b111)
(.sub.vf.xyz vf7 vf5 vf1)
(.sub.vf.w vf5 vf5 vf5)
(.mul.vf.xyz vf7 vf7 vf7)
(.svf (&-> obj collide-box4w min quad) vf3)
(.add.y.vf vf7 vf7 vf7 :mask #b1)
(.add.y.vf.x vf7 vf7 vf7)
(.svf (&-> obj collide-box4w max quad) vf4)
(.add.z.vf vf7 vf7 vf7 :mask #b1)
(.add.z.vf.x vf7 vf7 vf7)
(.svf (&-> a0-1 collide-box4w min quad) vf3)
(.sqrt.vf Q vf7 :ftf #b0)
(.svf (&-> a0-1 collide-box4w max quad) vf4)
@@ -255,7 +255,7 @@
(nop!)
(.wait.vf)
(set! (-> obj num-prims) 0)
(.sub.vf vf5 vf5 Q :mask #b1000)
(.sub.vf.w vf5 vf5 Q)
(set! (-> obj collide-with) arg1)
(nop!)
(.svf (&-> a0-1 collide-sphere-neg-r quad) vf5)))
@@ -343,9 +343,9 @@
(let ((v1-0 *collide-work*))
(.mov.vf vf1 vf2)
(set! (-> obj ignore-mask) (the-as pat-surface arg4))
(.add.x.vf vf2 vf2 vf5 :mask #b10)
(.add.x.vf.y vf2 vf2 vf5)
(set! (-> obj num-tris) 0)
(.sub.x.vf vf1 vf1 vf5 :mask #b10)
(.sub.x.vf.y vf1 vf1 vf5)
(set! (-> obj num-prims) 0)
(nop!)
(set! (-> obj collide-with) arg2)
@@ -394,9 +394,9 @@
(.lvf vf1 (&-> arg0 quad))
(nop!)
(let ((v1-0 (-> a1-0 collide-box4w min quad)))
(.sub.w.vf vf2 vf1 vf1 :mask #b111)
(.sub.w.vf.xyz vf2 vf1 vf1)
(let ((a1-1 (-> a1-0 collide-box4w max quad)))
(.add.w.vf vf3 vf1 vf1 :mask #b111)
(.add.w.vf.xyz vf3 vf1 vf1)
(nop!)
(.ftoi.vf vf4 vf2)
(nop!)
@@ -514,20 +514,20 @@
(b! #t cfg-13 :delay (nop!))
(set! v1-1 (the-as collide-work 0))
(label cfg-3)
(.add.y.vf vf8 vf8 vf8 :mask #b1)
(.add.y.vf.x vf8 vf8 vf8)
(set! (-> obj num-tris) 0)
(.min.vf vf4 vf1 vf2)
(set! (-> obj num-prims) 0)
(.max.vf vf5 vf1 vf2)
(set! (-> obj collide-with) arg3)
(.sub.x.vf vf10 vf0 vf9 :mask #b111)
(.sub.x.vf.xyz vf10 vf0 vf9)
(set! (-> obj proc) arg4)
(.add.z.vf vf8 vf8 vf8 :mask #b1)
(.sub.x.vf vf4 vf4 vf9 :mask #b111)
(.add.x.vf vf5 vf5 vf9 :mask #b111)
(.add.z.vf.x vf8 vf8 vf8)
(.sub.x.vf.xyz vf4 vf4 vf9)
(.add.x.vf.xyz vf5 vf5 vf9)
(.ftoi.vf vf15 vf10)
(.isqrt.vf Q vf0 vf8 :fsf #b11 :ftf #b0)
(.add.x.vf vf11 vf0 vf9 :mask #b111)
(.add.x.vf.xyz vf11 vf0 vf9)
(.svf (&-> v1-1 collide-box4w min quad) vf15)
(.ftoi.vf vf6 vf4)
(.svf (&-> obj collide-box min quad) vf4)
@@ -536,39 +536,39 @@
(.mov.vf vf13 vf0)
(.svf (&-> obj collide-box4w min quad) vf6)
(.svf (&-> obj collide-box4w max quad) vf7)
(.add.vf vf8 vf0 Q :mask #b1)
(.add.vf.x vf8 vf0 Q)
(.mul.x.vf vf12 vf3 vf8)
(.div.vf Q vf0 vf8 :fsf #b11 :ftf #b0)
(.mul.vf vf22 vf12 vf12)
(.abs.vf vf23 vf12)
(.add.y.vf vf22 vf22 vf22 :mask #b1)
(.add.y.vf.x vf22 vf22 vf22)
(.mov a0-7 vf23)
(.wait.vf)
(.add.vf vf8 vf0 Q :mask #b1)
(b! (zero? a0-7) cfg-6 :likely-delay (.add.z.vf vf13 vf0 vf12 :mask #b1))
(.sub.y.vf vf13 vf0 vf12 :mask #b1)
(.add.vf.x vf8 vf0 Q)
(b! (zero? a0-7) cfg-6 :likely-delay (.add.z.vf.x vf13 vf0 vf12))
(.sub.y.vf.x vf13 vf0 vf12)
(.isqrt.vf Q vf0 vf22 :fsf #b11 :ftf #b0)
(.add.x.vf vf13 vf0 vf12 :mask #b10)
(.add.x.vf.y vf13 vf0 vf12)
(.wait.vf)
(.mul.vf vf13 vf13 Q :mask #b11)
(.mul.vf.xy vf13 vf13 Q)
(label cfg-6)
(.outer.product.a.vf acc vf12 vf13)
(.add.x.vf vf11 vf11 vf8 :mask #b1)
(.add.x.vf.x vf11 vf11 vf8)
(.outer.product.b.vf vf14 vf13 vf12 acc)
(.ftoi.vf vf16 vf11)
(.mov.vf vf17 vf12)
(.mov.vf vf18 vf13)
(.mov.vf vf19 vf14)
(.mov.vf vf17 vf0 :mask #b1110)
(.mov.vf.yzw vf17 vf0)
(.svf (&-> v1-1 collide-box4w max quad) vf16)
(.mov.vf vf18 vf0 :mask #b1101)
(.mov.vf vf19 vf0 :mask #b1011)
(.add.x.vf vf17 vf17 vf13 :mask #b10)
(.add.y.vf vf18 vf18 vf12 :mask #b1)
(.add.z.vf vf19 vf19 vf12 :mask #b1)
(.add.x.vf vf17 vf17 vf14 :mask #b100)
(.add.y.vf vf18 vf18 vf14 :mask #b100)
(.add.z.vf vf19 vf19 vf13 :mask #b10)
(.mov.vf.xzw vf18 vf0)
(.mov.vf.xyw vf19 vf0)
(.add.x.vf.y vf17 vf17 vf13)
(.add.y.vf.x vf18 vf18 vf12)
(.add.z.vf.x vf19 vf19 vf12)
(.add.x.vf.z vf17 vf17 vf14)
(.add.y.vf.z vf18 vf18 vf14)
(.add.z.vf.y vf19 vf19 vf13)
(.mul.x.vf acc vf17 vf1)
(.add.mul.y.vf acc vf18 vf1 acc)
(.svf (&-> v1-1 inv-mat vector 0 quad) vf17)
@@ -618,8 +618,8 @@
(let ((v1-0 (-> a1-0 collide-box4w min quad)))
(.add.mul.z.vf vf10 vf3 vf5 acc)
(let ((a1-1 (-> a1-0 collide-box4w max quad)))
(.sub.w.vf vf6 vf10 vf5 :mask #b111)
(.add.w.vf vf7 vf10 vf5 :mask #b111)
(.sub.w.vf.xyz vf6 vf10 vf5)
(.add.w.vf.xyz vf7 vf10 vf5)
(.ftoi.vf vf8 vf6)
(.ftoi.vf vf9 vf7)
(.mov a2-0 vf8)
@@ -692,7 +692,7 @@
(vitof12.xyzw vf1 vf1)
(vitof12.xyzw vf2 vf2)
(vitof12.xyzw vf3 vf3)
(.add.vf vf4 vf4 vf5 :mask #b111)
(.add.vf.xyz vf4 vf4 vf5)
(.lvf vf5 (&-> arg0 bsphere quad))
(vitof12.xyzw vf6 vf6)
(.mul.x.vf acc vf1 vf5)
@@ -709,9 +709,9 @@
(let ((a1-1 (-> v1-0 collide-box4w max quad)))
(.add.mul.z.vf acc vf9 vf11 acc)
(.add.mul.w.vf vf11 vf10 vf0 acc)
(.mul.w.vf vf15 vf6 vf5 :mask #b1)
(.add.x.vf vf12 vf11 vf15 :mask #b111)
(.sub.x.vf vf11 vf11 vf15 :mask #b111)
(.mul.w.vf.x vf15 vf6 vf5)
(.add.x.vf.xyz vf12 vf11 vf15)
(.sub.x.vf.xyz vf11 vf11 vf15)
(.ftoi.vf vf14 vf12)
(.ftoi.vf vf13 vf11)
(.mov v1-1 vf14)
@@ -1465,9 +1465,9 @@
(nop!)
(.add.mul.z.vf vf6 vf30 vf1 acc)
(nop!)
(.sub.w.vf vf2 vf6 vf1 :mask #b111)
(.sub.w.vf.xyz vf2 vf6 vf1)
(nop!)
(.add.w.vf vf3 vf6 vf1 :mask #b111)
(.add.w.vf.xyz vf3 vf6 vf1)
(nop!)
(.ftoi.vf vf4 vf2)
(nop!)
@@ -1510,9 +1510,9 @@
(nop!)
(.add.mul.z.vf vf6 vf30 vf1 acc)
(nop!)
(.sub.w.vf vf2 vf6 vf1 :mask #b111)
(.sub.w.vf.xyz vf2 vf6 vf1)
(nop!)
(.add.w.vf vf3 vf6 vf1 :mask #b111)
(.add.w.vf.xyz vf3 vf6 vf1)
(nop!)
(.ftoi.vf vf4 vf2)
(nop!)
@@ -1554,9 +1554,9 @@
(nop!)
(.add.mul.z.vf vf6 vf30 vf1 acc)
(nop!)
(.sub.w.vf vf2 vf6 vf1 :mask #b111)
(.sub.w.vf.xyz vf2 vf6 vf1)
(nop!)
(.add.w.vf vf3 vf6 vf1 :mask #b111)
(.add.w.vf.xyz vf3 vf6 vf1)
(nop!)
(.ftoi.vf vf4 vf2)
(nop!)
@@ -1598,9 +1598,9 @@
(nop!)
(.add.mul.z.vf vf6 vf30 vf1 acc)
(nop!)
(.sub.w.vf vf2 vf6 vf1 :mask #b111)
(.sub.w.vf.xyz vf2 vf6 vf1)
(nop!)
(.add.w.vf vf3 vf6 vf1 :mask #b111)
(.add.w.vf.xyz vf3 vf6 vf1)
(nop!)
(.ftoi.vf vf4 vf2)
(nop!)
@@ -1708,9 +1708,9 @@
(let ((v1-2 (logand s0-0 v1-1)))
(.add.mul.y.vf acc vf29 vf1 acc)
(b! (zero? v1-2) cfg-1 :delay (.add.mul.z.vf vf10 vf30 vf1 acc)))))
(.sub.w.vf vf2 vf10 vf1 :mask #b111)
(.sub.w.vf.xyz vf2 vf10 vf1)
(nop!)
(.add.w.vf vf3 vf10 vf1 :mask #b111)
(.add.w.vf.xyz vf3 vf10 vf1)
(nop!)
(.ftoi.vf vf4 vf2)
(nop!)
@@ -1750,9 +1750,9 @@
(set! (-> gp-0 best-u) 2.0)
(set! (-> gp-0 ignore-pat) arg4)
(set! (-> gp-0 tri-out) arg3)
(.sub.x.vf vf3 vf0 vf3 :mask #b10)
(.sub.x.vf.y vf3 vf0 vf3)
(.svf (&-> gp-0 start-pos quad) vf1)
(.mov.vf vf3 vf0 :mask #b1101)
(.mov.vf.xzw vf3 vf0)
(.svf (&-> gp-0 move-dist quad) vf3)
(let ((s2-0 (the-as object (-> obj prims))))
(countdown (s1-0 (-> obj num-prims))
@@ -1808,7 +1808,7 @@
(.lvf vf3 (&-> arg0 quad))
(.lvf vf2 (&-> arg1 quad))
(set! (-> s4-0 ignore-pat) arg5)
(.mul.x.vf vf3 vf0 vf4 :mask #b1000)
(.mul.x.vf.w vf3 vf0 vf4)
(set! (-> s4-0 tri-out) arg4)
(.svf (&-> s4-0 move-dist quad) vf2)
(.svf (&-> s4-0 bsphere quad) vf3)
@@ -1867,9 +1867,9 @@
(b! (zero? a2-0) cfg-5 :delay (.lvf vf1 a1-1))
(let ((a2-1 (+ a2-0 -1))
(a1-2 (the-as (inline-array sphere) (-> a1-1 1))))
(.sub.w.vf vf2 vf1 vf1 :mask #b111)
(.sub.w.vf.xyz vf2 vf1 vf1)
(.svf (&-> v1-0 0 bsphere quad) vf1)
(.add.w.vf vf3 vf1 vf1 :mask #b111)
(.add.w.vf.xyz vf3 vf1 vf1)
(let ((v1-1 (-> v1-0 1)))
(.ftoi.vf vf4 vf2)
(nop!)
@@ -1883,13 +1883,13 @@
(b! (zero? a2-1) cfg-5 :delay (.lvf vf1 a1-2))
(+! a2-1 -1)
(set! a1-2 (the-as (inline-array sphere) (-> a1-2 1)))
(.sub.w.vf vf4 vf1 vf1 :mask #b111)
(.sub.w.vf.xyz vf4 vf1 vf1)
(.svf (&-> v1-1 bsphere quad) vf1)
(.add.w.vf vf5 vf1 vf1 :mask #b111)
(.add.w.vf.xyz vf5 vf1 vf1)
(nop!)
(.min.vf vf2 vf2 vf4 :mask #b111)
(.min.vf.xyz vf2 vf2 vf4)
(nop!)
(.max.vf vf3 vf3 vf5 :mask #b111)
(.max.vf.xyz vf3 vf3 vf5)
(nop!)
(.ftoi.vf vf4 vf4)
(nop!)
@@ -33,15 +33,15 @@
(set! (-> gp-0 cshape) v1-0)
(.lvf vf3 (&-> v1-0 trans quad)))
;; translate the cache filling box
(.add.vf vf1 vf1 vf3 :mask #b111)
(.add.vf vf2 vf2 vf3 :mask #b111)
(.add.vf.xyz vf1 vf1 vf3)
(.add.vf.xyz vf2 vf2 vf3)
(.svf (&-> gp-0 cache-fill-box min quad) vf1)
(.svf (&-> gp-0 cache-fill-box max quad) vf2)
;; translate the reach box
(.lvf vf4 (&-> gp-0 local-within-reach-box min quad))
(.lvf vf5 (&-> gp-0 local-within-reach-box max quad))
(.add.vf vf4 vf4 vf3 :mask #b111)
(.add.vf vf5 vf5 vf3 :mask #b111)
(.add.vf.xyz vf4 vf4 vf3)
(.add.vf.xyz vf5 vf5 vf3)
;; and also provide an integer version of the box.
(.ftoi.vf vf6 vf4)
(.ftoi.vf vf7 vf5)
@@ -203,14 +203,14 @@
(.outer.product.a.vf acc vf4 vf5)
(.outer.product.b.vf vf6 vf5 vf4 acc)
(.mul.vf vf7 vf6 vf6)
(.mul.x.vf acc vf0 vf7 :mask #b1000)
(.add.mul.y.vf acc vf0 vf7 acc :mask #b1000)
(.add.mul.z.vf vf7 vf0 vf7 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf7)
(.add.mul.y.vf.w acc vf0 vf7 acc)
(.add.mul.z.vf.w vf7 vf0 vf7 acc)
(.isqrt.vf Q vf0 vf7 :fsf #b11 :ftf #b11)
(let ((f1-0 0.707))
(.wait.vf)
(nop!)
(.mul.vf vf6 vf6 Q :mask #b111)
(.mul.vf.xyz vf6 vf6 Q)
(.mov v1-14 vf6)
(b! (>= (the-as float (sar (the-as int v1-14) 32)) f1-0) cfg-17))
(set! v0-0 #f)
@@ -327,19 +327,19 @@
(.add.vf vf10 vf10 vf1)
(.sub.vf vf7 vf5 vf10)
(.mul.vf vf7 vf7 vf7)
(.add.z.vf vf7 vf7 vf7 :mask #b1)
(.add.z.vf.x vf7 vf7 vf7)
(.mov v1-4 vf7)
(b! (< f0-0 v1-4) cfg-4)
(.sub.vf vf8 vf1 vf5)
(.mul.vf vf7 vf8 vf8)
(.add.z.vf vf7 vf7 vf7 :mask #b1)
(.add.z.vf.x vf7 vf7 vf7)
(.isqrt.vf Q vf0 vf7 :fsf #b11 :ftf #b0)
(nop!)
(.wait.vf)
(nop!)
(.mul.vf vf8 vf8 Q :mask #b101)
(.mul.vf.xz vf8 vf8 Q)
(.mul.vf vf9 vf8 vf6)
(.add.z.vf vf9 vf9 vf9 :mask #b1)
(.add.z.vf.x vf9 vf9 vf9)
(.mov v1-5 vf9)
(b! (< v1-5 f1-0) cfg-4)))
(.sub.vf vf7 vf11 vf1)
@@ -347,7 +347,7 @@
(.mul.vf vf7 vf7 vf7)
(set! (-> arg0 split) 0)
(.svf (&-> arg0 outward-pt quad) vf10)
(.add.z.vf vf7 vf7 vf7 :mask #b1)
(.add.z.vf.x vf7 vf7 vf7)
(set! (-> arg0 edge) arg1)
(.mov v1-6 vf7)
(set! (-> arg0 rating) v1-6)
@@ -386,23 +386,23 @@
(.sub.vf vf4 vf1 vf2)
(.sub.vf vf5 vf3 vf2)
(.mul.vf vf6 vf5 vf5)
(.add.z.vf vf6 vf6 vf6 :mask #b1)
(.add.z.vf.x vf6 vf6 vf6)
(.sqrt.vf Q vf6 :ftf #b0)
(nop!)
(.wait.vf)
(nop!)
(.add.vf vf6 vf0 Q :mask #b1)
(.add.vf.x vf6 vf0 Q)
(.nop.vf)
(.mov v1-1 vf6)
(let ((f1-0 v1-1))
(.div.vf Q vf0 vf6 :fsf #b11 :ftf #b0)
(.wait.vf)
(nop!)
(.add.vf vf8 vf0 Q :mask #b1)
(.add.vf.x vf8 vf0 Q)
(.mul.x.vf vf9 vf5 vf8)
(.mov v1-2 vf8)
(.mul.vf vf10 vf9 vf4)
(.add.z.vf vf10 vf10 vf10 :mask #b1)
(.add.z.vf.x vf10 vf10 vf10)
(let ((f2-0 v1-2))
(.mov v1-3 vf10)
(let ((f3-0 v1-3))
@@ -410,8 +410,8 @@
(b! (< f1-0 f3-0) cfg-4 :likely-delay (set! f3-0 f1-0))
(label cfg-4)
(let ((v1-4 (* f3-0 f2-0))) (.mov vf11 v1-4))))))
(.mul.x.vf vf7 vf5 vf11 :mask #b111)
(.add.vf vf7 vf7 vf2 :mask #b111)
(.mul.x.vf.xyz vf7 vf5 vf11)
(.add.vf.xyz vf7 vf7 vf2)
(.svf (&-> arg1 quad) vf7)
(.mov v0-0 vf7)
v0-0))
+39 -39
View File
@@ -46,22 +46,22 @@
(.mul.vf vf3 vf3 vf3) ;; vf3 = r^2
(.mul.vf vf6 vf1 vf1) ;; vf6 = o.^2
(.mul.vf vf5 vf2 vf1) ;; vf5 = u . o
(.add.y.vf vf4 vf4 vf4 :mask #b1)
(.add.y.vf.x vf4 vf4 vf4)
(let ((result (the-as float 0)))
(.add.x.vf vf6 vf6 vf6 :mask #b10)
(.sub.x.vf vf6 vf6 vf3 :mask #b100)
(.add.z.vf vf4 vf4 vf4 :mask #b1)
(.add.x.vf vf5 vf5 vf5 :mask #b10)
(.add.x.vf.y vf6 vf6 vf6)
(.sub.x.vf.z vf6 vf6 vf3)
(.add.z.vf.x vf4 vf4 vf4)
(.add.x.vf.y vf5 vf5 vf5)
(let ((v1-0 (the-as float 0)))
(.add.z.vf vf6 vf6 vf6 :mask #b10)
(.add.z.vf.y vf6 vf6 vf6)
(.div.vf Q vf0 vf4 :fsf #b11 :ftf #b0)
(.add.z.vf vf5 vf5 vf5 :mask #b10)
(.add.z.vf.y vf5 vf5 vf5)
(.mov a0-1 vf4)
(.mul.x.vf vf7 vf6 vf4)
(.mov a1-0 vf6)
(.mul.vf vf8 vf5 vf5)
(b! (< (the-as int a1-0) 0) cfg-7 :delay (set! a0-2 a0-1))
(.mul.vf vf4 vf0 Q :mask #b1000)
(.mul.vf.w vf4 vf0 Q)
(.sub.vf vf9 vf8 vf7)
(b! (= a0-2 v1-0) cfg-6 :delay (.mov v1-1 vf5)))
(.sqrt.vf Q vf9 :ftf #b1)
@@ -70,11 +70,11 @@
(.add.x.vf vf6 vf5 vf4)
(.mov v1-4 vf6)
(.mul.vf vf6 vf6 vf6)
(.mul.vf vf9 vf0 Q :mask #b1000)
(.mul.vf.w vf9 vf0 Q)
(.sub.vf vf6 vf9 vf6)
(.add.w.vf vf9 vf5 vf9 :mask #b10)
(.add.w.vf.y vf9 vf5 vf9)
(.mov a0-3 vf6)
(.mul.w.vf vf9 vf9 vf4 :mask #b10)
(.mul.w.vf.y vf9 vf9 vf4)
(b! (< (logand (the-as uint v1-4) (the-as uint a0-3)) 0) cfg-6 :delay (.sub.y.vf vf4 vf0 vf9))
(b! #t cfg-7 :delay (.mov result vf4))
(label cfg-6)
@@ -120,22 +120,22 @@
(.mul.vf vf3 vf3 vf3)
(.mul.vf vf6 vf1 vf1)
(.mul.vf vf5 vf2 vf1)
(.add.y.vf vf4 vf4 vf4 :mask #b1)
(.add.y.vf.x vf4 vf4 vf4)
(let ((result (the-as float 0)))
(.add.x.vf vf6 vf6 vf6 :mask #b10)
(.sub.x.vf vf6 vf6 vf3 :mask #b100)
(.add.z.vf vf4 vf4 vf4 :mask #b1)
(.add.x.vf vf5 vf5 vf5 :mask #b10)
(.add.x.vf.y vf6 vf6 vf6)
(.sub.x.vf.z vf6 vf6 vf3)
(.add.z.vf.x vf4 vf4 vf4)
(.add.x.vf.y vf5 vf5 vf5)
(let ((v1-0 (the-as float 0)))
(.add.z.vf vf6 vf6 vf6 :mask #b10)
(.add.z.vf.y vf6 vf6 vf6)
(.div.vf Q vf0 vf4 :fsf #b11 :ftf #b0)
(.add.z.vf vf5 vf5 vf5 :mask #b10)
(.add.z.vf.y vf5 vf5 vf5)
(.mov a0-1 vf4)
(.mul.x.vf vf7 vf6 vf4)
(.mov a1-0 vf6)
(.mul.vf vf8 vf5 vf5)
(b! (< (the-as int a1-0) 0) cfg-7 :delay (set! a0-2 a0-1)) ;; in the sphere
(.mul.vf vf4 vf0 Q :mask #b1000)
(.mul.vf.w vf4 vf0 Q)
(.sub.vf vf9 vf8 vf7)
(b! (= a0-2 v1-0) cfg-6 :delay (.mov v1-1 vf5)) ;; bad denominator in division
)
@@ -145,11 +145,11 @@
(.add.x.vf vf6 vf5 vf4)
(.mov v1-4 vf6)
(.mul.vf vf6 vf6 vf6)
(.mul.vf vf9 vf0 Q :mask #b1000)
(.mul.vf.w vf9 vf0 Q)
(.sub.vf vf6 vf9 vf6)
(.add.w.vf vf9 vf5 vf9 :mask #b10)
(.add.w.vf.y vf9 vf5 vf9)
(.mov a0-3 vf6)
(.mul.w.vf vf9 vf9 vf4 :mask #b10)
(.mul.w.vf.y vf9 vf9 vf4)
;; too far.
(b! (< (logand (the-as int v1-4) (the-as int a0-3)) 0) cfg-6 :delay (.sub.y.vf vf4 vf0 vf9))
(b! #t cfg-7 :delay (.mov result vf4))
@@ -179,12 +179,12 @@
(vf2 :class vf))
(init-vf0-vector)
(.lvf vf1 (&-> ray-origin quad))
(.mov.vf vf1 vf0 :mask #b10)
(.mov.vf.y vf1 vf0)
(.lvf vf2 (&-> circle-origin quad))
(.mov.vf vf2 vf0 :mask #b10)
(.mov.vf.y vf2 vf0)
(.sub.vf vf1 vf1 vf2)
(.lvf vf2 (&-> ray-dir quad))
(.mov.vf vf2 vf0 :mask #b10)
(.mov.vf.y vf2 vf0)
;;(raw-ray-sphere-intersect radius)
(pc-port-do-raw-ray-sphere-intersect radius vf1 vf2)))
@@ -220,10 +220,10 @@
(.mov vf14 cyl-len)
(.mul.vf vf16 vf15 vf13)
(.mul.vf vf17 vf11 vf13)
(.add.x.vf vf16 vf16 vf16 :mask #b10)
(.add.x.vf vf17 vf17 vf17 :mask #b10)
(.add.z.vf vf16 vf16 vf16 :mask #b10)
(.add.z.vf vf17 vf17 vf17 :mask #b10)
(.add.x.vf.y vf16 vf16 vf16)
(.add.x.vf.y vf17 vf17 vf17)
(.add.z.vf.y vf16 vf16 vf16)
(.add.z.vf.y vf17 vf17 vf17)
(.mul.y.vf vf1 vf13 vf16)
(.add.vf vf18 vf17 vf16)
(.sub.x.vf vf19 vf16 vf14)
@@ -245,7 +245,7 @@
(.mul.y.vf vf13 vf13 vf16)
(.sub.x.vf vf19 vf16 vf14)
(.mov a0-4 vf16)
(b! (< (the-as int a0-4) 0) cfg-6 :delay (.add.vf vf12 vf12 vf13 :mask #b111))
(b! (< (the-as int a0-4) 0) cfg-6 :delay (.add.vf.xyz vf12 vf12 vf13))
(.mov a0-5 vf19)
(b! (>= (the-as int a0-5) 0) cfg-6 :delay (.svf (&-> pt-out quad) vf12))
(b! #t cfg-7 :delay (set! v0-1 v1-4)))
@@ -283,12 +283,12 @@
(.mul.vf vf8 vf8 vf4)
(.mul.vf vf9 vf7 vf4)
(.mul.vf vf5 vf4 vf4)
(.add.y.vf vf8 vf8 vf8 :mask #b1)
(.add.y.vf vf9 vf9 vf9 :mask #b1)
(.add.y.vf vf5 vf5 vf5 :mask #b1)
(.add.z.vf vf8 vf8 vf8 :mask #b1)
(.add.z.vf vf9 vf9 vf9 :mask #b1)
(.add.z.vf vf5 vf5 vf5 :mask #b1)
(.add.y.vf.x vf8 vf8 vf8)
(.add.y.vf.x vf9 vf9 vf9)
(.add.y.vf.x vf5 vf5 vf5)
(.add.z.vf.x vf8 vf8 vf8)
(.add.z.vf.x vf9 vf9 vf9)
(.add.z.vf.x vf5 vf5 vf5)
(.mov v1-0 vf9)
(.mov a2-1 vf8)
(.isqrt.vf Q vf0 vf5 :fsf #b11 :ftf #b0)
@@ -297,14 +297,14 @@
(cond
((!= f2-0 0.0)
(let ((f1-1 (/ f1-0 f2-0)))
(.mov.vf vf4 vf0 :mask #b1000)
(.mov.vf.w vf4 vf0)
(.wait.vf)
(.mul.vf vf4 vf4 Q :mask #b111)
(.mul.vf.xyz vf4 vf4 Q)
(let ((v0-0 f1-1))
(.mov vf8 v0-0)
(.svf (&-> arg1 quad) vf4)
(.mul.x.vf acc vf7 vf8)
(.add.mul.w.vf vf7 vf6 vf0 acc :mask #b111)
(.add.mul.w.vf.xyz vf7 vf6 vf0 acc)
(.svf (&-> arg0 quad) vf7)
(.mov v1-1 vf7)
v0-0)))
+10 -10
View File
@@ -236,11 +236,11 @@
(let ((t1-3 (* t1-2 16)))
(.max.vf vf9 vf9 vf3)
(let ((t2-4 (* t2-3 16)))
(.mul.x.vf acc vf0 vf7 :mask #b1000)
(.mul.x.vf.w acc vf0 vf7)
(let ((t3-0 (* t0-5 16)))
(.add.mul.y.vf acc vf0 vf7 acc :mask #b1000)
(.add.mul.y.vf.w acc vf0 vf7 acc)
(set! t0-4 (+ t1-3 a2-1))
(.add.mul.z.vf vf7 vf0 vf7 acc :mask #b1000)
(.add.mul.z.vf.w vf7 vf0 vf7 acc)
(set! t1-1 (+ t2-4 a2-1))
(.isqrt.vf Q vf0 vf7 :fsf #b11 :ftf #b11)
(set! t2-2 (+ t3-0 a2-1)))))))))
@@ -252,7 +252,7 @@
(.svf (&-> a1-1 bbox4w min quad) vf8)
(.wait.vf)
(.svf (&-> a1-1 bbox4w max quad) vf9)
(.mul.vf vf6 vf6 Q :mask #b111)
(.mul.vf.xyz vf6 vf6 Q)
(nop!)
(nop!)
(.svf (&-> a1-1 normal quad) vf6)
@@ -314,13 +314,13 @@
(set! v1-0 (-> s5-0 vector 1 quad))
(set! a0-1 (-> s5-0 vector 2 quad))
(.sub.vf vf3 vf2 vf1)
(.mul.w.vf vf4 vf2 vf2 :mask #b1000)
(.mul.w.vf.w vf4 vf2 vf2)
(.mul.vf vf3 vf3 vf3)
(.mul.x.vf acc vf0 vf3 :mask #b1000)
(.add.mul.y.vf acc vf0 vf3 acc :mask #b1000)
(.add.mul.z.vf vf3 vf0 vf3 acc :mask #b1000)
(.sub.w.vf vf3 vf3 vf4 :mask #b1000)
(.add.w.vf vf3 vf0 vf3 :mask #b10)
(.mul.x.vf.w acc vf0 vf3)
(.add.mul.y.vf.w acc vf0 vf3 acc)
(.add.mul.z.vf.w vf3 vf0 vf3 acc)
(.sub.w.vf.w vf3 vf3 vf4)
(.add.w.vf.y vf3 vf0 vf3)
(.mov a1-7 vf3)
(b! (>= (the-as int a1-7) 0) cfg-1 :delay (set! s4-0 (&+ s4-0 96))))
(let ((v0-1 #t)) (b! #t cfg-8 :delay (nop!)) (the-as none 0) (label cfg-7) (set! v0-1 #f) (label cfg-8) v0-1)))
@@ -266,8 +266,8 @@
(.lvf vf1 (&-> s2-1 quad))
(let ((f0-2 (-> *display* frames-per-second))) (.mov at-0 f0-2))
(.mov vf2 at-0)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.mov.vf.w vf1 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> v1-12 quad) vf1))
(cond
((type-type? (-> gp-0 type) collide-shape-moving)
+124 -124
View File
@@ -65,15 +65,15 @@
(.lvf vf2 (&-> a1-1 prim-core world-sphere quad))
;; see if bsphere's overlap
(.sub.vf vf3 vf1 vf2)
(.add.w.vf vf4 vf1 vf2 :mask #b1000)
(.mul.vf vf3 vf3 vf3 :mask #b111)
(.mul.w.vf vf4 vf4 vf4 :mask #b1000)
(.mul.x.vf acc vf0 vf3 :mask #b1000)
(.add.mul.y.vf acc vf0 vf3 acc :mask #b1000)
(.add.mul.z.vf vf3 vf0 vf3 acc :mask #b1000)
(.sub.w.vf vf5 vf3 vf4 :mask #b1000)
(.add.w.vf.w vf4 vf1 vf2)
(.mul.vf.xyz vf3 vf3 vf3)
(.mul.w.vf.w vf4 vf4 vf4)
(.mul.x.vf.w acc vf0 vf3)
(.add.mul.y.vf.w acc vf0 vf3 acc)
(.add.mul.z.vf.w vf3 vf0 vf3 acc)
(.sub.w.vf.w vf5 vf3 vf4)
(let ((f0-1 0.0))
(.add.w.vf vf5 vf0 vf5 :mask #b1)
(.add.w.vf.x vf5 vf0 vf5)
(.mov v1-4 vf5)
(b! (<= f0-1 v1-4) cfg-8) ;; they don't, fail!
)
@@ -126,14 +126,14 @@
(b! (zero? a1-2) cfg-1 :delay (nop!))))
;; check bspheres
(.sub.vf vf3 vf2 vf1)
(.add.w.vf vf4 vf2 vf1 :mask #b1000)
(.mul.vf vf3 vf3 vf3 :mask #b111)
(.mul.w.vf vf4 vf4 vf4 :mask #b1000)
(.mul.x.vf acc vf0 vf3 :mask #b1000)
(.add.mul.y.vf acc vf0 vf3 acc :mask #b1000)
(.add.mul.z.vf vf3 vf0 vf3 acc :mask #b1000)
(.sub.w.vf vf3 vf3 vf4 :mask #b1000)
(let ((f0-0 0.0)) (.add.w.vf vf3 vf0 vf3 :mask #b1) (.mov a1-3 vf3) (b! (<= f0-0 a1-3) cfg-1))
(.add.w.vf.w vf4 vf2 vf1)
(.mul.vf.xyz vf3 vf3 vf3)
(.mul.w.vf.w vf4 vf4 vf4)
(.mul.x.vf.w acc vf0 vf3)
(.add.mul.y.vf.w acc vf0 vf3 acc)
(.add.mul.z.vf.w vf3 vf0 vf3 acc)
(.sub.w.vf.w vf3 vf3 vf4)
(let ((f0-0 0.0)) (.add.w.vf.x vf3 vf0 vf3) (.mov a1-3 vf3) (b! (<= f0-0 a1-3) cfg-1))
;; bspheres overlap, more accurate test is required.
(should-push-away-test a0-1 arg0 arg1))
(set! v1-0 (-> arg0 prim-core collide-as))))
@@ -173,14 +173,14 @@
(b! (zero? a2-2) cfg-1 :delay (.lvf vf1 (&-> a1-1 prim-core world-sphere quad)))
(b! (zero? a0-2) cfg-1 :delay (nop!))))
(.sub.vf vf3 vf2 vf1)
(.add.w.vf vf4 vf2 vf1 :mask #b1000)
(.mul.vf vf3 vf3 vf3 :mask #b111)
(.mul.w.vf vf4 vf4 vf4 :mask #b1000)
(.mul.x.vf acc vf0 vf3 :mask #b1000)
(.add.mul.y.vf acc vf0 vf3 acc :mask #b1000)
(.add.mul.z.vf vf3 vf0 vf3 acc :mask #b1000)
(.sub.w.vf vf3 vf3 vf4 :mask #b1000)
(let ((f0-0 0.0)) (.add.w.vf vf3 vf0 vf3 :mask #b1) (.mov a0-3 vf3) (b! (<= f0-0 a0-3) cfg-1))
(.add.w.vf.w vf4 vf2 vf1)
(.mul.vf.xyz vf3 vf3 vf3)
(.mul.w.vf.w vf4 vf4 vf4)
(.mul.x.vf.w acc vf0 vf3)
(.add.mul.y.vf.w acc vf0 vf3 acc)
(.add.mul.z.vf.w vf3 vf0 vf3 acc)
(.sub.w.vf.w vf3 vf3 vf4)
(let ((f0-0 0.0)) (.add.w.vf.x vf3 vf0 vf3) (.mov a0-3 vf3) (b! (<= f0-0 a0-3) cfg-1))
(should-push-away-test obj a1-1 arg1))
(set! v1-0 (-> obj collide-with))))
(b! #t cfg-1 :delay (.lvf vf2 (&-> obj prim-core world-sphere quad)))
@@ -277,21 +277,21 @@
;; if we're here, it's sphere->sphere.
(.lvf vf1 (&-> obj prim-core world-sphere quad))
(.lvf vf2 (&-> arg0 prim-core world-sphere quad))
(.sub.vf vf3 vf2 vf1 :mask #b111)
(.add.w.vf vf5 vf1 vf2 :mask #b1000)
(.mul.vf vf4 vf3 vf3 :mask #b111)
(.mul.x.vf acc vf0 vf4 :mask #b1000)
(.add.mul.y.vf acc vf0 vf4 acc :mask #b1000)
(.add.mul.z.vf vf4 vf0 vf4 acc :mask #b1000)
(.sub.vf.xyz vf3 vf2 vf1)
(.add.w.vf.w vf5 vf1 vf2)
(.mul.vf.xyz vf4 vf3 vf3)
(.mul.x.vf.w acc vf0 vf4)
(.add.mul.y.vf.w acc vf0 vf4 acc)
(.add.mul.z.vf.w vf4 vf0 vf4 acc)
(.sqrt.vf Q vf4 :ftf #b11)
(.mov.vf vf3 vf0 :mask #b1000)
(.add.w.vf vf5 vf0 vf5 :mask #b1)
(.mov.vf.w vf3 vf0)
(.add.w.vf.x vf5 vf0 vf5)
(let ((f2-0 (-> arg1 best-dist)))
(.wait.vf)
(nop!)
(.add.vf vf4 vf0 Q :mask #b1)
(.sub.x.vf vf6 vf4 vf5 :mask #b1)
(.mul.x.vf vf3 vf3 vf4 :mask #b111)
(.add.vf.x vf4 vf0 Q)
(.sub.x.vf.x vf6 vf4 vf5)
(.mul.x.vf.xyz vf3 vf3 vf4)
(.mov v1-3 vf6)
(let ((f1-0 v1-3))
(b! (<= f2-0 f1-0) cfg-13)
@@ -863,8 +863,8 @@
(.lvf vf1 (&-> arg0 quad))
(let ((f0-0 (-> *display* seconds-per-frame))) (.mov at-0 f0-0))
(.mov vf2 at-0)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.mov.vf.w vf1 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> v1-1 quad) vf1)
(t9-0 obj v1-1))
(none)))
@@ -1018,8 +1018,8 @@
(.lvf vf1 (&-> arg0 quad))
(let ((f0-2 (-> *display* seconds-per-frame))) (.mov at-0 f0-2))
(.mov vf2 at-0)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.mov.vf.w vf1 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> a1-1 quad) vf1)
(t9-1 a0-12 a1-1))
(set! (-> obj shadow-pos quad) (-> obj trans quad))
@@ -1190,8 +1190,8 @@
(.lvf vf1 (&-> arg0 quad))
(let ((f0-0 (-> *display* seconds-per-frame))) (.mov at-0 f0-0))
(.mov vf2 at-0)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.mov.vf.w vf1 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> v1-0 quad) vf1))
;; add a bonus size if we are target.
(let ((f0-2 (+ (vector-length a0-1) (if (= (-> obj process type) target) 4096.0 0.0))))
@@ -1257,14 +1257,14 @@
((logtest? (-> a0-1 collide-with) arg2)
(.mov vf31 arg1)
(.lvf vf1 (&-> v1-0 quad))
(.add.x.vf vf31 vf31 vf1 :mask #b1)
(.add.x.vf.x vf31 vf31 vf1)
(.svf (&-> *pc-bounding-box-work* reg-vf31 quad) vf31) ;; added
(cond
((add-to-bounding-box a0-1 arg2)
(.lvf vf29 (&-> *pc-bounding-box-work* reg-vf29 quad)) ;; added
(.lvf vf30 (&-> *pc-bounding-box-work* reg-vf30 quad)) ;; added
(.mov.vf vf29 vf0 :mask #b1000)
(.mov.vf vf30 vf0 :mask #b1000)
(.mov.vf.w vf29 vf0)
(.mov.vf.w vf30 vf0)
(.svf (&-> arg0 min quad) vf29)
(.svf (&-> arg0 max quad) vf30)
(return #t))
@@ -1283,9 +1283,9 @@
(vf31 :class vf))
(load-bounding-box-work)
(.lvf vf1 (&-> obj prim-core world-sphere quad))
(.add.w.vf vf2 vf31 vf1 :mask #b1)
(.add.x.vf vf30 vf1 vf2 :mask #b111)
(.sub.x.vf vf29 vf1 vf2 :mask #b111)
(.add.w.vf.x vf2 vf31 vf1)
(.add.x.vf.xyz vf30 vf1 vf2)
(.sub.x.vf.xyz vf29 vf1 vf2)
(save-bounding-box-work)
#t))
@@ -1317,9 +1317,9 @@
(load-bounding-box-work))
(else
(.lvf vf1 (&-> a0-1 prim-core world-sphere quad))
(.add.w.vf vf2 vf31 vf1 :mask #b1)
(.add.x.vf vf30 vf1 vf2 :mask #b111)
(b! #t cfg-12 :delay (.sub.x.vf vf29 vf1 vf2 :mask #b111))
(.add.w.vf.x vf2 vf31 vf1)
(.add.x.vf.xyz vf30 vf1 vf2)
(b! #t cfg-12 :delay (.sub.x.vf.xyz vf29 vf1 vf2))
(.mov v1-10 vf29)))))
;; and now
(b! #t cfg-1 :delay (set! s3-0 (+ s3-0 1)))
@@ -1339,9 +1339,9 @@
(load-bounding-box-work))
(else
(.lvf vf1 (&-> a0-2 prim-core world-sphere quad))
(.add.w.vf vf2 vf31 vf1 :mask #b1)
(.add.x.vf vf4 vf1 vf2 :mask #b111)
(.sub.x.vf vf3 vf1 vf2 :mask #b111)
(.add.w.vf.x vf2 vf31 vf1)
(.add.x.vf.xyz vf4 vf1 vf2)
(.sub.x.vf.xyz vf3 vf1 vf2)
(.min.vf vf29 vf29 vf3)
(.max.vf vf30 vf30 vf4)
(.mov v1-19 vf30)))))
@@ -1376,9 +1376,9 @@
(load-bounding-box-work))
(else
(.lvf vf1 (&-> a0-1 prim-core world-sphere quad))
(.add.w.vf vf2 vf31 vf1 :mask #b1)
(.add.x.vf vf4 vf1 vf2 :mask #b111)
(.sub.x.vf vf3 vf1 vf2 :mask #b111)
(.add.w.vf.x vf2 vf31 vf1)
(.add.x.vf.xyz vf4 vf1 vf2)
(.sub.x.vf.xyz vf3 vf1 vf2)
(.min.vf vf29 vf29 vf3)
(.max.vf vf30 vf30 vf4)
(.mov v1-8 vf30)))))
@@ -1542,22 +1542,22 @@
(.add.mul.x.vf acc vf2 vf1 acc)
(.lvf vf4 (&-> v1-4 vector 2 quad)))
(.add.mul.y.vf acc vf3 vf1 acc)
(.add.mul.z.vf vf1 vf4 vf1 acc :mask #b111)
(.mul.vf vf1 vf1 Q :mask #b111)
(.add.mul.z.vf.xyz vf1 vf4 vf1 acc)
(.mul.vf.xyz vf1 vf1 Q)
(.svf (&-> obj prim-core world-sphere quad) vf1)
(.mov a0-2 vf1))
(else
(when (= a0-1 -2)
(.lvf vf1 (&-> obj local-sphere quad))
(.lvf vf2 (&-> v1-0 trans quad))
(.add.vf vf1 vf1 vf2 :mask #b111)
(.add.vf.xyz vf1 vf1 vf2)
(.svf (&-> obj prim-core world-sphere quad) vf1)
(.mov a0-4 vf1)))))
(else
(when (!= a0-1 -1)
(.lvf vf1 (&-> obj local-sphere quad))
(.lvf vf2 (&-> v1-0 trans quad))
(.add.vf vf1 vf1 vf2 :mask #b111)
(.add.vf.xyz vf1 vf1 vf2)
(.svf (&-> obj prim-core world-sphere quad) vf1)
(.mov a0-6 vf1)))))
(when (= (-> obj type) collide-shape-prim-group)
@@ -1800,8 +1800,8 @@
(.lvf vf5 (&-> s2-0 best-from-tri normal quad))
(.sub.vf vf2 vf4 vf3)
(.mul.vf vf1 vf5 vf2)
(.add.x.vf vf1 vf1 vf1 :mask #b10)
(.add.z.vf vf1 vf1 vf1 :mask #b10)
(.add.x.vf.y vf1 vf1 vf1)
(.add.z.vf.y vf1 vf1 vf1)
(.mov v1-20 vf1)
(b! (< (the-as int v1-20) 0) cfg-18 :likely-delay (.sub.vf vf2 vf0 vf2))
(label cfg-18)
@@ -1812,8 +1812,8 @@
(.lvf vf1 (&-> s1-0 quad))
(let ((f0-6 (-> *display* frames-per-second))) (.mov at-0 f0-6))
(.mov vf2 at-0)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.mov.vf.w vf1 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> v1-23 quad) vf1))
(let ((s0-0 (-> s3-0 status)))
;; step.
@@ -1853,8 +1853,8 @@
(.lvf vf5 (&-> s2-1 best-from-tri normal quad))
(.sub.vf vf2 vf4 vf3)
(.mul.vf vf1 vf5 vf2)
(.add.x.vf vf1 vf1 vf1 :mask #b10)
(.add.z.vf vf1 vf1 vf1 :mask #b10)
(.add.x.vf.y vf1 vf1 vf1)
(.add.z.vf.y vf1 vf1 vf1)
(.mov v1-53 vf1)
(b! (< (the-as int v1-53) 0) cfg-44 :likely-delay (.sub.vf vf2 vf0 vf2))
(label cfg-44)
@@ -1865,8 +1865,8 @@
(.lvf vf1 (&-> s1-1 quad))
(let ((f0-13 (-> *display* frames-per-second))) (.mov at-1 f0-13))
(.mov vf2 at-1)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.mov.vf.w vf1 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> v1-56 quad) vf1))
(let ((s0-1 (-> s3-1 status))) (integrate-and-collide! s3-1 s1-1) (set! (-> s3-1 status) s0-1)))
(+! s5-2 -1)))
@@ -1902,8 +1902,8 @@
(.lvf vf5 (&-> s2-2 best-from-tri normal quad))
(.sub.vf vf2 vf4 vf3)
(.mul.vf vf1 vf5 vf2)
(.add.x.vf vf1 vf1 vf1 :mask #b10)
(.add.z.vf vf1 vf1 vf1 :mask #b10)
(.add.x.vf.y vf1 vf1 vf1)
(.add.z.vf.y vf1 vf1 vf1)
(.mov v1-85 vf1)
(b! (< (the-as int v1-85) 0) cfg-69 :likely-delay (.sub.vf vf2 vf0 vf2))
(label cfg-69)
@@ -1914,8 +1914,8 @@
(.lvf vf1 (&-> s1-2 quad))
(let ((f0-20 (-> *display* frames-per-second))) (.mov at-2 f0-20))
(.mov vf2 at-2)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.mov.vf.w vf1 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> v1-88 quad) vf1))
(let ((s0-2 (-> s3-2 status))) (integrate-and-collide! s3-2 s1-2) (set! (-> s3-2 status) s0-2)))
(+! s5-3 -1)))
@@ -1951,8 +1951,8 @@
(.lvf vf5 (&-> s2-3 best-from-tri normal quad))
(.sub.vf vf2 vf4 vf3)
(.mul.vf vf1 vf5 vf2)
(.add.x.vf vf1 vf1 vf1 :mask #b10)
(.add.z.vf vf1 vf1 vf1 :mask #b10)
(.add.x.vf.y vf1 vf1 vf1)
(.add.z.vf.y vf1 vf1 vf1)
(.mov v1-116 vf1)
(b! (< (the-as int v1-116) 0) cfg-94 :likely-delay (.sub.vf vf2 vf0 vf2))
(label cfg-94)
@@ -1963,8 +1963,8 @@
(.lvf vf1 (&-> s1-3 quad))
(let ((f0-27 (-> *display* frames-per-second))) (.mov at-3 f0-27))
(.mov vf2 at-3)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.mov.vf.w vf1 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> v1-119 quad) vf1))
(let ((s0-3 (-> s3-3 status))) (integrate-and-collide! s3-3 s1-3) (set! (-> s3-3 status) s0-3)))
(+! s5-4 -1)))
@@ -2029,15 +2029,15 @@
(when (logtest? v1-1 (-> a2-0 prim-core collide-as))
(.lvf vf2 (&-> a2-0 prim-core world-sphere quad))
(.sub.vf vf3 vf1 vf2)
(.add.w.vf vf4 vf1 vf2 :mask #b1000)
(.mul.vf vf3 vf3 vf3 :mask #b111)
(.mul.w.vf vf4 vf4 vf4 :mask #b1000)
(.mul.x.vf acc vf0 vf3 :mask #b1000)
(.add.mul.y.vf acc vf0 vf3 acc :mask #b1000)
(.add.mul.z.vf vf3 vf0 vf3 acc :mask #b1000)
(.sub.w.vf vf3 vf3 vf4 :mask #b1000)
(.add.w.vf.w vf4 vf1 vf2)
(.mul.vf.xyz vf3 vf3 vf3)
(.mul.w.vf.w vf4 vf4 vf4)
(.mul.x.vf.w acc vf0 vf3)
(.add.mul.y.vf.w acc vf0 vf3 acc)
(.add.mul.z.vf.w vf3 vf0 vf3 acc)
(.sub.w.vf.w vf3 vf3 vf4)
(let ((f0-0 0.0))
(.add.w.vf vf3 vf0 vf3 :mask #b1)
(.add.w.vf.x vf3 vf0 vf3)
(let ((a1-6 (-> obj process)))
(.mov a3-0 vf3)
(let ((a0-8 (-> a0-7 process)))
@@ -2071,15 +2071,15 @@
(when (logtest? v1-1 (-> a2-1 prim-core collide-as))
(.lvf vf2 (&-> a2-1 prim-core world-sphere quad))
(.sub.vf vf3 vf1 vf2)
(.add.w.vf vf4 vf1 vf2 :mask #b1000)
(.mul.vf vf3 vf3 vf3 :mask #b111)
(.mul.w.vf vf4 vf4 vf4 :mask #b1000)
(.mul.x.vf acc vf0 vf3 :mask #b1000)
(.add.mul.y.vf acc vf0 vf3 acc :mask #b1000)
(.add.mul.z.vf vf3 vf0 vf3 acc :mask #b1000)
(.sub.w.vf vf3 vf3 vf4 :mask #b1000)
(.add.w.vf.w vf4 vf1 vf2)
(.mul.vf.xyz vf3 vf3 vf3)
(.mul.w.vf.w vf4 vf4 vf4)
(.mul.x.vf.w acc vf0 vf3)
(.add.mul.y.vf.w acc vf0 vf3 acc)
(.add.mul.z.vf.w vf3 vf0 vf3 acc)
(.sub.w.vf.w vf3 vf3 vf4)
(let ((f0-1 0.0))
(.add.w.vf vf3 vf0 vf3 :mask #b1)
(.add.w.vf.x vf3 vf0 vf3)
(let ((a1-18 (-> obj process)))
(.mov a3-3 vf3)
(let ((a0-23 (-> a0-22 process)))
@@ -2111,15 +2111,15 @@
(when (logtest? v1-1 (-> a2-2 prim-core collide-as))
(.lvf vf2 (&-> a2-2 prim-core world-sphere quad))
(.sub.vf vf3 vf1 vf2)
(.add.w.vf vf4 vf1 vf2 :mask #b1000)
(.mul.vf vf3 vf3 vf3 :mask #b111)
(.mul.w.vf vf4 vf4 vf4 :mask #b1000)
(.mul.x.vf acc vf0 vf3 :mask #b1000)
(.add.mul.y.vf acc vf0 vf3 acc :mask #b1000)
(.add.mul.z.vf vf3 vf0 vf3 acc :mask #b1000)
(.sub.w.vf vf3 vf3 vf4 :mask #b1000)
(.add.w.vf.w vf4 vf1 vf2)
(.mul.vf.xyz vf3 vf3 vf3)
(.mul.w.vf.w vf4 vf4 vf4)
(.mul.x.vf.w acc vf0 vf3)
(.add.mul.y.vf.w acc vf0 vf3 acc)
(.add.mul.z.vf.w vf3 vf0 vf3 acc)
(.sub.w.vf.w vf3 vf3 vf4)
(let ((f0-2 0.0))
(.add.w.vf vf3 vf0 vf3 :mask #b1)
(.add.w.vf.x vf3 vf0 vf3)
(let ((a1-30 (-> obj process)))
(.mov a3-6 vf3)
(let ((a0-36 (-> a0-35 process)))
@@ -2151,15 +2151,15 @@
(when (logtest? v1-1 (-> a2-3 prim-core collide-as))
(.lvf vf2 (&-> a2-3 prim-core world-sphere quad))
(.sub.vf vf3 vf1 vf2)
(.add.w.vf vf4 vf1 vf2 :mask #b1000)
(.mul.vf vf3 vf3 vf3 :mask #b111)
(.mul.w.vf vf4 vf4 vf4 :mask #b1000)
(.mul.x.vf acc vf0 vf3 :mask #b1000)
(.add.mul.y.vf acc vf0 vf3 acc :mask #b1000)
(.add.mul.z.vf vf3 vf0 vf3 acc :mask #b1000)
(.sub.w.vf vf3 vf3 vf4 :mask #b1000)
(.add.w.vf.w vf4 vf1 vf2)
(.mul.vf.xyz vf3 vf3 vf3)
(.mul.w.vf.w vf4 vf4 vf4)
(.mul.x.vf.w acc vf0 vf3)
(.add.mul.y.vf.w acc vf0 vf3 acc)
(.add.mul.z.vf.w vf3 vf0 vf3 acc)
(.sub.w.vf.w vf3 vf3 vf4)
(let ((f0-3 0.0))
(.add.w.vf vf3 vf0 vf3 :mask #b1)
(.add.w.vf.x vf3 vf0 vf3)
(let ((a1-42 (-> obj process)))
(.mov a3-9 vf3)
(let ((a0-49 (-> a0-48 process)))
@@ -2214,14 +2214,14 @@
(let ((a1-2 (logand (-> a0-1 collide-with) v1-0)))
(.lvf vf2 (&-> a0-1 prim-core world-sphere quad))
(b! (zero? a1-2) cfg-1 :delay (.sub.vf vf3 vf2 vf1)))
(.add.w.vf vf4 vf2 vf1 :mask #b1000)
(.mul.vf vf3 vf3 vf3 :mask #b111)
(.mul.w.vf vf4 vf4 vf4 :mask #b1000)
(.mul.x.vf acc vf0 vf3 :mask #b1000)
(.add.mul.y.vf acc vf0 vf3 acc :mask #b1000)
(.add.mul.z.vf vf3 vf0 vf3 acc :mask #b1000)
(.sub.w.vf vf3 vf3 vf4 :mask #b1000)
(let ((f0-0 0.0)) (.add.w.vf vf3 vf0 vf3 :mask #b1) (.mov a1-3 vf3) (b! (< f0-0 a1-3) cfg-1))
(.add.w.vf.w vf4 vf2 vf1)
(.mul.vf.xyz vf3 vf3 vf3)
(.mul.w.vf.w vf4 vf4 vf4)
(.mul.x.vf.w acc vf0 vf3)
(.add.mul.y.vf.w acc vf0 vf3 acc)
(.add.mul.z.vf.w vf3 vf0 vf3 acc)
(.sub.w.vf.w vf3 vf3 vf4)
(let ((f0-0 0.0)) (.add.w.vf.x vf3 vf0 vf3) (.mov a1-3 vf3) (b! (< f0-0 a1-3) cfg-1))
(let ((a0-2 (overlaps-others-test a0-1 arg0 arg1)))
(set! v1-0 (-> arg1 prim-core collide-as))
(b! (= a0-2 #f) cfg-1 :delay (.lvf vf1 (&-> arg1 prim-core world-sphere quad))))))
@@ -2256,14 +2256,14 @@
(let ((a0-2 (logand v1-0 (-> a2-1 prim-core collide-as))))
(.lvf vf1 (&-> a2-1 prim-core world-sphere quad))
(b! (zero? a0-2) cfg-1 :delay (.sub.vf vf3 vf2 vf1)))
(.add.w.vf vf4 vf2 vf1 :mask #b1000)
(.mul.vf vf3 vf3 vf3 :mask #b111)
(.mul.w.vf vf4 vf4 vf4 :mask #b1000)
(.mul.x.vf acc vf0 vf3 :mask #b1000)
(.add.mul.y.vf acc vf0 vf3 acc :mask #b1000)
(.add.mul.z.vf vf3 vf0 vf3 acc :mask #b1000)
(.sub.w.vf vf3 vf3 vf4 :mask #b1000)
(let ((f0-0 0.0)) (.add.w.vf vf3 vf0 vf3 :mask #b1) (.mov a0-3 vf3) (b! (< f0-0 a0-3) cfg-1))
(.add.w.vf.w vf4 vf2 vf1)
(.mul.vf.xyz vf3 vf3 vf3)
(.mul.w.vf.w vf4 vf4 vf4)
(.mul.x.vf.w acc vf0 vf3)
(.add.mul.y.vf.w acc vf0 vf3 acc)
(.add.mul.z.vf.w vf3 vf0 vf3 acc)
(.sub.w.vf.w vf3 vf3 vf4)
(let ((f0-0 0.0)) (.add.w.vf.x vf3 vf0 vf3) (.mov a0-3 vf3) (b! (< f0-0 a0-3) cfg-1))
(let ((a0-5 (overlaps-others-test obj arg0 a2-1)))
(set! v1-0 (-> obj collide-with))
(b! (= a0-5 #f) cfg-1 :delay (.lvf vf2 (&-> obj prim-core world-sphere quad))))))
+9 -9
View File
@@ -30,9 +30,9 @@
(nop!)
(nop!)
(.lvf vf1 (&-> arg0 bsphere quad))
(.add.w.vf vf2 vf1 vf1 :mask #b111)
(.add.w.vf.xyz vf2 vf1 vf1)
(let ((v1-0 (-> arg1 min quad)))
(.sub.w.vf vf1 vf1 vf1 :mask #b111)
(.sub.w.vf.xyz vf1 vf1 vf1)
(let ((a1-1 (-> arg1 max quad)))
(.ftoi.vf vf4 vf2)
(nop!)
@@ -118,13 +118,13 @@
(nop!)
(vitof12.xyzw vf7 vf7)
(nop!)
(.add.vf vf8 vf8 vf9 :mask #b111)
(.add.vf.xyz vf8 vf8 vf9)
(nop!)
(nop!)
(.lvf vf9 (&-> arg0 bsphere quad))
(vitof12.xyzw vf10 vf10)
(nop!)
(.mul.w.vf vf10 vf10 vf9 :mask #b1)
(.mul.w.vf.x vf10 vf10 vf9)
(nop!)
(.mul.x.vf acc vf5 vf9)
(nop!)
@@ -134,9 +134,9 @@
(let ((a1-1 (-> arg2 max quad)))
(.add.mul.w.vf vf1 vf8 vf0 acc)
(nop!)
(.add.x.vf vf2 vf1 vf10 :mask #b111)
(.add.x.vf.xyz vf2 vf1 vf10)
(nop!)
(.sub.x.vf vf1 vf1 vf10 :mask #b111)
(.sub.x.vf.xyz vf1 vf1 vf10)
(nop!)
(.ftoi.vf vf4 vf2)
(nop!)
@@ -171,11 +171,11 @@
(.mov vf12 v1-2)
(.itof.vf vf12 vf12)
(nop!)
(.add.vf vf10 vf10 vf12 :mask #b111)
(.add.vf.xyz vf10 vf10 vf12)
(nop!)
(.add.vf vf9 vf9 vf10 :mask #b111)
(.add.vf.xyz vf9 vf9 vf10)
(nop!)
(.add.w.vf vf11 vf0 vf9 :mask #b1)
(.add.w.vf.x vf11 vf0 vf9)
(nop!)
(.mov a3-0 vf11)
(nop!)
@@ -712,7 +712,7 @@
(a0-18 (new 'stack-no-clear 'vector)))
(.lvf vf16 (&-> v1-36 origin quad))
(.lvf vf17 (&-> v1-36 bounds quad))
(.mul.x.vf vf16 vf16 vf0 :mask #b1000)
(.mul.x.vf.w vf16 vf16 vf0)
(.add.vf vf16 vf16 vf17)
(.svf (&-> a0-18 quad) vf16))
(.mov v1-37 vf16))
@@ -1456,13 +1456,13 @@
((< (-> v1-0 w) 0.0)
(.lvf vf1 (&-> a0-1 conerot quad))
(.lvf vf2 (&-> v1-0 vec quad))
(.sub.vf vf1 vf0 vf2 :mask #b111)
(.sub.vf.xyz vf1 vf0 vf2)
(.svf (&-> a0-1 conerot quad) vf1)
(.mov a0-2 vf1))
(else
(.lvf vf1 (&-> a0-1 conerot quad))
(.lvf vf2 (&-> v1-0 vec quad))
(.add.vf vf1 vf0 vf2 :mask #b111)
(.add.vf.xyz vf1 vf0 vf2)
(.svf (&-> a0-1 conerot quad) vf1)
(.mov a0-3 vf1))))
0
@@ -52,10 +52,10 @@
(set-vector! arg0 0. 0. 0. 1.)
(return arg0)))
(.wait.vf)
(.mul.vf vf2 vf2 Q :mask #b111)
(.mul.vf.xyz vf2 vf2 Q)
(.nop.vf)
(.nop.vf)
(.mov.vf vf2 vf0 :mask #b1000)
(.mov.vf.w vf2 vf0)
(.svf (&-> arg0 quad) vf2)
arg0))
+26 -26
View File
@@ -692,16 +692,16 @@
(vf9 :class vf))
(init-vf0-vector)
(let ((v1-1 (-> this tuning gravity))) (.mov vf9 v1-1))
(.add.x.vf vf9 vf0 vf9 :mask #b10)
(.mov.vf vf9 vf0 :mask #b1101)
(.add.x.vf.y vf9 vf0 vf9)
(.mov.vf.xzw vf9 vf0)
0
(let ((v1-4 (-> this tuning friction))) (.mov vf12 v1-4))
(.add.x.vf vf12 vf0 vf12 :mask #b10)
(.add.x.vf vf12 vf0 vf12 :mask #b100)
(.add.x.vf.y vf12 vf0 vf12)
(.add.x.vf.z vf12 vf0 vf12)
0
(let ((v1-7 (/ 1.0 (-> this tuning spring-mass)))) (.mov vf14 v1-7))
(.add.x.vf vf14 vf0 vf14 :mask #b10)
(.add.x.vf vf14 vf0 vf14 :mask #b100)
(.add.x.vf.y vf14 vf0 vf14)
(.add.x.vf.z vf14 vf0 vf14)
0
(let ((v1-11 (+ (-> this tuning num-spring-points) -2)))
(let* ((a2-0 (-> this spring-point))
@@ -710,11 +710,11 @@
(label cfg-1)
(.lvf vf1 (&-> a1-1 extra-force quad))
(.lvf vf3 (&-> a1-1 local-pos quad))
(.add.vf vf1 vf1 vf9 :mask #b111)
(.add.vf.xyz vf1 vf1 vf9)
(.sub.vf vf5 vf2 vf3)
(.mul.vf vf7 vf5 vf5 :mask #b111)
(.add.y.vf vf7 vf7 vf7 :mask #b1)
(.add.z.vf vf7 vf7 vf7 :mask #b1)
(.mul.vf.xyz vf7 vf5 vf5)
(.add.y.vf.x vf7 vf7 vf7)
(.add.z.vf.x vf7 vf7 vf7)
(.mov a2-1 vf7)
(let ((f0-5 (- a2-1 (-> this tuning desired-spring-len))))
(when (< 0.0 f0-5)
@@ -722,15 +722,15 @@
(.wait.vf)
(.mul.vf vf5 vf5 Q)
(let ((a2-5 (* f0-5 (-> this tuning spring-coefficient)))) (.mov vf10 a2-5))
(.mul.x.vf vf10 vf5 vf10 :mask #b111)
(.add.vf vf1 vf1 vf10 :mask #b111)
(.mul.x.vf.xyz vf10 vf5 vf10)
(.add.vf.xyz vf1 vf1 vf10)
0))
(let ((a2-8 (&+ a1-1 48)))
(.lvf vf4 (&-> a2-8 local-pos quad))
(.sub.vf vf6 vf4 vf3)
(.mul.vf vf8 vf6 vf6 :mask #b111)
(.add.y.vf vf8 vf8 vf8 :mask #b1)
(.add.z.vf vf8 vf8 vf8 :mask #b1)
(.mul.vf.xyz vf8 vf6 vf6)
(.add.y.vf.x vf8 vf8 vf8)
(.add.z.vf.x vf8 vf8 vf8)
(.mov a3-0 vf8)
(let ((f0-8 (- a3-0 (-> this tuning desired-spring-len))))
(when (< 0.0 f0-8)
@@ -738,13 +738,13 @@
(.wait.vf)
(.mul.vf vf6 vf6 Q)
(let ((a3-4 (* f0-8 (-> this tuning spring-coefficient)))) (.mov vf10 a3-4))
(.mul.x.vf vf10 vf6 vf10 :mask #b111)
(.add.vf vf1 vf1 vf10 :mask #b111)
(.mul.x.vf.xyz vf10 vf6 vf10)
(.add.vf.xyz vf1 vf1 vf10)
0))
(.mul.vf vf15 vf1 vf14 :mask #b111)
(.mul.vf.xyz vf15 vf1 vf14)
(.lvf vf11 (&-> a1-1 vel quad))
(.add.vf vf11 vf11 vf15 :mask #b111)
(.mul.vf vf11 vf11 vf12 :mask #b111)
(.add.vf.xyz vf11 vf11 vf15)
(.mul.vf.xyz vf11 vf11 vf12)
(.svf (&-> a1-1 vel quad) vf11)
(set! a1-1 a2-8)))
(.mov.vf vf2 vf3)
@@ -752,16 +752,16 @@
(+! v1-11 -1)
(b! (> v1-11 0) cfg-1 :delay (nop!)))
(let ((v1-13 (seconds-per-frame))) (.mov vf13 v1-13))
(.add.x.vf vf13 vf0 vf13 :mask #b10)
(.add.x.vf vf13 vf0 vf13 :mask #b100)
(.add.x.vf.y vf13 vf0 vf13)
(.add.x.vf.z vf13 vf0 vf13)
0
(let ((v1-17 (+ (-> this tuning num-spring-points) -2)))
(let ((a0-1 (the-as object (&-> this stack 320))))
(label cfg-7)
(.lvf vf11 (&-> (the-as (inline-array vector) a0-1) 1 quad))
(.lvf vf3 (&-> (the-as (inline-array vector) a0-1) 0 quad))
(.mul.vf vf11 vf11 vf13 :mask #b111)
(.add.vf vf3 vf3 vf11 :mask #b111)
(.mul.vf.xyz vf11 vf11 vf13)
(.add.vf.xyz vf3 vf3 vf11)
(.svf (&-> (the-as (inline-array vector) a0-1) 0 quad) vf3)
(set! a0-1 (-> (the-as (inline-array vector) a0-1) 3)))
(+! v1-17 -1)
@@ -806,11 +806,11 @@
(let ((v1-3 (the-as ropebridge-spring-point (-> this spring-point))))
(.mov vf2 a1-2)
(.add.x.vf vf2 vf0 vf2)
(.mov.vf vf2 vf0 :mask #b1011)
(.mov.vf.xyw vf2 vf0)
(countdown (a0-5 (-> this tuning num-spring-points))
(.svf (&-> v1-3 local-pos quad) vf1)
(.svf (&-> v1-3 vel quad) vf0)
(.add.vf vf1 vf1 vf2 :mask #b111)
(.add.vf.xyz vf1 vf1 vf2)
(&+! v1-3 48)))))))
(none)))
+3 -3
View File
@@ -32,10 +32,10 @@
(.add.mul.z.vf vf5 vf3 vf5 acc)
(.div.vf Q vf9 vf5 :fsf #b0 :ftf #b11)
(.wait.vf)
(.mul.vf vf5 vf5 Q :mask #b111)
(.mul.vf.xyz vf5 vf5 Q)
(.add.vf vf5 vf5 vf8)
(.max.x.vf vf5 vf5 vf0 :mask #b1000)
(.min.x.vf vf5 vf5 vf6 :mask #b1000)
(.max.x.vf.w vf5 vf5 vf0)
(.min.x.vf.w vf5 vf5 vf6)
(vftoi4.xyzw vf5 vf5)
(.svf (&-> out quad) vf5)
out))))
+5 -5
View File
@@ -451,7 +451,7 @@
(tod *time-of-day-context*))
(.lvf vf16 (&-> arg1 origin quad))
(.lvf vf17 (&-> arg1 bounds quad))
(.mul.x.vf vf16 vf16 vf0 :mask #b1000)
(.mul.x.vf.w vf16 vf16 vf0)
(.add.vf vf16 vf16 vf17)
(.svf (&-> s4-0 quad) vf16)
(.lvf vf28 (&-> arg1 color-mult quad))
@@ -558,15 +558,15 @@
(.mul.w.vf acc vf27 vf0)
(.add.mul.x.vf acc vf24 vf15 acc)
(.add.mul.y.vf acc vf25 vf15 acc)
(.add.mul.z.vf vf15 vf26 vf15 acc :mask #b111)
(.add.mul.z.vf.xyz vf15 vf26 vf15 acc)
(.mul.vf vf28 vf15 vf15)
(.max.w.vf vf29 vf0 vf0)
(.add.y.vf acc vf28 vf28)
(.add.mul.z.vf vf28 vf29 vf28 acc :mask #b1)
(.add.mul.z.vf.x vf28 vf29 vf28 acc)
(.sqrt.vf Q vf28 :ftf #b0)
(.sub.w.vf vf28 vf0 vf15 :mask #b1000)
(.sub.w.vf.w vf28 vf0 vf15)
(.wait.vf)
(.add.vf vf15 vf28 Q :mask #b1000)
(.add.vf.w vf15 vf28 Q)
(.svf (&-> v1-42 quad) vf15)
(when (< 0.0 (+ (-> v1-42 z) (-> arg1 bounds w)))
(let ((lod-to-use 0))
+17 -17
View File
@@ -38,8 +38,8 @@
(.add.vf vf5 vf4 vf3)
(.min.vf vf1 vf4 vf5)
(.max.vf vf2 vf4 vf5)
(.mov.vf vf1 vf0 :mask #b1000)
(.mov.vf vf2 vf0 :mask #b1000)
(.mov.vf.w vf1 vf0)
(.mov.vf.w vf2 vf0)
(.svf (&-> this min quad) vf1)
(.svf (&-> this max quad) vf2)
0))
@@ -90,10 +90,10 @@
(.add.vf vf6 vf5 vf4)
(.min.vf vf2 vf5 vf6)
(.max.vf vf3 vf5 vf6)
(.add.x.vf vf3 vf3 vf1 :mask #b111)
(.sub.x.vf vf2 vf2 vf1 :mask #b111)
(.mov.vf vf2 vf0 :mask #b1000)
(.mov.vf vf3 vf0 :mask #b1000)
(.add.x.vf.xyz vf3 vf3 vf1)
(.sub.x.vf.xyz vf2 vf2 vf1)
(.mov.vf.w vf2 vf0)
(.mov.vf.w vf3 vf0)
(.svf (&-> this min quad) vf2)
(.svf (&-> this max quad) vf3)
0))
@@ -106,10 +106,10 @@
(vf3 :class vf))
(init-vf0-vector)
(.lvf vf1 arg0)
(.sub.w.vf vf2 vf1 vf1 :mask #b111)
(.add.w.vf vf3 vf1 vf1 :mask #b111)
(.mov.vf vf2 vf0 :mask #b1000)
(.mov.vf vf3 vf0 :mask #b1000)
(.sub.w.vf.xyz vf2 vf1 vf1)
(.add.w.vf.xyz vf3 vf1 vf1)
(.mov.vf.w vf2 vf0)
(.mov.vf.w vf3 vf0)
(.svf this vf2)
(.svf this vf3 :offset 16)
0))
@@ -136,10 +136,10 @@
(.lvf current-max (-> this max))
(dotimes (i count)
(.lvf sph (-> spheres i))
(.sub.w.vf sph-min sph sph :mask #b111)
(.add.w.vf sph-max sph sph :mask #b111)
(.min.vf current-min current-min sph-min :mask #b111)
(.max.vf current-max current-max sph-max :mask #b111))
(.sub.w.vf.xyz sph-min sph sph)
(.add.w.vf.xyz sph-max sph sph)
(.min.vf.xyz current-min current-min sph-min)
(.max.vf.xyz current-max current-max sph-max))
(.svf (-> this min) current-min)
(.svf (-> this max) current-max)))
0)
@@ -160,11 +160,11 @@
(set! current-max vf0)
(dotimes (i count)
(.lvf sph (-> spheres i))
(.sub.w.vf sph-min sph sph :mask #b111)
(.add.w.vf sph-max sph sph :mask #b111)
(.sub.w.vf.xyz sph-min sph sph)
(.add.w.vf.xyz sph-max sph sph)
(cond
((zero? i) (set! current-min sph-min) (set! current-max sph-max))
(else (.min.vf current-min current-min sph-min :mask #b111) (.max.vf current-max current-max sph-max :mask #b111))))
(else (.min.vf.xyz current-min current-min sph-min) (.max.vf.xyz current-max current-max sph-max))))
(.svf (-> this min) current-min)
(.svf (-> this max) current-max))
0)
+4 -4
View File
@@ -74,8 +74,8 @@
(let ((v1-5 (-> s3-0 vector 3)))
(.lvf vf4 (&-> (-> this origin) quad))
(.lvf vf5 (&-> sv-896 vector 0 quad))
(.mov.vf vf6 vf0 :mask #b1000)
(.sub.vf vf6 vf4 vf5 :mask #b111)
(.mov.vf.w vf6 vf0)
(.sub.vf.xyz vf6 vf4 vf5)
(.svf (&-> v1-5 quad) vf6))
(set! sv-912 0)
(while (< sv-912 8)
@@ -175,8 +175,8 @@
(let ((v1-5 (-> s3-0 vector 3)))
(.lvf vf4 (&-> (-> this origin) quad))
(.lvf vf5 (&-> sv-448 quad))
(.mov.vf vf6 vf0 :mask #b1000)
(.sub.vf vf6 vf4 vf5 :mask #b111)
(.mov.vf.w vf6 vf0)
(.sub.vf.xyz vf6 vf4 vf5)
(.svf (&-> v1-5 quad) vf6))
(set! sv-464 0)
(while (< sv-464 8)
+61 -61
View File
@@ -18,7 +18,7 @@
(init-vf0-vector)
(.lvf vf1 (&-> src quad))
(.lvf vf2 (&-> plane-normal quad))
(.mov.vf vf3 vf0 :mask #b1000)
(.mov.vf.w vf3 vf0)
;; has the right magnitude, but rotation is off by 90 degrees
(.outer.product.a.vf acc vf1 vf2)
(.outer.product.b.vf vf3 vf2 vf1 acc)
@@ -42,14 +42,14 @@
(init-vf0-vector)
(.lvf vf1 (&-> src quad))
(.lvf vf2 (&-> plane-normal quad))
(.mov.vf vf3 vf0 :mask #b1000)
(.mov.vf.w vf3 vf0)
(.outer.product.a.vf acc vf1 vf2)
(.outer.product.b.vf vf3 vf2 vf1 acc)
;; vf3 is the projection on the plane
(.outer.product.a.vf acc vf2 vf3)
(.outer.product.b.vf vf3 vf3 vf2 acc)
(.add.vf acc vf3 vf3 :mask #b111) ;; double that part
(.sub.mul.w.vf vf3 vf1 vf0 acc :mask #b111) ;; and subtract the original
(.add.vf.xyz acc vf3 vf3) ;; double that part
(.sub.mul.w.vf.xyz vf3 vf1 vf0 acc) ;; and subtract the original
(.svf (&-> dst quad) vf3)
dst))
@@ -68,13 +68,13 @@
(init-vf0-vector)
(.lvf vf1 (&-> src quad))
(.lvf vf2 (&-> plane-normal quad))
(.mov.vf vf3 vf0 :mask #b1000)
(.mov.vf.w vf3 vf0)
(.outer.product.a.vf acc vf1 vf2)
(.outer.product.b.vf vf3 vf2 vf1 acc)
;; part on the plane (requires normal to be unit)
(.outer.product.a.vf acc vf2 vf3)
(.outer.product.b.vf vf3 vf3 vf2 acc)
(.add.vf vf3 vf3 vf2 :mask #b111) ;; add normal to that.
(.add.vf.xyz vf3 vf3 vf2) ;; add normal to that.
(.svf (&-> dst quad) vf3)
dst))
@@ -88,7 +88,7 @@
(init-vf0-vector)
(.lvf vf1 (&-> src quad))
(.lvf vf2 (&-> plane-normal quad))
(.mov.vf vf3 vf0 :mask #b1000)
(.mov.vf.w vf3 vf0)
(.outer.product.a.vf acc vf1 vf2)
(.outer.product.b.vf vf3 vf2 vf1 acc)
(.outer.product.a.vf acc vf2 vf3)
@@ -108,7 +108,7 @@
(init-vf0-vector)
(.lvf vf1 (&-> src quad))
(.lvf vf2 (&-> plane-normal quad))
(.mov.vf vf3 vf0 :mask #b1000)
(.mov.vf.w vf3 vf0)
(.outer.product.a.vf acc vf1 vf2)
(.outer.product.b.vf vf3 vf2 vf1 acc)
(.outer.product.a.vf acc vf2 vf3)
@@ -146,12 +146,12 @@
(.sub.vf vf1 vf4 vf3)
(.sub.vf vf6 vf5 vf3)
(.mul.vf vf2 vf1 vf1)
(.mul.x.vf acc vf0 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.z.vf.w vf2 vf0 vf2 acc)
(.sqrt.vf Q vf2 :ftf #b11)
(.wait.vf)
(.add.vf vf2 vf0 Q :mask #b1)
(.add.vf.x vf2 vf0 Q)
(.nop.vf)
(.nop.vf)
(.div.vf Q vf0 vf2 :fsf #b11 :ftf #b0)
@@ -161,8 +161,8 @@
(.mul.vf vf1 vf1 Q)
(.mul.vf vf7 vf1 vf6)
(let ((f1-0 0.0))
(.add.y.vf vf7 vf7 vf7 :mask #b1)
(.add.z.vf vf7 vf7 vf7 :mask #b1)
(.add.y.vf.x vf7 vf7 vf7)
(.add.z.vf.x vf7 vf7 vf7)
(.mov v1-1 vf7)
(let ((f0-0 v1-1))
(b! (< f0-0 f1-0) cfg-4 :likely-delay (set! f0-0 f1-0))
@@ -170,18 +170,18 @@
(label cfg-4)
(let ((v1-2 f0-0)) (.mov vf7 v1-2)))))
(.mul.x.vf vf1 vf1 vf7)
(b! (= arg3 #f) cfg-6 :delay (.mov.vf vf8 vf0 :mask #b1000))
(.add.vf vf8 vf3 vf1 :mask #b111)
(b! (= arg3 #f) cfg-6 :delay (.mov.vf.w vf8 vf0))
(.add.vf.xyz vf8 vf3 vf1)
(.svf (&-> arg3 quad) vf8)
(label cfg-6)
(.sub.vf vf2 vf6 vf1)
(.mul.vf vf2 vf2 vf2)
(.mul.x.vf acc vf0 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.z.vf.w vf2 vf0 vf2 acc)
(.sqrt.vf Q vf2 :ftf #b11)
(.wait.vf)
(.add.vf vf2 vf0 Q :mask #b1)
(.add.vf.x vf2 vf0 Q)
(.nop.vf)
(.mov v0-0 vf2)
v0-0))
@@ -218,27 +218,27 @@
(.lvf vf1 (&-> arg2 vec quad))
(.lvf vf6 (&-> arg1 quad))
(.add.vf vf5 vf1 vf1)
(.add.w.vf vf2 vf0 vf1 :mask #b1)
(.add.z.vf vf2 vf0 vf1 :mask #b10)
(.sub.y.vf vf2 vf0 vf1 :mask #b100)
(.sub.w.vf vf2 vf0 vf0 :mask #b1000)
(.sub.z.vf vf3 vf0 vf1 :mask #b1)
(.add.w.vf vf3 vf0 vf1 :mask #b10)
(.add.x.vf vf3 vf0 vf1 :mask #b100)
(.sub.w.vf vf3 vf0 vf0 :mask #b1000)
(.add.y.vf vf4 vf0 vf1 :mask #b1)
(.sub.x.vf vf4 vf0 vf1 :mask #b10)
(.add.w.vf vf4 vf0 vf1 :mask #b100)
(.sub.w.vf vf4 vf0 vf0 :mask #b1000)
(.add.w.vf.x vf2 vf0 vf1)
(.add.z.vf.y vf2 vf0 vf1)
(.sub.y.vf.z vf2 vf0 vf1)
(.sub.w.vf.w vf2 vf0 vf0)
(.sub.z.vf.x vf3 vf0 vf1)
(.add.w.vf.y vf3 vf0 vf1)
(.add.x.vf.z vf3 vf0 vf1)
(.sub.w.vf.w vf3 vf0 vf0)
(.add.y.vf.x vf4 vf0 vf1)
(.sub.x.vf.y vf4 vf0 vf1)
(.add.w.vf.z vf4 vf0 vf1)
(.sub.w.vf.w vf4 vf0 vf0)
(.outer.product.a.vf acc vf5 vf2)
(.outer.product.b.vf vf2 vf2 vf5 acc)
(.outer.product.a.vf acc vf5 vf3)
(.outer.product.b.vf vf3 vf3 vf5 acc)
(.outer.product.a.vf acc vf5 vf4)
(.outer.product.b.vf vf4 vf4 vf5 acc)
(.add.w.vf vf2 vf2 vf0 :mask #b1)
(.add.w.vf vf3 vf3 vf0 :mask #b10)
(.add.w.vf vf4 vf4 vf0 :mask #b100)
(.add.w.vf.x vf2 vf2 vf0)
(.add.w.vf.y vf3 vf3 vf0)
(.add.w.vf.z vf4 vf4 vf0)
(.mul.w.vf acc vf0 vf6)
(.add.mul.x.vf acc vf2 vf6 acc)
(.add.mul.y.vf acc vf3 vf6 acc)
@@ -486,12 +486,12 @@
(.outer.product.a.vf acc vf2 vf1)
(.outer.product.b.vf vf4 vf1 vf2 acc)
(.mul.vf vf5 vf4 vf4)
(.add.y.vf vf5 vf5 vf5 :mask #b1)
(.add.z.vf vf5 vf5 vf5 :mask #b1)
(.add.y.vf.x vf5 vf5 vf5)
(.add.z.vf.x vf5 vf5 vf5)
(.isqrt.vf Q vf0 vf5 :fsf #b11 :ftf #b0)
(.mov.vf vf4 vf0 :mask #b1000)
(.mov.vf.w vf4 vf0)
(.wait.vf)
(.mul.vf vf4 vf4 Q :mask #b111)
(.mul.vf.xyz vf4 vf4 Q)
(.nop.vf)
(.nop.vf)
(.svf (&-> arg0 quad) vf4)
@@ -509,7 +509,7 @@
(.lvf vf1 (&-> arg1 quad))
(.lvf vf2 (&-> arg2 quad))
(.lvf vf3 (&-> arg3 quad))
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.add.x.vf.w vf4 vf0 vf0)
(.sub.vf vf2 vf2 vf1)
(.sub.vf vf3 vf3 vf1)
(.outer.product.a.vf acc vf2 vf3)
@@ -564,13 +564,13 @@
(.outer.product.a.vf acc vf9 vf10)
(.outer.product.b.vf vf16 vf10 vf9 acc)
(.mul.vf vf12 vf15 vf1)
(.add.x.vf vf11 vf11 vf11 :mask #b10)
(.add.x.vf.y vf11 vf11 vf11)
(.mul.vf vf13 vf16 vf1)
(.add.x.vf vf12 vf12 vf12 :mask #b10)
(.add.x.vf vf13 vf13 vf13 :mask #b10)
(.add.z.vf vf11 vf11 vf11 :mask #b10)
(.add.z.vf vf12 vf12 vf12 :mask #b10)
(.add.z.vf vf13 vf13 vf13 :mask #b10)
(.add.x.vf.y vf12 vf12 vf12)
(.add.x.vf.y vf13 vf13 vf13)
(.add.z.vf.y vf11 vf11 vf11)
(.add.z.vf.y vf12 vf12 vf12)
(.add.z.vf.y vf13 vf13 vf13)
;; og:preserve-this these types were changed to uint to make this copy 64 bits.
(.mov v1-0 vf11)
(.mov a1-1 vf12)
@@ -583,12 +583,12 @@
(v1-3 (logior (logior v1-1 a1-3) a0-3)))
(b! (nonzero? v1-3) cfg-3 :delay (set! v1-4 (the-as uint (+ v1-3 -1)))))
(.sub.vf vf17 vf5 vf2)
(.mov.vf vf18 vf0 :mask #b1000)
(.mov.vf.w vf18 vf0)
(.outer.product.a.vf acc vf17 vf1)
(.outer.product.b.vf vf18 vf1 vf17 acc)
(.outer.product.a.vf acc vf1 vf18)
(.outer.product.b.vf vf18 vf18 vf1 acc)
(.add.vf vf18 vf18 vf2 :mask #b111)
(.add.vf.xyz vf18 vf18 vf2)
(b! #t cfg-24 :delay (.svf (&-> arg0 quad) vf18))
(nop!)
(label cfg-3)
@@ -660,13 +660,13 @@
(.mul.vf vf3 vf3 vf1)
(.nop.vf)
(.mul.vf vf4 vf4 vf1)
(.add.x.vf vf2 vf2 vf2 :mask #b10)
(.add.x.vf vf3 vf3 vf3 :mask #b10)
(.add.x.vf vf4 vf4 vf4 :mask #b10)
(.add.x.vf.y vf2 vf2 vf2)
(.add.x.vf.y vf3 vf3 vf3)
(.add.x.vf.y vf4 vf4 vf4)
(.nop.vf)
(.add.z.vf vf2 vf2 vf2 :mask #b10)
(.add.z.vf vf3 vf3 vf3 :mask #b10)
(.add.z.vf vf4 vf4 vf4 :mask #b10)
(.add.z.vf.y vf2 vf2 vf2)
(.add.z.vf.y vf3 vf3 vf3)
(.add.z.vf.y vf4 vf4 vf4)
(.nop.vf)
(.mov a0-1 vf2)
(.mov a1-1 vf3)
@@ -734,11 +734,11 @@
(.sub.vf vf5 vf4 vf3)
(.mul.x.vf vf1 vf1 vf2)
(.mul.x.vf vf5 vf5 vf2)
(.mul.vf vf5 vf5 vf5 :mask #b101)
(.add.z.vf vf5 vf5 vf5 :mask #b1)
(.mul.vf.xz vf5 vf5 vf5)
(.add.z.vf.x vf5 vf5 vf5)
(.sqrt.vf Q vf5 :ftf #b0)
(.wait.vf)
(.mul.vf vf1 vf0 Q :mask #b1000)
(.mul.vf.w vf1 vf0 Q)
(.nop.vf)
(.nop.vf)
(.svf (&-> a1-2 quad) vf1)
@@ -939,7 +939,7 @@
;; evaluate polynomial!
;;(.sll v1-8 v1-7 4)
(set! v1-8 (* v1-7 16))
(.add.x.vf vf1 vf0 vf0 :mask #b1000)
(.add.x.vf.w vf1 vf0 vf0)
(let ((v1-9 (+ v1-8 (the-as int arg2))))
(nop!)
(nop!)
@@ -952,11 +952,11 @@
(.lvf vf5 (+ v1-9 48)))
(.mul.x.vf acc vf2 vf6)
(nop!)
(.add.mul.y.vf acc vf3 vf6 acc :mask #b111)
(.add.mul.y.vf.xyz acc vf3 vf6 acc)
(nop!)
(.add.mul.z.vf acc vf4 vf6 acc :mask #b111)
(.add.mul.z.vf.xyz acc vf4 vf6 acc)
(nop!)
(.add.mul.w.vf vf1 vf5 vf6 acc :mask #b111)
(.add.mul.w.vf.xyz vf1 vf5 vf6 acc)
(nop!)
(nop!)
(nop!)
+85 -85
View File
@@ -771,8 +771,8 @@
(+! (-> temp-vec y) shadow-y)
(.lvf vf26 (&-> temp-vec quad)))
;; original version
; (.add.w.vf vf26 vf26 vf0 :mask #b11)
; (.add.w.vf vf26 vf26 vf0 :mask #b1)
; (.add.w.vf.xy vf26 vf26 vf0)
; (.add.w.vf.x vf26 vf26 vf0)
(let ((v1-1 (-> arg2 mat)))
(.lvf vf25 (&-> arg2 context-vec quad))
(.lvf vf23 (&-> arg2 origin quad))
@@ -782,11 +782,11 @@
(.lvf vf30 (&-> v1-1 vector 2 quad))
(.lvf vf31 (&-> v1-1 vector 3 quad)))
(let ((v1-3 *video-parms*)) (.lvf vf1 (+ (the-as int v1-3) 64)))
(.mul.vf vf25 vf25 vf1 :mask #b11)
(.mul.vf vf23 vf23 vf1 :mask #b11)
(.mul.vf.xy vf25 vf25 vf1)
(.mul.vf.xy vf23 vf23 vf1)
;; hack! fixes small font widescreen
(unless (logtest? (-> arg2 flags) (font-flags pc-hack))
(.mul.vf vf24 vf24 vf1 :mask #b11))
(.mul.vf.xy vf24 vf24 vf1))
(let ((fw *font-work*))
(set! (-> fw buf) context)
(let ((dma-out (-> context base)))
@@ -912,19 +912,19 @@
(label cfg-42)
(.mov vf1 t6-2)
(let ((t4-9 (+ t5-7 -45))) (b! (zero? t5-7) cfg-46 :delay (.itof.vf vf1 vf1)) (b! (zero? t4-9) cfg-45))
(b! #t cfg-4 :delay (.add.x.vf vf23 vf23 vf1 :mask #b1))
(b! #t cfg-4 :delay (.add.x.vf.x vf23 vf23 vf1))
(label cfg-45)
(b! #t cfg-4 :delay (.sub.x.vf vf23 vf23 vf1 :mask #b1))
(b! #t cfg-4 :delay (.sub.x.vf.x vf23 vf23 vf1))
(label cfg-46)
(b! #t cfg-4 :delay (.add.x.vf vf23 vf0 vf1 :mask #b1))
(b! #t cfg-4 :delay (.add.x.vf.x vf23 vf0 vf1))
(label cfg-47)
(.mov vf1 t6-2))
(let ((t4-10 (+ t5-7 -45))) (b! (zero? t5-7) cfg-51 :delay (.itof.vf vf1 vf1)) (b! (zero? t4-10) cfg-50))
(b! #t cfg-4 :delay (.add.x.vf vf23 vf23 vf1 :mask #b10))
(b! #t cfg-4 :delay (.add.x.vf.y vf23 vf23 vf1))
(label cfg-50)
(b! #t cfg-4 :delay (.sub.x.vf vf23 vf23 vf1 :mask #b10))
(b! #t cfg-4 :delay (.sub.x.vf.y vf23 vf23 vf1))
(label cfg-51)
(b! #t cfg-4 :delay (.add.x.vf vf23 vf0 vf1 :mask #b10))
(b! #t cfg-4 :delay (.add.x.vf.y vf23 vf0 vf1))
(label cfg-52)
(b! #t cfg-4 :delay (.svf (&-> fw save quad) vf23))
(label cfg-53)
@@ -932,12 +932,12 @@
(label cfg-54)
(let ((t4-11 (-> (the-as (pointer uint8) str-in) 4)))
(set! str-in (the-as string (&-> (the-as (pointer uint8) str-in) 1)))
(.add.vf vf4 vf23 vf15 :mask #b111)
(.add.vf.xyz vf4 vf23 vf15)
(let ((t4-12 (logand t4-11 127)))
(.sub.vf vf1 vf25 vf23)
(let ((t4-13 (+ t4-12 255))) (b! #t cfg-62 :delay (.sll t5-9 t4-13 4)))))
(label cfg-55)
(.add.vf vf4 vf23 vf15 :mask #b111)
(.add.vf.xyz vf4 vf23 vf15)
(.sll t5-9 str-char 4)
(.sub.vf vf1 vf25 vf23)
(b! (= str-char 10) cfg-57 :delay (set! fc-cr (+ str-char -13))))
@@ -946,22 +946,22 @@
(.sub.vf vf1 vf23 vf24)
(b! (logtest? flags 16) cfg-60 :delay (set! t4-16 (logand flags 4)))
(b! (nonzero? t4-16) cfg-61)
(.add.x.vf vf23 vf0 vf24 :mask #b1)
(.add.x.vf.x vf23 vf0 vf24)
(.svf (&-> (the-as font-work fw2) justify 0 quad) vf23)
(.add.w.vf vf23 vf23 vf15 :mask #b10)
(.add.w.vf.y vf23 vf23 vf15)
(b! #t cfg-4 :delay (set! fw2 (-> (the-as font-work fw2) font-tmpl gif)))
(label cfg-60)
(.sub.vf vf23 vf24 vf1 :mask #b1)
(.sub.vf.x vf23 vf24 vf1)
(.svf (&-> (the-as font-work fw2) justify 0 quad) vf23)
(.add.x.vf vf23 vf0 vf24 :mask #b1)
(.add.w.vf vf23 vf23 vf15 :mask #b10)
(.add.x.vf.x vf23 vf0 vf24)
(.add.w.vf.y vf23 vf23 vf15)
(b! #t cfg-4 :delay (set! fw2 (-> (the-as font-work fw2) font-tmpl gif)))
(label cfg-61)
(.mul.w.vf vf1 vf1 vf16 :mask #b1)
(.sub.vf vf23 vf24 vf1 :mask #b1)
(.mul.w.vf.x vf1 vf1 vf16)
(.sub.vf.x vf23 vf24 vf1)
(.svf (&-> (the-as font-work fw2) justify 0 quad) vf23)
(.add.x.vf vf23 vf0 vf24 :mask #b1)
(.add.w.vf vf23 vf23 vf15 :mask #b10)
(.add.x.vf.x vf23 vf0 vf24)
(.add.w.vf.y vf23 vf23 vf15)
(b! #t cfg-4 :delay (set! fw2 (-> (the-as font-work fw2) font-tmpl gif)))
(label cfg-62)
(.addu t4-17 t5-9 font-table-to-use)
@@ -970,23 +970,23 @@
(b! (< (the-as int t4-18) 0) cfg-67 :delay (.sra t4-19 t4-18 31))
(.mul.vf vf19 vf5 vf13)
(b! (zero? (logand flags 2)) cfg-65)
(b! #t cfg-66 :delay (.add.w.vf vf23 vf23 vf19 :mask #b1))
(b! #t cfg-66 :delay (.add.w.vf.x vf23 vf23 vf19))
(label cfg-65)
(.add.w.vf vf23 vf23 vf14 :mask #b1)
(.add.w.vf.x vf23 vf23 vf14)
(label cfg-66)
(b! #t cfg-4)
(label cfg-67)
(.sub.vf vf1 vf23 vf24)
(b! (logtest? flags 16) cfg-70 :delay (set! a0-2 (logand flags 4)))
(b! (nonzero? a0-2) cfg-71)
(.add.x.vf vf23 vf0 vf24 :mask #b1)
(.add.x.vf.x vf23 vf0 vf24)
(b! #t cfg-72 :delay (.svf (&-> (the-as font-work fw2) justify 0 quad) vf23))
(label cfg-70)
(.sub.vf vf23 vf24 vf1 :mask #b1)
(.sub.vf.x vf23 vf24 vf1)
(b! #t cfg-72 :delay (.svf (&-> (the-as font-work fw2) justify 0 quad) vf23))
(label cfg-71)
(.mul.w.vf vf1 vf1 vf16 :mask #b1)
(.sub.vf vf23 vf24 vf1 :mask #b1)
(.mul.w.vf.x vf1 vf1 vf16)
(.sub.vf.x vf23 vf24 vf1)
(.svf (&-> (the-as font-work fw2) justify 0 quad) vf23))
(label cfg-72)
(let ((a0-3 (-> fw flags-signed)))
@@ -1062,19 +1062,19 @@
(label cfg-109)
(.mov vf1 t6-9)
(let ((t4-26 (+ t5-14 -45))) (b! (zero? t5-14) cfg-113 :delay (.itof.vf vf1 vf1)) (b! (zero? t4-26) cfg-112))
(b! #t cfg-73 :delay (.add.x.vf vf23 vf23 vf1 :mask #b1))
(b! #t cfg-73 :delay (.add.x.vf.x vf23 vf23 vf1))
(label cfg-112)
(b! #t cfg-73 :delay (.sub.x.vf vf23 vf23 vf1 :mask #b1))
(b! #t cfg-73 :delay (.sub.x.vf.x vf23 vf23 vf1))
(label cfg-113)
(b! #t cfg-73 :delay (.add.x.vf vf23 vf0 vf1 :mask #b1))
(b! #t cfg-73 :delay (.add.x.vf.x vf23 vf0 vf1))
(label cfg-114)
(.mov vf1 t6-9))
(let ((t4-27 (+ t5-14 -45))) (b! (zero? t5-14) cfg-118 :delay (.itof.vf vf1 vf1)) (b! (zero? t4-27) cfg-117))
(b! #t cfg-73 :delay (.add.x.vf vf23 vf23 vf1 :mask #b10))
(b! #t cfg-73 :delay (.add.x.vf.y vf23 vf23 vf1))
(label cfg-117)
(b! #t cfg-73 :delay (.sub.x.vf vf23 vf23 vf1 :mask #b10))
(b! #t cfg-73 :delay (.sub.x.vf.y vf23 vf23 vf1))
(label cfg-118)
(b! #t cfg-73 :delay (.add.x.vf vf23 vf0 vf1 :mask #b10))
(b! #t cfg-73 :delay (.add.x.vf.y vf23 vf0 vf1))
(label cfg-119)
(b! #t cfg-73 :delay (.svf (&-> fw save quad) vf23))
(label cfg-120)
@@ -1082,12 +1082,12 @@
(label cfg-121)
(set! t4-21 (-> t3-7 4))
(set! t3-7 (&-> t3-7 1))
(.add.vf vf4 vf23 vf15 :mask #b111)
(.add.vf.xyz vf4 vf23 vf15)
(let ((t5-15 (logand t4-21 127)))
(.sub.vf vf1 vf25 vf23)
(let ((t5-16 (+ t5-15 255))) (b! #t cfg-125 :delay (.sll t5-17 t5-16 4))))
(label cfg-122)
(.add.vf vf4 vf23 vf15 :mask #b111)
(.add.vf.xyz vf4 vf23 vf15)
(.sll t5-17 t4-21 4)
(.sub.vf vf1 vf25 vf23)
(b! (= t4-21 10) cfg-124 :delay (set! t6-16 (+ t4-21 -13)))
@@ -1099,14 +1099,14 @@
(.addu t5-18 t5-17 font-table-to-use)
(.lvf vf5 (+ t5-18 -256))
(.mov t5-19 vf1)
(b! (< (the-as int t5-19) 0) cfg-131 :delay (.add.vf vf6 vf5 vf16 :mask #b111))
(b! (< (the-as int t5-19) 0) cfg-131 :delay (.add.vf.xyz vf6 vf5 vf16))
(.sra t5-20 t5-19 31)
(.add.vf vf7 vf5 vf17 :mask #b111)
(b! (< t5-20 0) cfg-73 :delay (.add.vf vf8 vf5 vf18 :mask #b111))
(.add.vf vf1 vf23 vf0 :mask #b111)
(.add.vf vf2 vf23 vf13 :mask #b111)
(.add.vf.xyz vf7 vf5 vf17)
(b! (< t5-20 0) cfg-73 :delay (.add.vf.xyz vf8 vf5 vf18))
(.add.vf.xyz vf1 vf23 vf0)
(.add.vf.xyz vf2 vf23 vf13)
(.svf (&-> fw current-verts tex-st 0 quad) vf5)
(.add.vf vf3 vf23 vf14 :mask #b111)
(.add.vf.xyz vf3 vf23 vf14)
(.svf (&-> fw current-verts tex-st 1 quad) vf6)
(.mul.vf vf19 vf5 vf13)
(.svf (&-> fw current-verts tex-st 2 quad) vf7)
@@ -1148,9 +1148,9 @@
;; note: this relies on (somewhat) undefined behavior that the upper 64-bits of a
;; gpr aren't changed during movn.
(.movn-128 t5-23 q-hi-tmpl t4-28 t5-22)))))
(.mul.vf vf1 vf1 Q :mask #b111)
(.mul.vf.xyz vf1 vf1 Q)
(set! (-> (the-as (pointer uint128) dma-out) 2) (the-as uint128 t5-23))
(.mul.vf vf5 vf5 Q :mask #b111)
(.mul.vf.xyz vf5 vf5 Q)
(.nop.vf)
(.nop.vf)
(.div.vf Q vf25 vf2 :fsf #b10 :ftf #b11)
@@ -1158,8 +1158,8 @@
(.add.vf vf1 vf1 vf26)
(.lvf vf9 (&-> fw color-shadow quad))
(vftoi4.xyzw vf1 vf1)
(.mul.vf vf2 vf2 Q :mask #b111)
(.mul.vf vf6 vf6 Q :mask #b111)
(.mul.vf.xyz vf2 vf2 Q)
(.mul.vf.xyz vf6 vf6 Q)
(.svf (&-> (the-as (pointer uint128) dma-out) 3) vf5)
(.nop.vf)
(.nop.vf)
@@ -1168,8 +1168,8 @@
(.svf (&-> (the-as (pointer uint128) dma-out) 5) vf1)
(.add.vf vf2 vf2 vf26)
(vftoi4.xyzw vf2 vf2)
(.mul.vf vf3 vf3 Q :mask #b111)
(.mul.vf vf7 vf7 Q :mask #b111)
(.mul.vf.xyz vf3 vf3 Q)
(.mul.vf.xyz vf7 vf7 Q)
(.svf (&-> (the-as (pointer uint128) dma-out) 6) vf6)
(.nop.vf)
(.nop.vf)
@@ -1178,16 +1178,16 @@
(.svf (&-> (the-as (pointer uint128) dma-out) 8) vf2)
(.add.vf vf3 vf3 vf26)
(vftoi4.xyzw vf3 vf3)
(.mul.vf vf4 vf4 Q :mask #b111)
(.mul.vf vf8 vf8 Q :mask #b111)
(.mul.vf.xyz vf4 vf4 Q)
(.mul.vf.xyz vf8 vf8 Q)
(.svf (&-> (the-as (pointer uint128) dma-out) 9) vf7)
(.svf (&-> (the-as (pointer uint128) dma-out) 10) vf9)
(.add.vf vf4 vf4 vf26)
(.svf (&-> (the-as (pointer uint128) dma-out) 11) vf3)
(let ((t4-29 (logand a0-3 2))) (b! (zero? t4-29) cfg-129)))
(b! #t cfg-130 :delay (.add.w.vf vf23 vf23 vf19 :mask #b1))
(b! #t cfg-130 :delay (.add.w.vf.x vf23 vf23 vf19))
(label cfg-129)
(.add.w.vf vf23 vf23 vf14 :mask #b1)
(.add.w.vf.x vf23 vf23 vf14)
(label cfg-130)
(vftoi4.xyzw vf4 vf4)
(.svf (&-> (the-as (pointer uint128) dma-out) 12) vf8)
@@ -1297,19 +1297,19 @@
(label cfg-167)
(.mov vf1 t6-19)
(let ((t4-39 (+ t5-28 -45))) (b! (zero? t5-28) cfg-171 :delay (.itof.vf vf1 vf1)) (b! (zero? t4-39) cfg-170))
(b! #t cfg-132 :delay (.add.x.vf vf23 vf23 vf1 :mask #b1))
(b! #t cfg-132 :delay (.add.x.vf.x vf23 vf23 vf1))
(label cfg-170)
(b! #t cfg-132 :delay (.sub.x.vf vf23 vf23 vf1 :mask #b1))
(b! #t cfg-132 :delay (.sub.x.vf.x vf23 vf23 vf1))
(label cfg-171)
(b! #t cfg-132 :delay (.add.x.vf vf23 vf0 vf1 :mask #b1))
(b! #t cfg-132 :delay (.add.x.vf.x vf23 vf0 vf1))
(label cfg-172)
(.mov vf1 t6-19))
(let ((t4-40 (+ t5-28 -45))) (b! (zero? t5-28) cfg-176 :delay (.itof.vf vf1 vf1)) (b! (zero? t4-40) cfg-175))
(b! #t cfg-132 :delay (.add.x.vf vf23 vf23 vf1 :mask #b10))
(b! #t cfg-132 :delay (.add.x.vf.y vf23 vf23 vf1))
(label cfg-175)
(b! #t cfg-132 :delay (.sub.x.vf vf23 vf23 vf1 :mask #b10))
(b! #t cfg-132 :delay (.sub.x.vf.y vf23 vf23 vf1))
(label cfg-176)
(b! #t cfg-132 :delay (.add.x.vf vf23 vf0 vf1 :mask #b10))
(b! #t cfg-132 :delay (.add.x.vf.y vf23 vf0 vf1))
(label cfg-177)
(let ((t4-41 (-> fw last-color-32)))
(.lvf vf9 (&-> fw current-verts color 0 quad))
@@ -1341,12 +1341,12 @@
(label cfg-179)
(set! t4-30 (-> t3-8 4))
(set! t3-8 (&-> t3-8 1))
(.add.vf vf4 vf23 vf15 :mask #b111)
(.add.vf.xyz vf4 vf23 vf15)
(let ((t5-37 (logand t4-30 127)))
(.sub.vf vf1 vf25 vf23)
(let ((t5-38 (+ t5-37 255))) (b! #t cfg-183 :delay (.sll t5-39 t5-38 4))))
(label cfg-180)
(.add.vf vf4 vf23 vf15 :mask #b111)
(.add.vf.xyz vf4 vf23 vf15)
(.sll t5-39 t4-30 4)
(.sub.vf vf1 vf25 vf23)
(b! (= t4-30 10) cfg-182 :delay (set! t6-31 (+ t4-30 -13)))
@@ -1358,15 +1358,15 @@
(.addu t5-40 t5-39 font-table-to-use)
(.lvf vf5 (+ t5-40 -256))
(.mov t5-41 vf1)
(b! (< (the-as int t5-41) 0) cfg-189 :delay (.add.vf vf6 vf5 vf16 :mask #b111))
(b! (< (the-as int t5-41) 0) cfg-189 :delay (.add.vf.xyz vf6 vf5 vf16))
(.sra t5-42 t5-41 31)
(.add.vf vf7 vf5 vf17 :mask #b111)
(b! (< t5-42 0) cfg-132 :delay (.add.vf vf8 vf5 vf18 :mask #b111))
(.add.vf vf1 vf23 vf0 :mask #b111)
(.add.vf vf2 vf23 vf13 :mask #b111)
(.add.vf vf3 vf23 vf14 :mask #b111)
(.add.vf.xyz vf7 vf5 vf17)
(b! (< t5-42 0) cfg-132 :delay (.add.vf.xyz vf8 vf5 vf18))
(.add.vf.xyz vf1 vf23 vf0)
(.add.vf.xyz vf2 vf23 vf13)
(.add.vf.xyz vf3 vf23 vf14)
(.svf (&-> fw current-verts tex-st 0 quad) vf5)
(.add.vf vf4 vf23 vf15 :mask #b111)
(.add.vf.xyz vf4 vf23 vf15)
(.svf (&-> fw current-verts tex-st 1 quad) vf6)
(.mul.vf vf19 vf5 vf13)
(.svf (&-> fw current-verts tex-st 2 quad) vf7)
@@ -1406,9 +1406,9 @@
(let ((t4-43 (logand t4-30 128)))
(.lvf vf7 (&-> fw current-verts tex-st 2 quad))
(.movn-128 t5-45 q-hi-tmpl t4-43 t5-44)))))
(.mul.vf vf1 vf1 Q :mask #b111)
(.mul.vf.xyz vf1 vf1 Q)
(set! (-> (the-as (pointer uint128) dma-out) 2) (the uint128 t5-45))
(.mul.vf vf5 vf5 Q :mask #b111)
(.mul.vf.xyz vf5 vf5 Q)
(.nop.vf)
(.nop.vf)
(.div.vf Q vf25 vf2 :fsf #b10 :ftf #b11)
@@ -1418,8 +1418,8 @@
(.lvf vf10 (&-> fw current-verts color 1 quad))
(.lvf vf11 (&-> fw current-verts color 2 quad))
(vftoi4.xyzw vf1 vf1)
(.mul.vf vf2 vf2 Q :mask #b111)
(.mul.vf vf6 vf6 Q :mask #b111)
(.mul.vf.xyz vf2 vf2 Q)
(.mul.vf.xyz vf6 vf6 Q)
(.svf (&-> (the-as (pointer uint128) dma-out) 3) vf5)
(.nop.vf)
(.nop.vf)
@@ -1429,8 +1429,8 @@
(.svf (&-> (the-as (pointer uint128) dma-out) 5) vf1)
(.add.vf vf2 vf2 vf27)
(vftoi4.xyzw vf2 vf2)
(.mul.vf vf3 vf3 Q :mask #b111)
(.mul.vf vf7 vf7 Q :mask #b111)
(.mul.vf.xyz vf3 vf3 Q)
(.mul.vf.xyz vf7 vf7 Q)
(.svf (&-> (the-as (pointer uint128) dma-out) 6) vf6)
(.nop.vf)
(.nop.vf)
@@ -1439,17 +1439,17 @@
(.svf (&-> (the-as (pointer uint128) dma-out) 8) vf2)
(.add.vf vf3 vf3 vf27)
(vftoi4.xyzw vf3 vf3)
(.mul.vf vf4 vf4 Q :mask #b111)
(.mul.vf vf8 vf8 Q :mask #b111)
(.mul.vf.xyz vf4 vf4 Q)
(.mul.vf.xyz vf8 vf8 Q)
(.svf (&-> (the-as (pointer uint128) dma-out) 9) vf7)
(.svf (&-> (the-as (pointer uint128) dma-out) 10) vf11)
(.add.vf vf4 vf4 vf27)
;;(s.vf! (+ dma-out 176) vf3)
(.svf (+ (the-as int dma-out) 176) vf3)
(let ((t4-44 (logand a0-4 2))) (b! (zero? t4-44) cfg-187))))))
(b! #t cfg-188 :delay (.add.w.vf vf23 vf23 vf19 :mask #b1))
(b! #t cfg-188 :delay (.add.w.vf.x vf23 vf23 vf19))
(label cfg-187)
(.add.w.vf vf23 vf23 vf14 :mask #b1)
(.add.w.vf.x vf23 vf23 vf14)
(label cfg-188)
(vftoi4.xyzw vf4 vf4)
;;(s.vf! (+ dma-out 192) vf8)
@@ -1491,11 +1491,11 @@
(let ((flags (-> arg1 flags))
(work *font-work*))
(.lvf vf1 (&-> *video-parms* relative-x-scale-reciprical))
(.mul.vf vf25 vf25 vf1 :mask #b11)
(.mul.vf vf23 vf23 vf1 :mask #b11)
(.mul.vf.xy vf25 vf25 vf1)
(.mul.vf.xy vf23 vf23 vf1)
;; hack! fixes small font widescreen
(unless (logtest? (-> arg1 flags) (font-flags pc-hack))
(.mul.vf vf24 vf24 vf1 :mask #b11))
(.mul.vf.xy vf24 vf24 vf1))
(set! (-> work str-ptr) (the-as uint arg0))
(set! (-> work flags) flags)
(.mov.vf vf1 vf0)
@@ -1553,9 +1553,9 @@
(.mov vf1 arg-val)
(.itof.vf vf1 vf1)
(cond
((zero? sign-char) (.add.x.vf vf23 vf0 vf1 :mask #b1))
((= sign-char #\-) (.sub.x.vf vf23 vf23 vf1 :mask #b1))
(else (.add.x.vf vf23 vf23 vf1 :mask #b1)))
((zero? sign-char) (.add.x.vf.x vf23 vf0 vf1))
((= sign-char #\-) (.sub.x.vf.x vf23 vf23 vf1))
(else (.add.x.vf.x vf23 vf23 vf1)))
(goto cfg-3)))
(when (and (>= cur-char #\0) (<= cur-char #\9))
(set! arg-val (+ (* arg-val 10) (- cur-char #\0)))
@@ -1565,8 +1565,8 @@
(label cfg-48)
(.lvf vf5 (&-> kerning-table (- cur-char 16) quad))
(.mul.vf vf19 vf5 vf13)
(if (logtest? flags (font-flags kerning)) (.add.w.vf vf23 vf23 vf19 :mask #b1) (.add.w.vf vf23 vf23 vf14 :mask #b1)))
(else (.add.x.vf vf23 vf0 vf24 :mask #b1)))
(if (logtest? flags (font-flags kerning)) (.add.w.vf.x vf23 vf23 vf19) (.add.w.vf.x vf23 vf23 vf14)))
(else (.add.x.vf.x vf23 vf0 vf24)))
(goto cfg-3))))
(label cfg-51)
(.sub.vf vf23 vf23 vf24)
+6 -6
View File
@@ -262,13 +262,13 @@
(set! (-> arg0 direction 1 quad) v1-1)
(.mul.x.vf vf7 vf7 vf11)
(set! (-> arg0 direction 2 quad) (the-as uint128 a2-2))))
(.min.x.vf vf4 vf0 vf0 :mask #b1000)
(.min.x.vf.w vf4 vf0 vf0)
(nop!)
(.min.x.vf vf5 vf0 vf0 :mask #b1000)
(.min.x.vf.w vf5 vf0 vf0)
(nop!)
(.min.x.vf vf6 vf0 vf0 :mask #b1000)
(.min.x.vf.w vf6 vf0 vf0)
(nop!)
(.max.w.vf vf7 vf0 vf0 :mask #b1000)
(.max.w.vf.w vf7 vf0 vf0)
(nop!)
(nop!)
(.svf (&-> arg0 color 0 quad) vf4)
@@ -413,8 +413,8 @@
(.cross.vf nmat2 tmat0 tmat1)
;; dot nmat0 and tmat0
(.mul.vf acc nmat0 tmat0)
(.add.y.vf acc acc acc :mask #b1)
(.add.z.vf acc acc acc :mask #b1)
(.add.y.vf.x acc acc acc)
(.add.z.vf.x acc acc acc)
;; divide!
(.div.vf acc vf0 acc :fsf #b11 :ftf #b0)
;; scale nmat:
+6 -6
View File
@@ -344,10 +344,10 @@
(.div.vf Q vf0 vf31 :fsf #b11 :ftf #b11)
(.wait.vf)
;;(.cfc2.i v1-7 Clipping)
(.mul.vf vf28 vf28 Q :mask #b111)
(.mul.vf.xyz vf28 vf28 Q)
(.mul.vf vf23 vf23 Q)
(.add.vf vf28 vf28 vf30)
(.max.x.vf vf28 vf28 vf0 :mask #b1000)
(.max.x.vf.w vf28 vf28 vf0)
(.svf (&-> arg0 quad) vf28)
(zero? (logand clip 63)))))
@@ -394,13 +394,13 @@
(.wait.vf)
;;(.cfc2.i v1-7 Clipping)
;; perspective
(.mul.vf vf28 vf28 Q :mask #b111)
(.mul.vf.xyz vf28 vf28 Q)
;; compute scale factor (w was 1.0)
(.mul.vf vf23 vf23 Q)
;; apply hvdf offsets
(.add.vf vf28 vf28 vf30)
;; saturate fog
(.max.x.vf vf28 vf28 vf0 :mask #b1000)
(.max.x.vf.w vf28 vf28 vf0)
;; convert to GS fixed point
(vftoi4.xyzw vf28 vf28)
;; store result!
@@ -442,10 +442,10 @@
(.div.vf Q vf0 vf31 :fsf #b11 :ftf #b11)
(.wait.vf)
;;(.cfc2.i v1-7 Clipping)
(.mul.vf vf28 vf28 Q :mask #b111)
(.mul.vf.xyz vf28 vf28 Q)
(.mul.vf vf23 vf23 Q)
(.add.vf vf28 vf28 vf30)
(.max.x.vf vf28 vf28 vf0 :mask #b1000)
(.max.x.vf.w vf28 vf28 vf0)
(.svf (&-> arg0 quad) vf28)
;;(let ((a0-2 (zero? (logand v1-7 63))))
;; )
+8 -8
View File
@@ -67,21 +67,21 @@
(.lvf vf1 (&-> arg0 times 0 quad))
(nop!)
(.lvf vf2 (&-> arg0 times 1 quad))
(.mul.w.vf vf1 vf1 vf1 :mask #b111)
(.mul.w.vf.xyz vf1 vf1 vf1)
(.lvf vf3 (&-> arg0 times 2 quad))
(.mul.w.vf vf2 vf2 vf2 :mask #b111)
(.mul.w.vf.xyz vf2 vf2 vf2)
(.lvf vf4 (&-> arg0 times 3 quad))
(.mul.w.vf vf3 vf3 vf3 :mask #b111)
(.mul.w.vf.xyz vf3 vf3 vf3)
(.lvf vf5 (&-> arg0 times 4 quad))
(.mul.w.vf vf4 vf4 vf4 :mask #b111)
(.mul.w.vf.xyz vf4 vf4 vf4)
(.lvf vf6 (&-> arg0 times 5 quad))
(.mul.w.vf vf5 vf5 vf5 :mask #b111)
(.mul.w.vf.xyz vf5 vf5 vf5)
(.lvf vf7 (&-> arg0 times 6 quad))
(.mul.w.vf vf6 vf6 vf6 :mask #b111)
(.mul.w.vf.xyz vf6 vf6 vf6)
(.lvf vf8 (&-> arg0 times 7 quad))
(.mul.w.vf vf7 vf7 vf7 :mask #b111)
(.mul.w.vf.xyz vf7 vf7 vf7)
(nop!)
(.mul.w.vf vf8 vf8 vf8 :mask #b111)
(.mul.w.vf.xyz vf8 vf8 vf8)
(nop!)
(vftoi12.xyzw vf1 vf1)
(nop!)
+8 -8
View File
@@ -362,8 +362,8 @@
(.lvf vf3 (&-> t1-0 quad)))
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.add.y.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.y.vf.x vf1 vf1 vf1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov a3-2 vf1)
(when (< a3-2 309237600000.0)
(logior! (-> (the-as (pointer uint8) (+ arg2 (the-as int arg0)))) (ash 1 arg1))
@@ -375,8 +375,8 @@
(.lvf vf3 (&-> t1-1 quad)))
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.add.y.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.y.vf.x vf1 vf1 vf1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov a3-6 vf1)
(when (< a3-6 309237600000.0)
(logior! (-> (the-as (pointer uint8) (+ arg2 (the-as int arg0)))) (ash 1 arg1))
@@ -388,8 +388,8 @@
(.lvf vf3 (&-> t1-2 quad)))
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.add.y.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.y.vf.x vf1 vf1 vf1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov a3-10 vf1)
(when (< a3-10 309237600000.0)
(logior! (-> (the-as (pointer uint8) (+ arg2 (the-as int arg0)))) (ash 1 arg1))
@@ -399,8 +399,8 @@
(.lvf vf3 (&-> t0-1 quad)))
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.add.y.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.y.vf.x vf1 vf1 vf1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov v1-10 vf1)
(when (< v1-10 309237600000.0)
(logior! (-> (the-as (pointer uint8) (+ arg2 (the-as int arg0)))) (ash 1 arg1))
@@ -362,8 +362,8 @@
(.lvf vf3 (&-> t1-0 quad)))
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.add.y.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.y.vf.x vf1 vf1 vf1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov a3-2 vf1)
(when (< a3-2 19327350000.0)
(logior! (-> arg0 mask arg2) (ash 1 arg1))
@@ -375,8 +375,8 @@
(.lvf vf3 (&-> t1-1 quad)))
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.add.y.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.y.vf.x vf1 vf1 vf1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov a3-6 vf1)
(when (< a3-6 19327350000.0)
(logior! (-> arg0 mask arg2) (ash 1 arg1))
@@ -388,8 +388,8 @@
(.lvf vf3 (&-> t1-2 quad)))
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.add.y.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.y.vf.x vf1 vf1 vf1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov a3-10 vf1)
(when (< a3-10 19327350000.0)
(logior! (-> arg0 mask arg2) (ash 1 arg1))
@@ -399,8 +399,8 @@
(.lvf vf3 (&-> t0-1 quad)))
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.add.y.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.y.vf.x vf1 vf1 vf1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov v1-10 vf1)
(when (< v1-10 19327350000.0)
(logior! (-> arg0 mask arg2) (ash 1 arg1))
+2 -2
View File
@@ -71,13 +71,13 @@
((< (-> s0-0 w) 0.0)
(.lvf vf1 (&-> v1-9 vel-sxvel quad))
(.lvf vf2 (&-> s0-0 quad))
(.sub.vf vf1 vf0 vf2 :mask #b111)
(.sub.vf.xyz vf1 vf0 vf2)
(.svf (&-> v1-9 vel-sxvel quad) vf1)
(.mov v1-10 vf1))
(else
(.lvf vf1 (&-> v1-9 vel-sxvel quad))
(.lvf vf2 (&-> s0-0 quad))
(.add.vf vf1 vf0 vf2 :mask #b111)
(.add.vf.xyz vf1 vf0 vf2)
(.svf (&-> v1-9 vel-sxvel quad) vf1)
(.mov v1-11 vf1))))
(draw-shadow arg0 arg1 (-> s1-0 vel-sxvel) (the-as float s4-0) s3-0 s2-0))))
+1 -1
View File
@@ -216,7 +216,7 @@
(.mul.vf vf30 vf30 vf14)
(.mul.vf vf29 vf29 vf14)
(.mul.vf vf28 vf28 vf14)
(.mov.vf vf25 vf0 :mask #b100)
(.mov.vf.z vf25 vf0)
(.mov.vf vf24 vf0)
(.mov.vf vf23 vf0)
)
@@ -298,12 +298,12 @@
((< (-> s5-0 w) 0.0)
(.lvf vf1 (&-> arg0 conerot quad))
(.lvf vf2 (&-> s5-0 vec quad))
(.sub.vf vf1 vf0 vf2 :mask #b111)
(.sub.vf.xyz vf1 vf0 vf2)
(.svf (&-> arg0 conerot quad) vf1))
(else
(.lvf vf1 (&-> arg0 conerot quad))
(.lvf vf2 (&-> s5-0 vec quad))
(.add.vf vf1 vf0 vf2 :mask #b111)
(.add.vf.xyz vf1 vf0 vf2)
(.svf (&-> arg0 conerot quad) vf1))))
;; scale the rate of rot-syvel (it's multiplied by a rate already)
(cond
@@ -399,8 +399,8 @@
;; convert color/position.
(.lvf vf4 (&-> s5-0 color quad))
(.lvf vf5 (&-> s5-0 x-y-z-sx quad))
(.min.x.vf vf4 vf4 vf31 :mask #b111)
(.add.vf vf5 vf5 vf30 :mask #b111)
(.min.x.vf.xyz vf4 vf4 vf31)
(.add.vf.xyz vf5 vf5 vf30)
(.svf (&-> s5-0 color quad) vf4)
(.svf (&-> s5-0 x-y-z-sx quad) vf5)
(when (not *death-adgif*)
@@ -418,8 +418,8 @@
(.lvf vf4 (&-> (-> *time-of-day-context* current-prt-color) quad))
(.lvf vf5 (&-> s5-0 color quad))
(.lvf vf6 (&-> gp-0 fade quad))
(.mul.vf vf5 vf5 vf4 :mask #b111)
(.mul.vf vf6 vf6 vf4 :mask #b111)
(.mul.vf.xyz vf5 vf5 vf4)
(.mul.vf.xyz vf6 vf6 vf4)
(.svf (&-> s5-0 color quad) vf5)
(.svf (&-> gp-0 fade quad) vf6)
;;
@@ -432,7 +432,7 @@
(.lvf vf3 (&-> s5-0 color quad))
(.svf (&-> v1-26 x-y-z-sx quad) vf1)
(.svf (&-> v1-26 flag-rot-sy quad) vf2)
(.sub.w.vf vf3 vf0 vf0 :mask #b1000)
(.sub.w.vf.w vf3 vf0 vf0)
(.svf (&-> v1-26 color quad) vf3))
;; we're done!
(logior! (-> gp-0 flags) (sp-cpuinfo-flag ready-to-launch))
@@ -549,12 +549,12 @@
((< (-> s3-0 w) 0.0)
(.lvf vf1 (&-> arg3 qx-qy-qz-sy quad))
(.lvf vf2 (&-> s3-0 vec quad))
(.sub.vf vf1 vf0 vf2 :mask #b111)
(.sub.vf.xyz vf1 vf0 vf2)
(.svf (&-> arg3 qx-qy-qz-sy quad) vf1))
(else
(.lvf vf1 (&-> arg3 qx-qy-qz-sy quad))
(.lvf vf2 (&-> s3-0 vec quad))
(.add.vf vf1 vf0 vf2 :mask #b111)
(.add.vf.xyz vf1 vf0 vf2)
(.svf (&-> arg3 qx-qy-qz-sy quad) vf1)))))
(cond
(*sp-60-hz*
@@ -839,13 +839,13 @@
((< (-> s4-0 w) 0.0)
(.lvf vf1 (&-> v1-3 qx-qy-qz-sy quad))
(.lvf vf2 (&-> s4-0 quad))
(.sub.vf vf1 vf0 vf2 :mask #b111)
(.sub.vf.xyz vf1 vf0 vf2)
(.svf (&-> v1-3 qx-qy-qz-sy quad) vf1)
(.mov v1-4 vf1))
(else
(.lvf vf1 (&-> v1-3 qx-qy-qz-sy quad))
(.lvf vf2 (&-> s4-0 quad))
(.add.vf vf1 vf0 vf2 :mask #b111)
(.add.vf.xyz vf1 vf0 vf2)
(.svf (&-> v1-3 qx-qy-qz-sy quad) vf1)
(.mov v1-5 vf1)))))
(set! (-> arg2 r-g-b-a x) (-> s5-0 sprite r))
@@ -888,13 +888,13 @@
((< (-> s4-0 w) 0.0)
(.lvf vf1 (&-> v1-14 qx-qy-qz-sy quad))
(.lvf vf2 (&-> s4-0 quad))
(.sub.vf vf1 vf0 vf2 :mask #b111)
(.sub.vf.xyz vf1 vf0 vf2)
(.svf (&-> v1-14 qx-qy-qz-sy quad) vf1)
(.mov v1-15 vf1))
(else
(.lvf vf1 (&-> v1-14 qx-qy-qz-sy quad))
(.lvf vf2 (&-> s4-0 quad))
(.add.vf vf1 vf0 vf2 :mask #b111)
(.add.vf.xyz vf1 vf0 vf2)
(.svf (&-> v1-14 qx-qy-qz-sy quad) vf1)
(.mov v1-16 vf1)))))
(set! (-> arg2 r-g-b-a x) (-> s5-0 sprite r))
@@ -187,12 +187,12 @@
;;(TODO.VCLIP vf10 vf10)
(b! (zero? (-> sv-16 flag)) cfg-21)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b111)
(.mul.vf vf2 vf2 Q :mask #b111)
(.mul.vf.xyz vf1 vf1 Q)
(.mul.vf.xyz vf2 vf2 Q)
;;(.cfc2.i v1-25 Clipping)
(set! v1-25 (vu-clip vf10 0)) ;; safe to just drop the higher bits.
(b! (logtest? v1-25 63) cfg-21 :delay (.add.vf vf1 vf1 vf9))
(.max.x.vf vf1 vf1 vf0 :mask #b1000)
(.max.x.vf.w vf1 vf1 vf0)
(.svf (&-> (the-as vector a0-1) quad) vf1)
(.svf (&-> (the-as vector sv-48) quad) vf2)
(set! (-> (the-as vector a0-1) w) 255.0)
+2 -2
View File
@@ -389,13 +389,13 @@
((< (-> arg1 w) 0.0)
(.lvf vf1 (&-> arg0 qx-qy-qz-sy quad))
(.lvf vf2 (&-> arg1 vec quad))
(.sub.vf vf1 vf0 vf2 :mask #b111)
(.sub.vf.xyz vf1 vf0 vf2)
(.svf (&-> arg0 qx-qy-qz-sy quad) vf1)
(.mov v1-0 vf1))
(else
(.lvf vf1 (&-> arg0 qx-qy-qz-sy quad))
(.lvf vf2 (&-> arg1 vec quad))
(.add.vf vf1 vf0 vf2 :mask #b111)
(.add.vf.xyz vf1 vf0 vf2)
(.svf (&-> arg0 qx-qy-qz-sy quad) vf1)
(.mov v1-1 vf1)))
arg1))
+4 -4
View File
@@ -324,11 +324,11 @@
;; load the plane
(.lvf vf2 (&-> real-node plane quad))
;; elementwise multiply xyz
(.mul.vf vf2 vf2 vf1 :mask #b111)
(.mul.vf.xyz vf2 vf2 vf1)
;; then horizontal sum, putting result in y.
(.add.x.vf vf2 vf2 vf2 :mask #b10)
(.add.z.vf vf2 vf2 vf2 :mask #b10)
(.sub.w.vf vf2 vf2 vf2 :mask #b10)
(.add.x.vf.y vf2 vf2 vf2)
(.add.z.vf.y vf2 vf2 vf2)
(.sub.w.vf.y vf2 vf2 vf2)
;; move the result into v1-1.
;; the sign bit of float y is now the sign bit of the int v1-1
(.mov v1-1 vf2)
+69 -69
View File
@@ -337,9 +337,9 @@
(.lvf vf2 (&-> dst vector 1 quad))
(.lvf vf3 (&-> dst vector 2 quad))
;; set the right most column to [0, 0, 0]
(.sub.vf vf1 vf1 vf1 :mask #b1000)
(.sub.vf vf2 vf2 vf2 :mask #b1000)
(.sub.vf vf3 vf3 vf3 :mask #b1000)
(.sub.vf.w vf1 vf1 vf1)
(.sub.vf.w vf2 vf2 vf2)
(.sub.vf.w vf3 vf3 vf3)
;; load the original [translation, 1]
(.lvf vf8 (&-> src vector 3 quad))
;; rotate the translation
@@ -349,7 +349,7 @@
;; negate translation
(.sub.vf vf4 vf0 vf4)
;; set the w to 1.0
(.mov.vf vf4 vf0 :mask #b1000)
(.mov.vf.w vf4 vf0)
;; write back the rotation with fixed right column
(.svf (&-> dst vector 0 quad) vf1)
(.svf (&-> dst vector 1 quad) vf2)
@@ -425,52 +425,52 @@
(.mul.x.vf vf13 vf25 vf24)
(.mul.y.vf vf14 vf25 vf24)
(.mul.z.vf vf15 vf25 vf24)
(.mul.z.vf vf26 vf7 vf25 :mask #b10)
(.mul.z.vf vf27 vf11 vf24 :mask #b1)
(.mul.y.vf vf28 vf9 vf25 :mask #b1)
(.mul.z.vf vf29 vf14 vf23 :mask #b1)
(.mul.z.vf vf30 vf8 vf25 :mask #b1)
(.mul.y.vf vf31 vf7 vf25 :mask #b100)
(.add.y.vf vf16 vf27 vf26 :mask #b1)
(.mul.z.vf.y vf26 vf7 vf25)
(.mul.z.vf.x vf27 vf11 vf24)
(.mul.y.vf.x vf28 vf9 vf25)
(.mul.z.vf.x vf29 vf14 vf23)
(.mul.z.vf.x vf30 vf8 vf25)
(.mul.y.vf.z vf31 vf7 vf25)
(.add.y.vf.x vf16 vf27 vf26)
(.sub.vf vf1 vf0 vf1)
(.add.x.vf vf17 vf29 vf30 :mask #b1)
(.sub.z.vf vf18 vf28 vf31 :mask #b1)
(.sub.y.vf vf23 vf14 vf15 :mask #b100)
(.sub.z.vf vf26 vf15 vf13 :mask #b1)
(.sub.x.vf vf29 vf13 vf14 :mask #b10)
(.sub.vf vf19 vf16 vf17 :mask #b1)
(.sub.z.vf vf24 vf12 vf11 :mask #b10)
(.sub.x.vf vf27 vf10 vf12 :mask #b100)
(.sub.y.vf vf30 vf11 vf10 :mask #b1)
(.add.vf vf20 vf19 vf18 :mask #b1)
(.sub.y.vf vf25 vf8 vf9 :mask #b100)
(.sub.z.vf vf28 vf9 vf7 :mask #b1)
(.sub.x.vf vf31 vf7 vf8 :mask #b10)
(.add.x.vf.x vf17 vf29 vf30)
(.sub.z.vf.x vf18 vf28 vf31)
(.sub.y.vf.z vf23 vf14 vf15)
(.sub.z.vf.x vf26 vf15 vf13)
(.sub.x.vf.y vf29 vf13 vf14)
(.sub.vf.x vf19 vf16 vf17)
(.sub.z.vf.y vf24 vf12 vf11)
(.sub.x.vf.z vf27 vf10 vf12)
(.sub.y.vf.x vf30 vf11 vf10)
(.add.vf.x vf20 vf19 vf18)
(.sub.y.vf.z vf25 vf8 vf9)
(.sub.z.vf.x vf28 vf9 vf7)
(.sub.x.vf.y vf31 vf7 vf8)
(.div.vf Q vf0 vf20 :fsf #b11 :ftf #b0)
;;(.sub.w.vf vf3 vf3 vf3 :mask #b1000)
;;(.sub.w.vf.w vf3 vf3 vf3)
(.xor.vf vf3 vf3 vf3)
;;(.sub.w.vf vf4 vf4 vf4 :mask #b1000)
;;(.sub.w.vf.w vf4 vf4 vf4)
(.xor.vf vf4 vf4 vf4)
;;(.sub.w.vf vf5 vf5 vf5 :mask #b1000)
;;(.sub.w.vf.w vf5 vf5 vf5)
(.xor.vf vf5 vf5 vf5)
(.mov.vf vf6 vf0 :mask #b1000)
(.mov.vf.w vf6 vf0)
(.wait.vf)
(.add.vf vf2 vf0 Q :mask #b1)
(.add.x.vf vf2 vf0 vf2 :mask #b111)
(.mul.z.vf vf3 vf2 vf23 :mask #b1)
(.mul.x.vf vf4 vf2 vf26 :mask #b1)
(.mul.y.vf vf5 vf2 vf29 :mask #b1)
(.mul.y.vf vf3 vf2 vf24 :mask #b10)
(.mul.z.vf vf4 vf2 vf27 :mask #b10)
(.mul.x.vf vf5 vf2 vf30 :mask #b10)
(.mul.z.vf vf3 vf2 vf25 :mask #b100)
(.mul.x.vf vf4 vf2 vf28 :mask #b100)
(.mul.y.vf vf5 vf2 vf31 :mask #b100)
(.add.vf.x vf2 vf0 Q)
(.add.x.vf.xyz vf2 vf0 vf2)
(.mul.z.vf.x vf3 vf2 vf23)
(.mul.x.vf.x vf4 vf2 vf26)
(.mul.y.vf.x vf5 vf2 vf29)
(.mul.y.vf.y vf3 vf2 vf24)
(.mul.z.vf.y vf4 vf2 vf27)
(.mul.x.vf.y vf5 vf2 vf30)
(.mul.z.vf.z vf3 vf2 vf25)
(.mul.x.vf.z vf4 vf2 vf28)
(.mul.y.vf.z vf5 vf2 vf31)
(.mul.x.vf acc vf3 vf1)
(.svf (&-> dst vector 0 quad) vf3)
(.add.mul.y.vf acc vf4 vf1 acc)
(.svf (&-> dst vector 1 quad) vf4)
(.add.mul.z.vf vf6 vf5 vf1 acc :mask #b111)
(.add.mul.z.vf.xyz vf6 vf5 vf1 acc)
(.svf (&-> dst vector 2 quad) vf5)
(.svf (&-> dst vector 3 quad) vf6)
dst))
@@ -782,10 +782,10 @@
;; if all is zero, this will overflow and give us 0.
(+! xyz-zero 1)
;;vsubx.w vf5, vf0, vf6
(.sub.x.vf vf5 vf0 vf6 :mask #b1000)
(.sub.x.vf.w vf5 vf0 vf6)
;;beq v1, r0, L15
;;vaddx.y vf5, vf0, vf6
(.add.x.vf vf5 vf0 vf6 :mask #b0010)
(.add.x.vf.y vf5 vf0 vf6)
(when-goto (zero? xyz-zero) zero-case)))
;; Nonzero case:
;; vsubw.w vf2, vf0, vf0
@@ -795,39 +795,39 @@
(.xor.vf vf3 vf3 vf3)
(.xor.vf vf4 vf4 vf4)
;;vmulx.xyz vf11, vf1, vf5
(.mul.x.vf vf11 vf1 vf5 :mask #b0111)
(.mul.x.vf.xyz vf11 vf1 vf5)
;;vaddy.x vf7, vf0, vf5
(.add.y.vf vf7 vf0 vf5 :mask #b0001)
(.add.y.vf.x vf7 vf0 vf5)
;;vaddy.y vf8, vf0, vf5
(.add.y.vf vf8 vf0 vf5 :mask #b0010)
(.add.y.vf.y vf8 vf0 vf5)
;;vaddy.z vf9, vf0, vf5
(.add.y.vf vf9 vf0 vf5 :mask #b0100)
(.add.y.vf.z vf9 vf0 vf5)
;;vmulw.xyz vf10, vf1, vf5
(.mul.w.vf vf10 vf1 vf5 :mask #b0111)
(.mul.w.vf.xyz vf10 vf1 vf5)
;;vsubz.y vf7, vf0, vf11
(.sub.z.vf vf7 vf0 vf11 :mask #b0010)
(.sub.z.vf.y vf7 vf0 vf11)
;;vaddy.z vf7, vf0, vf11
(.add.y.vf vf7 vf0 vf11 :mask #b0100)
(.add.y.vf.z vf7 vf0 vf11)
;;vaddz.x vf8, vf0, vf11
(.add.z.vf vf8 vf0 vf11 :mask #b0001)
(.add.z.vf.x vf8 vf0 vf11)
;;vsubx.z vf8, vf0, vf11
(.sub.x.vf vf8 vf0 vf11 :mask #b0100)
(.sub.x.vf.z vf8 vf0 vf11)
;;vmulx.xyz vf2, vf10, vf1
(.mul.x.vf vf2 vf10 vf1 :mask #b0111)
(.mul.x.vf.xyz vf2 vf10 vf1)
;;vmuly.xyz vf3, vf10, vf1
(.mul.y.vf vf3 vf10 vf1 :mask #b0111)
(.mul.y.vf.xyz vf3 vf10 vf1)
;;vmulz.xyz vf4, vf10, vf1
(.mul.z.vf vf4 vf10 vf1 :mask #b0111)
(.mul.z.vf.xyz vf4 vf10 vf1)
;;vsuby.x vf9, vf0, vf11
(.sub.y.vf vf9 vf0 vf11 :mask #b0001)
(.sub.y.vf.x vf9 vf0 vf11)
;;vaddx.y vf9, vf0, vf11
(.add.x.vf vf9 vf0 vf11 :mask #b0010)
(.add.x.vf.y vf9 vf0 vf11)
;;vadd.xyz vf2, vf2, vf7
(.add.vf vf2 vf2 vf7 :mask #b0111)
(.add.vf.xyz vf2 vf2 vf7)
;;vadd.xyz vf3, vf3, vf8
(.add.vf vf3 vf3 vf8 :mask #b0111)
(.add.vf.xyz vf3 vf3 vf8)
;;vadd.xyz vf4, vf4, vf9
(.add.vf vf4 vf4 vf9 :mask #b0111)
(.add.vf.xyz vf4 vf4 vf9)
;;sqc2 vf2, 0(v0)
;;sqc2 vf3, 16(v0)
;;sqc2 vf0, 48(v0)
@@ -927,9 +927,9 @@
(.lvf vf10 (&-> arg0 vector 0 quad))
(.outer.product.a.vf acc vf11 vf12)
(.outer.product.b.vf vf13 vf12 vf11 acc)
(.mul.vf vf13 vf13 vf10 :mask #b111)
(.add.y.vf vf13 vf13 vf13 :mask #b1)
(.add.z.vf vf13 vf13 vf13 :mask #b1)
(.mul.vf.xyz vf13 vf13 vf10)
(.add.y.vf.x vf13 vf13 vf13)
(.add.z.vf.x vf13 vf13 vf13)
(.mov v0-0 vf13)
(the-as float v0-0)))
@@ -1008,15 +1008,15 @@
(.outer.product.b.vf vf13 vf12 vf11 acc)
(.outer.product.a.vf acc vf12 vf10)
(.outer.product.b.vf vf14 vf10 vf12 acc)
(.mul.vf vf1 vf10 vf13 :mask #b111)
(.mul.vf.xyz vf1 vf10 vf13)
(.outer.product.a.vf acc vf10 vf11)
(.outer.product.b.vf vf15 vf11 vf10 acc)
(.nop.vf)
(.add.y.vf vf1 vf1 vf1 :mask #b1)
(.add.y.vf.x vf1 vf1 vf1)
(.nop.vf)
(.nop.vf)
(.nop.vf)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf.x vf1 vf1 vf1)
(.nop.vf)
(.nop.vf)
(.nop.vf)
@@ -1337,7 +1337,7 @@
;;(&+! src 64)
(set! src (the (inline-array vector) (+ 64 (the int src))))
;;vmaddz.xyz vf5, vf3, vf5
(.add.mul.z.vf vf5 vf3 vf5 acc :mask #b0111)
(.add.mul.z.vf.xyz vf5 vf3 vf5 acc)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;daddiu v1, a3, -1
(set! v1 (- count 1))
@@ -1348,7 +1348,7 @@
;; vmadday.xyzw acc, vf2, vf6
(.add.mul.y.vf acc vf2 vf6 acc)
;; vmaddz.xyz vf6, vf3, vf6
(.add.mul.z.vf vf6 vf3 vf6 acc :mask #b0111)
(.add.mul.z.vf.xyz vf6 vf3 vf6 acc)
;;sqc2 vf5, 0(a1)
(.svf (-> dst 0) vf5)
;;beq v1, r0, L3
@@ -1365,7 +1365,7 @@
;;lqc2 vf5, 0(a2)
(.lvf vf5 (-> src 0))
;;vmaddz.xyz vf7, vf3, vf7
(.add.mul.z.vf vf7 vf3 vf7 acc :mask #b0111)
(.add.mul.z.vf.xyz vf7 vf3 vf7 acc)
;;sqc2 vf6, 16(a1)
(.svf (-> dst 1) vf6)
;;beq v1, r0, L3
@@ -1382,7 +1382,7 @@
;;lqc2 vf6, 16(a2)
(.lvf vf6 (-> src 1))
;;vmaddz.xyz vf8, vf3, vf8
(.add.mul.z.vf vf8 vf3 vf8 acc :mask #b0111)
(.add.mul.z.vf.xyz vf8 vf3 vf8 acc)
;;sqc2 vf7, 32(a1)
(.svf (-> dst 2) vf7)
;;beq v1, r0, L3
+46 -46
View File
@@ -132,8 +132,8 @@
(.lvf vf1 (&-> arg1 vec quad))
;;(.sub.vf vf2 vf2 vf2)
(.xor.vf vf2 vf2 vf2)
(.sub.vf vf2 vf2 vf1 :mask #b111)
(.add.vf vf2 vf2 vf1 :mask #b1000)
(.sub.vf.xyz vf2 vf2 vf1)
(.add.vf.w vf2 vf2 vf1)
(.svf (&-> arg0 vec quad) vf2)
arg0))
@@ -161,9 +161,9 @@
(init-vf0-vector)
(.lvf vf1 (&-> arg0 vec quad))
(.mul.vf vf1 vf1 vf1)
(.add.z.vf acc vf1 vf1 :mask #b1000)
(.add.mul.y.vf acc vf0 vf1 acc :mask #b1000)
(.add.mul.x.vf vf1 vf0 vf1 acc :mask #b1000)
(.add.z.vf.w acc vf1 vf1)
(.add.mul.y.vf.w acc vf0 vf1 acc)
(.add.mul.x.vf.w vf1 vf0 vf1 acc)
(.add.w.vf vf1 vf0 vf1)
(.mov v0-0 vf1)
v0-0))
@@ -177,9 +177,9 @@
(init-vf0-vector)
(.lvf vf1 (&-> arg0 vec quad))
(.mul.vf vf1 vf1 vf1)
(.add.z.vf acc vf1 vf1 :mask #b1000)
(.add.mul.y.vf acc vf0 vf1 acc :mask #b1000)
(.add.mul.x.vf vf1 vf0 vf1 acc :mask #b1000)
(.add.z.vf.w acc vf1 vf1)
(.add.mul.y.vf.w acc vf0 vf1 acc)
(.add.mul.x.vf.w vf1 vf0 vf1 acc)
(.add.w.vf vf1 vf0 vf1)
(.mov v1-1 vf1)
(sqrtf v1-1)))
@@ -194,9 +194,9 @@
(init-vf0-vector)
(.lvf vf1 (&-> arg0 vec quad))
(.mul.vf vf2 vf1 vf1)
(.add.z.vf acc vf2 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.x.vf vf2 vf0 vf2 acc :mask #b1000)
(.add.z.vf.w acc vf2 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.x.vf.w vf2 vf0 vf2 acc)
(.isqrt.vf Q vf0 vf2 :fsf #b11 :ftf #b11)
;;(.wait.vf)
(.mul.vf vf2 vf1 Q)
@@ -219,12 +219,12 @@
(.mul.vf vf2 vf1 vf1)
;; (.sub.vf vf3 vf3 vf3)
(.xor.vf vf3 vf3 vf3)
(.add.z.vf acc vf2 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.x.vf vf2 vf0 vf2 acc :mask #b1000)
(.sub.vf vf3 vf3 vf1 :mask #b111)
(.add.z.vf.w acc vf2 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.x.vf.w vf2 vf0 vf2 acc)
(.sub.vf.xyz vf3 vf3 vf1)
(.div.vf Q vf0 vf2 :fsf #b11 :ftf #b11)
(.add.vf vf3 vf3 vf1 :mask #b1000)
(.add.vf.w vf3 vf3 vf1)
(.wait.vf)
(.mul.vf vf3 vf3 Q)
(.nop.vf)
@@ -243,9 +243,9 @@
(.lvf vf1 (&-> arg0 vec quad))
(.lvf vf2 (&-> arg1 vec quad))
(.mul.vf vf1 vf1 vf2)
(.add.z.vf acc vf1 vf1 :mask #b1000)
(.add.mul.y.vf acc vf0 vf1 acc :mask #b1000)
(.add.mul.x.vf vf1 vf0 vf1 acc :mask #b1000)
(.add.z.vf.w acc vf1 vf1)
(.add.mul.y.vf.w acc vf0 vf1 acc)
(.add.mul.x.vf.w vf1 vf0 vf1 acc)
(.add.w.vf vf1 vf0 vf1)
(.mov v0-0 vf1)
v0-0))
@@ -261,16 +261,16 @@
(init-vf0-vector)
(.lvf vf1 (&-> arg1 vec quad))
(.lvf vf2 (&-> arg2 vec quad))
(.sub.vf vf4 vf0 vf0 :mask #b1000)
(.sub.vf.w vf4 vf0 vf0)
(.mul.vf vf3 vf1 vf2)
(.outer.product.a.vf acc vf1 vf2)
(.outer.product.b.vf vf4 vf2 vf1 acc)
(.mul.w.vf acc vf1 vf2)
(.add.mul.w.vf acc vf2 vf1 acc)
(.sub.mul.w.vf acc vf0 vf3 acc :mask #b1000)
(.sub.mul.z.vf acc vf0 vf3 acc :mask #b1000)
(.sub.mul.y.vf acc vf0 vf3 acc :mask #b1000)
(.sub.mul.x.vf acc vf0 vf3 acc :mask #b1000)
(.sub.mul.w.vf.w acc vf0 vf3 acc)
(.sub.mul.z.vf.w acc vf0 vf3 acc)
(.sub.mul.y.vf.w acc vf0 vf3 acc)
(.sub.mul.x.vf.w acc vf0 vf3 acc)
(.add.mul.w.vf vf1 vf4 vf0 acc)
(.svf (&-> arg0 vec quad) vf1)
arg0))
@@ -338,27 +338,27 @@
(init-vf0-vector)
(.lvf vf1 (&-> arg1 vec quad))
(.add.vf vf5 vf1 vf1)
(.add.w.vf vf2 vf0 vf1 :mask #b1)
(.add.z.vf vf2 vf0 vf1 :mask #b10)
(.sub.y.vf vf2 vf0 vf1 :mask #b100)
(.sub.w.vf vf2 vf0 vf0 :mask #b1000)
(.sub.z.vf vf3 vf0 vf1 :mask #b1)
(.add.w.vf vf3 vf0 vf1 :mask #b10)
(.add.x.vf vf3 vf0 vf1 :mask #b100)
(.sub.w.vf vf3 vf0 vf0 :mask #b1000)
(.add.y.vf vf4 vf0 vf1 :mask #b1)
(.sub.x.vf vf4 vf0 vf1 :mask #b10)
(.add.w.vf vf4 vf0 vf1 :mask #b100)
(.sub.w.vf vf4 vf0 vf0 :mask #b1000)
(.add.w.vf.x vf2 vf0 vf1)
(.add.z.vf.y vf2 vf0 vf1)
(.sub.y.vf.z vf2 vf0 vf1)
(.sub.w.vf.w vf2 vf0 vf0)
(.sub.z.vf.x vf3 vf0 vf1)
(.add.w.vf.y vf3 vf0 vf1)
(.add.x.vf.z vf3 vf0 vf1)
(.sub.w.vf.w vf3 vf0 vf0)
(.add.y.vf.x vf4 vf0 vf1)
(.sub.x.vf.y vf4 vf0 vf1)
(.add.w.vf.z vf4 vf0 vf1)
(.sub.w.vf.w vf4 vf0 vf0)
(.outer.product.a.vf acc vf5 vf2)
(.outer.product.b.vf vf2 vf2 vf5 acc)
(.outer.product.a.vf acc vf5 vf3)
(.outer.product.b.vf vf3 vf3 vf5 acc)
(.outer.product.a.vf acc vf5 vf4)
(.outer.product.b.vf vf4 vf4 vf5 acc)
(.add.w.vf vf2 vf2 vf0 :mask #b1)
(.add.w.vf vf3 vf3 vf0 :mask #b10)
(.add.w.vf vf4 vf4 vf0 :mask #b100)
(.add.w.vf.x vf2 vf2 vf0)
(.add.w.vf.y vf3 vf3 vf0)
(.add.w.vf.z vf4 vf4 vf0)
(.svf (&-> arg0 vector 3 quad) vf0)
(.svf (&-> arg0 vector 0 quad) vf2)
(.svf (&-> arg0 vector 1 quad) vf3)
@@ -583,17 +583,17 @@
(vector-sincos-rad! gp-0 s5-0 s4-0)
(.lvf vf1 (&-> gp-0 quad))
(.lvf vf2 (&-> s5-0 quad)))
(.mul.x.vf vf4 vf0 vf1 :mask #b1000)
(.add.vf vf4 vf0 vf2 :mask #b111)
(.sub.vf vf4 vf0 vf4 :mask #b110)
(.add.vf vf3 vf0 vf1 :mask #b111)
(.mul.x.vf vf3 vf0 vf2 :mask #b1000)
(.mul.x.vf.w vf4 vf0 vf1)
(.add.vf.xyz vf4 vf0 vf2)
(.sub.vf.yz vf4 vf0 vf4)
(.add.vf.xyz vf3 vf0 vf1)
(.mul.x.vf.w vf3 vf0 vf2)
(.outer.product.a.vf acc vf1 vf1)
(.outer.product.b.vf vf6 vf0 vf0 acc)
(.outer.product.a.vf acc vf2 vf2)
(.outer.product.b.vf vf5 vf0 vf0 acc)
(.mul.x.vf vf6 vf0 vf6 :mask #b1000)
(.mul.x.vf vf5 vf0 vf5 :mask #b1000)
(.mul.x.vf.w vf6 vf0 vf6)
(.mul.x.vf.w vf5 vf0 vf5)
(.mul.vf acc vf6 vf4)
(.add.mul.vf vf7 vf5 vf3 acc)
(.svf (&-> arg0 vec quad) vf7)
+6 -6
View File
@@ -190,7 +190,7 @@
(.lvf vf3 (&-> arg0 vector 0 quad))
(.lvf vf4 (&-> arg0 vector 1 quad))
(.lvf vf5 (&-> arg0 vector 2 quad))
(.mov.vf vf2 vf0 :mask #b1000)
(.mov.vf.w vf2 vf0)
(.mul.x.vf vf3 vf3 vf1)
(.mul.y.vf vf4 vf4 vf1)
(.mul.z.vf vf5 vf5 vf1)
@@ -243,14 +243,14 @@
(.lvf vf3 (&-> arg0 vector 0 quad))
(.lvf vf4 (&-> arg0 vector 1 quad))
(.lvf vf5 (&-> arg0 vector 2 quad))
(.mov.vf vf2 vf0 :mask #b1000)
(.mov.vf.w vf2 vf0)
(.mul.x.vf vf3 vf3 vf1)
(.mul.y.vf vf4 vf4 vf1)
(.mul.z.vf vf5 vf5 vf1)
(.mul.x.vf acc vf3 vf6)
(.add.mul.y.vf acc vf4 vf6 acc)
(.add.mul.z.vf acc vf5 vf6 acc)
(.add.mul.w.vf vf2 vf2 vf0 acc :mask #b111)
(.add.mul.w.vf.xyz vf2 vf2 vf0 acc)
(.svf (&-> arg0 vector 3 quad) vf2)
(.svf (&-> arg0 vector 0 quad) vf3)
(.svf (&-> arg0 vector 1 quad) vf4)
@@ -274,11 +274,11 @@
(.lvf vf3 (&-> arg0 vector 0 quad))
(.lvf vf4 (&-> arg0 vector 1 quad))
(.lvf vf5 (&-> arg0 vector 2 quad))
(.mov.vf vf2 vf0 :mask #b1000)
(.mov.vf.w vf2 vf0)
(.mul.x.vf vf3 vf3 vf1)
(.mul.y.vf vf4 vf4 vf1)
(.mul.z.vf vf5 vf5 vf1)
(.add.vf vf2 vf2 vf6 :mask #b111)
(.add.vf.xyz vf2 vf2 vf6)
(.svf (&-> arg0 vector 3 quad) vf2)
(.svf (&-> arg0 vector 0 quad) vf3)
(.svf (&-> arg0 vector 1 quad) vf4)
@@ -303,7 +303,7 @@
(set! (-> v1-0 z) (/ 1.0 (-> arg2 z)))
(.lvf vf1 (&-> arg1 scale quad))
(.lvf vf2 (&-> arg1 trans quad))
(.mov.vf vf2 vf0 :mask #b1000)
(.mov.vf.w vf2 vf0)
(.lvf vf4 (&-> arg0 vector 0 quad))
(.lvf vf5 (&-> arg0 vector 1 quad))
(.lvf vf6 (&-> arg0 vector 2 quad))
+9 -9
View File
@@ -369,9 +369,9 @@
;; (.vmul.xyzw vf1 vf1 vf2)
(.mul.vf vf1 vf1 vf2)
;; (.vaddy.x vf1 vf1 vf1)
(.add.y.vf vf1 vf1 vf1 :mask #b1)
(.add.y.vf.x vf1 vf1 vf1)
;; (.vaddz.x vf1 vf1 vf1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf.x vf1 vf1 vf1)
;; (.qmfc2.i v0-0 vf1)
(.mov result vf1)
result))
@@ -425,17 +425,17 @@
;; (.vaddw.x vf3 vf0 vf0)
;; set vf3x to 1
(.xor.vf vf3 vf3 vf3)
(.add.w.vf vf3 vf0 vf0 :mask #b1)
(.add.w.vf.x vf3 vf0 vf0)
;; (.vmulax.x acc vf3 vf1)
;; acc.x is now (xa * xb)
(.mul.x.vf acc vf3 vf1 :mask #b1)
(.mul.x.vf.x acc vf3 vf1)
;; (.vmadday.x acc vf3 vf1)
;; acc += thing
(.add.mul.y.vf acc vf3 vf1 acc :mask #b1)
(.add.mul.y.vf.x acc vf3 vf1 acc)
;; (.vmaddaz.x acc vf3 vf1)
(.add.mul.z.vf acc vf3 vf1 acc :mask #b1)
(.add.mul.z.vf.x acc vf3 vf1 acc)
;; (.vmaddw.x vf1 vf3 vf1)
(.add.mul.w.vf vf1 vf3 vf1 acc :mask #b1)
(.add.mul.w.vf.x vf1 vf3 vf1 acc)
;; (.qmfc2.i v0-0 vf1)
(.mov result vf1)
result))
@@ -454,7 +454,7 @@
;; add
(.add.vf vf1 vf2 vf3)
;; set w = 1
(.blend.vf vf1 vf1 vf0 :mask #b1000)
(.blend.vf.w vf1 vf1 vf0)
;; store
(.svf dst vf1))
dst)
@@ -473,7 +473,7 @@
;; subtract
(.sub.vf vf1 vf2 vf3)
;; set w = 1
(.blend.vf vf1 vf1 vf0 :mask #b1000)
(.blend.vf.w vf1 vf1 vf0)
;; store
(.svf dst vf1))
dst)
+84 -84
View File
@@ -28,8 +28,8 @@
(init-vf0-vector)
(.mov vf6 arg2)
(.lvf vf4 (&-> arg1 quad))
(.add.x.vf vf5 vf0 vf0 :mask #b1000)
(.add.x.vf vf5 vf4 vf6 :mask #b111)
(.add.x.vf.w vf5 vf0 vf0)
(.add.x.vf.xyz vf5 vf4 vf6)
(.svf (&-> arg0 quad) vf5)
arg0))
@@ -42,8 +42,8 @@
(init-vf0-vector)
(.lvf vf4 (&-> arg1 quad))
(.lvf vf5 (&-> arg2 quad))
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.add.x.vf.w vf6 vf0 vf0)
(.mul.vf.xyz vf6 vf4 vf5)
(.svf (&-> arg0 quad) vf6)
arg0))
@@ -59,10 +59,10 @@
(.mov vf7 arg3)
(.lvf vf5 (&-> arg2 quad))
(.lvf vf4 (&-> arg1 quad))
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf5 vf7 :mask #b111)
(.add.x.vf.w vf6 vf0 vf0)
(.mul.x.vf.xyz acc vf5 vf7)
;; acts as just an add.
(.add.mul.w.vf vf6 vf4 vf0 acc :mask #b111)
(.add.mul.w.vf.xyz vf6 vf4 vf0 acc)
(.svf (&-> arg0 quad) vf6)
arg0))
@@ -78,9 +78,9 @@
(.mov vf7 arg3)
(.lvf vf5 (&-> arg2 quad))
(.lvf vf4 (&-> arg1 quad))
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.w.vf acc vf4 vf0 :mask #b111)
(.sub.mul.x.vf vf6 vf5 vf7 acc :mask #b111)
(.add.x.vf.w vf6 vf0 vf0)
(.mul.w.vf.xyz acc vf4 vf0)
(.sub.mul.x.vf.xyz vf6 vf5 vf7 acc)
(.svf (&-> arg0 quad) vf6)
arg0))
@@ -99,19 +99,19 @@
;; do this before loading the second value.
;; q = 1 / arg2.y
(.div.vf Q vf0 vf5 :fsf #b11 :ftf #b1)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.add.x.vf.w vf6 vf0 vf0)
(.lvf vf4 (&-> arg1 quad))
;; use FPU to divide x while VU0 is dividing y.
(let ((v1-0 (/ (-> arg1 data 0) (-> arg2 data 0))))
(.wait.vf)
(.mul.vf vf6 vf4 Q :mask #b10)
(.mul.vf.y vf6 vf4 Q)
(.nop.vf)
(.nop.vf)
(.div.vf Q vf0 vf5 :fsf #b11 :ftf #b10)
(.mov vf7 v1-0))
(.add.x.vf vf6 vf0 vf7 :mask #b1)
(.add.x.vf.x vf6 vf0 vf7)
(.wait.vf)
(.mul.vf vf6 vf4 Q :mask #b100)
(.mul.vf.z vf6 vf4 Q)
(.nop.vf)
(.nop.vf)
(.svf (&-> arg0 quad) vf6)
@@ -125,8 +125,8 @@
(init-vf0-vector)
(.lvf vf1 (&-> arg1 quad))
(.mov vf2 arg2)
(.add.x.vf vf1 vf0 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.add.x.vf.w vf1 vf0 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> arg0 quad) vf1)
arg0))
@@ -140,9 +140,9 @@
(vf4 :class vf))
(init-vf0-vector)
(let ((v1-0 #x3f000000)) (.lvf vf1 (&-> arg1 quad)) (.lvf vf2 (&-> arg2 quad)) (.mov vf3 v1-0))
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.add.x.vf.w vf4 vf0 vf0)
(.mul.x.vf acc vf1 vf3)
(.add.mul.x.vf vf4 vf2 vf3 acc :mask #b111)
(.add.mul.x.vf.xyz vf4 vf2 vf3 acc)
(.svf (&-> arg0 quad) vf4)
arg0))
@@ -160,9 +160,9 @@
(.lvf vf2 (&-> arg2 quad))
(.lvf vf1 (&-> arg1 quad))
(.mov vf3 arg3)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.add.x.vf.w vf4 vf0 vf0)
(.mul.x.vf acc vf2 vf3)
(.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111)
(.add.mul.w.vf.xyz vf4 vf1 vf0 acc)
(.svf (&-> arg0 quad) vf4)
arg0))
@@ -179,9 +179,9 @@
(.lvf vf2 (&-> arg2 quad))
(.lvf vf1 (&-> arg1 quad))
(.mov vf3 arg3)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.add.x.vf.w vf4 vf0 vf0)
(.mul.w.vf acc vf1 vf0)
(.sub.mul.x.vf vf4 vf2 vf3 acc :mask #b111)
(.sub.mul.x.vf.xyz vf4 vf2 vf3 acc)
(.svf (&-> arg0 quad) vf4)
arg0))
@@ -196,9 +196,9 @@
(.mov vf3 arg2)
(.div.vf Q vf0 vf3 :fsf #b11 :ftf #b0)
(.lvf vf1 (&-> arg1 quad))
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.add.x.vf.w vf4 vf0 vf0)
(.wait.vf)
(.mul.vf vf4 vf1 Q :mask #b111)
(.mul.vf.xyz vf4 vf1 Q)
(.nop.vf)
(.nop.vf)
(.svf (&-> arg0 quad) vf4)
@@ -211,8 +211,8 @@
(vf4 :class vf))
(init-vf0-vector)
(.lvf vf1 (&-> arg1 quad))
(.sub.vf vf4 vf0 vf1 :mask #b111)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.sub.vf.xyz vf4 vf0 vf1)
(.add.x.vf.w vf4 vf0 vf0)
(.svf (&-> arg0 quad) vf4)
arg0))
@@ -222,7 +222,7 @@
(vf1 :class vf))
(init-vf0-vector)
(.lvf vf1 (&-> arg0 quad))
(.sub.vf vf1 vf0 vf1 :mask #b111)
(.sub.vf.xyz vf1 vf0 vf1)
(.svf (&-> arg0 quad) vf1)
arg0))
@@ -271,13 +271,13 @@
(.sub.vf vf1 vf2 vf1)
(.abs.vf vf1 vf1)
;; put abs.x in acc.w
(.mul.x.vf acc vf0 vf1 :mask #b1000)
(.mul.x.vf.w acc vf0 vf1)
;; add abs.y
(.add.mul.y.vf acc vf0 vf1 acc :mask #b1000)
(.add.mul.y.vf.w acc vf0 vf1 acc)
;; add abs.z
(.add.mul.z.vf vf3 vf0 vf1 acc :mask #b1000)
(.add.mul.z.vf.w vf3 vf0 vf1 acc)
;; set acc.x = acc.w
(.add.w.vf vf3 vf0 vf3 :mask #b1)
(.add.w.vf.x vf3 vf0 vf3)
(.mov v0-0 vf3)
v0-0))
@@ -294,12 +294,12 @@
(.mov vf4 arg2)
(.lvf vf1 (&-> arg1 quad))
(.lvf vf2 (&-> arg0 quad))
(.add.x.vf vf1 vf0 vf0 :mask #b1000)
(.sub.x.vf vf5 vf0 vf4 :mask #b1)
(.sub.vf vf3 vf1 vf2 :mask #b111)
(.min.x.vf vf3 vf3 vf4 :mask #b111)
(.max.x.vf vf3 vf3 vf5 :mask #b111)
(.add.vf vf1 vf2 vf3 :mask #b111)
(.add.x.vf.w vf1 vf0 vf0)
(.sub.x.vf.x vf5 vf0 vf4)
(.sub.vf.xyz vf3 vf1 vf2)
(.min.x.vf.xyz vf3 vf3 vf4)
(.max.x.vf.xyz vf3 vf3 vf5)
(.add.vf.xyz vf1 vf2 vf3)
(.svf (&-> arg0 quad) vf1)
arg0))
@@ -449,8 +449,8 @@
(.lvf vf1 (&-> arg1 quad))
(let ((f0-0 (-> *display* frames-per-second))) (.mov at-0 f0-0))
(.mov vf2 at-0)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.mov.vf.w vf1 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> arg0 quad) vf1)
arg0))
@@ -464,8 +464,8 @@
(.lvf vf1 (&-> arg1 quad))
(let ((f0-0 (-> *display* seconds-per-frame))) (.mov at-0 f0-0))
(.mov vf2 at-0)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.mov.vf.w vf1 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> arg0 quad) vf1)
arg0))
@@ -479,13 +479,13 @@
(init-vf0-vector)
(.lvf vf1 (&-> arg0 quad))
(.mul.vf vf1 vf1 vf1)
(.mul.x.vf acc vf0 vf1 :mask #b1000)
(.add.mul.y.vf acc vf0 vf1 acc :mask #b1000)
(.add.mul.z.vf vf1 vf0 vf1 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf1)
(.add.mul.y.vf.w acc vf0 vf1 acc)
(.add.mul.z.vf.w vf1 vf0 vf1 acc)
(.sqrt.vf Q vf1 :ftf #b11)
(.add.w.vf vf1 vf0 vf0 :mask #b1)
(.add.w.vf.x vf1 vf0 vf0)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b1)
(.mul.vf.x vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.mov v0-0 vf1)
@@ -500,11 +500,11 @@
(vf2 :class vf))
(init-vf0-vector)
(.lvf vf1 (&-> arg0 quad))
(.add.w.vf vf2 vf0 vf0 :mask #b1)
(.add.w.vf.x vf2 vf0 vf0)
(.mul.vf vf1 vf1 vf1)
(.mul.x.vf acc vf2 vf1 :mask #b1)
(.add.mul.y.vf acc vf2 vf1 acc :mask #b1)
(.add.mul.z.vf vf1 vf2 vf1 acc :mask #b1)
(.mul.x.vf.x acc vf2 vf1)
(.add.mul.y.vf.x acc vf2 vf1 acc)
(.add.mul.z.vf.x vf1 vf2 vf1 acc)
(.mov v0-0 vf1)
v0-0))
@@ -530,13 +530,13 @@
(.lvf vf3 (&-> arg1 quad))
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.mul.x.vf acc vf0 vf1 :mask #b1000)
(.add.mul.y.vf acc vf0 vf1 acc :mask #b1000)
(.add.mul.z.vf vf1 vf0 vf1 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf1)
(.add.mul.y.vf.w acc vf0 vf1 acc)
(.add.mul.z.vf.w vf1 vf0 vf1 acc)
(.sqrt.vf Q vf1 :ftf #b11)
(.add.w.vf vf1 vf0 vf0 :mask #b1)
(.add.w.vf.x vf1 vf0 vf0)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b1)
(.mul.vf.x vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.mov v0-0 vf1)
@@ -552,8 +552,8 @@
(.lvf vf3 (&-> arg1 quad))
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.add.y.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.y.vf.x vf1 vf1 vf1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov v0-0 vf1)
v0-0))
@@ -571,12 +571,12 @@
(.lvf vf3 (&-> arg1 quad))
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.mul.x.vf acc vf0 vf1 :mask #b1000)
(.add.mul.z.vf vf1 vf0 vf1 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf1)
(.add.mul.z.vf.w vf1 vf0 vf1 acc)
(.sqrt.vf Q vf1 :ftf #b11)
(.add.w.vf vf1 vf0 vf0 :mask #b1)
(.add.w.vf.x vf1 vf0 vf0)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b1)
(.mul.vf.x vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.mov v0-0 vf1)
@@ -592,7 +592,7 @@
(.lvf vf3 (&-> arg1 quad))
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov v0-0 vf1)
v0-0))
@@ -613,16 +613,16 @@
; )
; (init-vf0-vector)
; (.lvf vf1 (&-> arg0 quad))
; (.mul.vf vf2 vf1 vf1 :mask #b111)
; (.mul.vf.xyz vf2 vf1 vf1)
; (let ((v1-0 arg1))
; (.mov vf3 v1-0)
; )
; (.mul.x.vf acc vf0 vf2 :mask #b1000)
; (.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
; (.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
; (.mul.x.vf.w acc vf0 vf2)
; (.add.mul.y.vf.w acc vf0 vf2 acc)
; (.add.mul.z.vf.w vf2 vf0 vf2 acc)
; (.isqrt.vf Q vf3 vf2 :fsf #b0 :ftf #b11)
; (.wait.vf)
; (.mul.vf vf1 vf1 Q :mask #b111)
; (.mul.vf.xyz vf1 vf1 Q)
; (.nop.vf)
; (.nop.vf)
; (.nop.vf)
@@ -650,19 +650,19 @@
; )
; (init-vf0-vector)
; (.lvf vf1 (&-> arg0 quad))
; (.mul.vf vf2 vf1 vf1 :mask #b111)
; (.mul.vf.xyz vf2 vf1 vf1)
; (let ((v1-0 arg1))
; (.mov vf3 v1-0)
; )
; (.mul.x.vf acc vf0 vf2 :mask #b1000)
; (.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
; (.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
; (.mul.x.vf.w acc vf0 vf2)
; (.add.mul.y.vf.w acc vf0 vf2 acc)
; (.add.mul.z.vf.w vf2 vf0 vf2 acc)
; (.isqrt.vf Q vf3 vf2 :fsf #b0 :ftf #b11)
; (.add.w.vf vf2 vf0 vf2 :mask #b1)
; (.add.w.vf.x vf2 vf0 vf2)
; (.mov v1-1 vf2)
; (let ((v0-0 (sqrtf v1-1)))
; (.wait.vf)
; (.mul.vf vf1 vf1 Q :mask #b111)
; (.mul.vf.xyz vf1 vf1 Q)
; (.nop.vf)
; (.nop.vf)
; (.nop.vf)
@@ -783,10 +783,10 @@
(.lvf vf1 (&-> a quad))
(.lvf vf2 (&-> b quad))
(.mov vf4 alpha)
(.add.x.vf vf3 vf0 vf0 :mask #b1000)
(.add.x.vf.w vf3 vf0 vf0)
(.sub.vf vf2 vf2 vf1)
(.mul.x.vf vf2 vf2 vf4)
(.add.vf vf3 vf1 vf2 :mask #b111)
(.add.vf.xyz vf3 vf1 vf2)
(.svf (&-> out quad) vf3)
out))
@@ -805,10 +805,10 @@
(else
(let ((v1-2 out))
(let ((f0-2 alpha)) (.lvf vf1 (&-> a quad)) (.lvf vf2 (&-> b quad)) (let ((a1-1 f0-2)) (.mov vf4 a1-1)))
(.add.x.vf vf3 vf0 vf0 :mask #b1000)
(.add.x.vf.w vf3 vf0 vf0)
(.sub.vf vf2 vf2 vf1)
(.mul.x.vf vf2 vf2 vf4)
(.add.vf vf3 vf1 vf2 :mask #b111)
(.add.vf.xyz vf3 vf1 vf2)
(.svf (&-> v1-2 quad) vf3))))
out))
@@ -966,13 +966,13 @@
(init-vf0-vector)
(.lvf vf1 (&-> arg0 quad))
(.lvf vf2 (&-> arg1 quad))
(.sub.vf vf3 vf1 vf2 :mask #b111)
(.mul.vf vf3 vf3 vf3 :mask #b111)
(.add.w.vf vf4 vf1 vf2 :mask #b1000)
(.mul.w.vf vf4 vf4 vf4 :mask #b1000)
(.add.y.vf vf3 vf3 vf3 :mask #b1)
(.add.z.vf vf3 vf3 vf3 :mask #b1)
(.add.w.vf vf4 vf0 vf4 :mask #b1)
(.sub.vf.xyz vf3 vf1 vf2)
(.mul.vf.xyz vf3 vf3 vf3)
(.add.w.vf.w vf4 vf1 vf2)
(.mul.w.vf.w vf4 vf4 vf4)
(.add.y.vf.x vf3 vf3 vf3)
(.add.z.vf.x vf3 vf3 vf3)
(.add.w.vf.x vf4 vf0 vf4)
(.mov a0-1 vf4)
(.mov v1-0 vf3)
(>= a0-1 v1-0)))
+13 -13
View File
@@ -250,11 +250,11 @@
(vf9 :class vf))
(.lvf vf1 (&-> arg1 quad))
(.lvf vf2 (&-> arg2 quad))
(.sub.vf vf1 vf1 vf1 :mask #b1010)
(.sub.vf.yw vf1 vf1 vf1)
(.lvf vf3 (&-> arg3 quad))
(.sub.vf vf2 vf2 vf2 :mask #b1010)
(.sub.vf.yw vf2 vf2 vf2)
(.lvf vf12 (&-> arg0 quad))
(.sub.vf vf3 vf3 vf3 :mask #b1010)
(.sub.vf.yw vf3 vf3 vf3)
(.sub.vf vf4 vf2 vf1)
(.sub.vf vf9 vf1 vf12)
(.sub.vf vf5 vf3 vf2)
@@ -337,11 +337,11 @@
(when (>= arg3 f0-3)
(.lvf vf1 (&-> v1-5 quad))
(.lvf vf2 (&-> a1-5 quad))
(.sub.vf vf1 vf1 vf1 :mask #b1010)
(.sub.vf.yw vf1 vf1 vf1)
(.lvf vf3 (&-> a0-2 quad))
(.sub.vf vf2 vf2 vf2 :mask #b1010)
(.sub.vf.yw vf2 vf2 vf2)
(.lvf vf12 (&-> arg2 quad))
(.sub.vf vf3 vf3 vf3 :mask #b1010)
(.sub.vf.yw vf3 vf3 vf3)
(.sub.vf vf4 vf2 vf1)
(.sub.vf vf9 vf1 vf12)
(.sub.vf vf5 vf3 vf2)
@@ -568,19 +568,19 @@
(let ((a0-5 f30-1)) (.mov vf7 a0-5))
(.lvf vf4 a1-3)
(.lvf vf5 v1-9))))
(.min.vf vf1 vf3 vf4 :mask #b111)
(.min.vf.xyz vf1 vf3 vf4)
(.lvf vf6 (&-> arg0 quad))
(.add.y.vf vf7 vf3 vf4 :mask #b10)
(.add.y.vf.y vf7 vf3 vf4)
(.svf (&-> s2-0 0 quad) vf3)
(.max.vf vf2 vf3 vf4 :mask #b111)
(.max.vf.xyz vf2 vf3 vf4)
(.svf (&-> s2-0 1 quad) vf4)
(.min.vf vf1 vf1 vf5 :mask #b111)
(.min.vf.xyz vf1 vf1 vf5)
(.svf (&-> s2-0 2 quad) vf5)
(.max.vf vf2 vf2 vf5 :mask #b111)
(.mul.x.vf vf7 vf7 vf7 :mask #b10)
(.max.vf.xyz vf2 vf2 vf5)
(.mul.x.vf.y vf7 vf7 vf7)
(.svf (&-> s2-0 3 quad) vf1)
(.svf (&-> s2-0 4 quad) vf2)
(.sub.y.vf vf7 vf6 vf7 :mask #b10)
(.sub.y.vf.y vf7 vf6 vf7)
(.mov v1-10 vf7)
(let ((v1-11 (the-as number (sar (the-as int v1-10) 32))))
(when (and (>= arg2 (fabs (the-as float v1-11)))
+2 -2
View File
@@ -44,8 +44,8 @@
(.lvf vf5 (&-> s5-0 vector 2 quad))
(.div.vf Q vf0 vf2 :fsf #b11 :ftf #b11)
(.wait.vf)
(.mul.vf vf2 vf2 Q :mask #b111)
(.mov.vf vf2 vf0 :mask #b1000)
(.mul.vf.xyz vf2 vf2 Q)
(.mov.vf.w vf2 vf0)
(.mul.x.vf vf3 vf3 vf1)
(.mul.y.vf vf4 vf4 vf1)
(.mul.z.vf vf5 vf5 vf1)
+6 -6
View File
@@ -50,13 +50,13 @@
((< (-> s4-1 w) 0.0)
(.lvf vf1 (&-> arg2 conerot quad))
(.lvf vf2 (&-> s4-1 vec quad))
(.sub.vf vf1 vf0 vf2 :mask #b111)
(.sub.vf.xyz vf1 vf0 vf2)
(.svf (&-> arg2 conerot quad) vf1)
(.mov v1-11 vf1))
(else
(.lvf vf1 (&-> arg2 conerot quad))
(.lvf vf2 (&-> s4-1 vec quad))
(.add.vf vf1 vf0 vf2 :mask #b111)
(.add.vf.xyz vf1 vf0 vf2)
(.svf (&-> arg2 conerot quad) vf1)
(.mov v1-12 vf1)))))))
0
@@ -87,13 +87,13 @@
((< (-> s5-0 w) 0.0)
(.lvf vf1 (&-> arg2 conerot quad))
(.lvf vf2 (&-> s5-0 vec quad))
(.sub.vf vf1 vf0 vf2 :mask #b111)
(.sub.vf.xyz vf1 vf0 vf2)
(.svf (&-> arg2 conerot quad) vf1)
(.mov v1-10 vf1))
(else
(.lvf vf1 (&-> arg2 conerot quad))
(.lvf vf2 (&-> s5-0 vec quad))
(.add.vf vf1 vf0 vf2 :mask #b111)
(.add.vf.xyz vf1 vf0 vf2)
(.svf (&-> arg2 conerot quad) vf1)
(.mov v1-11 vf1)))))
0
@@ -120,13 +120,13 @@
((< (-> s5-0 w) 0.0)
(.lvf vf1 (&-> arg2 conerot quad))
(.lvf vf2 (&-> s5-0 vec quad))
(.sub.vf vf1 vf0 vf2 :mask #b111)
(.sub.vf.xyz vf1 vf0 vf2)
(.svf (&-> arg2 conerot quad) vf1)
(.mov v1-4 vf1))
(else
(.lvf vf1 (&-> arg2 conerot quad))
(.lvf vf2 (&-> s5-0 vec quad))
(.add.vf vf1 vf0 vf2 :mask #b111)
(.add.vf.xyz vf1 vf0 vf2)
(.svf (&-> arg2 conerot quad) vf1)
(.mov v1-5 vf1))))))
0
+4 -4
View File
@@ -366,9 +366,9 @@
(s1-0 projectile-init-by-other)
(s0-0 (-> self entity)))
(set! sv-48 s5-1)
(let ((v0-3 (camera-pos))) (.mov.vf vf6 vf0 :mask #b1000) (.lvf vf4 (&-> v0-3 quad)))
(let ((v0-3 (camera-pos))) (.mov.vf.w vf6 vf0) (.lvf vf4 (&-> v0-3 quad)))
(.lvf vf5 (&-> s5-1 quad))
(.add.vf vf6 vf4 vf5 :mask #b111)
(.add.vf.xyz vf6 vf4 vf5)
(.svf (&-> sv-48 quad) vf6)
(let ((t1-0 (if (>= (-> self fact eco-level) (-> *FACT-bank* eco-level-max)) 56 40))
(t2-0 #f))
@@ -445,9 +445,9 @@
(s1-0 projectile-init-by-other)
(s0-0 (-> self entity)))
(set! sv-48 s5-1)
(let ((v0-4 (camera-pos))) (.mov.vf vf6 vf0 :mask #b1000) (.lvf vf4 (&-> v0-4 quad)))
(let ((v0-4 (camera-pos))) (.mov.vf.w vf6 vf0) (.lvf vf4 (&-> v0-4 quad)))
(.lvf vf5 (&-> s5-1 quad))
(.add.vf vf6 vf4 vf5 :mask #b111)
(.add.vf.xyz vf6 vf4 vf5)
(.svf (&-> sv-48 quad) vf6)
(let ((t1-0 (if (>= (-> self fact eco-level) (-> *FACT-bank* eco-level-max)) 120 104))
(t2-0 #f))
+23 -23
View File
@@ -68,20 +68,20 @@
(format 0 "BAD case in setup-collide-for-line-sphere")
(b! #t cfg-13 :delay (nop!))
(label cfg-3)
(.add.y.vf vf8 vf8 vf8 :mask #b1)
(.add.y.vf.x vf8 vf8 vf8)
;;(set! (-> obj num-tris) 0)
(.min.vf vf4 vf1 vf2)
;;(set! (-> obj num-prims) 0)
(.max.vf vf5 vf1 vf2)
;;(set! (-> obj collide-with) collide-with)
(.sub.x.vf vf10 vf0 vf9 :mask #b111)
(.sub.x.vf.xyz vf10 vf0 vf9)
;;(set! (-> obj proc) proc)
(.add.z.vf vf8 vf8 vf8 :mask #b1)
(.sub.x.vf vf4 vf4 vf9 :mask #b111)
(.add.x.vf vf5 vf5 vf9 :mask #b111)
(.add.z.vf.x vf8 vf8 vf8)
(.sub.x.vf.xyz vf4 vf4 vf9)
(.add.x.vf.xyz vf5 vf5 vf9)
(.ftoi.vf vf15 vf10)
(.isqrt.vf Q vf0 vf8 :fsf #b11 :ftf #b0)
(.add.x.vf vf11 vf0 vf9 :mask #b111)
(.add.x.vf.xyz vf11 vf0 vf9)
(.svf (&-> v1-1 collide-box4w min quad) vf15)
(.ftoi.vf vf6 vf4)
;;(.svf (&-> obj collide-box min quad) vf4)
@@ -91,39 +91,39 @@
;;(.svf (&-> obj collide-box4w min quad) vf6)
;;(.svf (&-> obj collide-box4w max quad) vf7)
(.wait.vf)
(.add.vf vf8 vf0 Q :mask #b1)
(.add.vf.x vf8 vf0 Q)
(.mul.x.vf vf12 vf3 vf8)
(.div.vf Q vf0 vf8 :fsf #b11 :ftf #b0)
(.mul.vf vf22 vf12 vf12)
(.abs.vf vf23 vf12)
(.add.y.vf vf22 vf22 vf22 :mask #b1)
(.add.y.vf.x vf22 vf22 vf22)
(.mov a0-7 vf23)
(.wait.vf)
(.add.vf vf8 vf0 Q :mask #b1)
(b! (zero? a0-7) cfg-6 :likely-delay (.add.z.vf vf13 vf0 vf12 :mask #b1))
(.sub.y.vf vf13 vf0 vf12 :mask #b1)
(.add.vf.x vf8 vf0 Q)
(b! (zero? a0-7) cfg-6 :likely-delay (.add.z.vf.x vf13 vf0 vf12))
(.sub.y.vf.x vf13 vf0 vf12)
(.isqrt.vf Q vf0 vf22 :fsf #b11 :ftf #b0)
(.add.x.vf vf13 vf0 vf12 :mask #b10)
(.add.x.vf.y vf13 vf0 vf12)
(.wait.vf)
(.mul.vf vf13 vf13 Q :mask #b11)
(.mul.vf.xy vf13 vf13 Q)
(label cfg-6)
(.outer.product.a.vf acc vf12 vf13)
(.add.x.vf vf11 vf11 vf8 :mask #b1)
(.add.x.vf.x vf11 vf11 vf8)
(.outer.product.b.vf vf14 vf13 vf12 acc)
(.ftoi.vf vf16 vf11)
(.mov.vf vf17 vf12)
(.mov.vf vf18 vf13)
(.mov.vf vf19 vf14)
(.mov.vf vf17 vf0 :mask #b1110)
(.mov.vf.yzw vf17 vf0)
(.svf (&-> v1-1 collide-box4w max quad) vf16)
(.mov.vf vf18 vf0 :mask #b1101)
(.mov.vf vf19 vf0 :mask #b1011)
(.add.x.vf vf17 vf17 vf13 :mask #b10)
(.add.y.vf vf18 vf18 vf12 :mask #b1)
(.add.z.vf vf19 vf19 vf12 :mask #b1)
(.add.x.vf vf17 vf17 vf14 :mask #b100)
(.add.y.vf vf18 vf18 vf14 :mask #b100)
(.add.z.vf vf19 vf19 vf13 :mask #b10)
(.mov.vf.xzw vf18 vf0)
(.mov.vf.xyw vf19 vf0)
(.add.x.vf.y vf17 vf17 vf13)
(.add.y.vf.x vf18 vf18 vf12)
(.add.z.vf.x vf19 vf19 vf12)
(.add.x.vf.z vf17 vf17 vf14)
(.add.y.vf.z vf18 vf18 vf14)
(.add.z.vf.y vf19 vf19 vf13)
(.mul.x.vf acc vf17 vf1)
(.add.mul.y.vf acc vf18 vf1 acc)
(.svf (&-> v1-1 inv-mat vector 0 quad) vf17)
+2 -2
View File
@@ -423,8 +423,8 @@
(.lvf vf1 (&-> s5-0 quad))
(let ((f0-0 (seconds-per-frame))) (.mov at-0 f0-0))
(.mov vf2 at-0)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.mov.vf.w vf1 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> a2-0 quad) vf1))
(vector+! a1-1 a0-2 v1-0)
(if (points-in-air? a0-2 a1-1 *seagull-boxes* 10)
+2 -2
View File
@@ -544,13 +544,13 @@
((< (-> s5-0 w) 0.0)
(.lvf vf1 (&-> arg2 vector 1 quad))
(.lvf vf2 (&-> s5-0 quad))
(.sub.vf vf1 vf0 vf2 :mask #b111)
(.sub.vf.xyz vf1 vf0 vf2)
(.svf (&-> arg2 vector 1 quad) vf1)
(.mov v1-5 vf1))
(else
(.lvf vf1 (&-> arg2 vector 1 quad))
(.lvf vf2 (&-> s5-0 quad))
(.add.vf vf1 vf0 vf2 :mask #b111)
(.add.vf.xyz vf1 vf0 vf2)
(.svf (&-> arg2 vector 1 quad) vf1)
(.mov v1-6 vf1)))))
0
@@ -95,8 +95,8 @@
(.lvf vf1 (&-> (-> self transv) quad))
(let ((f0-2 (seconds-per-frame))) (.mov at-0 f0-2))
(.mov vf2 at-0)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.mov.vf.w vf1 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> v1-1 quad) vf1))
(when (>= (fill-and-probe-using-line-sphere *collide-cache*
(-> self root trans)
@@ -462,8 +462,8 @@
(.lvf vf1 (&-> (-> this swing-vel) quad))
(let ((f0-7 (seconds-per-frame))) (.mov at-0 f0-7))
(.mov vf2 at-0)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.mov.vf.w vf1 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> v1-20 quad) vf1))
(when (>= (fill-and-probe-using-line-sphere *collide-cache*
s4-0
+2 -2
View File
@@ -310,8 +310,8 @@
(.lvf vf1 (&-> (-> this root transv) quad))
(let ((f0-8 (seconds-per-frame))) (.mov at-0 f0-8))
(.mov vf2 at-0)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.mov.vf.w vf1 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> v1-4 quad) vf1))
(let ((s4-0 (new 'stack-no-clear 'check-vector-collision-with-nav-spheres-info)))
(when (>= (nav-control-method-23 (-> this nav) (-> this nav travel) s4-0) 0.0)
+4 -4
View File
@@ -536,8 +536,8 @@
(.lvf vf1 (&-> (-> self collide-info transv) quad))
(let ((f0-4 (seconds-per-frame))) (.mov at-0 f0-4))
(.mov vf2 at-0)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.mov.vf.w vf1 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> v1-7 quad) vf1))
(let ((gp-0 #f))
(nav-control-method-28 (-> self nav) (the-as collide-kind -1))
@@ -640,8 +640,8 @@
(.lvf vf1 (&-> (-> self collide-info transv) quad))
(let ((f0-4 (seconds-per-frame))) (.mov at-0 f0-4))
(.mov vf2 at-0)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.mov.vf.w vf1 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> v1-7 quad) vf1))
(let ((gp-0 #f))
(nav-control-method-28 (-> self nav) (the-as collide-kind -1))
+4 -4
View File
@@ -462,8 +462,8 @@
(.lvf vf1 (&-> (-> s2-0 transv) quad))
(let ((f0-17 (seconds-per-frame))) (.mov at-0 f0-17))
(.mov vf2 at-0)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.mov.vf.w vf1 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> a0-21 quad) vf1)
(vector+! a1-10 v1-42 a0-21))
(when (< (-> s3-3 y) (-> this down y))
@@ -492,8 +492,8 @@
(.lvf vf1 (&-> (-> s2-0 transv) quad))
(let ((f1-27 (seconds-per-frame))) (.mov at-1 f1-27))
(.mov vf2 at-1)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.mov.vf.w vf1 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> a0-26 quad) vf1)
(vector+! a1-14 v1-61 a0-26))
(let ((f1-29 (- (-> this up y) (-> s3-3 y)))
@@ -198,8 +198,8 @@
(.lvf vf1 (&-> (-> self orbit-rotv) quad))
(let ((f0-11 (seconds-per-frame))) (.mov at-0 f0-11))
(.mov vf2 at-0)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.mov.vf.w vf1 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> a0-6 quad) vf1)
(vector+! a1-5 v1-13 a0-6))
(let ((gp-0 (new 'stack-no-clear 'vector)))
+2 -2
View File
@@ -141,8 +141,8 @@
(.lvf vf1 (&-> (-> self root transv) quad))
(let ((f0-1 (-> *display* frames-per-second))) (.mov at-0 f0-1))
(.mov vf2 at-0)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.mov.vf.w vf1 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> v1-16 quad) vf1))
(sunkenfisha-method-23 self)))
:code
+4 -4
View File
@@ -675,8 +675,8 @@
(.lvf vf1 (&-> (-> s2-0 transv) quad))
(let ((f0-15 (-> *display* seconds-per-frame))) (.mov at-0 f0-15))
(.mov vf2 at-0)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.mov.vf.w vf1 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> a2-2 quad) vf1)
(t9-14 a0-17 a1-9 a2-2))
(when (< (-> s3-3 y) (-> obj down y))
@@ -702,8 +702,8 @@
(.lvf vf1 (&-> (-> s2-0 transv) quad))
(let ((f0-29 (-> *display* seconds-per-frame))) (.mov at-1 f0-29))
(.mov vf2 at-1)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.mov.vf.w vf1 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> a2-4 quad) vf1)
(t9-17 a0-20 a1-11 a2-4))
(let ((f0-31 (- (-> obj up y) (-> s3-3 y)))
+2 -2
View File
@@ -99,8 +99,8 @@
(.lvf vf4 (&-> a0-24 quad))
(.lvf vf5 (&-> a1-18 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.add.x.vf.w vf6 vf0 vf0)
(.mul.vf.xyz vf6 vf4 vf5)
(.svf (&-> v1-26 0 trans quad) vf6)
)
)
+2 -2
View File
@@ -101,8 +101,8 @@
(.mov at-0 f0-1)
)
(.mov vf2 at-0)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.mov.vf.w vf1 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> a0-12 quad) vf1)
)
)
+2 -2
View File
@@ -502,8 +502,8 @@
(.lvf vf4 (&-> s1-0 quad))
(.lvf vf5 (&-> a0-11 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.add.x.vf.w vf6 vf0 vf0)
(.mul.vf.xyz vf6 vf4 vf5)
(.svf (&-> v1-19 quad) vf6)
)
)
+21 -21
View File
@@ -125,9 +125,9 @@
)
(.lvf vf4 (&-> v1-28 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf5 vf7 :mask #b111)
(.add.mul.w.vf vf6 vf4 vf0 acc :mask #b111)
(.add.x.vf.w vf6 vf0 vf0)
(.mul.x.vf.xyz acc vf5 vf7)
(.add.mul.w.vf.xyz vf6 vf4 vf0 acc)
(.svf (&-> a1-5 quad) vf6)
)
(if (-> gp-0 callback)
@@ -157,22 +157,22 @@
(set! sv-784 (new 'stack-no-clear 'vector))
(.lvf vf4 (&-> s0-0 quad))
(.lvf vf5 (&-> sv-736 quad))
(.mov.vf vf6 vf0 :mask #b1000)
(.sub.vf vf6 vf4 vf5 :mask #b111)
(.mov.vf.w vf6 vf0)
(.sub.vf.xyz vf6 vf4 vf5)
(.svf (&-> sv-784 quad) vf6)
(set! sv-832 (new 'stack-no-clear 'vector))
(let ((v1-49 sv-752))
(.lvf vf4 (&-> s0-0 quad))
(.lvf vf5 (&-> v1-49 quad))
)
(.mov.vf vf6 vf0 :mask #b1000)
(.sub.vf vf6 vf4 vf5 :mask #b111)
(.mov.vf.w vf6 vf0)
(.sub.vf.xyz vf6 vf4 vf5)
(.svf (&-> sv-832 quad) vf6)
(let ((s0-1 (new 'stack-no-clear 'vector)))
(.lvf vf4 (&-> s1-0 quad))
(.lvf vf5 (&-> sv-752 quad))
(.mov.vf vf6 vf0 :mask #b1000)
(.sub.vf vf6 vf4 vf5 :mask #b111)
(.mov.vf.w vf6 vf0)
(.sub.vf.xyz vf6 vf4 vf5)
(.svf (&-> s0-1 quad) vf6)
(set! sv-928 (new 'stack-no-clear 'quaternion))
(let ((s1-1 (new 'stack-no-clear 'quaternion)))
@@ -218,11 +218,11 @@
(vector-orient-by-quat! sv-784 sv-784 sv-928)
(let ((v1-74 sv-832))
(let ((a0-46 s2-3))
(.mov.vf vf6 vf0 :mask #b1000)
(.mov.vf.w vf6 vf0)
(.lvf vf4 (&-> a0-46 quad))
)
(.lvf vf5 (&-> sv-784 quad))
(.add.vf vf6 vf4 vf5 :mask #b111)
(.add.vf.xyz vf6 vf4 vf5)
(.svf (&-> v1-74 quad) vf6)
)
(set! sv-800 quaternion-from-two-vectors!)
@@ -362,8 +362,8 @@
(.lvf vf4 (&-> v1-1 quad))
(.lvf vf5 (&-> a2-1 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.add.x.vf.w vf6 vf0 vf0)
(.mul.vf.xyz vf6 vf4 vf5)
(.svf (&-> a0-1 quad) vf6)
)
(cspace<-parented-transformq-joint! arg0 arg1)
@@ -964,8 +964,8 @@
(.lvf vf4 (&-> v1-63 quad))
(.lvf vf5 (&-> a0-46 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.add.x.vf.w vf6 vf0 vf0)
(.mul.vf.xyz vf6 vf4 vf5)
(.svf (&-> a1-36 quad) vf6)
)
(cspace<-parented-transformq-joint! arg0 arg1)
@@ -1289,8 +1289,8 @@
(.lvf vf4 (&-> v1-22 quad))
(.lvf vf5 (&-> a0-11 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.add.x.vf.w vf6 vf0 vf0)
(.mul.vf.xyz vf6 vf4 vf5)
(.svf (&-> a1-9 quad) vf6)
)
)
@@ -1319,8 +1319,8 @@
(.lvf vf4 (&-> v1-0 quad))
(.lvf vf5 (&-> a0-1 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.add.x.vf.w vf6 vf0 vf0)
(.mul.vf.xyz vf6 vf4 vf5)
(.svf (&-> a2-0 quad) vf6)
)
(cspace<-parented-transformq-joint! arg0 arg1)
@@ -1455,8 +1455,8 @@
(.lvf vf4 (&-> v1-11 quad))
(.lvf vf5 (&-> a0-4 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.add.x.vf.w vf6 vf0 vf0)
(.mul.vf.xyz vf6 vf4 vf5)
(.svf (&-> a1-4 quad) vf6)
)
)
+6 -6
View File
@@ -1445,8 +1445,8 @@
(.mov vf2 v1-11)
)
)
(.add.x.vf vf1 vf0 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.add.x.vf.w vf1 vf0 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> sv-128 quad) vf1)
(vector+! s2-0 s2-0 (-> arg0 vector 2))
(vector-normalize! s2-0 f26-0)
@@ -1478,8 +1478,8 @@
(.mov vf2 v1-32)
)
)
(.add.x.vf vf1 vf0 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.add.x.vf.w vf1 vf0 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> sv-160 quad) vf1)
(vector+! s2-0 s2-0 (-> arg0 vector 2))
(vector-normalize! s2-0 1.0)
@@ -1572,11 +1572,11 @@
(vector-normalize! sv-208 (* f28-0 (-> arg0 point-of-interest-blend value)))
(let ((v1-12 s0-0))
(let ((a0-10 s0-0))
(.mov.vf vf6 vf0 :mask #b1000)
(.mov.vf.w vf6 vf0)
(.lvf vf4 (&-> a0-10 quad))
)
(.lvf vf5 (&-> sv-208 quad))
(.add.vf vf6 vf4 vf5 :mask #b111)
(.add.vf.xyz vf6 vf4 vf5)
(.svf (&-> v1-12 quad) vf6)
)
(vector-normalize! s0-0 f28-0)
+38 -38
View File
@@ -100,16 +100,16 @@
(a3-4 (the-as (inline-array collide-cache-tri) (-> this tris (-> this num-tris))))
)
(.mov vf5 v1-24)
(.add.x.vf vf1 vf0 vf5 :mask #b10)
(.add.x.vf.y vf1 vf0 vf5)
(set! (-> a3-4 0 clear-flags) (the-as uint128 0))
(set! (-> a3-4 0 prim-index) a2-6)
(.add.x.vf vf3 vf0 vf5 :mask #b10)
(.add.x.vf.y vf3 vf0 vf5)
(set! (-> a3-4 1 clear-flags) (the-as uint128 0))
(set! (-> a3-4 1 prim-index) a2-6)
(.mov.vf vf2 vf1)
(.mov.vf vf4 vf1)
(.add.z.vf vf2 vf0 vf3 :mask #b100)
(.add.x.vf vf4 vf0 vf3 :mask #b1)
(.add.z.vf.z vf2 vf0 vf3)
(.add.x.vf.x vf4 vf0 vf3)
(.svf (&-> a3-4 0 vertex 0 quad) vf1)
(.svf (&-> a3-4 0 vertex 1 quad) vf2)
(.svf (&-> a3-4 0 vertex 2 quad) vf3)
@@ -166,9 +166,9 @@
(set! (-> this ignore-processes 0) (the-as process a0-2))
(nop!)
(set! (-> this ignore-processes 1) (the-as process a1-1))
(.mov.vf vf1 vf0 :mask #b1000)
(.mov.vf.w vf1 vf0)
(nop!)
(.mov.vf vf2 vf0 :mask #b1000)
(.mov.vf.w vf2 vf0)
(set! (-> this ignore-mask) (the-as pat-surface a2-0))
)
)
@@ -288,29 +288,29 @@
(nop!)
(.add.vf vf2 vf1 vf3)
(set! (-> this ignore-mask) (the-as pat-surface v1-10))
(.add.y.vf vf8 vf8 vf8 :mask #b1)
(.add.y.vf.x vf8 vf8 vf8)
(set! (-> this num-tris) 0)
(.min.vf vf4 vf1 vf2)
(set! (-> this num-prims) 0)
(.max.vf vf5 vf1 vf2)
(set! (-> this collide-with) (the-as collide-spec a2-1))
)
(.sub.w.vf vf10 vf0 vf9 :mask #b111)
(.sub.w.vf.xyz vf10 vf0 vf9)
(set! (-> this ignore-processes 0) (the-as process a0-14))
(.add.z.vf vf8 vf8 vf8 :mask #b1)
(.add.z.vf.x vf8 vf8 vf8)
(set! (-> this ignore-processes 1) (the-as process a1-3))
)
)
)
(.sub.w.vf vf4 vf4 vf9 :mask #b111)
(.sub.w.vf.xyz vf4 vf4 vf9)
(nop!)
(.add.w.vf vf5 vf5 vf9 :mask #b111)
(.add.w.vf.xyz vf5 vf5 vf9)
(nop!)
(.ftoi.vf vf15 vf10)
(nop!)
(.isqrt.vf Q vf0 vf8 :fsf #b11 :ftf #b0)
(nop!)
(.add.w.vf vf11 vf0 vf9 :mask #b111)
(.add.w.vf.xyz vf11 vf0 vf9)
(nop!)
(nop!)
(nop!)
@@ -334,7 +334,7 @@
(.svf (&-> arg0 bbox4w max quad) vf7)
(.wait.vf)
(nop!)
(.add.vf vf8 vf0 Q :mask #b1)
(.add.vf.x vf8 vf0 Q)
(nop!)
(.mul.x.vf vf12 vf3 vf8)
(nop!)
@@ -346,27 +346,27 @@
(nop!)
(.abs.vf vf23 vf12)
(nop!)
(.add.y.vf vf22 vf22 vf22 :mask #b1)
(.add.y.vf.x vf22 vf22 vf22)
(.mov v1-11 vf23)
(.wait.vf)
(nop!)
(.add.vf vf8 vf0 Q :mask #b1)
(.add.vf.x vf8 vf0 Q)
(nop!)
(b! (zero? v1-11) cfg-12 :likely-delay (.add.z.vf vf13 vf0 vf12 :mask #b1))
(.sub.y.vf vf13 vf0 vf12 :mask #b1)
(b! (zero? v1-11) cfg-12 :likely-delay (.add.z.vf.x vf13 vf0 vf12))
(.sub.y.vf.x vf13 vf0 vf12)
(nop!)
(.isqrt.vf Q vf0 vf22 :fsf #b11 :ftf #b0)
(nop!)
(.add.x.vf vf13 vf0 vf12 :mask #b10)
(.add.x.vf.y vf13 vf0 vf12)
(nop!)
(.wait.vf)
(nop!)
(.mul.vf vf13 vf13 Q :mask #b11)
(.mul.vf.xy vf13 vf13 Q)
(nop!)
(label cfg-12)
(.outer.product.a.vf acc vf12 vf13)
(nop!)
(.add.x.vf vf11 vf11 vf8 :mask #b1)
(.add.x.vf.x vf11 vf11 vf8)
(nop!)
(.outer.product.b.vf vf14 vf13 vf12 acc)
(nop!)
@@ -378,23 +378,23 @@
(nop!)
(.mov.vf vf19 vf14)
(nop!)
(.mov.vf vf17 vf0 :mask #b1110)
(.mov.vf.yzw vf17 vf0)
(.svf (&-> arg0 local-box4w max quad) vf16)
(.mov.vf vf18 vf0 :mask #b1101)
(.mov.vf.xzw vf18 vf0)
(nop!)
(.mov.vf vf19 vf0 :mask #b1011)
(.mov.vf.xyw vf19 vf0)
(nop!)
(.add.x.vf vf17 vf17 vf13 :mask #b10)
(.add.x.vf.y vf17 vf17 vf13)
(nop!)
(.add.y.vf vf18 vf18 vf12 :mask #b1)
(.add.y.vf.x vf18 vf18 vf12)
(nop!)
(.add.z.vf vf19 vf19 vf12 :mask #b1)
(.add.z.vf.x vf19 vf19 vf12)
(nop!)
(.add.x.vf vf17 vf17 vf14 :mask #b100)
(.add.x.vf.z vf17 vf17 vf14)
(nop!)
(.add.y.vf vf18 vf18 vf14 :mask #b100)
(.add.y.vf.z vf18 vf18 vf14)
(nop!)
(.add.z.vf vf19 vf19 vf13 :mask #b10)
(.add.z.vf.y vf19 vf19 vf13)
(nop!)
(.mul.x.vf acc vf17 vf1)
(nop!)
@@ -423,11 +423,11 @@
)
(let ((f0-19 1.0))
(.lvf vf1 (&-> (-> arg0 move-dist) quad))
(.add.w.vf vf2 vf0 vf0 :mask #b1)
(.add.w.vf.x vf2 vf0 vf0)
(.mul.vf vf1 vf1 vf1)
(.mul.x.vf acc vf2 vf1 :mask #b1)
(.add.mul.y.vf acc vf2 vf1 acc :mask #b1)
(.add.mul.z.vf vf1 vf2 vf1 acc :mask #b1)
(.mul.x.vf.x acc vf2 vf1)
(.add.mul.y.vf.x acc vf2 vf1 acc)
(.add.mul.z.vf.x vf1 vf2 vf1 acc)
(.mov v1-20 vf1)
(set! (-> arg0 rlength w) (/ f0-19 v1-20))
)
@@ -610,11 +610,11 @@
(s3-0 (new 'stack-no-clear 'matrix))
)
(.lvf vf1 (&-> (-> arg0 move-dist) quad))
(.add.w.vf vf2 vf0 vf0 :mask #b1)
(.add.w.vf.x vf2 vf0 vf0)
(.mul.vf vf1 vf1 vf1)
(.mul.x.vf acc vf2 vf1 :mask #b1)
(.add.mul.y.vf acc vf2 vf1 acc :mask #b1)
(.add.mul.z.vf vf1 vf2 vf1 acc :mask #b1)
(.mul.x.vf.x acc vf2 vf1)
(.add.mul.y.vf.x acc vf2 vf1 acc)
(.add.mul.z.vf.x vf1 vf2 vf1 acc)
(.mov v1-9 vf1)
(let ((f0-1 v1-9))
(if (< 0.0 f0-1)
@@ -751,7 +751,7 @@
(.lvf vf3 (&-> arg0 start-pos quad))
(.lvf vf2 (&-> arg0 move-dist quad))
(set! (-> s5-0 vertex 0 x) (the-as float (-> arg0 ignore-pat)))
(.mul.w.vf vf3 vf0 vf4 :mask #b1000)
(.mul.w.vf.w vf3 vf0 vf4)
(.svf (&-> s5-0 vertex 2 quad) vf2)
(.svf (&-> s5-0 vertex 1 quad) vf3)
(let ((s4-0 (the-as object (-> this prims)))
@@ -31,14 +31,14 @@
(set! (-> s5-0 cshape) v1-3)
(.lvf vf3 (&-> v1-3 trans quad))
)
(.add.vf vf1 vf1 vf3 :mask #b111)
(.add.vf vf2 vf2 vf3 :mask #b111)
(.add.vf.xyz vf1 vf1 vf3)
(.add.vf.xyz vf2 vf2 vf3)
(.svf (&-> s5-0 cache-fill-box min quad) vf1)
(.svf (&-> s5-0 cache-fill-box max quad) vf2)
(.lvf vf4 (&-> s5-0 spec local-within-reach-box min quad))
(.lvf vf5 (&-> s5-0 spec local-within-reach-box max quad))
(.add.vf vf4 vf4 vf3 :mask #b111)
(.add.vf vf5 vf5 vf3 :mask #b111)
(.add.vf.xyz vf4 vf4 vf3)
(.add.vf.xyz vf5 vf5 vf3)
(.ftoi.vf vf6 vf4)
(.ftoi.vf vf7 vf5)
(.svf (&-> s5-0 within-reach-box min quad) vf4)
@@ -154,9 +154,9 @@
)
(.lvf vf4 (&-> v1-1 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf5 vf7 :mask #b111)
(.add.mul.w.vf vf6 vf4 vf0 acc :mask #b111)
(.add.x.vf.w vf6 vf0 vf0)
(.mul.x.vf.xyz acc vf5 vf7)
(.add.mul.w.vf.xyz vf6 vf4 vf0 acc)
(.svf (&-> a1-1 quad) vf6)
)
(let ((f0-1 (get-best-hand-point this (-> arg1 right-hand-hold) s0-0 (the-as int s4-0))))
@@ -173,9 +173,9 @@
(.lvf vf5 (&-> v0-2 quad))
)
(.lvf vf4 (&-> sv-656 quad))
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf5 vf7 :mask #b111)
(.add.mul.w.vf vf6 vf4 vf0 acc :mask #b111)
(.add.x.vf.w vf6 vf0 vf0)
(.mul.x.vf.xyz acc vf5 vf7)
(.add.mul.w.vf.xyz vf6 vf4 vf0 acc)
(.svf (&-> sv-672 quad) vf6)
(let ((f0-3 (get-best-hand-point this (-> arg1 left-hand-hold) s0-0 (the-as int s4-0))))
(if (< 491.52 f0-3)
@@ -430,23 +430,23 @@
(.sub.vf vf4 vf1 vf2)
(.sub.vf vf5 vf3 vf2)
(.mul.vf vf6 vf5 vf5)
(.add.z.vf vf6 vf6 vf6 :mask #b1)
(.add.z.vf.x vf6 vf6 vf6)
(.sqrt.vf Q vf6 :ftf #b0)
(nop!)
(.wait.vf)
(nop!)
(.add.vf vf6 vf0 Q :mask #b1)
(.add.vf.x vf6 vf0 Q)
(.nop.vf)
(.mov v1-1 vf6)
(let ((f1-0 v1-1))
(.div.vf Q vf0 vf6 :fsf #b11 :ftf #b0)
(.wait.vf)
(nop!)
(.add.vf vf8 vf0 Q :mask #b1)
(.add.vf.x vf8 vf0 Q)
(.mul.x.vf vf9 vf5 vf8)
(.mov v1-2 vf8)
(.mul.vf vf10 vf9 vf4)
(.add.z.vf vf10 vf10 vf10 :mask #b1)
(.add.z.vf.x vf10 vf10 vf10)
(let ((f2-0 v1-2))
(.mov v1-3 vf10)
(let ((f3-0 v1-3))
@@ -460,8 +460,8 @@
)
)
)
(.mul.x.vf vf7 vf5 vf11 :mask #b111)
(.add.vf vf7 vf7 vf2 :mask #b111)
(.mul.x.vf.xyz vf7 vf5 vf11)
(.add.vf.xyz vf7 vf7 vf2)
(.svf (&-> arg1 quad) vf7)
0.0
)
+39 -39
View File
@@ -57,22 +57,22 @@ If we are inside of the primitive, return 0.0
(.mul.vf vf3 vf3 vf3) ;; vf3 = r^2
(.mul.vf vf6 vf1 vf1) ;; vf6 = o.^2
(.mul.vf vf5 vf2 vf1) ;; vf5 = u . o
(.add.y.vf vf4 vf4 vf4 :mask #b1)
(.add.y.vf.x vf4 vf4 vf4)
(let ((result (the-as float 0)))
(.add.x.vf vf6 vf6 vf6 :mask #b10)
(.sub.x.vf vf6 vf6 vf3 :mask #b100)
(.add.z.vf vf4 vf4 vf4 :mask #b1)
(.add.x.vf vf5 vf5 vf5 :mask #b10)
(.add.x.vf.y vf6 vf6 vf6)
(.sub.x.vf.z vf6 vf6 vf3)
(.add.z.vf.x vf4 vf4 vf4)
(.add.x.vf.y vf5 vf5 vf5)
(let ((v1-0 (the-as float 0)))
(.add.z.vf vf6 vf6 vf6 :mask #b10)
(.add.z.vf.y vf6 vf6 vf6)
(.div.vf Q vf0 vf4 :fsf #b11 :ftf #b0)
(.add.z.vf vf5 vf5 vf5 :mask #b10)
(.add.z.vf.y vf5 vf5 vf5)
(.mov a0-1 vf4)
(.mul.x.vf vf7 vf6 vf4)
(.mov a1-0 vf6)
(.mul.vf vf8 vf5 vf5)
(b! (< (the-as int a1-0) 0) cfg-7 :delay (set! a0-2 a0-1))
(.mul.vf vf4 vf0 Q :mask #b1000)
(.mul.vf.w vf4 vf0 Q)
(.sub.vf vf9 vf8 vf7)
(b! (= a0-2 v1-0) cfg-6 :delay (.mov v1-1 vf5))
)
@@ -82,11 +82,11 @@ If we are inside of the primitive, return 0.0
(.add.x.vf vf6 vf5 vf4)
(.mov v1-4 vf6)
(.mul.vf vf6 vf6 vf6)
(.mul.vf vf9 vf0 Q :mask #b1000)
(.mul.vf.w vf9 vf0 Q)
(.sub.vf vf6 vf9 vf6)
(.add.w.vf vf9 vf5 vf9 :mask #b10)
(.add.w.vf.y vf9 vf5 vf9)
(.mov a0-3 vf6)
(.mul.w.vf vf9 vf9 vf4 :mask #b10)
(.mul.w.vf.y vf9 vf9 vf4)
(b!
(< (logand (the-as uint v1-4) (the-as uint a0-3)) 0)
cfg-6
@@ -153,22 +153,22 @@ If we are inside of the primitive, return 0.0
(.mul.vf vf3 vf3 vf3)
(.mul.vf vf6 vf1 vf1)
(.mul.vf vf5 vf2 vf1)
(.add.y.vf vf4 vf4 vf4 :mask #b1)
(.add.y.vf.x vf4 vf4 vf4)
(let ((result (the-as float 0)))
(.add.x.vf vf6 vf6 vf6 :mask #b10)
(.sub.x.vf vf6 vf6 vf3 :mask #b100)
(.add.z.vf vf4 vf4 vf4 :mask #b1)
(.add.x.vf vf5 vf5 vf5 :mask #b10)
(.add.x.vf.y vf6 vf6 vf6)
(.sub.x.vf.z vf6 vf6 vf3)
(.add.z.vf.x vf4 vf4 vf4)
(.add.x.vf.y vf5 vf5 vf5)
(let ((v1-0 (the-as float 0)))
(.add.z.vf vf6 vf6 vf6 :mask #b10)
(.add.z.vf.y vf6 vf6 vf6)
(.div.vf Q vf0 vf4 :fsf #b11 :ftf #b0)
(.add.z.vf vf5 vf5 vf5 :mask #b10)
(.add.z.vf.y vf5 vf5 vf5)
(.mov a0-1 vf4)
(.mul.x.vf vf7 vf6 vf4)
(.mov a1-0 vf6)
(.mul.vf vf8 vf5 vf5)
(b! (< (the-as int a1-0) 0) cfg-7 :delay (set! a0-2 a0-1)) ;; in the sphere
(.mul.vf vf4 vf0 Q :mask #b1000)
(.mul.vf.w vf4 vf0 Q)
(.sub.vf vf9 vf8 vf7)
(b! (= a0-2 v1-0) cfg-6 :delay (.mov v1-1 vf5)) ;; bad denominator in division
)
@@ -178,11 +178,11 @@ If we are inside of the primitive, return 0.0
(.add.x.vf vf6 vf5 vf4)
(.mov v1-4 vf6)
(.mul.vf vf6 vf6 vf6)
(.mul.vf vf9 vf0 Q :mask #b1000)
(.mul.vf.w vf9 vf0 Q)
(.sub.vf vf6 vf9 vf6)
(.add.w.vf vf9 vf5 vf9 :mask #b10)
(.add.w.vf.y vf9 vf5 vf9)
(.mov a0-3 vf6)
(.mul.w.vf vf9 vf9 vf4 :mask #b10)
(.mul.w.vf.y vf9 vf9 vf4)
;; too far.
(b! (< (logand (the-as int v1-4) (the-as int a0-3)) 0)
@@ -225,12 +225,12 @@ If we are inside of the primitive, return 0.0
)
(init-vf0-vector)
(.lvf vf1 (&-> ray-origin quad))
(.mov.vf vf1 vf0 :mask #b10)
(.mov.vf.y vf1 vf0)
(.lvf vf2 (&-> circle-origin quad))
(.mov.vf vf2 vf0 :mask #b10)
(.mov.vf.y vf2 vf0)
(.sub.vf vf1 vf1 vf2)
(.lvf vf2 (&-> ray-dir quad))
(.mov.vf vf2 vf0 :mask #b10)
(.mov.vf.y vf2 vf0)
;;(raw-ray-sphere-intersect radius)
(pc-port-do-raw-ray-sphere-intersect radius vf1 vf2)
)
@@ -271,10 +271,10 @@ If we are inside of the primitive, return 0.0
(.mov vf14 cyl-len)
(.mul.vf vf16 vf15 vf13)
(.mul.vf vf17 vf11 vf13)
(.add.x.vf vf16 vf16 vf16 :mask #b10)
(.add.x.vf vf17 vf17 vf17 :mask #b10)
(.add.z.vf vf16 vf16 vf16 :mask #b10)
(.add.z.vf vf17 vf17 vf17 :mask #b10)
(.add.x.vf.y vf16 vf16 vf16)
(.add.x.vf.y vf17 vf17 vf17)
(.add.z.vf.y vf16 vf16 vf16)
(.add.z.vf.y vf17 vf17 vf17)
(.mul.y.vf vf1 vf13 vf16)
(.add.vf vf18 vf17 vf16)
(.sub.x.vf vf19 vf16 vf14)
@@ -301,7 +301,7 @@ If we are inside of the primitive, return 0.0
(< (the-as int a0-4) 0)
cfg-6
:delay
(.add.vf vf12 vf12 vf13 :mask #b111)
(.add.vf.xyz vf12 vf12 vf13)
)
(.mov a0-5 vf19)
(b! (>= (the-as int a0-5) 0) cfg-6 :delay (.svf (&-> pt-out quad) vf12))
@@ -344,12 +344,12 @@ If we are inside of the primitive, return 0.0
(.mul.vf vf8 vf8 vf4)
(.mul.vf vf9 vf7 vf4)
(.mul.vf vf5 vf4 vf4)
(.add.y.vf vf8 vf8 vf8 :mask #b1)
(.add.y.vf vf9 vf9 vf9 :mask #b1)
(.add.y.vf vf5 vf5 vf5 :mask #b1)
(.add.z.vf vf8 vf8 vf8 :mask #b1)
(.add.z.vf vf9 vf9 vf9 :mask #b1)
(.add.z.vf vf5 vf5 vf5 :mask #b1)
(.add.y.vf.x vf8 vf8 vf8)
(.add.y.vf.x vf9 vf9 vf9)
(.add.y.vf.x vf5 vf5 vf5)
(.add.z.vf.x vf8 vf8 vf8)
(.add.z.vf.x vf9 vf9 vf9)
(.add.z.vf.x vf5 vf5 vf5)
(.mov v1-0 vf9)
(.mov a2-1 vf8)
(.isqrt.vf Q vf0 vf5 :fsf #b11 :ftf #b0)
@@ -359,14 +359,14 @@ If we are inside of the primitive, return 0.0
(cond
((!= f2-0 0.0)
(let ((f1-1 (/ f1-0 f2-0)))
(.mov.vf vf4 vf0 :mask #b1000)
(.mov.vf.w vf4 vf0)
(.wait.vf)
(.mul.vf vf4 vf4 Q :mask #b111)
(.mul.vf.xyz vf4 vf4 Q)
(let ((v0-0 f1-1))
(.mov vf8 v0-0)
(.svf (&-> arg1 quad) vf4)
(.mul.x.vf acc vf7 vf8)
(.add.mul.w.vf vf7 vf6 vf0 acc :mask #b111)
(.add.mul.w.vf.xyz vf7 vf6 vf0 acc)
(.svf (&-> arg0 quad) vf7)
(.mov v1-1 vf7)
v0-0
+18 -18
View File
@@ -214,20 +214,20 @@ Another limitation is that triangles don't have per-tri pat info.
(.lvf vf7 (&-> s3-0 vertex 0 quad))
(.mul.vf vf6 vf4 vf4)
(.lvf vf8 (&-> s3-0 vertex 1 quad))
(.mov.vf vf1 vf0 :mask #b1000)
(.mov.vf.w vf1 vf0)
(.lvf vf9 (&-> s3-0 vertex 2 quad))
(.add.x.vf vf5 vf5 vf5 :mask #b10)
(.add.x.vf.y vf5 vf5 vf5)
(&+! s3-0 96)
(.add.y.vf vf6 vf6 vf6 :mask #b1)
(.add.y.vf.x vf6 vf6 vf6)
(set! f3-0 arg3)
(.add.z.vf vf5 vf5 vf5 :mask #b10)
(.add.z.vf vf6 vf6 vf6 :mask #b1)
(.add.z.vf.y vf5 vf5 vf5)
(.add.z.vf.x vf6 vf6 vf6)
(.sqrt.vf Q vf6 :ftf #b0)
(.mov a2-4 vf5)
(set! f0-0 0.0)
(.wait.vf)
(let ((f1-0 (-> arg2 w)))
(.add.vf vf6 vf0 Q :mask #b1)
(.add.vf.x vf6 vf0 Q)
(.mov.vf vf10 vf6)
(b! (< (the-as int a2-4) 0) cfg-6 :likely-delay (.sub.vf vf10 vf0 vf10))
(label cfg-6)
@@ -242,8 +242,8 @@ Another limitation is that triangles don't have per-tri pat info.
(.mul.vf vf11 vf4 Q)
(set! f4-0 0.707)
(.mul.vf vf5 vf11 vf1)
(.add.y.vf vf5 vf5 vf5 :mask #b1)
(.add.z.vf vf5 vf5 vf5 :mask #b1)
(.add.y.vf.x vf5 vf5 vf5)
(.add.z.vf.x vf5 vf5 vf5)
(.mov a2-7 vf5)
)
)
@@ -528,11 +528,11 @@ Another limitation is that triangles don't have per-tri pat info.
(let ((t1-3 (* t1-2 16)))
(.max.vf vf9 vf9 vf3)
(let ((t2-4 (* t2-3 16)))
(.mul.x.vf acc vf0 vf7 :mask #b1000)
(.mul.x.vf.w acc vf0 vf7)
(let ((t3-0 (* t0-5 16)))
(.add.mul.y.vf acc vf0 vf7 acc :mask #b1000)
(.add.mul.y.vf.w acc vf0 vf7 acc)
(set! t0-4 (+ t1-3 a2-1))
(.add.mul.z.vf vf7 vf0 vf7 acc :mask #b1000)
(.add.mul.z.vf.w vf7 vf0 vf7 acc)
(set! t1-1 (+ t2-4 a2-1))
(.isqrt.vf Q vf0 vf7 :fsf #b11 :ftf #b11)
(set! t2-2 (+ t3-0 a2-1))
@@ -551,7 +551,7 @@ Another limitation is that triangles don't have per-tri pat info.
(.svf (&-> a1-1 bbox4w min quad) vf8)
(.wait.vf)
(.svf (&-> a1-1 bbox4w max quad) vf9)
(.mul.vf vf6 vf6 Q :mask #b111)
(.mul.vf.xyz vf6 vf6 Q)
(nop!)
(nop!)
(.svf (&-> a1-1 normal quad) vf6)
@@ -638,13 +638,13 @@ Another limitation is that triangles don't have per-tri pat info.
(set! v1-0 (-> s5-0 sphere-bbox4w min quad))
(set! a0-1 (-> s5-0 sphere-bbox4w max quad))
(.sub.vf vf3 vf2 vf1)
(.mul.w.vf vf4 vf2 vf2 :mask #b1000)
(.mul.w.vf.w vf4 vf2 vf2)
(.mul.vf vf3 vf3 vf3)
(.mul.x.vf acc vf0 vf3 :mask #b1000)
(.add.mul.y.vf acc vf0 vf3 acc :mask #b1000)
(.add.mul.z.vf vf3 vf0 vf3 acc :mask #b1000)
(.sub.w.vf vf3 vf3 vf4 :mask #b1000)
(.add.w.vf vf3 vf0 vf3 :mask #b10)
(.mul.x.vf.w acc vf0 vf3)
(.add.mul.y.vf.w acc vf0 vf3 acc)
(.add.mul.z.vf.w vf3 vf0 vf3 acc)
(.sub.w.vf.w vf3 vf3 vf4)
(.add.w.vf.y vf3 vf0 vf3)
(.mov a1-7 vf3)
(b! (>= (the-as int a1-7) 0) cfg-1 :delay (set! s4-0 (&+ s4-0 96)))
)
@@ -190,8 +190,8 @@
)
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.add.y.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.y.vf.x vf1 vf1 vf1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov a2-5 vf1)
(let ((f0-0 a2-5)
(f1-1 (+ (-> a1-2 world-sphere w) (-> s4-0 prim-core world-sphere w)))
@@ -231,8 +231,8 @@
)
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.add.y.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.y.vf.x vf1 vf1 vf1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov a2-12 vf1)
(let ((f0-1 a2-12)
(f1-5 (+ (-> a1-14 world-sphere w) (-> s4-0 prim-core world-sphere w)))
@@ -385,8 +385,8 @@
(.mov at-0 f0-2)
)
(.mov vf2 at-0)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.mov.vf.w vf1 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> v1-19 quad) vf1)
)
(cond
+103 -103
View File
@@ -81,15 +81,15 @@ it returns a triangle and normal direction to push in.
(.lvf vf1 (&-> a0-1 prim-core world-sphere quad))
(.lvf vf2 (&-> a1-1 prim-core world-sphere quad))
(.sub.vf vf3 vf1 vf2)
(.add.w.vf vf4 vf1 vf2 :mask #b1000)
(.mul.vf vf3 vf3 vf3 :mask #b111)
(.mul.w.vf vf4 vf4 vf4 :mask #b1000)
(.mul.x.vf acc vf0 vf3 :mask #b1000)
(.add.mul.y.vf acc vf0 vf3 acc :mask #b1000)
(.add.mul.z.vf vf3 vf0 vf3 acc :mask #b1000)
(.sub.w.vf vf5 vf3 vf4 :mask #b1000)
(.add.w.vf.w vf4 vf1 vf2)
(.mul.vf.xyz vf3 vf3 vf3)
(.mul.w.vf.w vf4 vf4 vf4)
(.mul.x.vf.w acc vf0 vf3)
(.add.mul.y.vf.w acc vf0 vf3 acc)
(.add.mul.z.vf.w vf3 vf0 vf3 acc)
(.sub.w.vf.w vf5 vf3 vf4)
(let ((f0-1 0.0))
(.add.w.vf vf5 vf0 vf5 :mask #b1)
(.add.w.vf.x vf5 vf0 vf5)
(.mov v1-3 vf5)
(b! (<= f0-1 v1-3) cfg-8)
)
@@ -147,15 +147,15 @@ it returns a triangle and normal direction to push in.
)
)
(.sub.vf vf3 vf2 vf1)
(.add.w.vf vf4 vf2 vf1 :mask #b1000)
(.mul.vf vf3 vf3 vf3 :mask #b111)
(.mul.w.vf vf4 vf4 vf4 :mask #b1000)
(.mul.x.vf acc vf0 vf3 :mask #b1000)
(.add.mul.y.vf acc vf0 vf3 acc :mask #b1000)
(.add.mul.z.vf vf3 vf0 vf3 acc :mask #b1000)
(.sub.w.vf vf3 vf3 vf4 :mask #b1000)
(.add.w.vf.w vf4 vf2 vf1)
(.mul.vf.xyz vf3 vf3 vf3)
(.mul.w.vf.w vf4 vf4 vf4)
(.mul.x.vf.w acc vf0 vf3)
(.add.mul.y.vf.w acc vf0 vf3 acc)
(.add.mul.z.vf.w vf3 vf0 vf3 acc)
(.sub.w.vf.w vf3 vf3 vf4)
(set! f0-0 0.0)
(.add.w.vf vf3 vf0 vf3 :mask #b1)
(.add.w.vf.x vf3 vf0 vf3)
(.mov a0-3 vf3)
)
(should-push-away-test s4-0 other cquery)
@@ -204,15 +204,15 @@ it returns a triangle and normal direction to push in.
)
)
(.sub.vf vf3 vf2 vf1)
(.add.w.vf vf4 vf2 vf1 :mask #b1000)
(.mul.vf vf3 vf3 vf3 :mask #b111)
(.mul.w.vf vf4 vf4 vf4 :mask #b1000)
(.mul.x.vf acc vf0 vf3 :mask #b1000)
(.add.mul.y.vf acc vf0 vf3 acc :mask #b1000)
(.add.mul.z.vf vf3 vf0 vf3 acc :mask #b1000)
(.sub.w.vf vf3 vf3 vf4 :mask #b1000)
(.add.w.vf.w vf4 vf2 vf1)
(.mul.vf.xyz vf3 vf3 vf3)
(.mul.w.vf.w vf4 vf4 vf4)
(.mul.x.vf.w acc vf0 vf3)
(.add.mul.y.vf.w acc vf0 vf3 acc)
(.add.mul.z.vf.w vf3 vf0 vf3 acc)
(.sub.w.vf.w vf3 vf3 vf4)
(set! f0-0 0.0)
(.add.w.vf vf3 vf0 vf3 :mask #b1)
(.add.w.vf.x vf3 vf0 vf3)
(.mov a0-3 vf3)
)
(should-push-away-test this (the-as collide-shape-prim s4-0) cquery)
@@ -304,21 +304,21 @@ it returns a triangle and normal direction to push in.
;; sphere sphere
(.lvf vf1 (&-> this prim-core world-sphere quad))
(.lvf vf2 (&-> other prim-core world-sphere quad))
(.sub.vf vf3 vf2 vf1 :mask #b111)
(.add.w.vf vf5 vf1 vf2 :mask #b1000)
(.mul.vf vf4 vf3 vf3 :mask #b111)
(.mul.x.vf acc vf0 vf4 :mask #b1000)
(.add.mul.y.vf acc vf0 vf4 acc :mask #b1000)
(.add.mul.z.vf vf4 vf0 vf4 acc :mask #b1000)
(.sub.vf.xyz vf3 vf2 vf1)
(.add.w.vf.w vf5 vf1 vf2)
(.mul.vf.xyz vf4 vf3 vf3)
(.mul.x.vf.w acc vf0 vf4)
(.add.mul.y.vf.w acc vf0 vf4 acc)
(.add.mul.z.vf.w vf4 vf0 vf4 acc)
(.sqrt.vf Q vf4 :ftf #b11)
(.mov.vf vf3 vf0 :mask #b1000)
(.add.w.vf vf5 vf0 vf5 :mask #b1)
(.mov.vf.w vf3 vf0)
(.add.w.vf.x vf5 vf0 vf5)
(let ((f2-0 (-> cquery best-dist)))
(.wait.vf)
(nop!)
(.add.vf vf4 vf0 Q :mask #b1)
(.sub.x.vf vf6 vf4 vf5 :mask #b1)
(.mul.x.vf vf3 vf3 vf4 :mask #b111)
(.add.vf.x vf4 vf0 Q)
(.sub.x.vf.x vf6 vf4 vf5)
(.mul.x.vf.xyz vf3 vf3 vf4)
(.mov v1-3 vf6)
(let ((f1-0 v1-3))
(b! (<= f2-0 f1-0) cfg-9)
@@ -356,9 +356,9 @@ it returns a triangle and normal direction to push in.
)
(.lvf vf5 (&-> v1-11 quad))
(.lvf vf4 (&-> s4-1 quad))
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf5 vf7 :mask #b111)
(.add.mul.w.vf vf6 vf4 vf0 acc :mask #b111)
(.add.x.vf.w vf6 vf0 vf0)
(.mul.x.vf.xyz acc vf5 vf7)
(.add.mul.w.vf.xyz vf6 vf4 vf0 acc)
(.svf (&-> a0-9 quad) vf6)
)
)
@@ -409,9 +409,9 @@ it returns a triangle and normal direction to push in.
)
(.lvf vf5 (&-> v1-23 quad))
(.lvf vf4 (&-> s3-2 quad))
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf5 vf7 :mask #b111)
(.add.mul.w.vf vf6 vf4 vf0 acc :mask #b111)
(.add.x.vf.w vf6 vf0 vf0)
(.mul.x.vf.xyz acc vf5 vf7)
(.add.mul.w.vf.xyz vf6 vf4 vf0 acc)
(.svf (&-> a0-24 quad) vf6)
)
)
@@ -1229,8 +1229,8 @@ it returns a triangle and normal direction to push in.
(.mov at-0 f0-0)
)
(.mov vf2 at-0)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.mov.vf.w vf1 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> v1-1 quad) vf1)
(t9-0 this v1-1)
)
@@ -1542,8 +1542,8 @@ it returns a triangle and normal direction to push in.
(.mov at-0 f0-2)
)
(.mov vf2 at-0)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.mov.vf.w vf1 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> v1-4 quad) vf1)
)
;; run collision.
@@ -1675,8 +1675,8 @@ it returns a triangle and normal direction to push in.
(.mov at-0 f0-2)
)
(.mov vf2 at-0)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.mov.vf.w vf1 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> a1-5 quad) vf1)
(t9-1 this a1-5)
)
@@ -1970,8 +1970,8 @@ it returns a triangle and normal direction to push in.
(.mov at-0 f0-0)
)
(.mov vf2 at-0)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.mov.vf.w vf1 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> a0-1 quad) vf1)
)
;; fill the cache.
@@ -2020,21 +2020,21 @@ it returns a triangle and normal direction to push in.
(a2-1 (-> v1-0 prim-core prim-type))
)
(b! (zero? a0-2) cfg-9 :delay (.lvf vf28 (&-> t0-0 quad)))
(.add.x.vf vf31 vf31 vf28 :mask #b1)
(.add.x.vf.x vf31 vf31 vf28)
(let ((a0-3 (-> v1-0 specific 0)))
(b! (= a2-1 (prim-type group)) cfg-3 :delay (.lvf vf24 (&-> v1-0 prim-core world-sphere quad)))
(.add.w.vf vf25 vf31 vf24 :mask #b1)
(.add.x.vf vf30 vf24 vf25 :mask #b111)
(b! #t cfg-10 :delay (.sub.x.vf vf29 vf24 vf25 :mask #b111))
(.add.w.vf.x vf25 vf31 vf24)
(.add.x.vf.xyz vf30 vf24 vf25)
(b! #t cfg-10 :delay (.sub.x.vf.xyz vf29 vf24 vf25))
(label cfg-3)
(b! (zero? a0-3) cfg-9 :delay (set! v1-0 (&+ v1-0 80)))
(+! a0-3 -1)
(let ((a2-3 (logand (-> v1-0 prim-core collide-with) arg2)))
(.lvf vf24 (&-> v1-0 prim-core world-sphere quad))
(b! (zero? a2-3) cfg-3 :delay (.add.w.vf vf25 vf31 vf24 :mask #b1))
(b! (zero? a2-3) cfg-3 :delay (.add.w.vf.x vf25 vf31 vf24))
)
(.add.x.vf vf30 vf24 vf25 :mask #b111)
(.sub.x.vf vf29 vf24 vf25 :mask #b111)
(.add.x.vf.xyz vf30 vf24 vf25)
(.sub.x.vf.xyz vf29 vf24 vf25)
(label cfg-6)
(b! (zero? a0-3) cfg-10 :delay (set! v1-0 (&+ v1-0 80)))
(+! a0-3 -1)
@@ -2042,11 +2042,11 @@ it returns a triangle and normal direction to push in.
)
(let ((a2-5 (logand (-> v1-0 prim-core collide-with) arg2)))
(.lvf vf24 (&-> v1-0 prim-core world-sphere quad))
(b! (zero? a2-5) cfg-6 :delay (.add.w.vf vf25 vf31 vf24 :mask #b1))
(b! (zero? a2-5) cfg-6 :delay (.add.w.vf.x vf25 vf31 vf24))
)
)
(.add.x.vf vf27 vf24 vf25 :mask #b111)
(.sub.x.vf vf26 vf24 vf25 :mask #b111)
(.add.x.vf.xyz vf27 vf24 vf25)
(.sub.x.vf.xyz vf26 vf24 vf25)
(.min.vf vf29 vf29 vf26)
(.max.vf vf30 vf30 vf27)
(b! #t cfg-6 :delay (nop!))
@@ -2054,8 +2054,8 @@ it returns a triangle and normal direction to push in.
(let ((v0-0 #f))
(b! #t cfg-11 :delay (nop!))
(label cfg-10)
(.mov.vf vf29 vf0 :mask #b1000)
(.mov.vf vf30 vf0 :mask #b1000)
(.mov.vf.w vf29 vf0)
(.mov.vf.w vf30 vf0)
(.svf (&-> arg0 min quad) vf29)
(.svf (&-> arg0 max quad) vf30)
(set! v0-0 #t)
@@ -2216,8 +2216,8 @@ it returns a triangle and normal direction to push in.
(.lvf vf4 (&-> a1-4 vector 2 quad))
)
(.add.mul.y.vf acc vf3 vf1 acc)
(.add.mul.z.vf vf1 vf4 vf1 acc :mask #b111)
(.mul.vf vf1 vf1 Q :mask #b111)
(.add.mul.z.vf.xyz vf1 vf4 vf1 acc)
(.mul.vf.xyz vf1 vf1 Q)
(.svf (&-> s5-0 prim-core world-sphere quad) vf1)
(.mov a1-5 vf1)
)
@@ -2226,7 +2226,7 @@ it returns a triangle and normal direction to push in.
(when (= a1-0 -2)
(.lvf vf1 (&-> s5-0 local-sphere quad))
(.lvf vf2 (&-> this trans quad))
(.add.vf vf1 vf1 vf2 :mask #b111)
(.add.vf.xyz vf1 vf1 vf2)
(.svf (&-> s5-0 prim-core world-sphere quad) vf1)
(.mov a1-7 vf1)
)
@@ -2252,7 +2252,7 @@ it returns a triangle and normal direction to push in.
;; just translate.
(.lvf vf1 (&-> s5-0 local-sphere quad))
(.lvf vf2 (&-> this trans quad))
(.add.vf vf1 vf1 vf2 :mask #b111)
(.add.vf.xyz vf1 vf1 vf2)
(.svf (&-> s5-0 prim-core world-sphere quad) vf1)
(.mov v1-8 vf1)
)
@@ -2515,8 +2515,8 @@ it returns a triangle and normal direction to push in.
)
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.add.y.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.y.vf.x vf1 vf1 vf1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov a2-5 vf1)
(let ((f0-0 a2-5)
(f1-1 (+ (-> a1-2 world-sphere w) (-> this root-prim prim-core world-sphere w)))
@@ -2558,8 +2558,8 @@ it returns a triangle and normal direction to push in.
)
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.add.y.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.y.vf.x vf1 vf1 vf1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov a2-12 vf1)
(let ((f0-1 a2-12)
(f1-5 (+ (-> a1-15 world-sphere w) (-> this root-prim prim-core world-sphere w)))
@@ -2621,8 +2621,8 @@ it returns a triangle and normal direction to push in.
(.lvf vf5 (&-> (-> gp-0 cquery) best-other-tri normal quad))
(.sub.vf vf2 vf4 vf3)
(.mul.vf vf1 vf5 vf2)
(.add.x.vf vf1 vf1 vf1 :mask #b10)
(.add.z.vf vf1 vf1 vf1 :mask #b10)
(.add.x.vf.y vf1 vf1 vf1)
(.add.z.vf.y vf1 vf1 vf1)
(.mov v1-55 vf1)
(b! (< (the-as int v1-55) 0) cfg-35 :likely-delay (.sub.vf vf2 vf0 vf2))
(label cfg-35)
@@ -2635,8 +2635,8 @@ it returns a triangle and normal direction to push in.
(.mov at-0 f0-7)
)
(.mov vf2 at-0)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.mov.vf.w vf1 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> v1-59 quad) vf1)
)
(let ((s0-0 (-> (the-as collide-shape-moving s1-0) status)))
@@ -2703,8 +2703,8 @@ it returns a triangle and normal direction to push in.
)
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.add.y.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.y.vf.x vf1 vf1 vf1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov a2-5 vf1)
(let ((f0-0 a2-5)
(f1-1 (+ (-> a1-3 world-sphere w) (-> s3-0 prim-core world-sphere w)))
@@ -2744,8 +2744,8 @@ it returns a triangle and normal direction to push in.
)
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.add.y.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.y.vf.x vf1 vf1 vf1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov a2-12 vf1)
(let ((f0-1 a2-12)
(f1-5 (+ (-> a1-15 world-sphere w) (-> s3-0 prim-core world-sphere w)))
@@ -2776,15 +2776,15 @@ it returns a triangle and normal direction to push in.
(.lvf vf1 (&-> s3-0 prim-core world-sphere quad))
(.lvf vf2 (&-> a2-15 prim-core world-sphere quad))
(.sub.vf vf3 vf1 vf2)
(.add.w.vf vf4 vf1 vf2 :mask #b1000)
(.mul.vf vf3 vf3 vf3 :mask #b111)
(.mul.w.vf vf4 vf4 vf4 :mask #b1000)
(.mul.x.vf acc vf0 vf3 :mask #b1000)
(.add.mul.y.vf acc vf0 vf3 acc :mask #b1000)
(.add.mul.z.vf vf3 vf0 vf3 acc :mask #b1000)
(.sub.w.vf vf3 vf3 vf4 :mask #b1000)
(.add.w.vf.w vf4 vf1 vf2)
(.mul.vf.xyz vf3 vf3 vf3)
(.mul.w.vf.w vf4 vf4 vf4)
(.mul.x.vf.w acc vf0 vf3)
(.add.mul.y.vf.w acc vf0 vf3 acc)
(.add.mul.z.vf.w vf3 vf0 vf3 acc)
(.sub.w.vf.w vf3 vf3 vf4)
(let ((f0-2 0.0))
(.add.w.vf vf3 vf0 vf3 :mask #b1)
(.add.w.vf.x vf3 vf0 vf3)
(let ((v1-28 (-> this process)))
(.mov a0-10 vf3)
(let ((a1-26 (-> s0-0 process)))
@@ -2861,15 +2861,15 @@ it returns a triangle and normal direction to push in.
(.lvf vf2 (&-> s4-0 prim-core world-sphere quad))
(b! (zero? a0-2) cfg-1 :delay (.sub.vf vf3 vf2 vf1))
)
(.add.w.vf vf4 vf2 vf1 :mask #b1000)
(.mul.vf vf3 vf3 vf3 :mask #b111)
(.mul.w.vf vf4 vf4 vf4 :mask #b1000)
(.mul.x.vf acc vf0 vf3 :mask #b1000)
(.add.mul.y.vf acc vf0 vf3 acc :mask #b1000)
(.add.mul.z.vf vf3 vf0 vf3 acc :mask #b1000)
(.sub.w.vf vf3 vf3 vf4 :mask #b1000)
(.add.w.vf.w vf4 vf2 vf1)
(.mul.vf.xyz vf3 vf3 vf3)
(.mul.w.vf.w vf4 vf4 vf4)
(.mul.x.vf.w acc vf0 vf3)
(.add.mul.y.vf.w acc vf0 vf3 acc)
(.add.mul.z.vf.w vf3 vf0 vf3 acc)
(.sub.w.vf.w vf3 vf3 vf4)
(let ((f0-0 0.0))
(.add.w.vf vf3 vf0 vf3 :mask #b1)
(.add.w.vf.x vf3 vf0 vf3)
(.mov a0-3 vf3)
(b! (< f0-0 a0-3) cfg-1)
)
@@ -2920,15 +2920,15 @@ it returns a triangle and normal direction to push in.
(.lvf vf1 (&-> s4-0 prim-core world-sphere quad))
(b! (zero? a0-3) cfg-1 :delay (.sub.vf vf3 vf2 vf1))
)
(.add.w.vf vf4 vf2 vf1 :mask #b1000)
(.mul.vf vf3 vf3 vf3 :mask #b111)
(.mul.w.vf vf4 vf4 vf4 :mask #b1000)
(.mul.x.vf acc vf0 vf3 :mask #b1000)
(.add.mul.y.vf acc vf0 vf3 acc :mask #b1000)
(.add.mul.z.vf vf3 vf0 vf3 acc :mask #b1000)
(.sub.w.vf vf3 vf3 vf4 :mask #b1000)
(.add.w.vf.w vf4 vf2 vf1)
(.mul.vf.xyz vf3 vf3 vf3)
(.mul.w.vf.w vf4 vf4 vf4)
(.mul.x.vf.w acc vf0 vf3)
(.add.mul.y.vf.w acc vf0 vf3 acc)
(.add.mul.z.vf.w vf3 vf0 vf3 acc)
(.sub.w.vf.w vf3 vf3 vf4)
(let ((f0-0 0.0))
(.add.w.vf vf3 vf0 vf3 :mask #b1)
(.add.w.vf.x vf3 vf0 vf3)
(.mov a0-4 vf3)
(b! (< f0-0 a0-4) cfg-1)
)
@@ -3092,8 +3092,8 @@ it returns a triangle and normal direction to push in.
(.lvf vf5 (&-> a0-7 world-sphere quad))
)
)
(.mov.vf vf6 vf0 :mask #b1000)
(.sub.vf vf6 vf4 vf5 :mask #b111)
(.mov.vf.w vf6 vf0)
(.sub.vf.xyz vf6 vf4 vf5)
(.svf (&-> sv-176 quad) vf6)
(vector-normalize! sv-176 1.0)
(when (and (< arg2 (-> sv-176 y)) (and (not (focus-test? (the-as process-focusable gp-0) dead hit board mech))
+9 -9
View File
@@ -17,9 +17,9 @@
(nop!)
(nop!)
(.lvf vf1 (&-> drawable bsphere quad))
(.add.w.vf vf2 vf1 vf1 :mask #b111)
(.add.w.vf.xyz vf2 vf1 vf1)
(let ((v1-0 (-> bbox min quad)))
(.sub.w.vf vf1 vf1 vf1 :mask #b111)
(.sub.w.vf.xyz vf1 vf1 vf1)
(let ((a1-1 (-> bbox max quad)))
(.ftoi.vf vf4 vf2)
(nop!)
@@ -116,13 +116,13 @@
(nop!)
(vitof12.xyzw vf7 vf7)
(nop!)
(.add.vf vf8 vf8 vf9 :mask #b111)
(.add.vf.xyz vf8 vf8 vf9)
(nop!)
(nop!)
(.lvf vf9 (&-> drawable bsphere quad))
(vitof12.xyzw vf10 vf10)
(nop!)
(.mul.w.vf vf10 vf10 vf9 :mask #b1)
(.mul.w.vf.x vf10 vf10 vf9)
(nop!)
(.mul.x.vf acc vf5 vf9)
(nop!)
@@ -132,9 +132,9 @@
(let ((a1-1 (-> bbox max quad)))
(.add.mul.w.vf vf1 vf8 vf0 acc)
(nop!)
(.add.x.vf vf2 vf1 vf10 :mask #b111)
(.add.x.vf.xyz vf2 vf1 vf10)
(nop!)
(.sub.x.vf vf1 vf1 vf10 :mask #b111)
(.sub.x.vf.xyz vf1 vf1 vf10)
(nop!)
(.ftoi.vf vf4 vf2)
(nop!)
@@ -181,11 +181,11 @@
(.mov vf12 v1-2)
(.itof.vf vf12 vf12)
(nop!)
(.add.vf vf10 vf10 vf12 :mask #b111)
(.add.vf.xyz vf10 vf10 vf12)
(nop!)
(.add.vf vf9 vf9 vf10 :mask #b111)
(.add.vf.xyz vf9 vf9 vf10)
(nop!)
(.add.w.vf vf11 vf0 vf9 :mask #b1)
(.add.w.vf.x vf11 vf0 vf9)
(nop!)
(.mov a3-0 vf11)
(nop!)
+12 -12
View File
@@ -192,8 +192,8 @@ and return it as well. Otherwise, set it to `0`"
)
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.add.y.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.y.vf.x vf1 vf1 vf1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov a2-5 vf1)
(let ((f0-0 a2-5)
(f1-1 (+ (-> a1-2 world-sphere w) (-> this collide-bounds r)))
@@ -233,8 +233,8 @@ and return it as well. Otherwise, set it to `0`"
)
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.add.y.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.y.vf.x vf1 vf1 vf1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov a2-12 vf1)
(let ((f0-1 a2-12)
(f1-5 (+ (-> a1-14 world-sphere w) (-> this collide-bounds r)))
@@ -264,15 +264,15 @@ and return it as well. Otherwise, set it to `0`"
(.lvf vf1 (&-> this collide-bounds quad))
(.lvf vf2 (&-> a0-9 prim-core world-sphere quad))
(.sub.vf vf3 vf1 vf2)
(.add.w.vf vf4 vf1 vf2 :mask #b1000)
(.mul.vf vf3 vf3 vf3 :mask #b111)
(.mul.w.vf vf4 vf4 vf4 :mask #b1000)
(.mul.x.vf acc vf0 vf3 :mask #b1000)
(.add.mul.y.vf acc vf0 vf3 acc :mask #b1000)
(.add.mul.z.vf vf3 vf0 vf3 acc :mask #b1000)
(.sub.w.vf vf3 vf3 vf4 :mask #b1000)
(.add.w.vf.w vf4 vf1 vf2)
(.mul.vf.xyz vf3 vf3 vf3)
(.mul.w.vf.w vf4 vf4 vf4)
(.mul.x.vf.w acc vf0 vf3)
(.add.mul.y.vf.w acc vf0 vf3 acc)
(.add.mul.z.vf.w vf3 vf0 vf3 acc)
(.sub.w.vf.w vf3 vf3 vf4)
(let ((f0-2 0.0))
(.add.w.vf vf3 vf0 vf3 :mask #b1)
(.add.w.vf.x vf3 vf0 vf3)
(.mov a0-10 vf3)
(let ((s4-0 (-> v1-23 process)))
(b! (< f0-2 a0-10) cfg-27)
@@ -208,8 +208,8 @@ If we've met or exceeded the projectiles maximum allowed hits, switch to the [[p
(.mov at-0 f0-0)
)
(.mov vf2 at-0)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.mov.vf.w vf1 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> v1-1 quad) vf1)
)
(let ((v1-2 a1-0))
+3 -3
View File
@@ -127,9 +127,9 @@
(.lvf vf5 (&-> a1-4 quad))
)
(.lvf vf4 (&-> v1-15 quad))
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf5 vf7 :mask #b111)
(.add.mul.w.vf vf6 vf4 vf0 acc :mask #b111)
(.add.x.vf.w vf6 vf0 vf0)
(.mul.x.vf.xyz acc vf5 vf7)
(.add.mul.w.vf.xyz vf6 vf4 vf0 acc)
(.svf (&-> a0-8 quad) vf6)
)
(let ((v1-16 *particle-vel*)
+18 -18
View File
@@ -115,9 +115,9 @@
)
(.lvf vf4 (&-> v1-13 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf5 vf7 :mask #b111)
(.add.mul.w.vf vf6 vf4 vf0 acc :mask #b111)
(.add.x.vf.w vf6 vf0 vf0)
(.mul.x.vf.xyz acc vf5 vf7)
(.add.mul.w.vf.xyz vf6 vf4 vf0 acc)
(.svf (&-> a0-13 quad) vf6)
)
0
@@ -135,9 +135,9 @@
(.lvf vf5 (&-> a0-17 quad))
)
(.lvf vf4 (&-> s5-0 quad))
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf5 vf7 :mask #b111)
(.add.mul.w.vf vf6 vf4 vf0 acc :mask #b111)
(.add.x.vf.w vf6 vf0 vf0)
(.mul.x.vf.xyz acc vf5 vf7)
(.add.mul.w.vf.xyz vf6 vf4 vf0 acc)
(.svf (&-> a1-15 quad) vf6)
)
0
@@ -194,8 +194,8 @@
)
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.add.y.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.y.vf.x vf1 vf1 vf1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov a2-5 vf1)
(let ((f0-0 a2-5)
(f1-1 (+ (-> a1-2 world-sphere w) (-> this collide-bounds r)))
@@ -239,8 +239,8 @@
)
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.add.y.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.y.vf.x vf1 vf1 vf1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov a2-12 vf1)
(let ((f0-1 a2-12)
(f1-5 (+ (-> a1-14 world-sphere w) (-> this collide-bounds r)))
@@ -272,15 +272,15 @@
(.lvf vf1 (&-> this collide-bounds quad))
(.lvf vf2 (&-> a0-9 prim-core world-sphere quad))
(.sub.vf vf3 vf1 vf2)
(.add.w.vf vf4 vf1 vf2 :mask #b1000)
(.mul.vf vf3 vf3 vf3 :mask #b111)
(.mul.w.vf vf4 vf4 vf4 :mask #b1000)
(.mul.x.vf acc vf0 vf3 :mask #b1000)
(.add.mul.y.vf acc vf0 vf3 acc :mask #b1000)
(.add.mul.z.vf vf3 vf0 vf3 acc :mask #b1000)
(.sub.w.vf vf3 vf3 vf4 :mask #b1000)
(.add.w.vf.w vf4 vf1 vf2)
(.mul.vf.xyz vf3 vf3 vf3)
(.mul.w.vf.w vf4 vf4 vf4)
(.mul.x.vf.w acc vf0 vf3)
(.add.mul.y.vf.w acc vf0 vf3 acc)
(.add.mul.z.vf.w vf3 vf0 vf3 acc)
(.sub.w.vf.w vf3 vf3 vf4)
(let ((f0-2 0.0))
(.add.w.vf vf3 vf0 vf3 :mask #b1)
(.add.w.vf.x vf3 vf0 vf3)
(.mov a0-10 vf3)
(let ((s4-0 (-> v1-23 process)))
(b! (< f0-2 a0-10) cfg-27)
+3 -3
View File
@@ -52,10 +52,10 @@ Most functions take a boolean as their first argument. If the boolean is set to
(.add.mul.z.vf vf5 vf3 vf5 acc)
(.div.vf Q vf9 vf5 :fsf #b0 :ftf #b11)
(.wait.vf)
(.mul.vf vf5 vf5 Q :mask #b111)
(.mul.vf.xyz vf5 vf5 Q)
(.add.vf vf5 vf5 vf8)
(.max.x.vf vf5 vf5 vf0 :mask #b1000)
(.min.x.vf vf5 vf5 vf6 :mask #b1000)
(.max.x.vf.w vf5 vf5 vf0)
(.min.x.vf.w vf5 vf5 vf6)
(vftoi4.xyzw vf5 vf5)
(.svf (&-> out quad) vf5)
out
@@ -392,9 +392,9 @@
)
(.lvf vf4 (&-> v1-6 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf5 vf7 :mask #b111)
(.add.mul.w.vf vf6 vf4 vf0 acc :mask #b111)
(.add.x.vf.w vf6 vf0 vf0)
(.mul.x.vf.xyz acc vf5 vf7)
(.add.mul.w.vf.xyz vf6 vf4 vf0 acc)
(.svf (&-> a2-2 quad) vf6)
(t9-3 a0-8 (the-as bucket-id a1-4) a2-2 (-> gp-0 radius) *color-green*)
)
@@ -410,9 +410,9 @@
(.lvf vf5 (&-> s5-1 quad))
(.lvf vf4 (&-> v1-7 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf5 vf7 :mask #b111)
(.add.mul.w.vf vf6 vf4 vf0 acc :mask #b111)
(.add.x.vf.w vf6 vf0 vf0)
(.mul.x.vf.xyz acc vf5 vf7)
(.add.mul.w.vf.xyz vf6 vf4 vf0 acc)
(.svf (&-> a2-3 quad) vf6)
(t9-4 a0-9 (the-as bucket-id a1-5) a2-3 (-> gp-0 radius) *color-green*)
)
@@ -474,8 +474,8 @@
)
(.lvf vf4 (&-> a0-11 quad))
)
(.add.x.vf vf5 vf0 vf0 :mask #b1000)
(.add.x.vf vf5 vf4 vf6 :mask #b111)
(.add.x.vf.w vf5 vf0 vf0)
(.add.x.vf.xyz vf5 vf4 vf6)
(.svf (&-> a1-4 quad) vf5)
)
(let ((a1-5 (-> v1-21 1)))
@@ -485,8 +485,8 @@
)
(.lvf vf4 (&-> a0-12 quad))
)
(.add.x.vf vf5 vf0 vf0 :mask #b1000)
(.add.x.vf vf5 vf4 vf6 :mask #b111)
(.add.x.vf.w vf5 vf0 vf0)
(.add.x.vf.xyz vf5 vf4 vf6)
(.svf (&-> a1-5 quad) vf5)
)
(add-debug-box #t (bucket-id debug2) (-> v1-21 0) (-> v1-21 1) *color-yellow*)
@@ -633,9 +633,9 @@
)
(.lvf vf4 (&-> s4-2 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf5 vf7 :mask #b111)
(.add.mul.w.vf vf6 vf4 vf0 acc :mask #b111)
(.add.x.vf.w vf6 vf0 vf0)
(.mul.x.vf.xyz acc vf5 vf7)
(.add.mul.w.vf.xyz vf6 vf4 vf0 acc)
(.svf (&-> s0-0 quad) vf6)
)
(reverse-transform-point! s5-1 s2-0 s3-0 s1-0)
@@ -662,9 +662,9 @@
)
(.lvf vf4 (&-> v1-16 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf5 vf7 :mask #b111)
(.add.mul.w.vf vf6 vf4 vf0 acc :mask #b111)
(.add.x.vf.w vf6 vf0 vf0)
(.mul.x.vf.xyz acc vf5 vf7)
(.add.mul.w.vf.xyz vf6 vf4 vf0 acc)
(.svf (&-> a1-3 quad) vf6)
)
(vector+!
@@ -1048,8 +1048,8 @@
(.lvf vf4 (&-> v1-18 quad))
(.lvf vf5 (&-> a0-13 quad))
)
(.mov.vf vf6 vf0 :mask #b1000)
(.sub.vf vf6 vf4 vf5 :mask #b111)
(.mov.vf.w vf6 vf0)
(.sub.vf.xyz vf6 vf4 vf5)
(.svf (&-> sv-144 quad) vf6)
(let ((a3-3 (vector-normalize-copy! (new 'stack-no-clear 'vector) s2-0 1.0))
(t0-0 1024.0)
@@ -1106,8 +1106,8 @@
)
(.lvf vf4 (&-> a0-5 quad))
)
(.add.x.vf vf5 vf0 vf0 :mask #b1000)
(.add.x.vf vf5 vf4 vf6 :mask #b111)
(.add.x.vf.w vf5 vf0 vf0)
(.add.x.vf.xyz vf5 vf4 vf6)
(.svf (the-as (pointer uint128) (&-> a1-1 0)) vf5)
)
(let ((a1-2 (&+ v1-3 16)))
@@ -1117,8 +1117,8 @@
)
(.lvf vf4 (&-> a0-6 quad))
)
(.add.x.vf vf5 vf0 vf0 :mask #b1000)
(.add.x.vf vf5 vf4 vf6 :mask #b111)
(.add.x.vf.w vf5 vf0 vf0)
(.add.x.vf.xyz vf5 vf4 vf6)
(.svf (&-> a1-2 quad) vf5)
)
(add-debug-box #t (bucket-id debug2) (the-as vector (&-> v1-3 x)) (&+ v1-3 16) *color-green*)
@@ -2148,12 +2148,12 @@
(set! sv-160 s1-0)
(let ((v0-0 (vector-normalize! (vector-! (new 'stack-no-clear 'vector) (-> a1-3 position) (-> v1-27 position)) 1.0))
)
(.mov.vf vf6 vf0 :mask #b1000)
(.mov.vf.w vf6 vf0)
(.lvf vf4 (&-> sv-160 quad))
(.lvf vf5 (&-> v0-0 quad))
)
)
(.add.vf vf6 vf4 vf5 :mask #b111)
(.add.vf.xyz vf6 vf4 vf5)
(.svf (&-> sv-176 quad) vf6)
(set! sv-112 (+ sv-112 1))
sv-112
@@ -2166,12 +2166,12 @@
(set! sv-192 s0-0)
(let ((v0-1 (vector-normalize! (vector-! (new 'stack-no-clear 'vector) (-> a1-9 position) (-> v1-40 position)) 1.0))
)
(.mov.vf vf6 vf0 :mask #b1000)
(.mov.vf.w vf6 vf0)
(.lvf vf4 (&-> sv-192 quad))
(.lvf vf5 (&-> v0-1 quad))
)
)
(.add.vf vf6 vf4 vf5 :mask #b111)
(.add.vf.xyz vf6 vf4 vf5)
(.svf (&-> sv-208 quad) vf6)
(set! sv-96 (+ sv-96 1))
sv-96
+4 -4
View File
@@ -1166,15 +1166,15 @@
(.mul.w.vf acc vf27 vf0)
(.add.mul.x.vf acc vf24 vf15 acc)
(.add.mul.y.vf acc vf25 vf15 acc)
(.add.mul.z.vf vf15 vf26 vf15 acc :mask #b111)
(.add.mul.z.vf.xyz vf15 vf26 vf15 acc)
(.mul.vf vf28 vf15 vf15)
(.max.w.vf vf29 vf0 vf0)
(.add.y.vf acc vf28 vf28)
(.add.mul.z.vf vf28 vf29 vf28 acc :mask #b1)
(.add.mul.z.vf.x vf28 vf29 vf28 acc)
(.sqrt.vf Q vf28 :ftf #b0)
(.sub.w.vf vf28 vf0 vf15 :mask #b1000)
(.sub.w.vf.w vf28 vf0 vf15)
(.wait.vf)
(.add.vf vf15 vf28 Q :mask #b1000)
(.add.vf.w vf15 vf28 Q)
(.svf (&-> fg-dist quad) vf15)
;; pick lods
+3 -3
View File
@@ -329,9 +329,9 @@
(.lvf vf1 (&-> this color-dest quad))
(.lvf vf2 (&-> this color quad))
(.sub.vf vf3 vf1 vf2)
(.add.x.vf vf4 vf4 vf4 :mask #b10)
(.min.w.vf vf4 vf4 vf0 :mask #b10)
(.max.y.vf vf4 vf4 vf0 :mask #b10)
(.add.x.vf.y vf4 vf4 vf4)
(.min.w.vf.y vf4 vf4 vf0)
(.max.y.vf.y vf4 vf4 vf0)
(.mul.y.vf vf3 vf3 vf4)
(.add.vf vf1 vf2 vf3)
(.svf (&-> this extra quad) vf4)
+18 -18
View File
@@ -69,8 +69,8 @@ These boxes are used as a primitive in the foreground collision system.
(.add.vf vf5 vf4 vf3)
(.min.vf vf1 vf4 vf5)
(.max.vf vf2 vf4 vf5)
(.mov.vf vf1 vf0 :mask #b1000)
(.mov.vf vf2 vf0 :mask #b1000)
(.mov.vf.w vf1 vf0)
(.mov.vf.w vf2 vf0)
(.svf (&-> this min quad) vf1)
(.svf (&-> this max quad) vf2)
0
@@ -140,10 +140,10 @@ These boxes are used as a primitive in the foreground collision system.
(.add.vf vf6 vf5 vf4)
(.min.vf vf2 vf5 vf6)
(.max.vf vf3 vf5 vf6)
(.add.x.vf vf3 vf3 vf1 :mask #b111)
(.sub.x.vf vf2 vf2 vf1 :mask #b111)
(.mov.vf vf2 vf0 :mask #b1000)
(.mov.vf vf3 vf0 :mask #b1000)
(.add.x.vf.xyz vf3 vf3 vf1)
(.sub.x.vf.xyz vf2 vf2 vf1)
(.mov.vf.w vf2 vf0)
(.mov.vf.w vf3 vf0)
(.svf (&-> this min quad) vf2)
(.svf (&-> this max quad) vf3)
0
@@ -159,10 +159,10 @@ These boxes are used as a primitive in the foreground collision system.
)
(init-vf0-vector)
(.lvf vf1 (&-> arg0 quad))
(.sub.w.vf vf2 vf1 vf1 :mask #b111)
(.add.w.vf vf3 vf1 vf1 :mask #b111)
(.mov.vf vf2 vf0 :mask #b1000)
(.mov.vf vf3 vf0 :mask #b1000)
(.sub.w.vf.xyz vf2 vf1 vf1)
(.add.w.vf.xyz vf3 vf1 vf1)
(.mov.vf.w vf2 vf0)
(.mov.vf.w vf3 vf0)
(.svf (&-> this min quad) vf2)
(.svf (&-> this max quad) vf3)
0
@@ -194,10 +194,10 @@ These boxes are used as a primitive in the foreground collision system.
(dotimes (i count)
(.lvf sph (-> spheres i))
(.sub.w.vf sph-min sph sph :mask #b111)
(.add.w.vf sph-max sph sph :mask #b111)
(.min.vf current-min current-min sph-min :mask #b111)
(.max.vf current-max current-max sph-max :mask #b111)
(.sub.w.vf.xyz sph-min sph sph)
(.add.w.vf.xyz sph-max sph sph)
(.min.vf.xyz current-min current-min sph-min)
(.max.vf.xyz current-max current-max sph-max)
)
(.svf (-> this min) current-min)
@@ -224,16 +224,16 @@ These boxes are used as a primitive in the foreground collision system.
(dotimes (i count)
(.lvf sph (-> spheres i))
(.sub.w.vf sph-min sph sph :mask #b111)
(.add.w.vf sph-max sph sph :mask #b111)
(.sub.w.vf.xyz sph-min sph sph)
(.add.w.vf.xyz sph-max sph sph)
(cond
((zero? i)
(set! current-min sph-min)
(set! current-max sph-max)
)
(else
(.min.vf current-min current-min sph-min :mask #b111)
(.max.vf current-max current-max sph-max :mask #b111)
(.min.vf.xyz current-min current-min sph-min)
(.max.vf.xyz current-max current-max sph-max)
)
)
)
+12 -12
View File
@@ -84,8 +84,8 @@
(let ((v1-6 (-> s3-0 trans)))
(.lvf vf4 (&-> (-> this origin) quad))
(.lvf vf5 (&-> sv-896 quad 0))
(.mov.vf vf6 vf0 :mask #b1000)
(.sub.vf vf6 vf4 vf5 :mask #b111)
(.mov.vf.w vf6 vf0)
(.sub.vf.xyz vf6 vf4 vf5)
(.svf (&-> v1-6 quad) vf6)
)
(dotimes (v1-7 8)
@@ -103,9 +103,9 @@
(.mov vf3 v1-19)
)
)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.add.x.vf.w vf4 vf0 vf0)
(.mul.x.vf acc vf2 vf3)
(.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111)
(.add.mul.w.vf.xyz vf4 vf1 vf0 acc)
(.svf (&-> sv-944 quad) vf4)
(set! sv-992 (-> s5-0 vert s0-1))
(set! sv-960 (-> s5-0 vert s0-1))
@@ -117,9 +117,9 @@
(.mov vf3 v1-33)
)
)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.add.x.vf.w vf4 vf0 vf0)
(.mul.x.vf acc vf2 vf3)
(.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111)
(.add.mul.w.vf.xyz vf4 vf1 vf0 acc)
(.svf (&-> sv-992 quad) vf4)
(set! sv-1040 (-> s5-0 vert (+ s0-1 16)))
(set! sv-1008 (-> this origin))
@@ -131,9 +131,9 @@
(.mov vf3 v1-43)
)
)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.add.x.vf.w vf4 vf0 vf0)
(.mul.x.vf acc vf2 vf3)
(.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111)
(.add.mul.w.vf.xyz vf4 vf1 vf0 acc)
(.svf (&-> sv-1040 quad) vf4)
(set! sv-1088 (-> s5-0 vert (+ s0-1 16)))
(set! sv-1056 (-> s5-0 vert (+ s0-1 16)))
@@ -145,9 +145,9 @@
(.mov vf3 v1-57)
)
)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.add.x.vf.w vf4 vf0 vf0)
(.mul.x.vf acc vf2 vf3)
(.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111)
(.add.mul.w.vf.xyz vf4 vf1 vf0 acc)
(.svf (&-> sv-1088 quad) vf4)
)
(dotimes (s2-1 16)
@@ -253,8 +253,8 @@
(let ((v1-6 (-> s3-0 trans)))
(.lvf vf4 (&-> (-> this origin) quad))
(.lvf vf5 (&-> sv-448 quad))
(.mov.vf vf6 vf0 :mask #b1000)
(.sub.vf vf6 vf4 vf5 :mask #b111)
(.mov.vf.w vf6 vf0)
(.sub.vf.xyz vf6 vf4 vf5)
(.svf (&-> v1-6 quad) vf6)
)
(dotimes (v1-7 8)
+76 -76
View File
@@ -19,7 +19,7 @@
(init-vf0-vector)
(.lvf vf1 (&-> arg1 quad))
(.lvf vf2 (&-> arg2 quad))
(.mov.vf vf3 vf0 :mask #b1000)
(.mov.vf.w vf3 vf0)
(.outer.product.a.vf acc vf1 vf2)
(.outer.product.b.vf vf3 vf2 vf1 acc)
(.outer.product.a.vf acc vf2 vf3)
@@ -40,13 +40,13 @@
(init-vf0-vector)
(.lvf vf1 (&-> arg1 quad))
(.lvf vf2 (&-> arg2 quad))
(.mov.vf vf3 vf0 :mask #b1000)
(.mov.vf.w vf3 vf0)
(.outer.product.a.vf acc vf1 vf2)
(.outer.product.b.vf vf3 vf2 vf1 acc)
(.outer.product.a.vf acc vf2 vf3)
(.outer.product.b.vf vf3 vf3 vf2 acc)
(.add.vf acc vf3 vf3 :mask #b111)
(.sub.mul.w.vf vf3 vf1 vf0 acc :mask #b111)
(.add.vf.xyz acc vf3 vf3)
(.sub.mul.w.vf.xyz vf3 vf1 vf0 acc)
(.svf (&-> arg0 quad) vf3)
arg0
)
@@ -68,12 +68,12 @@
(init-vf0-vector)
(.lvf vf1 (&-> arg1 quad))
(.lvf vf2 (&-> arg2 quad))
(.mov.vf vf3 vf0 :mask #b1000)
(.mov.vf.w vf3 vf0)
(.outer.product.a.vf acc vf1 vf2)
(.outer.product.b.vf vf3 vf2 vf1 acc)
(.outer.product.a.vf acc vf2 vf3)
(.outer.product.b.vf vf3 vf3 vf2 acc)
(.add.vf vf3 vf3 vf2 :mask #b111)
(.add.vf.xyz vf3 vf3 vf2)
(.svf (&-> arg0 quad) vf3)
arg0
)
@@ -90,7 +90,7 @@
(init-vf0-vector)
(.lvf vf1 (&-> arg1 quad))
(.lvf vf2 (&-> arg2 quad))
(.mov.vf vf3 vf0 :mask #b1000)
(.mov.vf.w vf3 vf0)
(.outer.product.a.vf acc vf1 vf2)
(.outer.product.b.vf vf3 vf2 vf1 acc)
(.outer.product.a.vf acc vf2 vf3)
@@ -153,12 +153,12 @@
(.sub.vf vf1 vf4 vf3)
(.sub.vf vf6 vf5 vf3)
(.mul.vf vf2 vf1 vf1)
(.mul.x.vf acc vf0 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.z.vf.w vf2 vf0 vf2 acc)
(.sqrt.vf Q vf2 :ftf #b11)
(.wait.vf)
(.add.vf vf2 vf0 Q :mask #b1)
(.add.vf.x vf2 vf0 Q)
(.nop.vf)
(.nop.vf)
(.div.vf Q vf0 vf2 :fsf #b11 :ftf #b0)
@@ -168,8 +168,8 @@
(.mul.vf vf1 vf1 Q)
(.mul.vf vf7 vf1 vf6)
(let ((f1-0 (the-as float 0.0)))
(.add.y.vf vf7 vf7 vf7 :mask #b1)
(.add.z.vf vf7 vf7 vf7 :mask #b1)
(.add.y.vf.x vf7 vf7 vf7)
(.add.z.vf.x vf7 vf7 vf7)
(.mov v1-1 vf7)
(let ((f0-0 v1-1))
(b! (< f0-0 f1-0) cfg-4 :likely-delay (set! f0-0 f1-0))
@@ -182,18 +182,18 @@
)
)
(.mul.x.vf vf1 vf1 vf7)
(b! (= arg3 #f) cfg-6 :delay (.mov.vf vf8 vf0 :mask #b1000))
(.add.vf vf8 vf3 vf1 :mask #b111)
(b! (= arg3 #f) cfg-6 :delay (.mov.vf.w vf8 vf0))
(.add.vf.xyz vf8 vf3 vf1)
(.svf (&-> arg3 quad) vf8)
(label cfg-6)
(.sub.vf vf2 vf6 vf1)
(.mul.vf vf2 vf2 vf2)
(.mul.x.vf acc vf0 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.z.vf.w vf2 vf0 vf2 acc)
(.sqrt.vf Q vf2 :ftf #b11)
(.wait.vf)
(.add.vf vf2 vf0 Q :mask #b1)
(.add.vf.x vf2 vf0 Q)
(.nop.vf)
(.mov v0-0 vf2)
v0-0
@@ -284,27 +284,27 @@
(.lvf vf1 (&-> arg2 quad))
(.lvf vf6 (&-> arg1 quad))
(.add.vf vf5 vf1 vf1)
(.add.w.vf vf2 vf0 vf1 :mask #b1)
(.add.z.vf vf2 vf0 vf1 :mask #b10)
(.sub.y.vf vf2 vf0 vf1 :mask #b100)
(.sub.w.vf vf2 vf0 vf0 :mask #b1000)
(.sub.z.vf vf3 vf0 vf1 :mask #b1)
(.add.w.vf vf3 vf0 vf1 :mask #b10)
(.add.x.vf vf3 vf0 vf1 :mask #b100)
(.sub.w.vf vf3 vf0 vf0 :mask #b1000)
(.add.y.vf vf4 vf0 vf1 :mask #b1)
(.sub.x.vf vf4 vf0 vf1 :mask #b10)
(.add.w.vf vf4 vf0 vf1 :mask #b100)
(.sub.w.vf vf4 vf0 vf0 :mask #b1000)
(.add.w.vf.x vf2 vf0 vf1)
(.add.z.vf.y vf2 vf0 vf1)
(.sub.y.vf.z vf2 vf0 vf1)
(.sub.w.vf.w vf2 vf0 vf0)
(.sub.z.vf.x vf3 vf0 vf1)
(.add.w.vf.y vf3 vf0 vf1)
(.add.x.vf.z vf3 vf0 vf1)
(.sub.w.vf.w vf3 vf0 vf0)
(.add.y.vf.x vf4 vf0 vf1)
(.sub.x.vf.y vf4 vf0 vf1)
(.add.w.vf.z vf4 vf0 vf1)
(.sub.w.vf.w vf4 vf0 vf0)
(.outer.product.a.vf acc vf5 vf2)
(.outer.product.b.vf vf2 vf2 vf5 acc)
(.outer.product.a.vf acc vf5 vf3)
(.outer.product.b.vf vf3 vf3 vf5 acc)
(.outer.product.a.vf acc vf5 vf4)
(.outer.product.b.vf vf4 vf4 vf5 acc)
(.add.w.vf vf2 vf2 vf0 :mask #b1)
(.add.w.vf vf3 vf3 vf0 :mask #b10)
(.add.w.vf vf4 vf4 vf0 :mask #b100)
(.add.w.vf.x vf2 vf2 vf0)
(.add.w.vf.y vf3 vf3 vf0)
(.add.w.vf.z vf4 vf4 vf0)
(.mul.w.vf acc vf0 vf6)
(.add.mul.x.vf acc vf2 vf6 acc)
(.add.mul.y.vf acc vf3 vf6 acc)
@@ -332,29 +332,29 @@
(.xor.vf vf7 vf7 vf7)
(.lvf vf1 (&-> arg2 vec quad))
(.lvf vf6 (&-> arg1 quad))
(.sub.vf vf1 vf7 vf1 :mask #b111)
(.sub.vf.xyz vf1 vf7 vf1)
(.add.vf vf5 vf1 vf1)
(.add.w.vf vf2 vf0 vf1 :mask #b1)
(.add.z.vf vf2 vf0 vf1 :mask #b10)
(.sub.y.vf vf2 vf0 vf1 :mask #b100)
(.sub.w.vf vf2 vf0 vf0 :mask #b1000)
(.sub.z.vf vf3 vf0 vf1 :mask #b1)
(.add.w.vf vf3 vf0 vf1 :mask #b10)
(.add.x.vf vf3 vf0 vf1 :mask #b100)
(.sub.w.vf vf3 vf0 vf0 :mask #b1000)
(.add.y.vf vf4 vf0 vf1 :mask #b1)
(.sub.x.vf vf4 vf0 vf1 :mask #b10)
(.add.w.vf vf4 vf0 vf1 :mask #b100)
(.sub.w.vf vf4 vf0 vf0 :mask #b1000)
(.add.w.vf.x vf2 vf0 vf1)
(.add.z.vf.y vf2 vf0 vf1)
(.sub.y.vf.z vf2 vf0 vf1)
(.sub.w.vf.w vf2 vf0 vf0)
(.sub.z.vf.x vf3 vf0 vf1)
(.add.w.vf.y vf3 vf0 vf1)
(.add.x.vf.z vf3 vf0 vf1)
(.sub.w.vf.w vf3 vf0 vf0)
(.add.y.vf.x vf4 vf0 vf1)
(.sub.x.vf.y vf4 vf0 vf1)
(.add.w.vf.z vf4 vf0 vf1)
(.sub.w.vf.w vf4 vf0 vf0)
(.outer.product.a.vf acc vf5 vf2)
(.outer.product.b.vf vf2 vf2 vf5 acc)
(.outer.product.a.vf acc vf5 vf3)
(.outer.product.b.vf vf3 vf3 vf5 acc)
(.outer.product.a.vf acc vf5 vf4)
(.outer.product.b.vf vf4 vf4 vf5 acc)
(.add.w.vf vf2 vf2 vf0 :mask #b1)
(.add.w.vf vf3 vf3 vf0 :mask #b10)
(.add.w.vf vf4 vf4 vf0 :mask #b100)
(.add.w.vf.x vf2 vf2 vf0)
(.add.w.vf.y vf3 vf3 vf0)
(.add.w.vf.z vf4 vf4 vf0)
(.mul.w.vf acc vf0 vf6)
(.add.mul.x.vf acc vf2 vf6 acc)
(.add.mul.y.vf acc vf3 vf6 acc)
@@ -796,12 +796,12 @@
(.outer.product.a.vf acc vf2 vf1)
(.outer.product.b.vf vf4 vf1 vf2 acc)
(.mul.vf vf5 vf4 vf4)
(.add.y.vf vf5 vf5 vf5 :mask #b1)
(.add.z.vf vf5 vf5 vf5 :mask #b1)
(.add.y.vf.x vf5 vf5 vf5)
(.add.z.vf.x vf5 vf5 vf5)
(.isqrt.vf Q vf0 vf5 :fsf #b11 :ftf #b0)
(.mov.vf vf4 vf0 :mask #b1000)
(.mov.vf.w vf4 vf0)
(.wait.vf)
(.mul.vf vf4 vf4 Q :mask #b111)
(.mul.vf.xyz vf4 vf4 Q)
(.nop.vf)
(.nop.vf)
(.svf (&-> arg0 quad) vf4)
@@ -822,7 +822,7 @@
(.lvf vf1 (&-> arg1 quad))
(.lvf vf2 (&-> arg2 quad))
(.lvf vf3 (&-> arg3 quad))
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.add.x.vf.w vf4 vf0 vf0)
(.sub.vf vf2 vf2 vf1)
(.sub.vf vf3 vf3 vf1)
(.outer.product.a.vf acc vf2 vf3)
@@ -891,13 +891,13 @@
(.outer.product.a.vf acc vf9 vf10)
(.outer.product.b.vf vf16 vf10 vf9 acc)
(.mul.vf vf12 vf15 vf1)
(.add.x.vf vf11 vf11 vf11 :mask #b10)
(.add.x.vf.y vf11 vf11 vf11)
(.mul.vf vf13 vf16 vf1)
(.add.x.vf vf12 vf12 vf12 :mask #b10)
(.add.x.vf vf13 vf13 vf13 :mask #b10)
(.add.z.vf vf11 vf11 vf11 :mask #b10)
(.add.z.vf vf12 vf12 vf12 :mask #b10)
(.add.z.vf vf13 vf13 vf13 :mask #b10)
(.add.x.vf.y vf12 vf12 vf12)
(.add.x.vf.y vf13 vf13 vf13)
(.add.z.vf.y vf11 vf11 vf11)
(.add.z.vf.y vf12 vf12 vf12)
(.add.z.vf.y vf13 vf13 vf13)
;; og:preserve-this these types were changed to uint to make this copy 64 bits.
(.mov v1-0 vf11)
(.mov a1-1 vf12)
@@ -912,12 +912,12 @@
(b! (nonzero? v1-3) cfg-3 :delay (set! v1-4 (the-as uint (+ v1-3 -1))))
)
(.sub.vf vf17 vf5 vf2)
(.mov.vf vf18 vf0 :mask #b1000)
(.mov.vf.w vf18 vf0)
(.outer.product.a.vf acc vf17 vf1)
(.outer.product.b.vf vf18 vf1 vf17 acc)
(.outer.product.a.vf acc vf1 vf18)
(.outer.product.b.vf vf18 vf18 vf1 acc)
(.add.vf vf18 vf18 vf2 :mask #b111)
(.add.vf.xyz vf18 vf18 vf2)
(b! #t cfg-24 :delay (.svf (&-> arg0 quad) vf18))
(nop!)
(label cfg-3)
@@ -1002,13 +1002,13 @@
(.mul.vf vf3 vf3 vf1)
(.nop.vf)
(.mul.vf vf4 vf4 vf1)
(.add.x.vf vf2 vf2 vf2 :mask #b10)
(.add.x.vf vf3 vf3 vf3 :mask #b10)
(.add.x.vf vf4 vf4 vf4 :mask #b10)
(.add.x.vf.y vf2 vf2 vf2)
(.add.x.vf.y vf3 vf3 vf3)
(.add.x.vf.y vf4 vf4 vf4)
(.nop.vf)
(.add.z.vf vf2 vf2 vf2 :mask #b10)
(.add.z.vf vf3 vf3 vf3 :mask #b10)
(.add.z.vf vf4 vf4 vf4 :mask #b10)
(.add.z.vf.y vf2 vf2 vf2)
(.add.z.vf.y vf3 vf3 vf3)
(.add.z.vf.y vf4 vf4 vf4)
(.nop.vf)
(.mov a0-1 vf2)
(.mov a1-1 vf3)
@@ -1099,11 +1099,11 @@
(.sub.vf vf5 vf4 vf3)
(.mul.x.vf vf1 vf1 vf2)
(.mul.x.vf vf5 vf5 vf2)
(.mul.vf vf5 vf5 vf5 :mask #b101)
(.add.z.vf vf5 vf5 vf5 :mask #b1)
(.mul.vf.xz vf5 vf5 vf5)
(.add.z.vf.x vf5 vf5 vf5)
(.sqrt.vf Q vf5 :ftf #b0)
(.wait.vf)
(.mul.vf vf1 vf0 Q :mask #b1000)
(.mul.vf.w vf1 vf0 Q)
(.nop.vf)
(.nop.vf)
(.svf (&-> a1-2 quad) vf1)
@@ -1350,7 +1350,7 @@
;; evaluate polynomial!
;;(.sll v1-8 v1-7 4)
(set! v1-8 (* v1-7 16))
(.add.x.vf vf1 vf0 vf0 :mask #b1000)
(.add.x.vf.w vf1 vf0 vf0)
(let ((v1-9 (+ v1-8 (the-as int arg2))))
(nop!)
(nop!)
@@ -1364,11 +1364,11 @@
)
(.mul.x.vf acc vf2 vf6)
(nop!)
(.add.mul.y.vf acc vf3 vf6 acc :mask #b111)
(.add.mul.y.vf.xyz acc vf3 vf6 acc)
(nop!)
(.add.mul.z.vf acc vf4 vf6 acc :mask #b111)
(.add.mul.z.vf.xyz acc vf4 vf6 acc)
(nop!)
(.add.mul.w.vf vf1 vf5 vf6 acc :mask #b111)
(.add.mul.w.vf.xyz vf1 vf5 vf6 acc)
(nop!)
(nop!)
(nop!)
+2 -2
View File
@@ -268,8 +268,8 @@ this is done by a linked list of "bone calculations", which is stashed in the dm
;; dot nmat0 and tmat0
(.mul.vf acc nmat0 tmat0)
(.add.y.vf acc acc acc :mask #b1)
(.add.z.vf acc acc acc :mask #b1)
(.add.y.vf.x acc acc acc)
(.add.z.vf.x acc acc acc)
;; divide!
(.div.vf acc vf0 acc :fsf #b11 :ftf #b0)
@@ -444,13 +444,13 @@
(set! (-> arg0 direction 2 quad) (the-as uint128 a2-2))
)
)
(.min.x.vf vf4 vf0 vf0 :mask #b1000)
(.min.x.vf.w vf4 vf0 vf0)
(nop!)
(.min.x.vf vf5 vf0 vf0 :mask #b1000)
(.min.x.vf.w vf5 vf0 vf0)
(nop!)
(.min.x.vf vf6 vf0 vf0 :mask #b1000)
(.min.x.vf.w vf6 vf0 vf0)
(nop!)
(.max.w.vf vf7 vf0 vf0 :mask #b1000)
(.max.w.vf.w vf7 vf0 vf0)
(nop!)
(nop!)
(.svf (&-> arg0 color 0 quad) vf4)
@@ -178,8 +178,8 @@
(.lvf vf4 (&-> v1-5 quad))
(.lvf vf5 (&-> a0-3 quad))
)
(.mov.vf vf6 vf0 :mask #b1000)
(.sub.vf vf6 vf4 vf5 :mask #b111)
(.mov.vf.w vf6 vf0)
(.sub.vf.xyz vf6 vf4 vf5)
(.svf (&-> sv-96 quad) vf6)
(set! sv-112 (new 'stack-no-clear 'vector))
(let ((v1-9 (-> arg0 arg3))
@@ -188,8 +188,8 @@
(.lvf vf4 (&-> v1-9 quad))
(.lvf vf5 (&-> a0-5 quad))
)
(.mov.vf vf6 vf0 :mask #b1000)
(.sub.vf vf6 vf4 vf5 :mask #b111)
(.mov.vf.w vf6 vf0)
(.sub.vf.xyz vf6 vf4 vf5)
(.svf (&-> sv-112 quad) vf6)
(set! sv-144 (new 'stack-no-clear 'vector))
(set! sv-128 (new 'stack-no-clear 'vector))
@@ -219,29 +219,29 @@
(let ((v1-31 sv-128)
(a0-15 sv-128)
)
(.mov.vf vf6 vf0 :mask #b1000)
(.mov.vf.w vf6 vf0)
(.lvf vf4 (&-> sv-96 quad))
(.lvf vf5 (&-> sv-112 quad))
(.add.vf vf6 vf4 vf5 :mask #b111)
(.add.vf.xyz vf6 vf4 vf5)
(.svf (&-> a0-15 quad) vf6)
(vector-float*! v1-31 a0-15 0.5)
)
(let ((v1-33 sv-144))
(let ((a0-16 sv-144))
(.mov.vf vf6 vf0 :mask #b1000)
(.mov.vf.w vf6 vf0)
(.lvf vf4 (&-> a0-16 quad))
)
(.lvf vf5 (&-> sv-128 quad))
(.add.vf vf6 vf4 vf5 :mask #b111)
(.add.vf.xyz vf6 vf4 vf5)
(.svf (&-> v1-33 quad) vf6)
)
(let ((v1-35 (-> arg0 s0-0)))
(let ((a0-19 (-> arg1 s0-0)))
(.mov.vf vf6 vf0 :mask #b1000)
(.mov.vf.w vf6 vf0)
(.lvf vf4 (&-> a0-19 quad))
)
(.lvf vf5 (&-> sv-144 quad))
(.add.vf vf6 vf4 vf5 :mask #b111)
(.add.vf.xyz vf6 vf4 vf5)
(.svf (&-> v1-35 quad) vf6)
)
(lightning-trail-fractal-gen arg0 arg1 arg2 s0-0 (* arg4 (-> arg5 reduction)) arg5)
@@ -638,22 +638,22 @@
(let ((a2-45 f1-4))
(.mov vf17 a2-45)
)
(.add.x.vf vf17 vf0 vf8 :mask #b10)
(.add.w.vf vf17 vf0 vf0 :mask #b100)
(.add.w.vf vf17 vf17 vf0 :mask #b100)
(.add.x.vf.y vf17 vf0 vf8)
(.add.w.vf.z vf17 vf0 vf0)
(.add.w.vf.z vf17 vf17 vf0)
(dotimes (a2-46 s3-0)
(.lvf vf8 (&-> (the-as (inline-array vector) v1-73) 0 quad))
(.mul.w.vf acc vf4 vf0 :mask #b111)
(.add.mul.x.vf acc vf1 vf8 acc :mask #b111)
(.add.mul.y.vf acc vf2 vf8 acc :mask #b111)
(.add.mul.z.vf vf8 vf3 vf8 acc :mask #b111)
(.mul.w.vf.xyz acc vf4 vf0)
(.add.mul.x.vf.xyz acc vf1 vf8 acc)
(.add.mul.y.vf.xyz acc vf2 vf8 acc)
(.add.mul.z.vf.xyz vf8 vf3 vf8 acc)
(.add.x.vf vf6 vf8 vf0)
(b! (zero? sv-64) cfg-44 :delay (.add.x.vf vf7 vf8 vf0))
(.add.y.vf vf6 vf6 vf17 :mask #b10)
(b! #t cfg-45 :delay (.sub.y.vf vf7 vf7 vf17 :mask #b10))
(.add.y.vf.y vf6 vf6 vf17)
(b! #t cfg-45 :delay (.sub.y.vf.y vf7 vf7 vf17))
(label cfg-44)
(.add.y.vf vf6 vf6 vf17 :mask #b1)
(.sub.y.vf vf7 vf7 vf17 :mask #b1)
(.add.y.vf.x vf6 vf6 vf17)
(.sub.y.vf.x vf7 vf7 vf17)
(label cfg-45)
(.svf (&-> (the-as (pointer uint128) a1-82) 2) vf6)
(.svf (&-> (the-as (pointer uint128) a0-71) 2) vf7)
+6 -6
View File
@@ -437,10 +437,10 @@ renderers that want a single matrix.
(.div.vf Q vf0 vf31 :fsf #b11 :ftf #b11)
(.wait.vf)
;;(.cfc2.i v1-7 Clipping)
(.mul.vf vf28 vf28 Q :mask #b111)
(.mul.vf.xyz vf28 vf28 Q)
(.mul.vf vf23 vf23 Q)
(.add.vf vf28 vf28 vf30)
(.max.x.vf vf28 vf28 vf0 :mask #b1000)
(.max.x.vf.w vf28 vf28 vf0)
(.svf (&-> arg0 quad) vf28)
(not (logtest? clip 63))
)
@@ -504,13 +504,13 @@ renderers that want a single matrix.
(.wait.vf)
;;(.cfc2.i v1-7 Clipping)
;; perspective
(.mul.vf vf28 vf28 Q :mask #b111)
(.mul.vf.xyz vf28 vf28 Q)
;; compute scale factor (w was 1.0)
(.mul.vf vf23 vf23 Q)
;; apply hvdf offsets
(.add.vf vf28 vf28 vf30)
;; saturate fog
(.max.x.vf vf28 vf28 vf0 :mask #b1000)
(.max.x.vf.w vf28 vf28 vf0)
;; convert to GS fixed point
(vftoi4.xyzw vf28 vf28)
;; store result!
@@ -558,10 +558,10 @@ renderers that want a single matrix.
(.div.vf Q vf0 vf31 :fsf #b11 :ftf #b11)
(.wait.vf)
;;(.cfc2.i v1-7 Clipping)
(.mul.vf vf28 vf28 Q :mask #b111)
(.mul.vf.xyz vf28 vf28 Q)
(.mul.vf vf23 vf23 Q)
(.add.vf vf28 vf28 vf30)
(.max.x.vf vf28 vf28 vf0 :mask #b1000)
(.max.x.vf.w vf28 vf28 vf0)
(.svf (&-> arg0 quad) vf28)
;;(let ((a0-2 (zero? (logand v1-7 63))))
;; )
+2 -2
View File
@@ -1932,8 +1932,8 @@
(let ((v1-10 s0-0))
(.lvf vf4 (&-> v0-1 quad))
(.lvf vf5 (&-> sv-80 quad))
(.mov.vf vf6 vf0 :mask #b1000)
(.sub.vf vf6 vf4 vf5 :mask #b111)
(.mov.vf.w vf6 vf0)
(.sub.vf.xyz vf6 vf4 vf5)
(.svf (&-> v1-10 quad) vf6)
)
(vector-normalize! s0-0 1.0)
+8 -8
View File
@@ -71,21 +71,21 @@
(.lvf vf1 (&-> arg0 times 0 quad))
(nop!)
(.lvf vf2 (&-> arg0 times 1 quad))
(.mul.w.vf vf1 vf1 vf1 :mask #b111)
(.mul.w.vf.xyz vf1 vf1 vf1)
(.lvf vf3 (&-> arg0 times 2 quad))
(.mul.w.vf vf2 vf2 vf2 :mask #b111)
(.mul.w.vf.xyz vf2 vf2 vf2)
(.lvf vf4 (&-> arg0 times 3 quad))
(.mul.w.vf vf3 vf3 vf3 :mask #b111)
(.mul.w.vf.xyz vf3 vf3 vf3)
(.lvf vf5 (&-> arg0 times 4 quad))
(.mul.w.vf vf4 vf4 vf4 :mask #b111)
(.mul.w.vf.xyz vf4 vf4 vf4)
(.lvf vf6 (&-> arg0 times 5 quad))
(.mul.w.vf vf5 vf5 vf5 :mask #b111)
(.mul.w.vf.xyz vf5 vf5 vf5)
(.lvf vf7 (&-> arg0 times 6 quad))
(.mul.w.vf vf6 vf6 vf6 :mask #b111)
(.mul.w.vf.xyz vf6 vf6 vf6)
(.lvf vf8 (&-> arg0 times 7 quad))
(.mul.w.vf vf7 vf7 vf7 :mask #b111)
(.mul.w.vf.xyz vf7 vf7 vf7)
(nop!)
(.mul.w.vf vf8 vf8 vf8 :mask #b111)
(.mul.w.vf.xyz vf8 vf8 vf8)
(nop!)
(vftoi12.xyzw vf1 vf1)
(nop!)
@@ -521,14 +521,14 @@
((< (-> gp-0 w) 0.0)
(.lvf vf1 (&-> arg2 qx-qy-qz-sy quad))
(.lvf vf2 (&-> gp-0 quad))
(.sub.vf vf1 vf0 vf2 :mask #b111)
(.sub.vf.xyz vf1 vf0 vf2)
(.svf (&-> arg2 qx-qy-qz-sy quad) vf1)
(.mov v1-6 vf1)
)
(else
(.lvf vf1 (&-> arg2 qx-qy-qz-sy quad))
(.lvf vf2 (&-> gp-0 quad))
(.add.vf vf1 vf0 vf2 :mask #b111)
(.add.vf.xyz vf1 vf0 vf2)
(.svf (&-> arg2 qx-qy-qz-sy quad) vf1)
(.mov v1-7 vf1)
)
+8 -8
View File
@@ -448,8 +448,8 @@
)
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.add.y.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.y.vf.x vf1 vf1 vf1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov t0-3 vf1)
(when (< t0-3 309237600000.0)
(logior! (-> (the-as (pointer uint8) (+ arg2 (the-as int arg0)))) (ash 1 arg1))
@@ -464,8 +464,8 @@
)
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.add.y.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.y.vf.x vf1 vf1 vf1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov t0-8 vf1)
(when (< t0-8 309237600000.0)
(logior! (-> (the-as (pointer uint8) (+ arg2 (the-as int arg0)))) (ash 1 arg1))
@@ -480,8 +480,8 @@
)
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.add.y.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.y.vf.x vf1 vf1 vf1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov t0-13 vf1)
(when (< t0-13 309237600000.0)
(logior! (-> (the-as (pointer uint8) (+ arg2 (the-as int arg0)))) (ash 1 arg1))
@@ -493,8 +493,8 @@
)
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.add.y.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.y.vf.x vf1 vf1 vf1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov v1-10 vf1)
(when (< v1-10 309237600000.0)
(logior! (-> (the-as (pointer uint8) (+ arg2 (the-as int arg0)))) (ash 1 arg1))
@@ -427,8 +427,8 @@
)
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.add.y.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.y.vf.x vf1 vf1 vf1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov t0-3 vf1)
(when (< t0-3 19327350000.0)
(logior! (-> arg0 mask arg2) (ash 1 arg1))
@@ -443,8 +443,8 @@
)
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.add.y.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.y.vf.x vf1 vf1 vf1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov t0-8 vf1)
(when (< t0-8 19327350000.0)
(logior! (-> arg0 mask arg2) (ash 1 arg1))
@@ -459,8 +459,8 @@
)
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.add.y.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.y.vf.x vf1 vf1 vf1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov t0-13 vf1)
(when (< t0-13 19327350000.0)
(logior! (-> arg0 mask arg2) (ash 1 arg1))
@@ -472,8 +472,8 @@
)
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.add.y.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.y.vf.x vf1 vf1 vf1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov v1-13 vf1)
(when (< v1-13 19327350000.0)
(logior! (-> arg0 mask arg2) (ash 1 arg1))
+2 -2
View File
@@ -200,7 +200,7 @@ vf31: cam 0 (premultiplied by hmge)
; (.mul.vf vf30 vf30 vf14)
; (.mul.vf vf29 vf29 vf14)
; (.mul.vf vf28 vf28 vf14)
; (.mov.vf vf25 vf0 :mask #b100)
; (.mov.vf.z vf25 vf0)
; (.mov.vf vf24 vf0)
; (.mov.vf vf23 vf0)
; (.mov v1-1 vf23)
@@ -247,7 +247,7 @@ vf31: cam 0 (premultiplied by hmge)
; (.lvf vf14 (&-> a1-0 hmge-scale quad))
; (.lvf vf25 (&-> a1-0 hvdf-off quad))
; (.lvf vf13 (&-> this fog quad))
; (.mov.vf vf25 vf0 :mask #b100)
; (.mov.vf.z vf25 vf0)
; (.mov.vf vf23 vf0)
; (let ((v1-1 (new-stack-vector0)))
; (set! (-> v1-1 w) (fmin 1.0 (/ 11650.845 (-> a1-0 fov))))
@@ -403,14 +403,14 @@
((< (-> s5-0 w) 0.0)
(.lvf vf1 (&-> arg0 conerot quad))
(.lvf vf2 (&-> s5-0 quad))
(.sub.vf vf1 vf0 vf2 :mask #b111)
(.sub.vf.xyz vf1 vf0 vf2)
(.svf (&-> arg0 conerot quad) vf1)
(.mov v1-1 vf1)
)
(else
(.lvf vf1 (&-> arg0 conerot quad))
(.lvf vf2 (&-> s5-0 quad))
(.add.vf vf1 vf0 vf2 :mask #b111)
(.add.vf.xyz vf1 vf0 vf2)
(.svf (&-> arg0 conerot quad) vf1)
(.mov v1-2 vf1)
)
@@ -525,8 +525,8 @@
(set! (-> s5-0 vector 1 z) (the float (sar (shl (the int (-> s5-0 vector 1 z)) 48) 48)))
(.lvf vf4 (&-> s5-0 quad 2))
(.lvf vf5 (&-> s5-0 quad 0))
(.min.x.vf vf4 vf4 vf31 :mask #b111)
(.add.vf vf5 vf5 vf30 :mask #b111)
(.min.x.vf.xyz vf4 vf4 vf31)
(.add.vf.xyz vf5 vf5 vf30)
(.svf (&-> s5-0 quad 2) vf4)
(.svf (&-> s5-0 quad 0) vf5)
(when (not *death-adgif*)
@@ -553,8 +553,8 @@
(.lvf vf4 (&-> (-> *time-of-day-context* current-prt-color) quad))
(.lvf vf5 (&-> s5-0 quad 2))
(.lvf vf6 (&-> gp-0 fade quad))
(.mul.vf vf5 vf5 vf4 :mask #b111)
(.mul.vf vf6 vf6 vf4 :mask #b111)
(.mul.vf.xyz vf5 vf5 vf4)
(.mul.vf.xyz vf6 vf6 vf4)
(.svf (&-> s5-0 quad 2) vf5)
(.svf (&-> gp-0 fade quad) vf6)
(.mov v1-26 vf6)
@@ -566,7 +566,7 @@
(.lvf vf3 (&-> s5-0 quad 2))
(.svf (&-> v1-27 x-y-z-sx quad) vf1)
(.svf (&-> v1-27 flag-rot-sy quad) vf2)
(.sub.w.vf vf3 vf0 vf0 :mask #b1000)
(.sub.w.vf.w vf3 vf0 vf0)
(.svf (&-> v1-27 r-g-b-a quad) vf3)
)
(.mov v1-28 vf3)
@@ -740,14 +740,14 @@
((< (-> s3-0 w) 0.0)
(.lvf vf1 (&-> arg3 qx-qy-qz-sy quad))
(.lvf vf2 (&-> s3-0 vec quad))
(.sub.vf vf1 vf0 vf2 :mask #b111)
(.sub.vf.xyz vf1 vf0 vf2)
(.svf (&-> arg3 qx-qy-qz-sy quad) vf1)
(.mov v1-9 vf1)
)
(else
(.lvf vf1 (&-> arg3 qx-qy-qz-sy quad))
(.lvf vf2 (&-> s3-0 vec quad))
(.add.vf vf1 vf0 vf2 :mask #b111)
(.add.vf.xyz vf1 vf0 vf2)
(.svf (&-> arg3 qx-qy-qz-sy quad) vf1)
(.mov v1-10 vf1)
)
@@ -1364,14 +1364,14 @@
((< (-> gp-0 w) 0.0)
(.lvf vf1 (&-> arg2 qx-qy-qz-sy quad))
(.lvf vf2 (&-> gp-0 quad))
(.sub.vf vf1 vf0 vf2 :mask #b111)
(.sub.vf.xyz vf1 vf0 vf2)
(.svf (&-> arg2 qx-qy-qz-sy quad) vf1)
(.mov v1-1 vf1)
)
(else
(.lvf vf1 (&-> arg2 qx-qy-qz-sy quad))
(.lvf vf2 (&-> gp-0 quad))
(.add.vf vf1 vf0 vf2 :mask #b111)
(.add.vf.xyz vf1 vf0 vf2)
(.svf (&-> arg2 qx-qy-qz-sy quad) vf1)
(.mov v1-2 vf1)
)
@@ -1412,14 +1412,14 @@
((< (-> s4-0 w) 0.0)
(.lvf vf1 (&-> v1-4 qx-qy-qz-sy quad))
(.lvf vf2 (&-> s4-0 quad))
(.sub.vf vf1 vf0 vf2 :mask #b111)
(.sub.vf.xyz vf1 vf0 vf2)
(.svf (&-> v1-4 qx-qy-qz-sy quad) vf1)
(.mov v1-5 vf1)
)
(else
(.lvf vf1 (&-> v1-4 qx-qy-qz-sy quad))
(.lvf vf2 (&-> s4-0 quad))
(.add.vf vf1 vf0 vf2 :mask #b111)
(.add.vf.xyz vf1 vf0 vf2)
(.svf (&-> v1-4 qx-qy-qz-sy quad) vf1)
(.mov v1-6 vf1)
)
@@ -1475,14 +1475,14 @@
((< (-> s4-0 w) 0.0)
(.lvf vf1 (&-> v1-17 qx-qy-qz-sy quad))
(.lvf vf2 (&-> s4-0 quad))
(.sub.vf vf1 vf0 vf2 :mask #b111)
(.sub.vf.xyz vf1 vf0 vf2)
(.svf (&-> v1-17 qx-qy-qz-sy quad) vf1)
(.mov v1-18 vf1)
)
(else
(.lvf vf1 (&-> v1-17 qx-qy-qz-sy quad))
(.lvf vf2 (&-> s4-0 quad))
(.add.vf vf1 vf0 vf2 :mask #b111)
(.add.vf.xyz vf1 vf0 vf2)
(.svf (&-> v1-17 qx-qy-qz-sy quad) vf1)
(.mov v1-19 vf1)
)
@@ -1889,14 +1889,14 @@
((< (-> s5-1 w) 0.0)
(.lvf vf1 (&-> arg2 conerot quad))
(.lvf vf2 (&-> s5-1 quad))
(.sub.vf vf1 vf0 vf2 :mask #b111)
(.sub.vf.xyz vf1 vf0 vf2)
(.svf (&-> arg2 conerot quad) vf1)
(.mov v1-0 vf1)
)
(else
(.lvf vf1 (&-> arg2 conerot quad))
(.lvf vf2 (&-> s5-1 quad))
(.add.vf vf1 vf0 vf2 :mask #b111)
(.add.vf.xyz vf1 vf0 vf2)
(.svf (&-> arg2 conerot quad) vf1)
(.mov v1-1 vf1)
)
@@ -1923,14 +1923,14 @@
((< (-> v1-0 w) 0.0)
(.lvf vf1 (&-> a0-1 conerot quad))
(.lvf vf2 (&-> v1-0 quad))
(.sub.vf vf1 vf0 vf2 :mask #b111)
(.sub.vf.xyz vf1 vf0 vf2)
(.svf (&-> a0-1 conerot quad) vf1)
(.mov a0-2 vf1)
)
(else
(.lvf vf1 (&-> a0-1 conerot quad))
(.lvf vf2 (&-> v1-0 quad))
(.add.vf vf1 vf0 vf2 :mask #b111)
(.add.vf.xyz vf1 vf0 vf2)
(.svf (&-> a0-1 conerot quad) vf1)
(.mov a0-3 vf1)
)
@@ -262,12 +262,12 @@ across the screen. The resolution of the circle is defined by the number of "tur
;;(TODO.VCLIP vf10 vf10)
(b! (zero? (-> sprite flag-rot-sy x)) cfg-22 :delay (nop!))
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b111)
(.mul.vf vf2 vf2 Q :mask #b111)
(.mul.vf.xyz vf1 vf1 Q)
(.mul.vf.xyz vf2 vf2 Q)
;;(.cfc2.i clip-result Clipping)
(set! clip-result (vu-clip vf10 0)) ;; safe to just drop the higher bits.
(b! (logtest? clip-result 63) cfg-22 :delay (.add.vf vf1 vf1 vf9))
(.max.x.vf vf1 vf1 vf0 :mask #b1000)
(.max.x.vf.w vf1 vf1 vf0)
(.svf (&-> (the-as vector dma-position) quad) vf1)
(.svf (&-> (the-as vector dma-color) quad) vf2)
(set! (-> (the-as vector dma-position) w) 255.0)
+2 -2
View File
@@ -452,14 +452,14 @@ the sprite renderer draw 2D or 3D sprites
((< (-> quat w) 0.0)
(.lvf vf1 (&-> sprite qx-qy-qz-sy quad))
(.lvf vf2 (&-> quat quad))
(.sub.vf vf1 vf0 vf2 :mask #b111)
(.sub.vf.xyz vf1 vf0 vf2)
(.svf (&-> sprite qx-qy-qz-sy quad) vf1)
(.mov v1-0 vf1)
)
(else
(.lvf vf1 (&-> sprite qx-qy-qz-sy quad))
(.lvf vf2 (&-> quat quad))
(.add.vf vf1 vf0 vf2 :mask #b111)
(.add.vf.xyz vf1 vf0 vf2)
(.svf (&-> sprite qx-qy-qz-sy quad) vf1)
(.mov v1-1 vf1)
)
@@ -389,14 +389,14 @@
(.add.mul.y.vf acc vf16 vf10 acc)
(.add.mul.w.vf vf10 vf18 vf0 acc)
(vftoi4.xyzw vf6 vf6)
(.add.x.vf vf7 vf0 vf19 :mask #b100)
(.add.y.vf vf8 vf0 vf19 :mask #b100)
(.add.z.vf vf9 vf0 vf19 :mask #b100)
(.add.w.vf vf10 vf0 vf19 :mask #b100)
(.mul.z.vf vf7 vf7 vf7 :mask #b11)
(.mul.z.vf vf8 vf8 vf8 :mask #b11)
(.mul.z.vf vf9 vf9 vf9 :mask #b11)
(.mul.z.vf vf10 vf10 vf10 :mask #b11)
(.add.x.vf.z vf7 vf0 vf19)
(.add.y.vf.z vf8 vf0 vf19)
(.add.z.vf.z vf9 vf0 vf19)
(.add.w.vf.z vf10 vf0 vf19)
(.mul.z.vf.xy vf7 vf7 vf7)
(.mul.z.vf.xy vf8 vf8 vf8)
(.mul.z.vf.xy vf9 vf9 vf9)
(.mul.z.vf.xy vf10 vf10 vf10)
(.svf (&-> s4-0 3) vf7)
(.svf (&-> s4-0 4) vf3)
(.svf (&-> s4-0 5) vf8)
+4 -4
View File
@@ -401,16 +401,16 @@ The "bsp-tree" is a bsp used to associate camera positions with lists of visibib
;; apply scaling and offset.
(.lvf vf1 (&-> arg1 quad))
(.lvf vf2 (&-> arg0 bsp-offset quad))
(.sub.vf vf1 vf1 vf2 :mask #b111)
(.sub.vf.xyz vf1 vf1 vf2)
(.div.vf Q vf0 vf3 :fsf #b11 :ftf #b0)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b1)
(.mul.vf.x vf1 vf1 Q)
(.div.vf Q vf0 vf3 :fsf #b11 :ftf #b1)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b10)
(.mul.vf.y vf1 vf1 Q)
(.div.vf Q vf0 vf3 :fsf #b11 :ftf #b10)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b100)
(.mul.vf.z vf1 vf1 Q)
(let ((a1-1 #xffffff)
(nidx (the-as uint 0))
)
+82 -82
View File
@@ -297,15 +297,15 @@ allowed to be the same memory.
(.lvf vf1 (&-> arg0 quad 0))
(.lvf vf2 (&-> arg0 quad 1))
(.lvf vf3 (&-> arg0 quad 2))
(.sub.vf vf1 vf1 vf1 :mask #b1000)
(.sub.vf vf2 vf2 vf2 :mask #b1000)
(.sub.vf vf3 vf3 vf3 :mask #b1000)
(.sub.vf.w vf1 vf1 vf1)
(.sub.vf.w vf2 vf2 vf2)
(.sub.vf.w vf3 vf3 vf3)
(.lvf vf8 (&-> arg1 trans quad))
(.mul.x.vf acc vf1 vf8)
(.add.mul.y.vf acc vf2 vf8 acc)
(.add.mul.z.vf vf4 vf3 vf8 acc)
(.sub.vf vf4 vf0 vf4)
(.mov.vf vf4 vf0 :mask #b1000)
(.mov.vf.w vf4 vf0)
(.svf (&-> arg0 quad 0) vf1)
(.svf (&-> arg0 quad 1) vf2)
(.svf (&-> arg0 quad 2) vf3)
@@ -398,87 +398,87 @@ allowed to be the same memory.
(nop!)
(.mul.z.vf vf15 vf25 vf24)
(nop!)
(.mul.z.vf vf26 vf7 vf25 :mask #b10)
(.mul.z.vf.y vf26 vf7 vf25)
(nop!)
(.mul.z.vf vf27 vf11 vf24 :mask #b1)
(.mul.z.vf.x vf27 vf11 vf24)
(nop!)
(.mul.y.vf vf28 vf9 vf25 :mask #b1)
(.mul.y.vf.x vf28 vf9 vf25)
(nop!)
(.mul.z.vf vf29 vf14 vf23 :mask #b1)
(.mul.z.vf.x vf29 vf14 vf23)
(nop!)
(.mul.z.vf vf30 vf8 vf25 :mask #b1)
(.mul.z.vf.x vf30 vf8 vf25)
(nop!)
(.mul.y.vf vf31 vf7 vf25 :mask #b100)
(.mul.y.vf.z vf31 vf7 vf25)
(nop!)
(.add.y.vf vf16 vf27 vf26 :mask #b1)
(.add.y.vf.x vf16 vf27 vf26)
(nop!)
(.sub.vf vf1 vf0 vf1)
(nop!)
(.add.x.vf vf17 vf29 vf30 :mask #b1)
(.add.x.vf.x vf17 vf29 vf30)
(nop!)
(.sub.z.vf vf18 vf28 vf31 :mask #b1)
(.sub.z.vf.x vf18 vf28 vf31)
(nop!)
(.sub.y.vf vf23 vf14 vf15 :mask #b100)
(.sub.y.vf.z vf23 vf14 vf15)
(nop!)
(.sub.z.vf vf26 vf15 vf13 :mask #b1)
(.sub.z.vf.x vf26 vf15 vf13)
(nop!)
(.sub.x.vf vf29 vf13 vf14 :mask #b10)
(.sub.x.vf.y vf29 vf13 vf14)
(nop!)
(.sub.vf vf19 vf16 vf17 :mask #b1)
(.sub.vf.x vf19 vf16 vf17)
(nop!)
(.sub.z.vf vf24 vf12 vf11 :mask #b10)
(.sub.z.vf.y vf24 vf12 vf11)
(nop!)
(.sub.x.vf vf27 vf10 vf12 :mask #b100)
(.sub.x.vf.z vf27 vf10 vf12)
(nop!)
(.sub.y.vf vf30 vf11 vf10 :mask #b1)
(.sub.y.vf.x vf30 vf11 vf10)
(nop!)
(.add.vf vf20 vf19 vf18 :mask #b1)
(.add.vf.x vf20 vf19 vf18)
(nop!)
(.sub.y.vf vf25 vf8 vf9 :mask #b100)
(.sub.y.vf.z vf25 vf8 vf9)
(nop!)
(.sub.z.vf vf28 vf9 vf7 :mask #b1)
(.sub.z.vf.x vf28 vf9 vf7)
(nop!)
(.sub.x.vf vf31 vf7 vf8 :mask #b10)
(.sub.x.vf.y vf31 vf7 vf8)
(nop!)
(.div.vf Q vf0 vf20 :fsf #b11 :ftf #b0)
(nop!)
(.sub.w.vf vf3 vf3 vf3 :mask #b1000)
(.sub.w.vf.w vf3 vf3 vf3)
(nop!)
(.sub.w.vf vf4 vf4 vf4 :mask #b1000)
(.sub.w.vf.w vf4 vf4 vf4)
(nop!)
(.sub.w.vf vf5 vf5 vf5 :mask #b1000)
(.sub.w.vf.w vf5 vf5 vf5)
(nop!)
(.mov.vf vf6 vf0 :mask #b1000)
(.mov.vf.w vf6 vf0)
(nop!)
(.wait.vf)
(nop!)
(.add.vf vf2 vf0 Q :mask #b1)
(.add.vf.x vf2 vf0 Q)
(nop!)
(.add.x.vf vf2 vf0 vf2 :mask #b111)
(.add.x.vf.xyz vf2 vf0 vf2)
(nop!)
(.mul.z.vf vf3 vf2 vf23 :mask #b1)
(.mul.z.vf.x vf3 vf2 vf23)
(nop!)
(.mul.x.vf vf4 vf2 vf26 :mask #b1)
(.mul.x.vf.x vf4 vf2 vf26)
(nop!)
(.mul.y.vf vf5 vf2 vf29 :mask #b1)
(.mul.y.vf.x vf5 vf2 vf29)
(nop!)
(.mul.y.vf vf3 vf2 vf24 :mask #b10)
(.mul.y.vf.y vf3 vf2 vf24)
(nop!)
(.mul.z.vf vf4 vf2 vf27 :mask #b10)
(.mul.z.vf.y vf4 vf2 vf27)
(nop!)
(.mul.x.vf vf5 vf2 vf30 :mask #b10)
(.mul.x.vf.y vf5 vf2 vf30)
(nop!)
(.mul.z.vf vf3 vf2 vf25 :mask #b100)
(.mul.z.vf.z vf3 vf2 vf25)
(nop!)
(.mul.x.vf vf4 vf2 vf28 :mask #b100)
(.mul.x.vf.z vf4 vf2 vf28)
(nop!)
(.mul.y.vf vf5 vf2 vf31 :mask #b100)
(.mul.y.vf.z vf5 vf2 vf31)
(nop!)
(.mul.x.vf acc vf3 vf1)
(.svf (&-> arg0 quad 0) vf3)
(.add.mul.y.vf acc vf4 vf1 acc)
(.svf (&-> arg0 quad 1) vf4)
(.add.mul.z.vf vf6 vf5 vf1 acc :mask #b111)
(.add.mul.z.vf.xyz vf6 vf5 vf1 acc)
(.svf (&-> arg0 quad 2) vf5)
(nop!)
(.svf (&-> arg0 trans quad) vf6)
@@ -877,11 +877,11 @@ allowed to be the same memory.
(+! xyz-zero 1)
;;vsubx.w vf5, vf0, vf6
(.sub.x.vf vf5 vf0 vf6 :mask #b1000)
(.sub.x.vf.w vf5 vf0 vf6)
;;beq v1, r0, L15
;;vaddx.y vf5, vf0, vf6
(.add.x.vf vf5 vf0 vf6 :mask #b0010)
(.add.x.vf.y vf5 vf0 vf6)
(when-goto (zero? xyz-zero) zero-case)
)
)
@@ -895,55 +895,55 @@ allowed to be the same memory.
(.xor.vf vf4 vf4 vf4)
;;vmulx.xyz vf11, vf1, vf5
(.mul.x.vf vf11 vf1 vf5 :mask #b0111)
(.mul.x.vf.xyz vf11 vf1 vf5)
;;vaddy.x vf7, vf0, vf5
(.add.y.vf vf7 vf0 vf5 :mask #b0001)
(.add.y.vf.x vf7 vf0 vf5)
;;vaddy.y vf8, vf0, vf5
(.add.y.vf vf8 vf0 vf5 :mask #b0010)
(.add.y.vf.y vf8 vf0 vf5)
;;vaddy.z vf9, vf0, vf5
(.add.y.vf vf9 vf0 vf5 :mask #b0100)
(.add.y.vf.z vf9 vf0 vf5)
;;vmulw.xyz vf10, vf1, vf5
(.mul.w.vf vf10 vf1 vf5 :mask #b0111)
(.mul.w.vf.xyz vf10 vf1 vf5)
;;vsubz.y vf7, vf0, vf11
(.sub.z.vf vf7 vf0 vf11 :mask #b0010)
(.sub.z.vf.y vf7 vf0 vf11)
;;vaddy.z vf7, vf0, vf11
(.add.y.vf vf7 vf0 vf11 :mask #b0100)
(.add.y.vf.z vf7 vf0 vf11)
;;vaddz.x vf8, vf0, vf11
(.add.z.vf vf8 vf0 vf11 :mask #b0001)
(.add.z.vf.x vf8 vf0 vf11)
;;vsubx.z vf8, vf0, vf11
(.sub.x.vf vf8 vf0 vf11 :mask #b0100)
(.sub.x.vf.z vf8 vf0 vf11)
;;vmulx.xyz vf2, vf10, vf1
(.mul.x.vf vf2 vf10 vf1 :mask #b0111)
(.mul.x.vf.xyz vf2 vf10 vf1)
;;vmuly.xyz vf3, vf10, vf1
(.mul.y.vf vf3 vf10 vf1 :mask #b0111)
(.mul.y.vf.xyz vf3 vf10 vf1)
;;vmulz.xyz vf4, vf10, vf1
(.mul.z.vf vf4 vf10 vf1 :mask #b0111)
(.mul.z.vf.xyz vf4 vf10 vf1)
;;vsuby.x vf9, vf0, vf11
(.sub.y.vf vf9 vf0 vf11 :mask #b0001)
(.sub.y.vf.x vf9 vf0 vf11)
;;vaddx.y vf9, vf0, vf11
(.add.x.vf vf9 vf0 vf11 :mask #b0010)
(.add.x.vf.y vf9 vf0 vf11)
;;vadd.xyz vf2, vf2, vf7
(.add.vf vf2 vf2 vf7 :mask #b0111)
(.add.vf.xyz vf2 vf2 vf7)
;;vadd.xyz vf3, vf3, vf8
(.add.vf vf3 vf3 vf8 :mask #b0111)
(.add.vf.xyz vf3 vf3 vf8)
;;vadd.xyz vf4, vf4, vf9
(.add.vf vf4 vf4 vf9 :mask #b0111)
(.add.vf.xyz vf4 vf4 vf9)
;;sqc2 vf2, 0(v0)
;;sqc2 vf3, 16(v0)
@@ -1052,9 +1052,9 @@ allowed to be the same memory.
(.lvf vf10 (&-> arg0 quad 0))
(.outer.product.a.vf acc vf11 vf12)
(.outer.product.b.vf vf13 vf12 vf11 acc)
(.mul.vf vf13 vf13 vf10 :mask #b111)
(.add.y.vf vf13 vf13 vf13 :mask #b1)
(.add.z.vf vf13 vf13 vf13 :mask #b1)
(.mul.vf.xyz vf13 vf13 vf10)
(.add.y.vf.x vf13 vf13 vf13)
(.add.z.vf.x vf13 vf13 vf13)
(.mov v0-0 vf13)
v0-0
)
@@ -1151,15 +1151,15 @@ allowed to be the same memory.
(.outer.product.b.vf vf13 vf12 vf11 acc)
(.outer.product.a.vf acc vf12 vf10)
(.outer.product.b.vf vf14 vf10 vf12 acc)
(.mul.vf vf1 vf10 vf13 :mask #b111)
(.mul.vf.xyz vf1 vf10 vf13)
(.outer.product.a.vf acc vf10 vf11)
(.outer.product.b.vf vf15 vf11 vf10 acc)
(.nop.vf)
(.add.y.vf vf1 vf1 vf1 :mask #b1)
(.add.y.vf.x vf1 vf1 vf1)
(.nop.vf)
(.nop.vf)
(.nop.vf)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf.x vf1 vf1 vf1)
(.nop.vf)
(.nop.vf)
(.nop.vf)
@@ -1206,28 +1206,28 @@ allowed to be the same memory.
(let ((f2-1 (gpr->fpr v1-0)))
(.lvf vf12 (&-> arg1 quad 2))
(.madda.s f0-0 f0-0)
(.sub.w.vf vf13 vf0 vf0 :mask #b1000)
(.sub.w.vf.w vf13 vf0 vf0)
(.madd.s f0-1 f1-0 f1-0)
(.sub.w.vf vf14 vf0 vf0 :mask #b1000)
(.sub.w.vf.w vf14 vf0 vf0)
(.rsqrt.s f0-2 f2-1 f0-1)
)
)
(.sub.w.vf vf15 vf0 vf0 :mask #b1000)
(.sub.w.vf.w vf15 vf0 vf0)
(let ((v1-1 f0-2))
(.mov vf16 v1-1)
)
(.mul.x.vf vf13 vf10 vf16 :mask #b111)
(.mul.x.vf.xyz vf13 vf10 vf16)
(.outer.product.a.vf acc vf11 vf13)
(.outer.product.b.vf vf14 vf13 vf11 acc)
(.outer.product.a.vf acc vf13 vf14)
(.outer.product.b.vf vf14 vf14 vf13 acc)
(.mul.vf vf16 vf14 vf14 :mask #b111)
(.mul.x.vf acc vf0 vf16 :mask #b1000)
(.add.mul.y.vf acc vf0 vf16 acc :mask #b1000)
(.add.mul.z.vf vf16 vf0 vf16 acc :mask #b1000)
(.mul.vf.xyz vf16 vf14 vf14)
(.mul.x.vf.w acc vf0 vf16)
(.add.mul.y.vf.w acc vf0 vf16 acc)
(.add.mul.z.vf.w vf16 vf0 vf16 acc)
(.isqrt.vf Q vf0 vf16 :fsf #b11 :ftf #b11)
(.wait.vf)
(.mul.vf vf14 vf14 Q :mask #b111)
(.mul.vf.xyz vf14 vf14 Q)
(.outer.product.a.vf acc vf13 vf14)
(.outer.product.b.vf vf15 vf14 vf13 acc)
(.svf (&-> arg0 quad 0) vf13)
@@ -1593,10 +1593,10 @@ allowed to be the same memory.
(.lvf vf2 (&-> arg0 trans quad))
(.div.vf Q vf0 vf2 :fsf #b11 :ftf #b11)
(.wait.vf)
(.mul.vf vf2 vf2 Q :mask #b111)
(.mul.vf.xyz vf2 vf2 Q)
(.nop.vf)
(.nop.vf)
(.mov.vf vf2 vf0 :mask #b1000)
(.mov.vf.w vf2 vf0)
(.svf (&-> arg1 quad) vf2)
arg1
)
@@ -1673,10 +1673,10 @@ allowed to be the same memory.
(.lvf vf2 (&-> arg1 trans quad))
(.div.vf Q vf0 vf2 :fsf #b11 :ftf #b11)
(.wait.vf)
(.mul.vf vf2 vf2 Q :mask #b111)
(.mul.vf.xyz vf2 vf2 Q)
(.nop.vf)
(.nop.vf)
(.mov.vf vf2 vf0 :mask #b1000)
(.mov.vf.w vf2 vf0)
(.svf (&-> arg0 trans quad) vf2)
(let ((s4-0 (new 'stack-no-clear 'matrix)))
(let* ((a2-0 arg1)
@@ -1775,7 +1775,7 @@ allowed to be the same memory.
(set! src (the (inline-array vector) (+ 64 (the int src))))
;;vmaddz.xyz vf5, vf3, vf5
(.add.mul.z.vf vf5 vf3 vf5 acc :mask #b0111)
(.add.mul.z.vf.xyz vf5 vf3 vf5 acc)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -1792,7 +1792,7 @@ allowed to be the same memory.
(.add.mul.y.vf acc vf2 vf6 acc)
;; vmaddz.xyz vf6, vf3, vf6
(.add.mul.z.vf vf6 vf3 vf6 acc :mask #b0111)
(.add.mul.z.vf.xyz vf6 vf3 vf6 acc)
;;sqc2 vf5, 0(a1)
(.svf (-> dst 0) vf5)
@@ -1812,7 +1812,7 @@ allowed to be the same memory.
;;lqc2 vf5, 0(a2)
(.lvf vf5 (-> src 0))
;;vmaddz.xyz vf7, vf3, vf7
(.add.mul.z.vf vf7 vf3 vf7 acc :mask #b0111)
(.add.mul.z.vf.xyz vf7 vf3 vf7 acc)
;;sqc2 vf6, 16(a1)
(.svf (-> dst 1) vf6)
@@ -1831,7 +1831,7 @@ allowed to be the same memory.
;;lqc2 vf6, 16(a2)
(.lvf vf6 (-> src 1))
;;vmaddz.xyz vf8, vf3, vf8
(.add.mul.z.vf vf8 vf3 vf8 acc :mask #b0111)
(.add.mul.z.vf.xyz vf8 vf3 vf8 acc)
;;sqc2 vf7, 32(a1)
(.svf (-> dst 2) vf7)
+52 -52
View File
@@ -173,8 +173,8 @@
(.lvf vf1 (&-> arg1 vec quad))
;; (.sub.vf vf2 vf2 vf2)
(.xor.vf vf2 vf2 vf2)
(.sub.vf vf2 vf2 vf1 :mask #b111)
(.add.vf vf2 vf2 vf1 :mask #b1000)
(.sub.vf.xyz vf2 vf2 vf1)
(.add.vf.w vf2 vf2 vf1)
(.svf (&-> arg0 vec quad) vf2)
arg0
)
@@ -211,9 +211,9 @@
(init-vf0-vector)
(.lvf vf1 (&-> arg0 vec quad))
(.mul.vf vf1 vf1 vf1)
(.add.z.vf acc vf1 vf1 :mask #b1000)
(.add.mul.y.vf acc vf0 vf1 acc :mask #b1000)
(.add.mul.x.vf vf1 vf0 vf1 acc :mask #b1000)
(.add.z.vf.w acc vf1 vf1)
(.add.mul.y.vf.w acc vf0 vf1 acc)
(.add.mul.x.vf.w vf1 vf0 vf1 acc)
(.add.w.vf vf1 vf0 vf1)
(.mov v0-0 vf1)
v0-0
@@ -230,9 +230,9 @@
(init-vf0-vector)
(.lvf vf1 (&-> arg0 vec quad))
(.mul.vf vf1 vf1 vf1)
(.add.z.vf acc vf1 vf1 :mask #b1000)
(.add.mul.y.vf acc vf0 vf1 acc :mask #b1000)
(.add.mul.x.vf vf1 vf0 vf1 acc :mask #b1000)
(.add.z.vf.w acc vf1 vf1)
(.add.mul.y.vf.w acc vf0 vf1 acc)
(.add.mul.x.vf.w vf1 vf0 vf1 acc)
(.add.w.vf vf1 vf0 vf1)
(.mov v1-1 vf1)
(sqrtf v1-1)
@@ -250,9 +250,9 @@
(init-vf0-vector)
(.lvf vf1 (&-> arg0 vec quad))
(.mul.vf vf2 vf1 vf1)
(.add.z.vf acc vf2 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.x.vf vf2 vf0 vf2 acc :mask #b1000)
(.add.z.vf.w acc vf2 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.x.vf.w vf2 vf0 vf2 acc)
(.isqrt.vf Q vf0 vf2 :fsf #b11 :ftf #b11)
;; (.wait.vf)
(.mul.vf vf2 vf1 Q)
@@ -278,12 +278,12 @@
(.mul.vf vf2 vf1 vf1)
;; (.sub.vf vf3 vf3 vf3)
(.xor.vf vf3 vf3 vf3)
(.add.z.vf acc vf2 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.x.vf vf2 vf0 vf2 acc :mask #b1000)
(.sub.vf vf3 vf3 vf1 :mask #b111)
(.add.z.vf.w acc vf2 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.x.vf.w vf2 vf0 vf2 acc)
(.sub.vf.xyz vf3 vf3 vf1)
(.div.vf Q vf0 vf2 :fsf #b11 :ftf #b11)
(.add.vf vf3 vf3 vf1 :mask #b1000)
(.add.vf.w vf3 vf3 vf1)
(.wait.vf)
(.mul.vf vf3 vf3 Q)
(.nop.vf)
@@ -305,9 +305,9 @@
(.lvf vf1 (&-> arg0 vec quad))
(.lvf vf2 (&-> arg1 vec quad))
(.mul.vf vf1 vf1 vf2)
(.add.z.vf acc vf1 vf1 :mask #b1000)
(.add.mul.y.vf acc vf0 vf1 acc :mask #b1000)
(.add.mul.x.vf vf1 vf0 vf1 acc :mask #b1000)
(.add.z.vf.w acc vf1 vf1)
(.add.mul.y.vf.w acc vf0 vf1 acc)
(.add.mul.x.vf.w vf1 vf0 vf1 acc)
(.add.w.vf vf1 vf0 vf1)
(.mov v0-0 vf1)
v0-0
@@ -326,16 +326,16 @@
(init-vf0-vector)
(.lvf vf1 (&-> arg1 vec quad))
(.lvf vf2 (&-> arg2 vec quad))
(.sub.vf vf4 vf0 vf0 :mask #b1000)
(.sub.vf.w vf4 vf0 vf0)
(.mul.vf vf3 vf1 vf2)
(.outer.product.a.vf acc vf1 vf2)
(.outer.product.b.vf vf4 vf2 vf1 acc)
(.mul.w.vf acc vf1 vf2)
(.add.mul.w.vf acc vf2 vf1 acc)
(.sub.mul.w.vf acc vf0 vf3 acc :mask #b1000)
(.sub.mul.z.vf acc vf0 vf3 acc :mask #b1000)
(.sub.mul.y.vf acc vf0 vf3 acc :mask #b1000)
(.sub.mul.x.vf acc vf0 vf3 acc :mask #b1000)
(.sub.mul.w.vf.w acc vf0 vf3 acc)
(.sub.mul.z.vf.w acc vf0 vf3 acc)
(.sub.mul.y.vf.w acc vf0 vf3 acc)
(.sub.mul.x.vf.w acc vf0 vf3 acc)
(.add.mul.w.vf vf1 vf4 vf0 acc)
(.svf (&-> arg0 vec quad) vf1)
arg0
@@ -414,27 +414,27 @@
(init-vf0-vector)
(.lvf vf1 (&-> arg1 vec quad))
(.add.vf vf5 vf1 vf1)
(.add.w.vf vf2 vf0 vf1 :mask #b1)
(.add.z.vf vf2 vf0 vf1 :mask #b10)
(.sub.y.vf vf2 vf0 vf1 :mask #b100)
(.sub.w.vf vf2 vf0 vf0 :mask #b1000)
(.sub.z.vf vf3 vf0 vf1 :mask #b1)
(.add.w.vf vf3 vf0 vf1 :mask #b10)
(.add.x.vf vf3 vf0 vf1 :mask #b100)
(.sub.w.vf vf3 vf0 vf0 :mask #b1000)
(.add.y.vf vf4 vf0 vf1 :mask #b1)
(.sub.x.vf vf4 vf0 vf1 :mask #b10)
(.add.w.vf vf4 vf0 vf1 :mask #b100)
(.sub.w.vf vf4 vf0 vf0 :mask #b1000)
(.add.w.vf.x vf2 vf0 vf1)
(.add.z.vf.y vf2 vf0 vf1)
(.sub.y.vf.z vf2 vf0 vf1)
(.sub.w.vf.w vf2 vf0 vf0)
(.sub.z.vf.x vf3 vf0 vf1)
(.add.w.vf.y vf3 vf0 vf1)
(.add.x.vf.z vf3 vf0 vf1)
(.sub.w.vf.w vf3 vf0 vf0)
(.add.y.vf.x vf4 vf0 vf1)
(.sub.x.vf.y vf4 vf0 vf1)
(.add.w.vf.z vf4 vf0 vf1)
(.sub.w.vf.w vf4 vf0 vf0)
(.outer.product.a.vf acc vf5 vf2)
(.outer.product.b.vf vf2 vf2 vf5 acc)
(.outer.product.a.vf acc vf5 vf3)
(.outer.product.b.vf vf3 vf3 vf5 acc)
(.outer.product.a.vf acc vf5 vf4)
(.outer.product.b.vf vf4 vf4 vf5 acc)
(.add.w.vf vf2 vf2 vf0 :mask #b1)
(.add.w.vf vf3 vf3 vf0 :mask #b10)
(.add.w.vf vf4 vf4 vf0 :mask #b100)
(.add.w.vf.x vf2 vf2 vf0)
(.add.w.vf.y vf3 vf3 vf0)
(.add.w.vf.z vf4 vf4 vf0)
(.svf (&-> arg0 trans quad) vf0)
(.svf (&-> arg0 quad 0) vf2)
(.svf (&-> arg0 quad 1) vf3)
@@ -468,24 +468,24 @@
; (.mov vf4 a2-0)
; (let ((a2-1 #x3f800000))
; (.add.vf vf5 vf1 vf1)
; (.sub.y.vf vf4 vf0 vf4 :mask #b10)
; (.sub.y.vf.y vf4 vf0 vf4)
; (.pextlw a3-0 v1-0 a1-2)
; (.mov vf3 a1-2)
; (.pextuw v1-1 v1-0 a3-0)
; (.mov vf2 v1-1)
; (set! (-> arg0 trans quad) (the-as uint128 0))
; (.sub.x.vf vf3 vf0 vf3 :mask #b1)
; (.sub.x.vf.x vf3 vf0 vf3)
; (set! (-> arg0 trans w) (the-as float a2-1))
; (.sub.z.vf vf2 vf0 vf2 :mask #b100)
; (.sub.z.vf.z vf2 vf0 vf2)
; (.outer.product.a.vf acc vf5 vf4)
; (.outer.product.b.vf vf8 vf4 vf5 acc)
; (.outer.product.a.vf acc vf5 vf3)
; (.outer.product.b.vf vf7 vf3 vf5 acc)
; (.outer.product.a.vf acc vf5 vf2)
; (.outer.product.b.vf vf6 vf2 vf5 acc)
; (.add.w.vf vf8 vf8 vf0 :mask #b100)
; (.add.w.vf vf7 vf7 vf0 :mask #b10)
; (.add.w.vf vf6 vf6 vf0 :mask #b1)
; (.add.w.vf.z vf8 vf8 vf0)
; (.add.w.vf.y vf7 vf7 vf0)
; (.add.w.vf.x vf6 vf6 vf0)
; (.svf (&-> arg0 quad 2) vf8)
; (set! (-> arg0 data 11) (the-as float a2-1))
; (.svf (&-> arg0 quad 1) vf7)
@@ -834,17 +834,17 @@
(.lvf vf1 (&-> gp-0 quad))
(.lvf vf2 (&-> s5-0 quad))
)
(.mul.x.vf vf4 vf0 vf1 :mask #b1000)
(.add.vf vf4 vf0 vf2 :mask #b111)
(.sub.vf vf4 vf0 vf4 :mask #b110)
(.add.vf vf3 vf0 vf1 :mask #b111)
(.mul.x.vf vf3 vf0 vf2 :mask #b1000)
(.mul.x.vf.w vf4 vf0 vf1)
(.add.vf.xyz vf4 vf0 vf2)
(.sub.vf.yz vf4 vf0 vf4)
(.add.vf.xyz vf3 vf0 vf1)
(.mul.x.vf.w vf3 vf0 vf2)
(.outer.product.a.vf acc vf1 vf1)
(.outer.product.b.vf vf6 vf0 vf0 acc)
(.outer.product.a.vf acc vf2 vf2)
(.outer.product.b.vf vf5 vf0 vf0 acc)
(.mul.x.vf vf6 vf0 vf6 :mask #b1000)
(.mul.x.vf vf5 vf0 vf5 :mask #b1000)
(.mul.x.vf.w vf6 vf0 vf6)
(.mul.x.vf.w vf5 vf0 vf5)
(.mul.vf acc vf6 vf4)
(.add.mul.vf vf7 vf5 vf3 acc)
(.svf (&-> arg0 vec quad) vf7)
+8 -8
View File
@@ -281,7 +281,7 @@
(.lvf vf3 (&-> arg0 quad 0))
(.lvf vf4 (&-> arg0 quad 1))
(.lvf vf5 (&-> arg0 quad 2))
(.mov.vf vf2 vf0 :mask #b1000)
(.mov.vf.w vf2 vf0)
(.mul.x.vf vf3 vf3 vf1)
(.mul.y.vf vf4 vf4 vf1)
(.mul.z.vf vf5 vf5 vf1)
@@ -342,14 +342,14 @@
(.lvf vf3 (&-> arg0 quad 0))
(.lvf vf4 (&-> arg0 quad 1))
(.lvf vf5 (&-> arg0 quad 2))
(.mov.vf vf2 vf0 :mask #b1000)
(.mov.vf.w vf2 vf0)
(.mul.x.vf vf3 vf3 vf1)
(.mul.y.vf vf4 vf4 vf1)
(.mul.z.vf vf5 vf5 vf1)
(.mul.x.vf acc vf3 vf6)
(.add.mul.y.vf acc vf4 vf6 acc)
(.add.mul.z.vf acc vf5 vf6 acc)
(.add.mul.w.vf vf2 vf2 vf0 acc :mask #b111)
(.add.mul.w.vf.xyz vf2 vf2 vf0 acc)
(.svf (&-> arg0 trans quad) vf2)
(.svf (&-> arg0 quad 0) vf3)
(.svf (&-> arg0 quad 1) vf4)
@@ -376,11 +376,11 @@
(.lvf vf3 (&-> arg0 quad 0))
(.lvf vf4 (&-> arg0 quad 1))
(.lvf vf5 (&-> arg0 quad 2))
(.mov.vf vf2 vf0 :mask #b1000)
(.mov.vf.w vf2 vf0)
(.mul.x.vf vf3 vf3 vf1)
(.mul.y.vf vf4 vf4 vf1)
(.mul.z.vf vf5 vf5 vf1)
(.add.vf vf2 vf2 vf6 :mask #b111)
(.add.vf.xyz vf2 vf2 vf6)
(.svf (&-> arg0 trans quad) vf2)
(.svf (&-> arg0 quad 0) vf3)
(.svf (&-> arg0 quad 1) vf4)
@@ -408,7 +408,7 @@
(set! (-> v1-0 z) (/ 1.0 (-> arg2 z)))
(.lvf vf1 (&-> arg1 scale quad))
(.lvf vf2 (&-> arg1 trans quad))
(.mov.vf vf2 vf0 :mask #b1000)
(.mov.vf.w vf2 vf0)
(.lvf vf4 (&-> arg0 quad 0))
(.lvf vf5 (&-> arg0 quad 1))
(.lvf vf6 (&-> arg0 quad 2))
@@ -449,7 +449,7 @@
(.lvf vf3 (&-> arg0 quad 0))
(.lvf vf4 (&-> arg0 quad 1))
(.lvf vf5 (&-> arg0 quad 2))
(.mov.vf vf2 vf0 :mask #b1000)
(.mov.vf.w vf2 vf0)
(.mul.x.vf vf3 vf3 vf1)
(.mul.y.vf vf4 vf4 vf1)
(.mul.z.vf vf5 vf5 vf1)
@@ -457,7 +457,7 @@
(.add.mul.y.vf acc vf4 vf6 acc)
(.add.mul.z.vf acc vf5 vf6 acc)
(.sub.mul.w.vf acc vf6 vf0 acc)
(.add.mul.w.vf vf2 vf2 vf0 acc :mask #b111)
(.add.mul.w.vf.xyz vf2 vf2 vf0 acc)
(.svf (&-> arg0 trans quad) vf2)
(.svf (&-> arg0 quad 0) vf3)
(.svf (&-> arg0 quad 1) vf4)
+9 -9
View File
@@ -506,8 +506,8 @@ Changes:
(.lvf vf1 (&-> arg0 quad))
(.lvf vf2 (&-> arg1 quad))
(.mul.vf vf1 vf1 vf2)
(.add.y.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.y.vf.x vf1 vf1 vf1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov v0-0 vf1)
v0-0
)
@@ -539,11 +539,11 @@ Changes:
(.lvf vf1 (&-> arg0 quad))
(.lvf vf2 (&-> arg1 quad))
(.mul.vf vf1 vf1 vf2)
(.add.w.vf vf3 vf0 vf0 :mask #b1)
(.mul.x.vf acc vf3 vf1 :mask #b1)
(.add.mul.y.vf acc vf3 vf1 acc :mask #b1)
(.add.mul.z.vf acc vf3 vf1 acc :mask #b1)
(.add.mul.w.vf vf1 vf3 vf1 acc :mask #b1)
(.add.w.vf.x vf3 vf0 vf0)
(.mul.x.vf.x acc vf3 vf1)
(.add.mul.y.vf.x acc vf3 vf1 acc)
(.add.mul.z.vf.x acc vf3 vf1 acc)
(.add.mul.w.vf.x vf1 vf3 vf1 acc)
(.mov v0-0 vf1)
v0-0
)
@@ -590,7 +590,7 @@ Changes:
;; add
(.add.vf vf1 vf2 vf3)
;; set w = 1
(.blend.vf vf1 vf1 vf0 :mask #b1000)
(.blend.vf.w vf1 vf1 vf0)
;; store
(.svf dst vf1)
)
@@ -611,7 +611,7 @@ Changes:
;; subtract
(.sub.vf vf1 vf2 vf3)
;; set w = 1
(.blend.vf vf1 vf1 vf0 :mask #b1000)
(.blend.vf.w vf1 vf1 vf0)
;; store
(.svf dst vf1)
)
+93 -93
View File
@@ -34,8 +34,8 @@
(init-vf0-vector)
(.lvf vf1 (&-> arg1 quad))
(.lvf vf2 (&-> arg2 quad))
(.add.x.vf vf1 vf0 vf0 :mask #b10)
(.add.x.vf vf2 vf0 vf0 :mask #b10)
(.add.x.vf.y vf1 vf0 vf0)
(.add.x.vf.y vf2 vf0 vf0)
(.outer.product.a.vf acc vf1 vf2)
(.outer.product.b.vf vf3 vf2 vf1 acc)
(.svf (&-> arg0 quad) vf3)
@@ -53,8 +53,8 @@
(init-vf0-vector)
(.mov vf6 arg2)
(.lvf vf4 (&-> arg1 quad))
(.add.x.vf vf5 vf0 vf0 :mask #b1000)
(.add.x.vf vf5 vf4 vf6 :mask #b111)
(.add.x.vf.w vf5 vf0 vf0)
(.add.x.vf.xyz vf5 vf4 vf6)
(.svf (&-> arg0 quad) vf5)
arg0
)
@@ -70,8 +70,8 @@
(init-vf0-vector)
(.lvf vf4 (&-> arg1 quad))
(.lvf vf5 (&-> arg2 quad))
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.vf vf6 vf4 vf5 :mask #b111)
(.add.x.vf.w vf6 vf0 vf0)
(.mul.vf.xyz vf6 vf4 vf5)
(.svf (&-> arg0 quad) vf6)
arg0
)
@@ -90,9 +90,9 @@
(.mov vf7 arg3)
(.lvf vf5 (&-> arg2 quad))
(.lvf vf4 (&-> arg1 quad))
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf5 vf7 :mask #b111)
(.add.mul.w.vf vf6 vf4 vf0 acc :mask #b111)
(.add.x.vf.w vf6 vf0 vf0)
(.mul.x.vf.xyz acc vf5 vf7)
(.add.mul.w.vf.xyz vf6 vf4 vf0 acc)
(.svf (&-> arg0 quad) vf6)
arg0
)
@@ -111,9 +111,9 @@
(.mov vf7 arg3)
(.lvf vf5 (&-> arg2 quad))
(.lvf vf4 (&-> arg1 quad))
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.w.vf acc vf4 vf0 :mask #b111)
(.sub.mul.x.vf vf6 vf5 vf7 acc :mask #b111)
(.add.x.vf.w vf6 vf0 vf0)
(.mul.w.vf.xyz acc vf4 vf0)
(.sub.mul.x.vf.xyz vf6 vf5 vf7 acc)
(.svf (&-> arg0 quad) vf6)
arg0
)
@@ -132,19 +132,19 @@
(init-vf0-vector)
(.lvf vf5 (&-> arg2 quad))
(.div.vf Q vf0 vf5 :fsf #b11 :ftf #b1)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.add.x.vf.w vf6 vf0 vf0)
(.lvf vf4 (&-> arg1 quad))
(let ((v1-0 (/ (-> arg1 x) (-> arg2 x))))
(.wait.vf)
(.mul.vf vf6 vf4 Q :mask #b10)
(.mul.vf.y vf6 vf4 Q)
(.nop.vf)
(.nop.vf)
(.div.vf Q vf0 vf5 :fsf #b11 :ftf #b10)
(.mov vf7 v1-0)
)
(.add.x.vf vf6 vf0 vf7 :mask #b1)
(.add.x.vf.x vf6 vf0 vf7)
(.wait.vf)
(.mul.vf vf6 vf4 Q :mask #b100)
(.mul.vf.z vf6 vf4 Q)
(.nop.vf)
(.nop.vf)
(.svf (&-> arg0 quad) vf6)
@@ -162,8 +162,8 @@
(init-vf0-vector)
(.lvf vf1 (&-> arg1 quad))
(.mov vf2 arg2)
(.add.x.vf vf1 vf0 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.add.x.vf.w vf1 vf0 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> arg0 quad) vf1)
arg0
)
@@ -184,9 +184,9 @@
(.lvf vf2 (&-> arg2 quad))
(.mov vf3 v1-0)
)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.add.x.vf.w vf4 vf0 vf0)
(.mul.x.vf acc vf1 vf3)
(.add.mul.x.vf vf4 vf2 vf3 acc :mask #b111)
(.add.mul.x.vf.xyz vf4 vf2 vf3 acc)
(.svf (&-> arg0 quad) vf4)
arg0
)
@@ -205,9 +205,9 @@
(.lvf vf2 (&-> arg2 quad))
(.lvf vf1 (&-> arg1 quad))
(.mov vf3 arg3)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.add.x.vf.w vf4 vf0 vf0)
(.mul.x.vf acc vf2 vf3)
(.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111)
(.add.mul.w.vf.xyz vf4 vf1 vf0 acc)
(.svf (&-> arg0 quad) vf4)
arg0
)
@@ -227,9 +227,9 @@
(.lvf vf2 (&-> arg2 quad))
(.lvf vf1 (&-> arg1 quad))
(.mov vf3 arg3)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.add.x.vf.w vf4 vf0 vf0)
(.mul.w.vf acc vf1 vf0)
(.sub.mul.x.vf vf4 vf2 vf3 acc :mask #b111)
(.sub.mul.x.vf.xyz vf4 vf2 vf3 acc)
(.svf (&-> arg0 quad) vf4)
arg0
)
@@ -247,9 +247,9 @@
(.mov vf3 arg2)
(.div.vf Q vf0 vf3 :fsf #b11 :ftf #b0)
(.lvf vf1 (&-> arg1 quad))
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.add.x.vf.w vf4 vf0 vf0)
(.wait.vf)
(.mul.vf vf4 vf1 Q :mask #b111)
(.mul.vf.xyz vf4 vf1 Q)
(.nop.vf)
(.nop.vf)
(.svf (&-> arg0 quad) vf4)
@@ -265,8 +265,8 @@
)
(init-vf0-vector)
(.lvf vf1 (&-> arg1 quad))
(.sub.vf vf4 vf0 vf1 :mask #b111)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.sub.vf.xyz vf4 vf0 vf1)
(.add.x.vf.w vf4 vf0 vf0)
(.svf (&-> arg0 quad) vf4)
arg0
)
@@ -279,7 +279,7 @@
)
(init-vf0-vector)
(.lvf vf1 (&-> arg0 quad))
(.sub.vf vf1 vf0 vf1 :mask #b111)
(.sub.vf.xyz vf1 vf0 vf1)
(.svf (&-> arg0 quad) vf1)
arg0
)
@@ -335,10 +335,10 @@
(.lvf vf2 (&-> arg1 quad))
(.sub.vf vf1 vf2 vf1)
(.abs.vf vf1 vf1)
(.mul.x.vf acc vf0 vf1 :mask #b1000)
(.add.mul.y.vf acc vf0 vf1 acc :mask #b1000)
(.add.mul.z.vf vf3 vf0 vf1 acc :mask #b1000)
(.add.w.vf vf3 vf0 vf3 :mask #b1)
(.mul.x.vf.w acc vf0 vf1)
(.add.mul.y.vf.w acc vf0 vf1 acc)
(.add.mul.z.vf.w vf3 vf0 vf1 acc)
(.add.w.vf.x vf3 vf0 vf3)
(.mov v0-0 vf3)
v0-0
)
@@ -358,12 +358,12 @@
(.mov vf4 arg2)
(.lvf vf1 (&-> arg1 quad))
(.lvf vf2 (&-> arg0 quad))
(.add.x.vf vf1 vf0 vf0 :mask #b1000)
(.sub.x.vf vf5 vf0 vf4 :mask #b1)
(.sub.vf vf3 vf1 vf2 :mask #b111)
(.min.x.vf vf3 vf3 vf4 :mask #b111)
(.max.x.vf vf3 vf3 vf5 :mask #b111)
(.add.vf vf1 vf2 vf3 :mask #b111)
(.add.x.vf.w vf1 vf0 vf0)
(.sub.x.vf.x vf5 vf0 vf4)
(.sub.vf.xyz vf3 vf1 vf2)
(.min.x.vf.xyz vf3 vf3 vf4)
(.max.x.vf.xyz vf3 vf3 vf5)
(.add.vf.xyz vf1 vf2 vf3)
(.svf (&-> arg0 quad) vf1)
arg0
)
@@ -390,9 +390,9 @@
)
(.lvf vf5 (&-> v1-0 quad))
(.lvf vf4 (&-> arg0 quad))
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf5 vf7 :mask #b111)
(.add.mul.w.vf vf6 vf4 vf0 acc :mask #b111)
(.add.x.vf.w vf6 vf0 vf0)
(.mul.x.vf.xyz acc vf5 vf7)
(.add.mul.w.vf.xyz vf6 vf4 vf0 acc)
(.svf (&-> v0-0 quad) vf6)
v0-0
)
@@ -600,8 +600,8 @@
(.mov at-0 f0-0)
)
(.mov vf2 at-0)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.mov.vf.w vf1 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> arg0 quad) vf1)
arg0
)
@@ -621,8 +621,8 @@
(.mov at-0 f0-0)
)
(.mov vf2 at-0)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.mov.vf.w vf1 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> arg0 quad) vf1)
arg0
)
@@ -639,13 +639,13 @@
(init-vf0-vector)
(.lvf vf1 (&-> arg0 quad))
(.mul.vf vf1 vf1 vf1)
(.mul.x.vf acc vf0 vf1 :mask #b1000)
(.add.mul.y.vf acc vf0 vf1 acc :mask #b1000)
(.add.mul.z.vf vf1 vf0 vf1 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf1)
(.add.mul.y.vf.w acc vf0 vf1 acc)
(.add.mul.z.vf.w vf1 vf0 vf1 acc)
(.sqrt.vf Q vf1 :ftf #b11)
(.add.w.vf vf1 vf0 vf0 :mask #b1)
(.add.w.vf.x vf1 vf0 vf0)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b1)
(.mul.vf.x vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.mov v0-0 vf1)
@@ -663,11 +663,11 @@
)
(init-vf0-vector)
(.lvf vf1 (&-> arg0 quad))
(.add.w.vf vf2 vf0 vf0 :mask #b1)
(.add.w.vf.x vf2 vf0 vf0)
(.mul.vf vf1 vf1 vf1)
(.mul.x.vf acc vf2 vf1 :mask #b1)
(.add.mul.y.vf acc vf2 vf1 acc :mask #b1)
(.add.mul.z.vf vf1 vf2 vf1 acc :mask #b1)
(.mul.x.vf.x acc vf2 vf1)
(.add.mul.y.vf.x acc vf2 vf1 acc)
(.add.mul.z.vf.x vf1 vf2 vf1 acc)
(.mov v0-0 vf1)
v0-0
)
@@ -698,13 +698,13 @@
(.lvf vf3 (&-> arg1 quad))
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.mul.x.vf acc vf0 vf1 :mask #b1000)
(.add.mul.y.vf acc vf0 vf1 acc :mask #b1000)
(.add.mul.z.vf vf1 vf0 vf1 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf1)
(.add.mul.y.vf.w acc vf0 vf1 acc)
(.add.mul.z.vf.w vf1 vf0 vf1 acc)
(.sqrt.vf Q vf1 :ftf #b11)
(.add.w.vf vf1 vf0 vf0 :mask #b1)
(.add.w.vf.x vf1 vf0 vf0)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b1)
(.mul.vf.x vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.mov v0-0 vf1)
@@ -723,8 +723,8 @@
(.lvf vf3 (&-> arg1 quad))
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.add.y.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.y.vf.x vf1 vf1 vf1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov v0-0 vf1)
v0-0
)
@@ -745,12 +745,12 @@
(.lvf vf3 (&-> arg1 quad))
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.mul.x.vf acc vf0 vf1 :mask #b1000)
(.add.mul.z.vf vf1 vf0 vf1 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf1)
(.add.mul.z.vf.w vf1 vf0 vf1 acc)
(.sqrt.vf Q vf1 :ftf #b11)
(.add.w.vf vf1 vf0 vf0 :mask #b1)
(.add.w.vf.x vf1 vf0 vf0)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b1)
(.mul.vf.x vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.mov v0-0 vf1)
@@ -773,12 +773,12 @@
(.lvf vf3 (&-> arg1 quad))
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.mul.x.vf acc vf0 vf1 :mask #b1000)
(.add.mul.y.vf vf1 vf0 vf1 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf1)
(.add.mul.y.vf.w vf1 vf0 vf1 acc)
(.sqrt.vf Q vf1 :ftf #b11)
(.add.w.vf vf1 vf0 vf0 :mask #b1)
(.add.w.vf.x vf1 vf0 vf0)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b1)
(.mul.vf.x vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.mov v0-0 vf1)
@@ -797,7 +797,7 @@
(.lvf vf3 (&-> arg1 quad))
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov v0-0 vf1)
v0-0
)
@@ -823,16 +823,16 @@
; )
; (init-vf0-vector)
; (.lvf vf1 (&-> arg0 quad))
; (.mul.vf vf2 vf1 vf1 :mask #b111)
; (.mul.vf.xyz vf2 vf1 vf1)
; (let ((v1-0 arg1))
; (.mov vf3 v1-0)
; )
; (.mul.x.vf acc vf0 vf2 :mask #b1000)
; (.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
; (.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
; (.mul.x.vf.w acc vf0 vf2)
; (.add.mul.y.vf.w acc vf0 vf2 acc)
; (.add.mul.z.vf.w vf2 vf0 vf2 acc)
; (.isqrt.vf Q vf3 vf2 :fsf #b0 :ftf #b11)
; (.wait.vf)
; (.mul.vf vf1 vf1 Q :mask #b111)
; (.mul.vf.xyz vf1 vf1 Q)
; (.nop.vf)
; (.nop.vf)
; (.nop.vf)
@@ -864,19 +864,19 @@
; )
; (init-vf0-vector)
; (.lvf vf1 (&-> arg0 quad))
; (.mul.vf vf2 vf1 vf1 :mask #b111)
; (.mul.vf.xyz vf2 vf1 vf1)
; (let ((v1-0 arg1))
; (.mov vf3 v1-0)
; )
; (.mul.x.vf acc vf0 vf2 :mask #b1000)
; (.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
; (.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
; (.mul.x.vf.w acc vf0 vf2)
; (.add.mul.y.vf.w acc vf0 vf2 acc)
; (.add.mul.z.vf.w vf2 vf0 vf2 acc)
; (.isqrt.vf Q vf3 vf2 :fsf #b0 :ftf #b11)
; (.add.w.vf vf2 vf0 vf2 :mask #b1)
; (.add.w.vf.x vf2 vf0 vf2)
; (.mov v1-1 vf2)
; (let ((v0-0 (sqrtf v1-1)))
; (.wait.vf)
; (.mul.vf vf1 vf1 Q :mask #b111)
; (.mul.vf.xyz vf1 vf1 Q)
; (.nop.vf)
; (.nop.vf)
; (.nop.vf)
@@ -1120,10 +1120,10 @@
(.lvf vf1 (&-> arg1 quad))
(.lvf vf2 (&-> arg2 quad))
(.mov vf4 arg3)
(.add.x.vf vf3 vf0 vf0 :mask #b1000)
(.add.x.vf.w vf3 vf0 vf0)
(.sub.vf vf2 vf2 vf1)
(.mul.x.vf vf2 vf2 vf4)
(.add.vf vf3 vf1 vf2 :mask #b111)
(.add.vf.xyz vf3 vf1 vf2)
(.svf (&-> arg0 quad) vf3)
arg0
)
@@ -1155,10 +1155,10 @@
(.mov vf4 a1-1)
)
)
(.add.x.vf vf3 vf0 vf0 :mask #b1000)
(.add.x.vf.w vf3 vf0 vf0)
(.sub.vf vf2 vf2 vf1)
(.mul.x.vf vf2 vf2 vf4)
(.add.vf vf3 vf1 vf2 :mask #b111)
(.add.vf.xyz vf3 vf1 vf2)
(.svf (&-> v1-3 quad) vf3)
)
)
@@ -1567,13 +1567,13 @@
(init-vf0-vector)
(.lvf vf1 (&-> arg0 quad))
(.lvf vf2 (&-> arg1 quad))
(.sub.vf vf3 vf1 vf2 :mask #b111)
(.mul.vf vf3 vf3 vf3 :mask #b111)
(.add.w.vf vf4 vf1 vf2 :mask #b1000)
(.mul.w.vf vf4 vf4 vf4 :mask #b1000)
(.add.y.vf vf3 vf3 vf3 :mask #b1)
(.add.z.vf vf3 vf3 vf3 :mask #b1)
(.add.w.vf vf4 vf0 vf4 :mask #b1)
(.sub.vf.xyz vf3 vf1 vf2)
(.mul.vf.xyz vf3 vf3 vf3)
(.add.w.vf.w vf4 vf1 vf2)
(.mul.w.vf.w vf4 vf4 vf4)
(.add.y.vf.x vf3 vf3 vf3)
(.add.z.vf.x vf3 vf3 vf3)
(.add.w.vf.x vf4 vf0 vf4)
(.mov a0-1 vf4)
(.mov v1-0 vf3)
(>= a0-1 v1-0)
+129 -129
View File
@@ -364,7 +364,7 @@ Note that this doesn't actually return the nav-control, but instead adds this pr
)
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov a2-4 vf1)
(let ((f1-0 a2-4)
(f0-1 (+ (-> sphere r) (-> nav shape nav-radius)))
@@ -407,7 +407,7 @@ Note that this doesn't actually return the nav-control, but instead adds this pr
)
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov t0-4 vf1)
(let ((f1-0 t0-4)
(f0-2 (+ (-> arg2 r) (-> v1-4 shape nav-radius)))
@@ -441,7 +441,7 @@ Note that this doesn't actually return the nav-control, but instead adds this pr
)
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov a2-6 vf1)
(let ((f1-1 a2-6)
(f0-4 (+ (-> a0-1 w) (-> v1-9 shape nav-radius)))
@@ -550,17 +550,17 @@ Note that this doesn't actually return the nav-control, but instead adds this pr
)
(let ((f0-1 1.0))
(.lvf vf1 (&-> a0-1 quad))
(.mul.vf vf2 vf1 vf1 :mask #b111)
(.mul.vf.xyz vf2 vf1 vf1)
(let ((t2-3 f0-1))
(.mov vf3 t2-3)
)
)
(.mul.x.vf acc vf0 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.z.vf.w vf2 vf0 vf2 acc)
(.isqrt.vf Q vf3 vf2 :fsf #b0 :ftf #b11)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b111)
(.mul.vf.xyz vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.nop.vf)
@@ -592,9 +592,9 @@ Note that this doesn't actually return the nav-control, but instead adds this pr
)
(.lvf vf4 (&-> a1-3 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf5 vf7 :mask #b111)
(.add.mul.w.vf vf6 vf4 vf0 acc :mask #b111)
(.add.x.vf.w vf6 vf0 vf0)
(.mul.x.vf.xyz acc vf5 vf7)
(.add.mul.w.vf.xyz vf6 vf4 vf0 acc)
(.svf (&-> t0-1 quad) vf6)
)
(let ((v0-0 arg3))
@@ -603,9 +603,9 @@ Note that this doesn't actually return the nav-control, but instead adds this pr
)
(.lvf vf5 (&-> v1-0 quad))
(.lvf vf4 (&-> a0-9 quad))
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf5 vf7 :mask #b111)
(.add.mul.w.vf vf6 vf4 vf0 acc :mask #b111)
(.add.x.vf.w vf6 vf0 vf0)
(.mul.x.vf.xyz acc vf5 vf7)
(.add.mul.w.vf.xyz vf6 vf4 vf0 acc)
(.svf (&-> v0-0 quad) vf6)
v0-0
)
@@ -730,17 +730,17 @@ Note that this doesn't actually return the nav-control, but instead adds this pr
(let ((v1-1 (-> s5-0 in-dir)))
(let ((f0-1 1.0))
(.lvf vf1 (&-> v1-1 quad))
(.mul.vf vf2 vf1 vf1 :mask #b111)
(.mul.vf.xyz vf2 vf1 vf1)
(let ((a0-4 f0-1))
(.mov vf3 a0-4)
)
)
(.mul.x.vf acc vf0 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.z.vf.w vf2 vf0 vf2 acc)
(.isqrt.vf Q vf3 vf2 :fsf #b0 :ftf #b11)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b111)
(.mul.vf.xyz vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.nop.vf)
@@ -770,7 +770,7 @@ Note that this doesn't actually return the nav-control, but instead adds this pr
)
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov a1-3 vf1)
(set! (-> s5-0 dist2) a1-3)
(let ((f0-14 (-> arg0 closest-sphere-dist2))
@@ -899,17 +899,17 @@ Note that this doesn't actually return the nav-control, but instead adds this pr
(let ((v1-51 (-> s5-0 away-dir)))
(let ((f0-42 1.0))
(.lvf vf1 (&-> v1-51 quad))
(.mul.vf vf2 vf1 vf1 :mask #b111)
(.mul.vf.xyz vf2 vf1 vf1)
(let ((a0-60 f0-42))
(.mov vf3 a0-60)
)
)
(.mul.x.vf acc vf0 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.z.vf.w vf2 vf0 vf2 acc)
(.isqrt.vf Q vf3 vf2 :fsf #b0 :ftf #b11)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b111)
(.mul.vf.xyz vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.nop.vf)
@@ -927,10 +927,10 @@ Note that this doesn't actually return the nav-control, but instead adds this pr
(.mov vf4 a0-62)
)
)
(.add.x.vf vf3 vf0 vf0 :mask #b1000)
(.add.x.vf.w vf3 vf0 vf0)
(.sub.vf vf2 vf2 vf1)
(.mul.x.vf vf2 vf2 vf4)
(.add.vf vf3 vf1 vf2 :mask #b111)
(.add.vf.xyz vf3 vf1 vf2)
(.svf (&-> v1-52 0 quad) vf3)
)
(let ((v1-53 (-> s5-0 best-dir 1)))
@@ -943,10 +943,10 @@ Note that this doesn't actually return the nav-control, but instead adds this pr
(let ((a0-64 f0-44))
(.mov vf4 a0-64)
)
(.add.x.vf vf3 vf0 vf0 :mask #b1000)
(.add.x.vf.w vf3 vf0 vf0)
(.sub.vf vf2 vf2 vf1)
(.mul.x.vf vf2 vf2 vf4)
(.add.vf vf3 vf1 vf2 :mask #b111)
(.add.vf.xyz vf3 vf1 vf2)
(.svf (&-> v1-53 quad) vf3)
)
)
@@ -954,17 +954,17 @@ Note that this doesn't actually return the nav-control, but instead adds this pr
(let ((v1-54 (-> s5-0 best-dir)))
(let ((f0-45 1.0))
(.lvf vf1 (&-> v1-54 0 quad))
(.mul.vf vf2 vf1 vf1 :mask #b111)
(.mul.vf.xyz vf2 vf1 vf1)
(let ((a0-66 f0-45))
(.mov vf3 a0-66)
)
)
(.mul.x.vf acc vf0 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.z.vf.w vf2 vf0 vf2 acc)
(.isqrt.vf Q vf3 vf2 :fsf #b0 :ftf #b11)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b111)
(.mul.vf.xyz vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.nop.vf)
@@ -973,17 +973,17 @@ Note that this doesn't actually return the nav-control, but instead adds this pr
(let ((v1-55 (-> s5-0 best-dir 1)))
(let ((f0-46 1.0))
(.lvf vf1 (&-> v1-55 quad))
(.mul.vf vf2 vf1 vf1 :mask #b111)
(.mul.vf.xyz vf2 vf1 vf1)
(let ((a0-68 f0-46))
(.mov vf3 a0-68)
)
)
(.mul.x.vf acc vf0 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.z.vf.w vf2 vf0 vf2 acc)
(.isqrt.vf Q vf3 vf2 :fsf #b0 :ftf #b11)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b111)
(.mul.vf.xyz vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.nop.vf)
@@ -1027,17 +1027,17 @@ Note that this doesn't actually return the nav-control, but instead adds this pr
(let ((v1-1 (-> s5-0 in-dir)))
(let ((f0-1 1.0))
(.lvf vf1 (&-> v1-1 quad))
(.mul.vf vf2 vf1 vf1 :mask #b111)
(.mul.vf.xyz vf2 vf1 vf1)
(let ((a0-4 f0-1))
(.mov vf3 a0-4)
)
)
(.mul.x.vf acc vf0 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.z.vf.w vf2 vf0 vf2 acc)
(.isqrt.vf Q vf3 vf2 :fsf #b0 :ftf #b11)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b111)
(.mul.vf.xyz vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.nop.vf)
@@ -1065,7 +1065,7 @@ Note that this doesn't actually return the nav-control, but instead adds this pr
)
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov a1-3 vf1)
(set! (-> s5-0 dist2) a1-3)
(let ((f0-13 (-> arg0 closest-sphere-dist2))
@@ -1232,17 +1232,17 @@ Note that this doesn't actually return the nav-control, but instead adds this pr
(let ((a1-6 (-> v1-16 dir)))
(let ((f0-5 1.0))
(.lvf vf1 (&-> a1-6 quad))
(.mul.vf vf2 vf1 vf1 :mask #b111)
(.mul.vf.xyz vf2 vf1 vf1)
(let ((a2-4 f0-5))
(.mov vf3 a2-4)
)
)
(.mul.x.vf acc vf0 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.z.vf.w vf2 vf0 vf2 acc)
(.isqrt.vf Q vf3 vf2 :fsf #b0 :ftf #b11)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b111)
(.mul.vf.xyz vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.nop.vf)
@@ -1532,17 +1532,17 @@ Note that this doesn't actually return the nav-control, but instead adds this pr
(let ((t3-5 (-> v1-15 dir)))
(let ((f0-5 1.0))
(.lvf vf1 (&-> t3-5 quad))
(.mul.vf vf2 vf1 vf1 :mask #b111)
(.mul.vf.xyz vf2 vf1 vf1)
(let ((t4-6 f0-5))
(.mov vf3 t4-6)
)
)
(.mul.x.vf acc vf0 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.z.vf.w vf2 vf0 vf2 acc)
(.isqrt.vf Q vf3 vf2 :fsf #b0 :ftf #b11)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b111)
(.mul.vf.xyz vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.nop.vf)
@@ -1738,17 +1738,17 @@ Note that this doesn't actually return the nav-control, but instead adds this pr
(let ((v1-21 (-> arg1 pref-dir)))
(let ((f0-6 1.0))
(.lvf vf1 (&-> v1-21 quad))
(.mul.vf vf2 vf1 vf1 :mask #b111)
(.mul.vf.xyz vf2 vf1 vf1)
(let ((a0-12 f0-6))
(.mov vf3 a0-12)
)
)
(.mul.x.vf acc vf0 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.z.vf.w vf2 vf0 vf2 acc)
(.isqrt.vf Q vf3 vf2 :fsf #b0 :ftf #b11)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b111)
(.mul.vf.xyz vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.nop.vf)
@@ -1964,17 +1964,17 @@ Note that this doesn't actually return the nav-control, but instead adds this pr
(let ((a0-6 (-> v1-10 dir)))
(let ((f0-1 1.0))
(.lvf vf1 (&-> a0-6 quad))
(.mul.vf vf2 vf1 vf1 :mask #b111)
(.mul.vf.xyz vf2 vf1 vf1)
(let ((a1-8 f0-1))
(.mov vf3 a1-8)
)
)
(.mul.x.vf acc vf0 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.z.vf.w vf2 vf0 vf2 acc)
(.isqrt.vf Q vf3 vf2 :fsf #b0 :ftf #b11)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b111)
(.mul.vf.xyz vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.nop.vf)
@@ -2142,7 +2142,7 @@ Note that this doesn't actually return the nav-control, but instead adds this pr
)
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov v1-2 vf1)
(let ((f1-0 v1-2))
(let ((v1-3 arg0)
@@ -2153,7 +2153,7 @@ Note that this doesn't actually return the nav-control, but instead adds this pr
)
(.sub.vf vf1 vf3 vf2)
(.mul.vf vf1 vf1 vf1)
(.add.z.vf vf1 vf1 vf1 :mask #b1)
(.add.z.vf.x vf1 vf1 vf1)
(.mov v1-4 vf1)
(let ((v0-0 (>= f0-2 (fmin f1-0 v1-4))))
(when (not v0-0)
@@ -2355,11 +2355,11 @@ Note that this doesn't actually return the nav-control, but instead adds this pr
)
)
(.lvf vf1 (&-> (-> this travel) quad))
(.add.w.vf vf2 vf0 vf0 :mask #b1)
(.add.w.vf.x vf2 vf0 vf0)
(.mul.vf vf1 vf1 vf1)
(.mul.x.vf acc vf2 vf1 :mask #b1)
(.add.mul.y.vf acc vf2 vf1 acc :mask #b1)
(.add.mul.z.vf vf1 vf2 vf1 acc :mask #b1)
(.mul.x.vf.x acc vf2 vf1)
(.add.mul.y.vf.x acc vf2 vf1 acc)
(.add.mul.z.vf.x vf1 vf2 vf1 acc)
(.mov v1-117 vf1)
(let ((f0-15 v1-117)
(f1-10 (-> this nav nav-cull-radius))
@@ -2418,17 +2418,17 @@ Note that this doesn't actually return the nav-control, but instead adds this pr
(let ((t0-3 (-> a3-3 dir)))
(let ((f0-2 1.0))
(.lvf vf1 (&-> t0-3 quad))
(.mul.vf vf2 vf1 vf1 :mask #b111)
(.mul.vf.xyz vf2 vf1 vf1)
(let ((t1-2 f0-2))
(.mov vf3 t1-2)
)
)
(.mul.x.vf acc vf0 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.z.vf.w vf2 vf0 vf2 acc)
(.isqrt.vf Q vf3 vf2 :fsf #b0 :ftf #b11)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b111)
(.mul.vf.xyz vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.nop.vf)
@@ -2588,17 +2588,17 @@ Note that this doesn't actually return the nav-control, but instead adds this pr
(let ((a2-3 (-> a1-4 dir)))
(let ((f0-2 1.0))
(.lvf vf1 (&-> a2-3 quad))
(.mul.vf vf2 vf1 vf1 :mask #b111)
(.mul.vf.xyz vf2 vf1 vf1)
(let ((a3-2 f0-2))
(.mov vf3 a3-2)
)
)
(.mul.x.vf acc vf0 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.z.vf.w vf2 vf0 vf2 acc)
(.isqrt.vf Q vf3 vf2 :fsf #b0 :ftf #b11)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b111)
(.mul.vf.xyz vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.nop.vf)
@@ -2717,17 +2717,17 @@ Note that this doesn't actually return the nav-control, but instead adds this pr
(let ((v1-1 (-> this target-dir)))
(let ((f0-0 1.0))
(.lvf vf1 (&-> v1-1 quad))
(.mul.vf vf2 vf1 vf1 :mask #b111)
(.mul.vf.xyz vf2 vf1 vf1)
(let ((a0-4 f0-0))
(.mov vf3 a0-4)
)
)
(.mul.x.vf acc vf0 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.z.vf.w vf2 vf0 vf2 acc)
(.isqrt.vf Q vf3 vf2 :fsf #b0 :ftf #b11)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b111)
(.mul.vf.xyz vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.nop.vf)
@@ -2746,17 +2746,17 @@ Note that this doesn't actually return the nav-control, but instead adds this pr
(let ((v1-12 (-> this heading)))
(let ((f0-5 1.0))
(.lvf vf1 (&-> v1-12 quad))
(.mul.vf vf2 vf1 vf1 :mask #b111)
(.mul.vf.xyz vf2 vf1 vf1)
(let ((a0-9 f0-5))
(.mov vf3 a0-9)
)
)
(.mul.x.vf acc vf0 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.z.vf.w vf2 vf0 vf2 acc)
(.isqrt.vf Q vf3 vf2 :fsf #b0 :ftf #b11)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b111)
(.mul.vf.xyz vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.nop.vf)
@@ -2793,17 +2793,17 @@ Note that this doesn't actually return the nav-control, but instead adds this pr
(let ((v1-30 (-> this heading)))
(let ((f0-12 1.0))
(.lvf vf1 (&-> v1-30 quad))
(.mul.vf vf2 vf1 vf1 :mask #b111)
(.mul.vf.xyz vf2 vf1 vf1)
(let ((a0-15 f0-12))
(.mov vf3 a0-15)
)
)
(.mul.x.vf acc vf0 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.z.vf.w vf2 vf0 vf2 acc)
(.isqrt.vf Q vf3 vf2 :fsf #b0 :ftf #b11)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b111)
(.mul.vf.xyz vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.nop.vf)
@@ -2920,17 +2920,17 @@ Note that this doesn't actually return the nav-control, but instead adds this pr
(let ((v1-12 (-> this heading)))
(let ((f0-5 1.0))
(.lvf vf1 (&-> v1-12 quad))
(.mul.vf vf2 vf1 vf1 :mask #b111)
(.mul.vf.xyz vf2 vf1 vf1)
(let ((a0-3 f0-5))
(.mov vf3 a0-3)
)
)
(.mul.x.vf acc vf0 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.z.vf.w vf2 vf0 vf2 acc)
(.isqrt.vf Q vf3 vf2 :fsf #b0 :ftf #b11)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b111)
(.mul.vf.xyz vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.nop.vf)
@@ -3067,17 +3067,17 @@ Note that this doesn't actually return the nav-control, but instead adds this pr
(let ((v1-12 (-> s5-0 heading)))
(let ((f0-5 1.0))
(.lvf vf1 (&-> v1-12 quad))
(.mul.vf vf2 vf1 vf1 :mask #b111)
(.mul.vf.xyz vf2 vf1 vf1)
(let ((a0-3 f0-5))
(.mov vf3 a0-3)
)
)
(.mul.x.vf acc vf0 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.z.vf.w vf2 vf0 vf2 acc)
(.isqrt.vf Q vf3 vf2 :fsf #b0 :ftf #b11)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b111)
(.mul.vf.xyz vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.nop.vf)
@@ -3207,17 +3207,17 @@ Note that this doesn't actually return the nav-control, but instead adds this pr
(let ((a3-3 (-> a2-3 dir)))
(let ((f0-2 1.0))
(.lvf vf1 (&-> a3-3 quad))
(.mul.vf vf2 vf1 vf1 :mask #b111)
(.mul.vf.xyz vf2 vf1 vf1)
(let ((t0-2 f0-2))
(.mov vf3 t0-2)
)
)
(.mul.x.vf acc vf0 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.z.vf.w vf2 vf0 vf2 acc)
(.isqrt.vf Q vf3 vf2 :fsf #b0 :ftf #b11)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b111)
(.mul.vf.xyz vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.nop.vf)
@@ -3347,11 +3347,11 @@ Note that this doesn't actually return the nav-control, but instead adds this pr
(let ((s3-0 (-> this nav sphere-array s4-0)))
(vector-! (-> s5-0 right-dir) (-> this current-pos-local) (the-as vector s3-0))
(.lvf vf1 (&-> (-> s5-0 right-dir) quad))
(.add.w.vf vf2 vf0 vf0 :mask #b1)
(.add.w.vf.x vf2 vf0 vf0)
(.mul.vf vf1 vf1 vf1)
(.mul.x.vf acc vf2 vf1 :mask #b1)
(.add.mul.y.vf acc vf2 vf1 acc :mask #b1)
(.add.mul.z.vf vf1 vf2 vf1 acc :mask #b1)
(.mul.x.vf.x acc vf2 vf1)
(.add.mul.y.vf.x acc vf2 vf1 acc)
(.add.mul.z.vf.x vf1 vf2 vf1 acc)
(.mov v1-11 vf1)
(let ((f30-0 v1-11))
(vector-normalize! (-> s5-0 right-dir) 2.0)
@@ -3370,11 +3370,11 @@ Note that this doesn't actually return the nav-control, but instead adds this pr
(set! (-> this target-dir y) 0.0)
(vector+float*! (-> this velocity) (-> this velocity) (-> this target-dir) (-> this nav sec-per-frame))
(.lvf vf1 (&-> (-> this velocity) quad))
(.add.w.vf vf2 vf0 vf0 :mask #b1)
(.add.w.vf.x vf2 vf0 vf0)
(.mul.vf vf1 vf1 vf1)
(.mul.x.vf acc vf2 vf1 :mask #b1)
(.add.mul.y.vf acc vf2 vf1 acc :mask #b1)
(.add.mul.z.vf vf1 vf2 vf1 acc :mask #b1)
(.mul.x.vf.x acc vf2 vf1)
(.add.mul.y.vf.x acc vf2 vf1 acc)
(.add.mul.z.vf.x vf1 vf2 vf1 acc)
(.mov v1-25 vf1)
(let ((f0-11 v1-25)
(f1-4 (-> this nav target-speed))
@@ -3422,17 +3422,17 @@ Note that this doesn't actually return the nav-control, but instead adds this pr
(let ((v1-13 (-> this heading)))
(let ((f0-5 1.0))
(.lvf vf1 (&-> v1-13 quad))
(.mul.vf vf2 vf1 vf1 :mask #b111)
(.mul.vf.xyz vf2 vf1 vf1)
(let ((a0-5 f0-5))
(.mov vf3 a0-5)
)
)
(.mul.x.vf acc vf0 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.z.vf.w vf2 vf0 vf2 acc)
(.isqrt.vf Q vf3 vf2 :fsf #b0 :ftf #b11)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b111)
(.mul.vf.xyz vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.nop.vf)
@@ -3473,17 +3473,17 @@ Note that this doesn't actually return the nav-control, but instead adds this pr
(let ((v1-12 (-> s5-0 heading)))
(let ((f0-5 1.0))
(.lvf vf1 (&-> v1-12 quad))
(.mul.vf vf2 vf1 vf1 :mask #b111)
(.mul.vf.xyz vf2 vf1 vf1)
(let ((a0-3 f0-5))
(.mov vf3 a0-3)
)
)
(.mul.x.vf acc vf0 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.z.vf.w vf2 vf0 vf2 acc)
(.isqrt.vf Q vf3 vf2 :fsf #b0 :ftf #b11)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b111)
(.mul.vf.xyz vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.nop.vf)
+25 -25
View File
@@ -368,17 +368,17 @@
(let ((v1-12 (-> gp-0 heading)))
(let ((f0-5 1.0))
(.lvf vf1 (&-> v1-12 quad))
(.mul.vf vf2 vf1 vf1 :mask #b111)
(.mul.vf.xyz vf2 vf1 vf1)
(let ((a0-3 f0-5))
(.mov vf3 a0-3)
)
)
(.mul.x.vf acc vf0 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.z.vf.w vf2 vf0 vf2 acc)
(.isqrt.vf Q vf3 vf2 :fsf #b0 :ftf #b11)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b111)
(.mul.vf.xyz vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.nop.vf)
@@ -463,17 +463,17 @@
(let ((v1-12 (-> gp-0 heading)))
(let ((f0-5 1.0))
(.lvf vf1 (&-> v1-12 quad))
(.mul.vf vf2 vf1 vf1 :mask #b111)
(.mul.vf.xyz vf2 vf1 vf1)
(let ((a0-3 f0-5))
(.mov vf3 a0-3)
)
)
(.mul.x.vf acc vf0 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.z.vf.w vf2 vf0 vf2 acc)
(.isqrt.vf Q vf3 vf2 :fsf #b0 :ftf #b11)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b111)
(.mul.vf.xyz vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.nop.vf)
@@ -615,17 +615,17 @@
(let ((v1-14 (-> gp-0 heading)))
(let ((f0-5 1.0))
(.lvf vf1 (&-> v1-14 quad))
(.mul.vf vf2 vf1 vf1 :mask #b111)
(.mul.vf.xyz vf2 vf1 vf1)
(let ((a0-3 f0-5))
(.mov vf3 a0-3)
)
)
(.mul.x.vf acc vf0 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.z.vf.w vf2 vf0 vf2 acc)
(.isqrt.vf Q vf3 vf2 :fsf #b0 :ftf #b11)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b111)
(.mul.vf.xyz vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.nop.vf)
@@ -734,17 +734,17 @@
(let ((v1-14 (-> gp-0 heading)))
(let ((f0-5 1.0))
(.lvf vf1 (&-> v1-14 quad))
(.mul.vf vf2 vf1 vf1 :mask #b111)
(.mul.vf.xyz vf2 vf1 vf1)
(let ((a0-3 f0-5))
(.mov vf3 a0-3)
)
)
(.mul.x.vf acc vf0 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.z.vf.w vf2 vf0 vf2 acc)
(.isqrt.vf Q vf3 vf2 :fsf #b0 :ftf #b11)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b111)
(.mul.vf.xyz vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.nop.vf)
@@ -1947,17 +1947,17 @@ This commonly includes things such as:
(let ((v1-23 gp-0))
(let ((f0-2 1.0))
(.lvf vf1 (&-> v1-23 quad))
(.mul.vf vf2 vf1 vf1 :mask #b111)
(.mul.vf.xyz vf2 vf1 vf1)
(let ((a0-9 f0-2))
(.mov vf3 a0-9)
)
)
(.mul.x.vf acc vf0 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.z.vf.w vf2 vf0 vf2 acc)
(.isqrt.vf Q vf3 vf2 :fsf #b0 :ftf #b11)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b111)
(.mul.vf.xyz vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.nop.vf)
+15 -15
View File
@@ -242,17 +242,17 @@ and declared out of order (cannot use forward declared structures in inline arra
(let ((v0-0 arg0))
(let ((f0-0 1.0))
(.lvf vf1 (&-> v0-0 quad))
(.mul.vf vf2 vf1 vf1 :mask #b111)
(.mul.vf.xyz vf2 vf1 vf1)
(let ((v1-1 f0-0))
(.mov vf3 v1-1)
)
)
(.mul.x.vf acc vf0 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.z.vf.w vf2 vf0 vf2 acc)
(.isqrt.vf Q vf3 vf2 :fsf #b0 :ftf #b11)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b111)
(.mul.vf.xyz vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.nop.vf)
@@ -275,17 +275,17 @@ and declared out of order (cannot use forward declared structures in inline arra
(let ((v0-0 arg0))
(let ((f0-0 1.0))
(.lvf vf1 (&-> v0-0 quad))
(.mul.vf vf2 vf1 vf1 :mask #b111)
(.mul.vf.xyz vf2 vf1 vf1)
(let ((v1-2 f0-0))
(.mov vf3 v1-2)
)
)
(.mul.x.vf acc vf0 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.z.vf.w vf2 vf0 vf2 acc)
(.isqrt.vf Q vf3 vf2 :fsf #b0 :ftf #b11)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b111)
(.mul.vf.xyz vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.nop.vf)
@@ -313,17 +313,17 @@ and declared out of order (cannot use forward declared structures in inline arra
(let ((v1-1 (-> arg0 dir)))
(let ((f0-1 1.0))
(.lvf vf1 (&-> v1-1 quad))
(.mul.vf vf2 vf1 vf1 :mask #b111)
(.mul.vf.xyz vf2 vf1 vf1)
(let ((a1-2 f0-1))
(.mov vf3 a1-2)
)
)
(.mul.x.vf acc vf0 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.z.vf.w vf2 vf0 vf2 acc)
(.isqrt.vf Q vf3 vf2 :fsf #b0 :ftf #b11)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b111)
(.mul.vf.xyz vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.nop.vf)
+41 -41
View File
@@ -202,8 +202,8 @@
)
(.lvf vf4 (&-> a0-5 quad))
)
(.add.x.vf vf5 vf0 vf0 :mask #b1000)
(.add.x.vf vf5 vf4 vf6 :mask #b111)
(.add.x.vf.w vf5 vf0 vf0)
(.add.x.vf.xyz vf5 vf4 vf6)
(.svf (&-> a1-3 quad) vf5)
)
(let ((a1-4 (-> v1-12 1)))
@@ -213,8 +213,8 @@
)
(.lvf vf4 (&-> a0-6 quad))
)
(.add.x.vf vf5 vf0 vf0 :mask #b1000)
(.add.x.vf vf5 vf4 vf6 :mask #b111)
(.add.x.vf.w vf5 vf0 vf0)
(.add.x.vf.xyz vf5 vf4 vf6)
(.svf (&-> a1-4 quad) vf5)
)
(update-grid-for-objects-in-box
@@ -429,8 +429,8 @@
(.mov at-0 f0-0)
)
(.mov vf2 at-0)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.mov.vf.w vf1 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> v1-0 quad) vf1)
)
(let ((s3-1 (new 'stack-no-clear 'nav-find-poly-parms)))
@@ -455,8 +455,8 @@
(.mov at-1 f0-2)
)
(.mov vf2 at-1)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.mov.vf.w vf1 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> v1-7 quad) vf1)
)
)
@@ -1557,11 +1557,11 @@
)
(.lvf vf1 (&-> arg1 quad))
(.lvf vf2 (&-> arg2 quad))
(.sub.vf vf1 vf1 vf1 :mask #b1010)
(.sub.vf.yw vf1 vf1 vf1)
(.lvf vf3 (&-> arg3 quad))
(.sub.vf vf2 vf2 vf2 :mask #b1010)
(.sub.vf.yw vf2 vf2 vf2)
(.lvf vf12 (&-> arg0 quad))
(.sub.vf vf3 vf3 vf3 :mask #b1010)
(.sub.vf.yw vf3 vf3 vf3)
(.sub.vf vf4 vf2 vf1)
(.sub.vf vf9 vf1 vf12)
(.sub.vf vf5 vf3 vf2)
@@ -1659,11 +1659,11 @@
(f0-5 (* f0-3 f0-3))
)
(.lvf vf1 (&-> sv-20 quad))
(.add.w.vf vf2 vf0 vf0 :mask #b1)
(.add.w.vf.x vf2 vf0 vf0)
(.mul.vf vf1 vf1 vf1)
(.mul.x.vf acc vf2 vf1 :mask #b1)
(.add.mul.y.vf acc vf2 vf1 acc :mask #b1)
(.add.mul.z.vf vf1 vf2 vf1 acc :mask #b1)
(.mul.x.vf.x acc vf2 vf1)
(.add.mul.y.vf.x acc vf2 vf1 acc)
(.add.mul.z.vf.x vf1 vf2 vf1 acc)
(.mov v1-3 vf1)
(when (>= f0-5 v1-3)
(let ((s5-0 (new 'stack-no-clear 'nav-find-poly-parms)))
@@ -1710,17 +1710,17 @@
(let ((a0-2 (-> v1-2 dir)))
(let ((f0-1 1.0))
(.lvf vf1 (&-> a0-2 quad))
(.mul.vf vf2 vf1 vf1 :mask #b111)
(.mul.vf.xyz vf2 vf1 vf1)
(let ((a1-3 f0-1))
(.mov vf3 a1-3)
)
)
(.mul.x.vf acc vf0 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.z.vf.w vf2 vf0 vf2 acc)
(.isqrt.vf Q vf3 vf2 :fsf #b0 :ftf #b11)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b111)
(.mul.vf.xyz vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.nop.vf)
@@ -1765,9 +1765,9 @@
)
(.lvf vf4 (&-> v1-1 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf5 vf7 :mask #b111)
(.add.mul.w.vf vf6 vf4 vf0 acc :mask #b111)
(.add.x.vf.w vf6 vf0 vf0)
(.mul.x.vf.xyz acc vf5 vf7)
(.add.mul.w.vf.xyz vf6 vf4 vf0 acc)
(.svf (&-> a1-3 quad) vf6)
)
(let ((v1-2 arg0))
@@ -1776,17 +1776,17 @@
(let ((a0-2 (-> v1-2 dir)))
(let ((f0-2 1.0))
(.lvf vf1 (&-> a0-2 quad))
(.mul.vf vf2 vf1 vf1 :mask #b111)
(.mul.vf.xyz vf2 vf1 vf1)
(let ((a1-6 f0-2))
(.mov vf3 a1-6)
)
)
(.mul.x.vf acc vf0 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.z.vf.w vf2 vf0 vf2 acc)
(.isqrt.vf Q vf3 vf2 :fsf #b0 :ftf #b11)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b111)
(.mul.vf.xyz vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.nop.vf)
@@ -2179,17 +2179,17 @@
(let ((v1-9 sv-32))
(let ((f0-1 1.0))
(.lvf vf1 (&-> v1-9 quad))
(.mul.vf vf2 vf1 vf1 :mask #b111)
(.mul.vf.xyz vf2 vf1 vf1)
(let ((a0-11 f0-1))
(.mov vf3 a0-11)
)
)
(.mul.x.vf acc vf0 vf2 :mask #b1000)
(.add.mul.y.vf acc vf0 vf2 acc :mask #b1000)
(.add.mul.z.vf vf2 vf0 vf2 acc :mask #b1000)
(.mul.x.vf.w acc vf0 vf2)
(.add.mul.y.vf.w acc vf0 vf2 acc)
(.add.mul.z.vf.w vf2 vf0 vf2 acc)
(.isqrt.vf Q vf3 vf2 :fsf #b0 :ftf #b11)
(.wait.vf)
(.mul.vf vf1 vf1 Q :mask #b111)
(.mul.vf.xyz vf1 vf1 Q)
(.nop.vf)
(.nop.vf)
(.nop.vf)
@@ -2383,12 +2383,12 @@
(.outer.product.a.vf acc vf2 vf1)
(.outer.product.b.vf vf4 vf1 vf2 acc)
(.mul.vf vf5 vf4 vf4)
(.add.y.vf vf5 vf5 vf5 :mask #b1)
(.add.z.vf vf5 vf5 vf5 :mask #b1)
(.add.y.vf.x vf5 vf5 vf5)
(.add.z.vf.x vf5 vf5 vf5)
(.isqrt.vf Q vf0 vf5 :fsf #b11 :ftf #b0)
(.mov.vf vf4 vf0 :mask #b1000)
(.mov.vf.w vf4 vf0)
(.wait.vf)
(.mul.vf vf4 vf4 Q :mask #b111)
(.mul.vf.xyz vf4 vf4 Q)
(.nop.vf)
(.nop.vf)
(.svf (&-> v1-0 quad) vf4)
@@ -2498,11 +2498,11 @@
(when s3-0
(vector-! (-> sv-64 point) sv-76 (-> s3-0 bounds))
(.lvf vf1 (&-> (-> sv-64 point) quad))
(.add.w.vf vf2 vf0 vf0 :mask #b1)
(.add.w.vf.x vf2 vf0 vf0)
(.mul.vf vf1 vf1 vf1)
(.mul.x.vf acc vf2 vf1 :mask #b1)
(.add.mul.y.vf acc vf2 vf1 acc :mask #b1)
(.add.mul.z.vf vf1 vf2 vf1 acc :mask #b1)
(.mul.x.vf.x acc vf2 vf1)
(.add.mul.y.vf.x acc vf2 vf1 acc)
(.add.mul.z.vf.x vf1 vf2 vf1 acc)
(.mov v1-15 vf1)
(let ((f0-1 v1-15)
(f1-0 (-> s3-0 bounds w))
+22 -22
View File
@@ -146,11 +146,11 @@
(apply-gravity this sv-288 s0-0 arg0)
(let ((v1-34 sv-528))
(let ((a0-10 sv-528))
(.mov.vf vf6 vf0 :mask #b1000)
(.mov.vf.w vf6 vf0)
(.lvf vf4 (&-> a0-10 quad))
)
(.lvf vf5 (&-> sv-288 quad))
(.add.vf vf6 vf4 vf5 :mask #b111)
(.add.vf.xyz vf6 vf4 vf5)
(.svf (&-> v1-34 quad) vf6)
)
(when (< s0-0 (the-as int (+ (-> this root-joint-index) -1)))
@@ -158,11 +158,11 @@
(chain-physics-method-14 this sv-304 s0-0)
(let ((v1-40 sv-528))
(let ((a0-13 sv-528))
(.mov.vf vf6 vf0 :mask #b1000)
(.mov.vf.w vf6 vf0)
(.lvf vf4 (&-> a0-13 quad))
)
(.lvf vf5 (&-> sv-304 quad))
(.add.vf vf6 vf4 vf5 :mask #b111)
(.add.vf.xyz vf6 vf4 vf5)
(.svf (&-> v1-40 quad) vf6)
)
)
@@ -174,8 +174,8 @@
(.lvf vf4 (&-> v1-43 quad))
(.lvf vf5 (&-> a0-16 quad))
)
(.mov.vf vf6 vf0 :mask #b1000)
(.sub.vf vf6 vf4 vf5 :mask #b111)
(.mov.vf.w vf6 vf0)
(.sub.vf.xyz vf6 vf4 vf5)
(.svf (&-> sv-400 quad) vf6)
(let ((f28-1 (vector-normalize-ret-len! sv-400 1.0))
(f24-0 (vector-dot sv-400 s1-0))
@@ -198,9 +198,9 @@
(.mov vf3 v1-55)
)
)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.add.x.vf.w vf4 vf0 vf0)
(.mul.x.vf acc vf2 vf3)
(.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111)
(.add.mul.w.vf.xyz vf4 vf1 vf0 acc)
(.svf (&-> sv-384 quad) vf4)
(vector+float*! sv-528 s3-0 sv-400 f28-1)
)
@@ -213,8 +213,8 @@
(.lvf vf4 (&-> v1-61 quad))
(.lvf vf5 (&-> a0-27 quad))
)
(.mov.vf vf6 vf0 :mask #b1000)
(.sub.vf vf6 vf4 vf5 :mask #b111)
(.mov.vf.w vf6 vf0)
(.sub.vf.xyz vf6 vf4 vf5)
(.svf (&-> sv-432 quad) vf6)
(vector-normalize-ret-len! sv-432 1.0)
(set! sv-416 (new 'stack-no-clear 'vector))
@@ -224,8 +224,8 @@
(.lvf vf4 (&-> v1-64 quad))
(.lvf vf5 (&-> a0-30 quad))
)
(.mov.vf vf6 vf0 :mask #b1000)
(.sub.vf vf6 vf4 vf5 :mask #b111)
(.mov.vf.w vf6 vf0)
(.sub.vf.xyz vf6 vf4 vf5)
(.svf (&-> sv-416 quad) vf6)
(let ((f28-2 (vector-dot sv-432 sv-416)))
(vector--float*! sv-416 sv-416 sv-432 f28-2)
@@ -246,19 +246,19 @@
(let ((a0-37 f0-11))
(.mov vf3 a0-37)
)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.add.x.vf.w vf4 vf0 vf0)
(.mul.x.vf acc vf2 vf3)
(.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111)
(.add.mul.w.vf.xyz vf4 vf1 vf0 acc)
(.svf (&-> v1-73 quad) vf4)
)
(vector+! sv-528 (-> sv-272 position) (-> sv-272 velocity))
(let ((a2-9 (vector-! (new 'stack-no-clear 'vector) s3-0 sv-528)))
(.lvf vf1 (&-> a2-9 quad))
(.add.w.vf vf2 vf0 vf0 :mask #b1)
(.add.w.vf.x vf2 vf0 vf0)
(.mul.vf vf1 vf1 vf1)
(.mul.x.vf acc vf2 vf1 :mask #b1)
(.add.mul.y.vf acc vf2 vf1 acc :mask #b1)
(.add.mul.z.vf vf1 vf2 vf1 acc :mask #b1)
(.mul.x.vf.x acc vf2 vf1)
(.add.mul.y.vf.x acc vf2 vf1 acc)
(.add.mul.z.vf.x vf1 vf2 vf1 acc)
(.mov v1-78 vf1)
(let* ((f0-13 v1-78)
(f1-6 (* (-> this maximum-stretch) (-> this joint-length)))
@@ -306,8 +306,8 @@
(.mov vf2 v1-107)
)
)
(.add.x.vf vf1 vf0 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.add.x.vf.w vf1 vf0 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> sv-464 0 quad) vf1)
(set! sv-512 (-> s4-0 vector))
(set! sv-480 (-> s4-0 vector))
@@ -318,9 +318,9 @@
(.mov vf3 v1-113)
)
)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.add.x.vf.w vf4 vf0 vf0)
(.mul.x.vf acc vf2 vf3)
(.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111)
(.add.mul.w.vf.xyz vf4 vf1 vf0 acc)
(.svf (&-> sv-512 0 quad) vf4)
(set! (-> sv-272 old-x quad) (-> s4-0 vector 0 quad))
)
+25 -25
View File
@@ -198,9 +198,9 @@
)
(.lvf vf4 (&-> v1-0 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf5 vf7 :mask #b111)
(.add.mul.w.vf vf6 vf4 vf0 acc :mask #b111)
(.add.x.vf.w vf6 vf0 vf0)
(.mul.x.vf.xyz acc vf5 vf7)
(.add.mul.w.vf.xyz vf6 vf4 vf0 acc)
(.svf (&-> a2-0 quad) vf6)
)
(let ((a2-1 (-> this ang-momentum)))
@@ -213,9 +213,9 @@
)
(.lvf vf4 (&-> v1-1 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf5 vf7 :mask #b111)
(.add.mul.w.vf vf6 vf4 vf0 acc :mask #b111)
(.add.x.vf.w vf6 vf0 vf0)
(.mul.x.vf.xyz acc vf5 vf7)
(.add.mul.w.vf.xyz vf6 vf4 vf0 acc)
(.svf (&-> a2-1 quad) vf6)
)
(let* ((f0-3 (* 500000000.0 (-> this info mass)))
@@ -223,11 +223,11 @@
(f1-3 (* f1-1 f1-1))
)
(.lvf vf1 (&-> (-> this ang-momentum) quad))
(.add.w.vf vf2 vf0 vf0 :mask #b1)
(.add.w.vf.x vf2 vf0 vf0)
(.mul.vf vf1 vf1 vf1)
(.mul.x.vf acc vf2 vf1 :mask #b1)
(.add.mul.y.vf acc vf2 vf1 acc :mask #b1)
(.add.mul.z.vf vf1 vf2 vf1 acc :mask #b1)
(.mul.x.vf.x acc vf2 vf1)
(.add.mul.y.vf.x acc vf2 vf1 acc)
(.add.mul.z.vf.x vf1 vf2 vf1 acc)
(.mov v1-6 vf1)
(if (< f1-3 v1-6)
(vector-normalize! (-> this ang-momentum) f0-3)
@@ -270,9 +270,9 @@
)
(.lvf vf4 (&-> v1-0 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf5 vf7 :mask #b111)
(.add.mul.w.vf vf6 vf4 vf0 acc :mask #b111)
(.add.x.vf.w vf6 vf0 vf0)
(.mul.x.vf.xyz acc vf5 vf7)
(.add.mul.w.vf.xyz vf6 vf4 vf0 acc)
(.svf (&-> a1-1 quad) vf6)
)
(let ((s4-0 (new 'stack-no-clear 'quaternion)))
@@ -375,8 +375,8 @@
(.mul.x.vf acc vf1 vf5)
(.add.mul.y.vf acc vf2 vf5 acc)
(.add.mul.z.vf acc vf3 vf5 acc)
(.add.mul.w.vf vf7 vf4 vf0 acc :mask #b111)
(.sub.vf vf8 vf7 vf6 :mask #b111)
(.add.mul.w.vf.xyz vf7 vf4 vf0 acc)
(.sub.vf.xyz vf8 vf7 vf6)
(.svf (&-> arg1 move-dist quad) vf8)
(let ((s1-0 (the-as collide-cache-prim (-> s4-0 prims))))
(countdown (s0-0 (-> s4-0 num-prims))
@@ -428,7 +428,7 @@
(.mul.x.vf acc vf1 vf5)
(.add.mul.y.vf acc vf2 vf5 acc)
(.add.mul.z.vf acc vf3 vf5 acc)
(.add.mul.w.vf vf5 vf4 vf0 acc :mask #b111)
(.add.mul.w.vf.xyz vf5 vf4 vf0 acc)
(.svf (&-> v1-0 prim-core world-sphere quad) vf5)
(&+! v1-0 80)
)
@@ -498,14 +498,14 @@
(.lvf vf7 (&-> (-> s5-0 cquery) best-other-tri intersect quad))
(.lvf vf6 (&-> v1-37 prim-core world-sphere quad))
(.sub.vf vf8 vf6 vf7)
(.mul.vf vf9 vf8 vf8 :mask #b111)
(.mul.x.vf acc vf0 vf9 :mask #b1000)
(.add.mul.y.vf acc vf0 vf9 acc :mask #b1000)
(.add.mul.z.vf vf9 vf0 vf9 acc :mask #b1000)
(.mul.vf.xyz vf9 vf8 vf8)
(.mul.x.vf.w acc vf0 vf9)
(.add.mul.y.vf.w acc vf0 vf9 acc)
(.add.mul.z.vf.w vf9 vf0 vf9 acc)
(.isqrt.vf Q vf0 vf9 :fsf #b11 :ftf #b11)
(.mov.vf vf8 vf0 :mask #b1000)
(.mov.vf.w vf8 vf0)
(.wait.vf)
(.mul.vf vf8 vf8 Q :mask #b111)
(.mul.vf.xyz vf8 vf8 Q)
(.nop.vf)
(.nop.vf)
(.nop.vf)
@@ -711,9 +711,9 @@
)
(.lvf vf4 (&-> v1-46 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf5 vf7 :mask #b111)
(.add.mul.w.vf vf6 vf4 vf0 acc :mask #b111)
(.add.x.vf.w vf6 vf0 vf0)
(.mul.x.vf.xyz acc vf5 vf7)
(.add.mul.w.vf.xyz vf6 vf4 vf0 acc)
(.svf (&-> a1-20 quad) vf6)
)
(vector-rotate*! (-> this ang-velocity) (-> this ang-momentum) (-> this inv-i-world))
+5 -5
View File
@@ -337,8 +337,8 @@
(.mov at-0 f0-0)
)
(.mov vf2 at-0)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.mov.vf.w vf1 vf0)
(.mul.x.vf.xyz vf1 vf1 vf2)
(.svf (&-> v1-12 quad) vf1)
)
arg0
@@ -422,9 +422,9 @@
)
(.lvf vf4 (&-> a1-3 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf5 vf7 :mask #b111)
(.add.mul.w.vf vf6 vf4 vf0 acc :mask #b111)
(.add.x.vf.w vf6 vf0 vf0)
(.mul.x.vf.xyz acc vf5 vf7)
(.add.mul.w.vf.xyz vf6 vf4 vf0 acc)
(.svf (&-> t1-7 quad) vf6)
)
(vector-! (-> v1-2 initial-position) (-> v1-2 initial-position) arg3)

Some files were not shown because too many files have changed in this diff Show More