From 5eeaec0a8b75e561d26e8e64d111c1893fbd3ee3 Mon Sep 17 00:00:00 2001 From: Nathan Vegdahl Date: Wed, 19 Jun 2019 17:49:52 +0900 Subject: [PATCH] Use fmadd method in Jakob spectrum eval. --- sub_crates/spectral_upsampling/src/jakob.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sub_crates/spectral_upsampling/src/jakob.rs b/sub_crates/spectral_upsampling/src/jakob.rs index 3bc3105..549cba6 100644 --- a/sub_crates/spectral_upsampling/src/jakob.rs +++ b/sub_crates/spectral_upsampling/src/jakob.rs @@ -11,7 +11,7 @@ const RGB2SPEC_N_COEFFS: usize = 3; const TABLE_RES: usize = 64; // For the small table, what is the middle value used? -const MID_VALUE: f32 = 0.434; +const MID_VALUE: f32 = 0.5; lazy_static! { static ref ACES_TABLE: RGB2Spec = rgb2spec_load(""); @@ -257,12 +257,14 @@ pub struct RGB2Spec { //============================================================ // Coefficient -> eval functions +#[inline(always)] fn rgb2spec_fma(a: f32, b: f32, c: f32) -> f32 { a * b + c } +#[inline(always)] fn rgb2spec_fma_4(a: Float4, b: Float4, c: Float4) -> Float4 { - a * b + c + a.fmadd(b, c) } fn rgb2spec_eval(coeff: [f32; RGB2SPEC_N_COEFFS], lambda: f32) -> f32 {