new vu1 renderer, added vcl preprocessor

This commit is contained in:
h4570
2020-12-24 14:35:13 +01:00
parent d60d42cac6
commit aeb25ad398
11 changed files with 273 additions and 268 deletions
+65 -45
View File
@@ -11,63 +11,83 @@
.global VU1Draw3D_CodeEnd
VU1Draw3D_CodeStart:
__v_draw3D_vcl_4:
; _LNOPT_w=[ normal2 ] 23 [23 0] 23 [__v_draw3D_vcl_4]
NOP lq VF01,0(VI00)
NOP xtop VI02
NOP lq VF02,1(VI00)
NOP lq VF06,1(VI02)
NOP lq VF09,2(VI02)
NOP lq VF08,3(VI02)
NOP lq VF07,4(VI02)
NOP lq VF03,2(VI00)
NOP iaddiu VI03,VI02,0x00000007
NOP ilw.w VI07,0(VI02)
NOP lq VF04,3(VI00)
NOP fcset 0
NOP lq.xyz VF05,0(VI02)
NOP iadd VI04,VI03,VI07
NOP iadd VI06,VI04,VI07
NOP sqi VF06,(VI06++)
; _LNOPT_w=[ normal2 ] 27 [27 0] 27 [__v_draw3D_vcl_4]
NOP xtop VI07
NOP lq VF01,0(VI07)
NOP ilw.y VI05,4(VI07)
NOP lq VF05,5(VI07)
NOP lq VF09,6(VI07)
NOP lq VF08,7(VI07)
NOP lq VF07,8(VI07)
NOP lq VF02,1(VI07)
NOP iaddiu VI03,VI07,0x0000000a
NOP iadd VI04,VI03,VI05
NOP lq VF03,2(VI07)
NOP iadd VI06,VI04,VI05
NOP loi 0x44fff000
NOP lq VF04,3(VI07)
NOP ilw.z VI02,4(VI07)
NOP sqi VF05,(VI06++)
NOP sqi VF09,(VI06++)
NOP sqi VF06,(VI06++)
NOP sqi VF05,(VI06++)
NOP sqi VF08,(VI06++)
NOP lq VF06,5(VI02)
NOP iadd VI05,VI04,VI07
NOP lq VF05,9(VI07)
NOP iaddiu VI07,VI00,0x00007fff
NOP iadd VI05,VI04,VI05
addi.xy VF06,VF00,I loi 0x492aaaaa
NOP fcset 0
NOP sqi VF07,(VI06++)
NOP iadd VI07,VI02,VI07
vertexLoop:
; _LNOPT_w=[ normal2 ] 21 [31 14] 31 [vertexLoop]
NOP iaddiu VI07,VI07,0x00000001
addi.z VF06,VF00,I iaddiu VI08,VI00,0
triangle_loop:
; _LNOPT_w=[ normal ] 37 [31 30] 45 [triangle_loop]
NOP lq VF07,0(VI03)
mulax ACC,VF01,VF07x sq VF06,1(VI06) ; STALL_LATENCY ?3
madday ACC,VF02,VF07y lq VF08,0(VI04)
maddaz ACC,VF03,VF07z iaddiu VI06,VI06,0x00000003
mulax ACC,VF01,VF07x iaddiu VI08,VI08,0x00000001 ; STALL_LATENCY ?3
madday ACC,VF02,VF07y NOP
maddaz ACC,VF03,VF07z NOP
maddw VF10,VF04,VF07w lq VF08,2(VI03)
mulax ACC,VF01,VF08x div Q,VF00w,VF10w ; STALL_LATENCY ?3
madday ACC,VF02,VF08y NOP
maddaz ACC,VF03,VF08z lq VF07,1(VI03)
maddw VF08,VF04,VF08w NOP
clipw.xyz VF10xyz,VF10w NOP
mulax ACC,VF01,VF07x NOP ; STALL_LATENCY ?1
madday ACC,VF02,VF07y div Q,VF00w,VF08w
maddaz ACC,VF03,VF07z lq VF09,0(VI04)
maddw VF07,VF04,VF07w NOP
clipw.xyz VF07xyz,VF07w div Q,VF00w,VF07w ; STALL_LATENCY ?3
NOP NOP
NOP NOP
NOP NOP
NOP NOP
NOP NOP
NOP NOP
mulq.xyz VF07,VF07,Q fcand VI01,262143
mulaw.xyz ACC,VF05,VF00w iaddiu VI03,VI03,0x00000001
madd.xyz VF07,VF07,VF05 iaddiu VI04,VI04,0x00000001 ; STALL_LATENCY ?2
mulq VF08,VF08,Q isubiu VI07,VI07,1
ftoi4.xyz VF07,VF07 iaddiu VI01,VI01,0x00007fff ; STALL_LATENCY ?2
NOP isw.w VI01,-1(VI06)
NOP sq VF08,-3(VI06)
NOP ibne VI07,VI02,vertexLoop
NOP sq.xyz VF07,-1(VI06)
mulaw.xyz ACC,VF06,VF00w NOP
mulq.xyz VF10,VF10,Q NOP
mulq VF09,VF09,Q sq VF05,1(VI06)
clipw.xyz VF07xyz,VF07w lq VF11,2(VI04)
clipw.xyz VF08xyz,VF08w div Q,VF00w,VF07w
mulq.xyz VF08,VF08,Q sq VF05,4(VI06)
madd.xyz VF09,VF10,VF06 sq VF09,0(VI06)
mulq VF10,VF11,Q sq VF05,7(VI06)
mulaw.xyz ACC,VF06,VF00w mfir.w VF09,VI07
madd.xyz VF08,VF08,VF06 fcand VI01,262143
NOP iaddiu VI01,VI01,0x00007fff
mulq.xyz VF10,VF07,Q sq VF10,6(VI06)
ftoi4.xyz VF09,VF09 mfir.w VF07,VI01
ftoi4.xyz VF07,VF08 lq VF11,1(VI04)
mulaw.xyz ACC,VF06,VF00w iaddiu VI03,VI03,0x00000003
madd.xyz VF08,VF10,VF06 iaddiu VI04,VI04,0x00000003
NOP sq VF09,2(VI06)
mulq VF09,VF11,Q sq VF07,8(VI06)
NOP mfir.w VF07,VI07
ftoi4.xyz VF07,VF08 iaddiu VI06,VI06,0x00000009
NOP sq VF09,-6(VI06) ; STALL_LATENCY ?1
NOP ibne VI08,VI02,triangle_loop
NOP sq VF07,-4(VI06)
; _LNOPT_w=[ normal2 ] 3 [1 0] 3 [__v_draw3D_vcl_7]
NOP xgkick VI05
NOP[E] NOP
NOP NOP
.align 4
VU1Draw3D_CodeEnd:
; iCount=47
; iCount=67
; register stats:
; 8 VU User integer
; 10 VU User floating point
; 9 VU User integer
; 12 VU User floating point
;-------------------------
;-------------------------
;-------------------------