[libc-commits] [clang] [compiler-rt] [flang] [libc] [libcxx] [lldb] [llvm] [RFC][Clang] Add __int256/__uint256 builtin types (PR #182733)

Xavier Roche via libc-commits libc-commits at lists.llvm.org
Mon Feb 23 04:12:12 PST 2026


================
@@ -1821,6 +1821,14 @@ void X86_64ABIInfo::classify(QualType Ty, uint64_t OffsetBase, Class &Lo,
     } else if (k == BuiltinType::Int128 || k == BuiltinType::UInt128) {
       Lo = Integer;
       Hi = Integer;
+    } else if (k == BuiltinType::Int256 || k == BuiltinType::UInt256) {
+      // 256-bit integers in aggregates cause the aggregate to be passed in
+      // memory. Standalone scalar __int256 arguments bypass SysV ABI
+      // classification and are emitted as direct i256 in IR, with the LLVM
+      // backend handling register lowering (4 x i64 GPRs).
+      // This differs from _BitInt(256) which always uses sret/byval.
----------------
xroche wrote:

Do we need this comment ?

https://github.com/llvm/llvm-project/pull/182733


More information about the libc-commits mailing list