diff options
Diffstat (limited to 'softfloat/fall_maxmin.c')
-rw-r--r-- | softfloat/fall_maxmin.c | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/softfloat/fall_maxmin.c b/softfloat/fall_maxmin.c index 32a9ade..f1efa87 100644 --- a/softfloat/fall_maxmin.c +++ b/softfloat/fall_maxmin.c @@ -72,10 +72,26 @@ float ## bits ## _t f ## bits ## _min( float ## bits ## _t a, float ## bits ## _ } \ } -COMPARE_MAX(a, b, 16); -COMPARE_MAX(a, b, 32); -COMPARE_MAX(a, b, 64); +COMPARE_MAX(a, b, 16) +COMPARE_MAX(a, b, 32) +COMPARE_MAX(a, b, 64) -COMPARE_MIN(a, b, 16); -COMPARE_MIN(a, b, 32); -COMPARE_MIN(a, b, 64); +COMPARE_MIN(a, b, 16) +COMPARE_MIN(a, b, 32) +COMPARE_MIN(a, b, 64) + +bfloat16_t bf16_max( bfloat16_t a, bfloat16_t b ) +{ + float32_t f32A = { (uint32_t)a.v << 16 }; + float32_t f32B = { (uint32_t)b.v << 16 }; + + return f32_to_bf16 ( f32_max( f32A, f32B ) ); +} + +bfloat16_t bf16_min( bfloat16_t a, bfloat16_t b ) +{ + float32_t f32A = { (uint32_t)a.v << 16 }; + float32_t f32B = { (uint32_t)b.v << 16 }; + + return f32_to_bf16 ( f32_min( f32A, f32B ) ); +} |