@@ -267,15 +267,21 @@ inline bfloat16_t bf16(freg_t r) { return bf16(unboxBF16(r)); }
267267inline float32_t f32 (freg_t r) { return f32 (unboxF32 (r)); }
268268inline float64_t f64 (freg_t r) { return f64 (unboxF64 (r)); }
269269inline float128_t f128 (freg_t r) { return r; }
270+ inline float16_t f16 (freg_t r, reg_t altfmt) { return altfmt ? bf16 (r) : f16 (r); }
271+ inline float32_t f32 (freg_t r, UNUSED reg_t altfmt) { return f32 (r); }
272+ inline float64_t f64 (freg_t r, UNUSED reg_t altfmt) { return f64 (r); }
270273inline freg_t freg (float16_t f) { return { ((uint64_t )-1 << 16 ) | f.v , (uint64_t )-1 }; }
271274inline freg_t freg (float32_t f) { return { ((uint64_t )-1 << 32 ) | f.v , (uint64_t )-1 }; }
272275inline freg_t freg (float64_t f) { return { f.v , (uint64_t )-1 }; }
273276inline freg_t freg (float128_t f) { return f; }
274277#define F16_SIGN ((uint16_t )1 << 15 )
278+ #define BF16_SIGN F16_SIGN
275279#define F32_SIGN ((uint32_t )1 << 31 )
276280#define F64_SIGN ((uint64_t )1 << 63 )
277281#define fsgnj16 (a, b, n, x ) \
278282 f16 ((f16 (a).v & ~F16_SIGN) | ((((x) ? f16(a).v : (n) ? F16_SIGN : 0) ^ f16(b).v) & F16_SIGN))
283+ #define bfsgnj16 (a, b, n, x ) \
284+ bf16 ((bf16 (a).v & ~BF16_SIGN) | ((((x) ? bf16(a).v : (n) ? BF16_SIGN : 0) ^ bf16(b).v) & BF16_SIGN))
279285#define fsgnj32 (a, b, n, x ) \
280286 f32 ((f32 (a).v & ~F32_SIGN) | ((((x) ? f32(a).v : (n) ? F32_SIGN : 0) ^ f32(b).v) & F32_SIGN))
281287#define fsgnj64 (a, b, n, x ) \
0 commit comments