From 4981b3c6710eaac7cb4fc2eb92821b47db74f2ff Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Thu, 2 Apr 2026 13:36:48 -1000 Subject: [PATCH] [light] Use reciprocal multiply in normalize_color Replace 3 software float divides (__divsf3) with 1 divide + 3 native mul.s instructions. Xtensa has no FPU divide, so __divsf3 is a ~20-30 cycle software routine. This saves ~40-60 cycles per normalize_color call for +8 bytes of flash. --- esphome/components/light/light_color_values.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/esphome/components/light/light_color_values.h b/esphome/components/light/light_color_values.h index a2c2dbca46..fa286a3941 100644 --- a/esphome/components/light/light_color_values.h +++ b/esphome/components/light/light_color_values.h @@ -104,9 +104,10 @@ class LightColorValues { this->green_ = 1.0f; this->blue_ = 1.0f; } else { - this->red_ /= max_value; - this->green_ /= max_value; - this->blue_ /= max_value; + float inv = 1.0f / max_value; + this->red_ *= inv; + this->green_ *= inv; + this->blue_ *= inv; } } }