pengfei added inline comments.
================ Comment at: clang/lib/Basic/Targets/X86.cpp:381 HasBFloat16 = SSELevel >= SSE2; ---------------- codemzs wrote: > rjmccall wrote: > > pengfei wrote: > > > I'm not sure if I understand the meaning of `HasFullBFloat16`. If it is > > > used for target that supports arithmetic `__bf16`, we should not use > > > `+fullbf16` but always enable it for SSE2, i.e., `HasFullBFloat16 = > > > SSELevel >= SSE2`. Because X86 GCC already supports arithmetic for > > > `__bf16`. > > > > > > If this is used in the way like `HasLegalHalfType`, we should enable it > > > once we have a full BF16 ISA on X86. `fullbf16` doesn't make much sense > > > to me. > > At the moment, we haven't done the work to emulate BFloat16 arithmetic in > > any of the three ways we can do that: Clang doesn't promote it in IRGen, > > LLVM doesn't promote it in legalization, and we don't have compiler-rt > > functions for it. If we emit these instructions, they'll just sail through > > LLVM and fail in the backend. So in the short term, we have to restrict > > this to targets that directly support BFloat16 arithmetic in hardware, > > which doesn't include x86. > > > > Once we have that emulation support, I agree that the x86 targets should > > enable this whenever they would enable `__bf16`. > @rjmccall, I concur and just wanted to confirm this change indeed intends to > provide `BFloat16` emulation support, utilizing excess precision for > promotion to `float`. The `HasFullBFloat16` switch is designed to determine > excess precision support automatically when the hardware does not natively > support `bfloat16` arithmetic. > LLVM doesn't promote it in legalization, and we don't have compiler-rt > functions for it. That's not true: https://godbolt.org/z/jxf5E83vG. > The `HasFullBFloat16` switch is designed to determine excess precision > support automatically when the hardware does not natively support bfloat16 > arithmetic. Makes sense to me. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D150913/new/ https://reviews.llvm.org/D150913 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits