diff --git a/mlx/backend/cpu/unary_ops.h b/mlx/backend/cpu/unary_ops.h index 1d8c0a457..20d9c60f6 100644 --- a/mlx/backend/cpu/unary_ops.h +++ b/mlx/backend/cpu/unary_ops.h @@ -140,7 +140,7 @@ struct ToFP8 { auto result_high = Simd(f_bits_high >> 20); result = select(f_bits < (121 << 23), result_low, result_high); - auto result_sat = Simd(fp8_max); + auto result_sat = Simd(0x7E); result = select(f_bits >= fp8_max, result_sat, result); return result | Simd(sign >> 24); } diff --git a/mlx/backend/metal/kernels/unary_ops.h b/mlx/backend/metal/kernels/unary_ops.h index c3a89892e..423c07f66 100644 --- a/mlx/backend/metal/kernels/unary_ops.h +++ b/mlx/backend/metal/kernels/unary_ops.h @@ -459,7 +459,7 @@ struct ToFP8 { f_bits ^= sign; if (f_bits >= fp8_max) { // Default behavior saturates to min/max - result = fp8_max; + result = 0x7E; } else { if (f_bits < (121 << 23)) { f_bits =