init
This commit is contained in:
134
projekt_win/src/volcano_kernels.s
Normal file
134
projekt_win/src/volcano_kernels.s
Normal file
@ -0,0 +1,134 @@
|
||||
.intel_syntax noprefix
|
||||
.code64
|
||||
|
||||
.section .rodata
|
||||
.align 32
|
||||
|
||||
# Scalar constants
|
||||
vk_zero: .float 0.0
|
||||
vk_one: .float 1.0
|
||||
vk_eps: .float 0.0001
|
||||
vk_inv_temp_s: .float 0.00111111111
|
||||
vk_temp_norm_max_s: .float 1.6
|
||||
vk_shape_bias: .float 0.35
|
||||
vk_shape_scale: .float 0.65
|
||||
vk_buoyancy_k: .float 0.09
|
||||
vk_wind_bias: .float 0.4
|
||||
vk_wind_scale: .float 0.5
|
||||
vk_damp_scale: .float 0.02
|
||||
vk_damp_min: .float 0.90
|
||||
vk_damp_max: .float 0.998
|
||||
vk_min_rad2_s: .float 0.04
|
||||
vk_vent_rad2_s: .float 1.2
|
||||
vk_vent_scale_s: .float 5.2
|
||||
vk_life_base_s: .float 0.14
|
||||
vk_life_scale_s: .float 0.10
|
||||
vk_cool_base_s: .float 0.55
|
||||
vk_cool_scale_s: .float 0.6
|
||||
vk_cool_rad_s: .float 0.1
|
||||
|
||||
# Vector constants
|
||||
vk_vec_zero: .float 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
|
||||
vk_vec_one: .float 1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0
|
||||
vk_vec_four: .float 4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0
|
||||
vk_vec_six: .float 6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0
|
||||
vk_vec_eps: .float 0.000001,0.000001,0.000001,0.000001,0.000001,0.000001,0.000001,0.000001
|
||||
vk_vec_drop_eps: .float 0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001
|
||||
vk_vec_shape_bias: .float 0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35
|
||||
vk_vec_shape_scale: .float 0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65
|
||||
vk_vec_inv_temp: .float 0.00111111111,0.00111111111,0.00111111111,0.00111111111,0.00111111111,0.00111111111,0.00111111111,0.00111111111
|
||||
vk_vec_temp_max: .float 1.6,1.6,1.6,1.6,1.6,1.6,1.6,1.6
|
||||
vk_vec_min_rad2: .float 0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04
|
||||
vk_vec_vent_rad2: .float 1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2
|
||||
vk_vec_vent_scale: .float 5.2,5.2,5.2,5.2,5.2,5.2,5.2,5.2
|
||||
vk_vec_buoy_scale: .float 0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09
|
||||
vk_vec_wind_bias: .float 0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4
|
||||
vk_vec_wind_scale: .float 0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5
|
||||
vk_vec_damp_scale: .float 0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02
|
||||
vk_vec_damp_min: .float 0.90,0.90,0.90,0.90,0.90,0.90,0.90,0.90
|
||||
vk_vec_damp_max: .float 0.998,0.998,0.998,0.998,0.998,0.998,0.998,0.998
|
||||
vk_vec_life_base: .float 0.14,0.14,0.14,0.14,0.14,0.14,0.14,0.14
|
||||
vk_vec_life_scale: .float 0.10,0.10,0.10,0.10,0.10,0.10,0.10,0.10
|
||||
vk_vec_cool_base: .float 0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55
|
||||
vk_vec_cool_scale: .float 0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6
|
||||
vk_vec_cool_rad: .float 0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1
|
||||
vk_vec_fluid_min: .float 650.0,650.0,650.0,650.0,650.0,650.0,650.0,650.0
|
||||
vk_vec_inv_fluid: .float 0.00153846154,0.00153846154,0.00153846154,0.00153846154,0.00153846154,0.00153846154,0.00153846154,0.00153846154
|
||||
vk_vec_k_base: .float 0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18
|
||||
vk_vec_k_scale: .float 1.22,1.22,1.22,1.22,1.22,1.22,1.22,1.22
|
||||
vk_vec_max_out: .float 0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94
|
||||
vk_vec_max_temp: .float 1520.0,1520.0,1520.0,1520.0,1520.0,1520.0,1520.0,1520.0
|
||||
vk_vec_lava_heat_b: .float 420.0,420.0,420.0,420.0,420.0,420.0,420.0,420.0
|
||||
vk_vec_lava_heat_s: .float 100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0
|
||||
|
||||
.text
|
||||
|
||||
.macro FLOW_FROM_DROP_AVX dst, drop, kval, tmp
|
||||
# TODO: implement vector version of flowFromDrop:
|
||||
# max(0, drop) -> shape -> result = pos * k * shape
|
||||
.endm
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# float volcanoFlowFromDropAsm(float drop, float k);
|
||||
# -----------------------------------------------------------------------------
|
||||
.global volcanoFlowFromDropAsm
|
||||
volcanoFlowFromDropAsm:
|
||||
# TODO: scalar helper used by lava flow
|
||||
ret
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# void volcanoParticleStepAsm(...)
|
||||
# -----------------------------------------------------------------------------
|
||||
.global volcanoParticleStepAsm
|
||||
volcanoParticleStepAsm:
|
||||
# TODO: scalar single-particle step
|
||||
ret
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# void volcanoParticleStepBatchAsm(...)
|
||||
# -----------------------------------------------------------------------------
|
||||
.global volcanoParticleStepBatchAsm
|
||||
volcanoParticleStepBatchAsm:
|
||||
# TODO:
|
||||
# 1. split count into simdCount and scalar tail
|
||||
# 2. call volcanoParticleStepSIMDAsm for full 8-wide blocks
|
||||
# 3. finish remaining particles with scalar path
|
||||
ret
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# void volcanoParticleStepSIMDAsm(...)
|
||||
# -----------------------------------------------------------------------------
|
||||
.global volcanoParticleStepSIMDAsm
|
||||
volcanoParticleStepSIMDAsm:
|
||||
# TODO:
|
||||
# - load 8 particles (SoA)
|
||||
# - compute tempNorm, radius2, invR, ventPush
|
||||
# - update velX/velY/velZ
|
||||
# - apply damping
|
||||
# - update posX/posY/posZ
|
||||
# - update life and temp
|
||||
ret
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# void volcanoUpdateLavaFluxSIMDAsm(...)
|
||||
# -----------------------------------------------------------------------------
|
||||
.global volcanoUpdateLavaFluxSIMDAsm
|
||||
volcanoUpdateLavaFluxSIMDAsm:
|
||||
# TODO:
|
||||
# - iterate interior cells by rows
|
||||
# - process 8 cells at once
|
||||
# - compute fluidity, k coefficients, in/out flow
|
||||
# - clamp output and write lavaHeightNext
|
||||
ret
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# void volcanoDiffuseHeatSIMDAsm(...)
|
||||
# -----------------------------------------------------------------------------
|
||||
.global volcanoDiffuseHeatSIMDAsm
|
||||
volcanoDiffuseHeatSIMDAsm:
|
||||
# TODO:
|
||||
# - iterate interior cells by rows
|
||||
# - compute laplacian
|
||||
# - add lava heating, subtract cooling
|
||||
# - clamp to [ambientTemperature, 1520]
|
||||
ret
|
||||
Reference in New Issue
Block a user