Fix build with LLVM 23 Before LLVM 24, __builtin_amdgcn_fdot2_f32_bf16 takes short2 operands, and implicit conversions between vector types are rejected. --- a/src/include/miopen/conv/device_grouped_conv_fwd.hpp +++ b/src/include/miopen/conv/device_grouped_conv_fwd.hpp @@ -17,7 +17,11 @@ { #if defined(__gfx950__) // gfx950 has a hardware bf16 dot; matches CK's half2_t path (v_dot2_f32_f16). +#if __clang_major__ >= 24 typedef __bf16 bf16x2_t __attribute__((ext_vector_type(2))); +#else + typedef short bf16x2_t __attribute__((ext_vector_type(2))); +#endif c = __builtin_amdgcn_fdot2_f32_bf16( __builtin_bit_cast(bf16x2_t, a), __builtin_bit_cast(bf16x2_t, b), c, false); #else