[PATCH] D93377: [Clang] Add __ibm128 type to represent ppc_fp128

Qiu Chaofan via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Aug 26 19:09:27 PDT 2021


qiucf marked 2 inline comments as done.
qiucf added inline comments.


================
Comment at: clang/include/clang/Basic/TargetInfo.h:131
+    Float128,
+    Ibm128
   };
----------------
rjmccall wrote:
> This is necessary because it's possible to derive this type from a mode attribute?
Yes, `__attribute__((mode(IF)))`


================
Comment at: clang/lib/CodeGen/TargetInfo.cpp:5159
         BT->getKind() == BuiltinType::LongDouble ||
+        BT->getKind() == BuiltinType::Ibm128 ||
         (getContext().getTargetInfo().hasFloat128Type() &&
----------------
rjmccall wrote:
> I hesitate to ask this, but does `__ibm128` form homogeneous aggregates with `double`s?
> Homogeneous floating-point aggregates can have up to four IBM EXTENDED PRECISION members, four IEEE BINARY 128 QUADRUPLE PRECISION members, four _Decimal128 members, or eight members of other floating-point types. (Unions are treated as their largest member. For homogeneous unions, different union alternatives may have different sizes, provided that all union members are homogeneous with respect to each other.) They are passed in floating-point registers if parameters of that type would be passed in floating-point registers. They are passed in vector registers if parameters of that type would be passed in vector registers. They are passed as if each member was specified as a separate parameter.

Yes.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D93377/new/

https://reviews.llvm.org/D93377



More information about the cfe-commits mailing list