LLVM/project 34e6a70clang/lib/CodeGen CodeGenModule.cpp, clang/test/CodeGen/AArch64 ptrauth-function-attributes-synthetic.c

[clang][AArch64] Set hardening fn attrs on synthetic functions

Compiler-synthesized functions such as `__llvm_gcov_writeout`,
`__llvm_gcov_reset` and `__llvm_gcov_init` were previously never receiving the
AArch64 hardening function attributes (ptrauth-returns, ptrauth-auth-traps,
ptrauth-indirect-gotos and aarch64-jump-table-hardening) since the
attributes were only emitted by Clang and gated by `PointerAuthOptions`
structure's corresponding fields. See `setPointerAuthFnAttributes` and
`initPointerAuthFnAttributes` member functions of `TargetCodeGenInfo`.

This patch resolves this in the same manner as #83153 does for several
other attributes. Particularly, Clang now emits corresponding 4 module
flags (conditionally on whether the related feature is enabled) with Max
behavior, and LLVM's `Function::createWithDefaultAttr` derives the matching
function attributes from them. Max behavior with conditional emission is
safe because none of these features affect ABI, so promoting an absent
flag on module merge cannot break compatibility.
DeltaFile
+41-0clang/test/CodeGen/AArch64/ptrauth-function-attributes-synthetic.c
+21-0clang/lib/CodeGen/CodeGenModule.cpp
+14-0llvm/test/Instrumentation/AddressSanitizer/ptrauth-module-flags-aarch64.ll
+4-0llvm/lib/IR/Function.cpp
+80-04 files

LLVM/project 119b31fllvm/include/llvm/CodeGen SDPatternMatch.h TargetLowering.h, llvm/lib/CodeGen/SelectionDAG DAGCombiner.cpp

[DAGCombiner] Fold NaN-guard fptosi/fptoui select to saturating variant (#201435)

Fold select (setcc X, 0, SETUO), 0, (fp_to_sint/fp_to_uint X) to
fp_to_sint_sat/fp_to_uint_sat in the generic DAG combiner, gated by
shouldConvertFpToSat. Also handles the SETO form with swapped arms, and
looks through an AND mask on the conversion result. Lit tests added for
AMDGPU and AArch64.

Assisted-by: Claude Code
DeltaFile
+212-0llvm/test/CodeGen/AMDGPU/fptoi-nan-guard-fold.ll
+172-0llvm/test/CodeGen/AArch64/fptoi-nan-guard-fold.ll
+57-0llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
+11-0llvm/include/llvm/CodeGen/SDPatternMatch.h
+3-2llvm/include/llvm/CodeGen/TargetLowering.h
+455-25 files

LLVM/project 444ea3ellvm/lib/Target/AMDGPU AMDGPULegalizerInfo.cpp

AMDGPU/GlobalISel: Clean up fp LLT usage in AMDGPULegalizerInfo (#210999)

Remove local variables in favor of global F16/BF16/F32/F64/V2F16/V2BF16.
These are now proper floating point LLTs instead of LLT::scalar.
A couple of legalizer actions now use fp extended LLT for type checks.
This is intended and is planned for all floating point opcodes.
In most cases the current S16/S32/S64 action on floating point opcodes was
intended for F16/F32/F64, and we will need to define an action for BF16.
DeltaFile
+28-71llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
+28-711 files

LLVM/project 7b159b6clang/docs ReleaseNotes.md, clang/include/clang/Basic DiagnosticLexKinds.td

[Clang] Defaults `-Wunicode-whitespace` to an error. (#210945)

Clang accepts some Unicode whitespaces in some context. There are a few
issues with this:
 - The support is incomplete and inconsistent, as illustrated in #38934
- We are not consistent with the Unicode specs (tr1, tr55) in that we
treat U+0028/0+0029 as horizontal separators while Unicode consider them
vertical.

Ultimately, Unicode whitespaces are more likely than not unintended.
Neither GCC nor MSVC support this extension.

Fixes #38934.
DeltaFile
+5-0clang/docs/ReleaseNotes.md
+2-2clang/include/clang/Basic/DiagnosticLexKinds.td
+2-2clang/test/Lexer/unicode.c
+2-1clang/lib/Lex/Lexer.cpp
+1-1clang/test/Analysis/mig.mm
+12-65 files

LLVM/project 754c2bcllvm/test/Analysis/ScalarEvolution max-backedge-taken-count-guard-info.ll

[SCEV][NFC] Precommit tests for MatchRangeCheckIdiom through zext (#210978)

'zext(X - 1) ult C'  =>  'X in [1, C+1)'; 
also ugt case (wrapping range)

Alive2 proof: https://alive2.llvm.org/ce/z/zcdv_2
DeltaFile
+149-0llvm/test/Analysis/ScalarEvolution/max-backedge-taken-count-guard-info.ll
+149-01 files

LLVM/project 17ac8fdlibcxx/include/__vector layout.h vector.h, libcxx/test/libcxx/containers/sequences/vector incomplete_type.compile.pass.cpp

[libc++] Don't require complete types in vector<T>::empty() (#210754)

This was previously not required, but the patch to introduce a new
size-based vector layout unintentionally added this new requirement. We
almost certainly not want to promise this guarantee going forward, but
we should actually land this change explicitly and consider the
transition story, not do it as a fallout of another refactoring.

Fixes #210732
DeltaFile
+27-0libcxx/test/libcxx/containers/sequences/vector/incomplete_type.compile.pass.cpp
+11-0libcxx/include/__vector/layout.h
+1-1libcxx/include/__vector/vector.h
+39-13 files

LLVM/project 739b48cclang/test/Driver freebsd.c, flang/test/Driver linker-options.f90 pic-flags.f90

fixup! [Clang] Switch to Default PIE on FreeBSD
DeltaFile
+14-71clang/test/Driver/freebsd.c
+3-11flang/test/Driver/linker-options.f90
+0-1flang/test/Driver/pic-flags.f90
+17-833 files

LLVM/project b02de9dllvm/include/llvm/CodeGen/GlobalISel Utils.h, llvm/lib/CodeGen/GlobalISel Utils.cpp MachineIRBuilder.cpp

[GlobalISel] Use correct fp semantics when building constants. (#210190)

This bug can materialize as a `bfloat 1.0` becoming `0x3C00` which is
the bit pattern for `half 1.0`. After this change, `0x3F80` is correctly
returned.
The fix is to use the destination type to convert the provided
constant's semantics in `buildFConstant`. Added a unit test.
Removed `getAPFloatFromSize`, no more users.
DeltaFile
+18-0llvm/unittests/CodeGen/GlobalISel/MachineIRBuilderTest.cpp
+0-13llvm/lib/CodeGen/GlobalISel/Utils.cpp
+5-3llvm/lib/CodeGen/GlobalISel/MachineIRBuilder.cpp
+0-3llvm/include/llvm/CodeGen/GlobalISel/Utils.h
+23-194 files

LLVM/project f82f969llvm/include/llvm/MC MCDXContainerWriter.h, llvm/lib/MC MCDXContainerWriter.cpp

[DirectX] Add slim debug support (#204459)

When DXC is called with `/Zs` flag, it emits "slim" debug info. It means
that ILDB section is omitted from the main DXContainer output and from
the output PDB file.

This patch reimplements similar behavior in llc, introducing
`--dx-slim-debug` flag.
DeltaFile
+20-0llvm/test/CodeGen/DirectX/ContainerData/ContainerFlags.ll
+12-0llvm/lib/MC/MCDXContainerWriter.cpp
+5-2llvm/lib/Target/DirectX/DXILWriter/DXILWriterPass.cpp
+1-5llvm/include/llvm/MC/MCDXContainerWriter.h
+38-74 files

LLVM/project e5a5c5dflang/lib/Semantics check-omp-variant.cpp check-omp-structure.h, flang/test/Semantics/OpenMP declare-variant-restriction.f90

[flang][OpenMP] Add semantic checks for two DECLARE VARIANT restrictions (#209528)

Diagnose two DECLARE VARIANT restrictions from the OpenMP specification
(5.2 [7.5], 6.0 [9.6]) that were previously accepted without error:
- If a procedure is determined to be a function variant through more
than one DECLARE VARIANT directive, the construct selector set of their
context selectors must be the same.
- A procedure determined to be a function variant may not be specified
as a base function in another DECLARE VARIANT directive.

Assisted-by: Cursor
DeltaFile
+184-0flang/test/Semantics/OpenMP/declare-variant-restriction.f90
+135-16flang/lib/Semantics/check-omp-variant.cpp
+12-0flang/lib/Semantics/check-omp-structure.h
+331-163 files

LLVM/project 7cd9ceellvm/lib/Target/X86 X86TargetTransformInfo.cpp, llvm/test/Analysis/CostModel/X86 reduce-add.ll reduce-fadd.ll

[CostModel][X86] getArithmeticReductionCost - add missing type split handling for AVX512 types (#210994)
DeltaFile
+8-8llvm/test/Analysis/CostModel/X86/reduce-add.ll
+10-0llvm/lib/Target/X86/X86TargetTransformInfo.cpp
+2-2llvm/test/Analysis/CostModel/X86/reduce-fadd.ll
+20-103 files

LLVM/project 9eac681flang/lib/Optimizer/Passes Pipelines.cpp, flang/test/Fir basic-program.fir

[Flang] [OpenMP] Run `MarkDeclareTarget` pass again before `HostOpFiltering` (#210049)

Fixes #209123.

The power operation `math.ipowi` is converted to a function by
`ConvertMathToFuncs`. When used in a target region, this pass runs well
after `MarkDeclareTarget` which causes the newly created power function
to not have the `omp.declare_target` attribute, which in turn trips up
the `HostOpLowering` pass. Detailed investigation
[here](https://github.com/llvm/llvm-project/issues/209123#issuecomment-4991765854).

Right now, I've just added a couple of lines to run `MarkDeclareTarget`
again, before `HostOpFiltering`. Since I'm quite new to this, I'd like
some help on whether this is acceptable, or should the
`MarkDeclareTarget` pass be moved to after `ConvertMathToFuncs` and
before `HostOpFiltering`.
DeltaFile
+30-0flang/test/Integration/OpenMP/declare-target-funcs.f90
+5-0flang/lib/Optimizer/Passes/Pipelines.cpp
+1-0flang/test/Fir/basic-program.fir
+36-03 files

LLVM/project 13cd8e0llvm/test/CodeGen/AMDGPU llvm.amdgcn.permlane.ll, llvm/test/CodeGen/AMDGPU/GlobalISel legalize-load-global.mir legalize-load-local.mir

Rebase, address comments

Created using spr 1.3.7
DeltaFile
+9,398-9,218llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-load-global.mir
+6,993-6,921llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-load-local.mir
+5,803-5,808llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-load-private.mir
+3,842-3,722llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-load-constant.mir
+2,196-5,244llvm/test/CodeGen/AMDGPU/GlobalISel/insertelement.i8.ll
+3,572-3,745llvm/test/CodeGen/AMDGPU/llvm.amdgcn.permlane.ll
+31,804-34,6581,968 files not shown
+190,268-130,4121,974 files

LLVM/project 39a774aclang/test/CodeGen/PowerPC ppc-float16-homogeneous-aggregate.c ppc-complex-float16.c

[PowerPC] Add _Complex _Float16 and homogeneous-aggregate ABI tests

Pin down two calling-convention decisions requested in review:

- _Complex _Float16 is passed and returned as two scalar half components
  (real, imaginary), each in an FPR, consistent with the scalar rule and
  the psABI treatment of complex types.
- A struct of _Float16 members is not a homogeneous floating-point
  aggregate: it is passed as an integer aggregate (GPRs on ELFv2, byval
  on AIX), contrasted with a float aggregate that does use FPRs. The HFA
  question for _Float16 is deliberately left to the psABI.
DeltaFile
+93-0clang/test/CodeGen/PowerPC/ppc-float16-homogeneous-aggregate.c
+66-0clang/test/CodeGen/PowerPC/ppc-complex-float16.c
+159-02 files

LLVM/project 8ac25faclang/test/CodeGen/PowerPC half-float16-ppc.c, llvm/lib/Target/PowerPC PPCISelLowering.cpp

[PowerPC] Fix f16 int conversions, varargs and calling convention

Fix a set of defects in the f16 support found by runtime testing on
Power10 hardware (Linux ELFv2 and AIX) and by review:

- FP_TO_SINT/FP_TO_UINT with an f16 operand are keyed by the legalizer on
  their (legal) integer result type, so the operand was never promoted and
  mis-selected as a double-precision convert, producing silently wrong
  results. Add a DAG combine that extends the operand to f32 first.
- SINT_TO_FP/UINT_TO_FP with an f16 result fell back to a nonexistent
  __floatdihf/__floatundihf libcall for i64 sources. Round through f64
  (fcfid/xscvsxddp then xscvdphp) with a matching combine.
- A variadic f16 argument on ELFv2 hit a BITCAST width assertion in
  LowerCall_64SVR4 when producing the GPR copy of an unnamed FP argument.
  Handle f16 with BITCAST to i16 then ANY_EXTEND, mirroring the f32 path.
- The CC_PPC64_ELF shadow-GPR helper did not count f16, so a scalar f16
  argument failed to reserve its GPR doubleword in the CCState analysis
  used for tail-call and stack-size decisions.
- Map VHFRC to the 8-byte VSX spill slot: the 16-bit value lives in the

    [7 lines not shown]
DeltaFile
+1,283-709llvm/test/CodeGen/PowerPC/half-float16-ppc.ll
+286-83clang/test/CodeGen/PowerPC/half-float16-ppc.c
+117-22llvm/lib/Target/PowerPC/PPCISelLowering.cpp
+58-79llvm/test/CodeGen/PowerPC/half.ll
+105-0llvm/test/CodeGen/PowerPC/f16-elfv2-arg-overflow.ll
+65-9llvm/test/CodeGen/PowerPC/f16-aix-psa.ll
+1,914-9025 files not shown
+1,950-92711 files

LLVM/project ef06063llvm/lib/Target/PowerPC PPCISelLowering.cpp PPCInstrVSX.td, llvm/test/CodeGen/PowerPC f16-strictfp.ll f128-conv.ll

[PowerPC] Add f16 strict-FP support

Registering f16 as a legal type left every STRICT_* opcode at its Legal
default with no selection pattern, so any strict-FP operation on
_Float16 failed to select. Fix the strict path end to end:

- Promote the strict arithmetic, rounding, transcendental and compare
  opcodes (STRICT_FSETCC/STRICT_FSETCCS) to f32 via F16StrictPromoteOps.
- Switch the P9 conversion patterns to any_fpround/any_fpextend so the
  strict nodes select XSCVDPHP/XSCVHPDP directly.
- Make LowerFP_EXTEND strict-aware (thread the chain) and route P9
  f16 -> f128 through xscvhpdp + xscvdpqp instead of regressing to an
  __extendhfsf2 libcall; register STRICT_FP_EXTEND Custom for the f16
  source cases, re-applied after the generic f32/f64 Legal setting that
  would otherwise clobber it.
- Build STRICT_FP_ROUND in the int-to-fp combine with a target rounding
  mode constant, fixing an "Invalid STRICT_FP_ROUND!" assertion on
  strict sitofp/uitofp to f16.
- Suppress register pressure set generation for VHFRC, which shares the

    [4 lines not shown]
DeltaFile
+319-0llvm/test/CodeGen/PowerPC/f16-strictfp.ll
+124-135llvm/lib/Target/PowerPC/PPCISelLowering.cpp
+6-6llvm/lib/Target/PowerPC/PPCInstrVSX.td
+1-9llvm/test/CodeGen/PowerPC/f128-conv.ll
+2-2llvm/lib/Target/PowerPC/PPCRegisterInfo.td
+452-1525 files

LLVM/project 638eb37clang/include/clang/Options Options.td, clang/lib/Basic/Targets PPC.cpp

[PowerPC] Remove the float16 target feature; make -mfloat16 front-end-only

Delete FeatureFloat16 and the HasFloat16 predicate from PPC.td and stop
emitting +float16 from the driver. -mfloat16 is now marshalled to
LangOpts.PPCFloat16 and forwarded to cc1 directly; its validation (Power8+
requirement, -msoft-float conflict) moves from the driver feature handling
into PPCTargetInfo::adjust().

The flag is purely a source-level admission gate for the _Float16 type.
It produces no LLVM target feature and has no effect on the
target-features attribute, so ABI and code generation depend only on
hardware capability (hasP8Vector() && hasHardFloat()): two translation
units compiled with and without -mfloat16 have identical calling
conventions.
DeltaFile
+30-17clang/test/Driver/ppc-float16-support-check.c
+10-11clang/lib/Basic/Targets/PPC.cpp
+4-2clang/include/clang/Options/Options.td
+0-5clang/lib/Driver/ToolChains/Arch/PPC.cpp
+0-5llvm/lib/Target/PowerPC/PPC.td
+1-1llvm/test/CodeGen/PowerPC/shrink-wrap.mir
+45-412 files not shown
+47-418 files

LLVM/project 34f90bdllvm/lib/Target/PowerPC PPCISelLowering.cpp, llvm/test/CodeGen/PowerPC soft-promote-half-br-cc.ll half-float16-ppc.ll

[PowerPC] Fix f16 BR_CC promotion and update stale AIX TOC test checks.

- Add ISD::BR_CC to F16PromoteOps so half-precision branch conditions
  are promoted to f32 before reaching SelectCC in PPCISelDAGToDAG.
  Without this, fcmp+br on f16 operands crashed with an assertion in
  SelectCC which only handles f32/f64/f128 comparisons.

- Regenerate half-float16-ppc.ll: AIX TOC addressing for constant pool
  entries changed upstream from a single GP-relative ld (ld 3,L..C0(2))
  to an explicit hi/lo addis+ld pair; update the P8-AIX-64 CHECK lines.

- Regenerate soft-promote-half-br-cc.ll: with f16 arguments now arriving
  in FPRs (f1,f2) rather than GPRs (r3,r4) post ABI fix, update all
  CHECK patterns to reflect the FPR-based calling convention.
DeltaFile
+14-24llvm/test/CodeGen/PowerPC/soft-promote-half-br-cc.ll
+16-8llvm/test/CodeGen/PowerPC/half-float16-ppc.ll
+5-1llvm/lib/Target/PowerPC/PPCISelLowering.cpp
+35-333 files

LLVM/project 66f82a3clang/test/CodeGen/AArch64/neon store.c, llvm/lib/Transforms/Vectorize VPlanTransforms.cpp VPlanLowering.cpp

Merge branch 'filecheck-diag-annotator' into filecheck-pattern-notes
DeltaFile
+0-1,992llvm/test/CodeGen/X86/expand-false-deps.ll
+1,486-0clang/test/CodeGen/AArch64/neon/store.c
+1,385-0llvm/test/CodeGen/X86/expand-false-deps.mir
+30-1,240llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+1,177-0llvm/lib/Transforms/Vectorize/VPlanLowering.cpp
+0-1,060llvm/test/CodeGen/X86/compress-false-deps.ll
+4,078-4,2921,044 files not shown
+30,098-15,9081,050 files

LLVM/project 12ba2cfclang/test/CodeGen/AArch64/neon store.c, llvm/lib/Transforms/Vectorize VPlanTransforms.cpp VPlanLowering.cpp

Merge branch 'filecheck-improve-labeler' into filecheck-diag-annotator
DeltaFile
+0-1,992llvm/test/CodeGen/X86/expand-false-deps.ll
+1,486-0clang/test/CodeGen/AArch64/neon/store.c
+1,385-0llvm/test/CodeGen/X86/expand-false-deps.mir
+30-1,240llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+1,177-0llvm/lib/Transforms/Vectorize/VPlanLowering.cpp
+0-1,060llvm/test/CodeGen/X86/compress-false-deps.ll
+4,078-4,2921,044 files not shown
+30,098-15,9081,050 files

LLVM/project ba83659llvm/lib/CodeGen/SelectionDAG SelectionDAG.cpp

[SDAG] Use DAG.getTokenFactor in more places (#210949)

This will cause the TokenFactor to be split into nodes of at most
SDNode::getMaxNumOperands() size.

This fixes #189161 but I have not added a test case as the output is
in excess of 160000 lines long.
DeltaFile
+4-4llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
+4-41 files

LLVM/project f2f92e5clang/test/CodeGen/AArch64/neon store.c, llvm/lib/Transforms/Vectorize VPlanTransforms.cpp VPlanLowering.cpp

Merge branch 'main' into filecheck-improve-labeler
DeltaFile
+0-1,992llvm/test/CodeGen/X86/expand-false-deps.ll
+1,486-0clang/test/CodeGen/AArch64/neon/store.c
+1,385-0llvm/test/CodeGen/X86/expand-false-deps.mir
+30-1,240llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+1,177-0llvm/lib/Transforms/Vectorize/VPlanLowering.cpp
+0-1,060llvm/test/CodeGen/X86/compress-false-deps.ll
+4,078-4,2921,044 files not shown
+30,098-15,9081,050 files

LLVM/project c49595flldb/cmake/modules LLDBConfig.cmake, lldb/docs/resources build.md

Revert "[lldb][Windows] Only embed Python home in Debug config (#209464)" (#210989)

This reverts commit 5a19a3a4b9915d19fff1b8298e723ee2b24ebc6a.

To fix a failure with MinGW
(https://github.com/llvm/llvm-project/pull/209464#issuecomment-5034222807).
DeltaFile
+9-9lldb/docs/resources/build.md
+1-1lldb/cmake/modules/LLDBConfig.cmake
+10-102 files

LLVM/project c3e48dfllvm/utils/FileCheck FileCheck.cpp

[FileCheck][NFC] Encapsulate more into InputAnnotationLabeler (#207484)

This patch migrates more label-making concerns from
buildInputAnnotations into the InputAnnotationLabeler. It also
eliminates the brittle approach of creating a new InputAnnotationLabeler
object with a separate label prefix upon each MatchResultDiag while
persisting an object to close the previous search range. Instead, this
patch creates just one InputAnnotationLabeler object to handle all
diags, and it maintains a table of label prefixes for check patterns.
That approach seems easier to understand and more amenable to code
evolution.
DeltaFile
+90-108llvm/utils/FileCheck/FileCheck.cpp
+90-1081 files

LLVM/project b679982llvm/lib/Transforms/Vectorize VPlanRecipes.cpp, llvm/test/Transforms/LoopVectorize/AArch64 struct-return-cost.ll

[VPlan] Remove additional stray whitespace when printing calls. (#210979)

VPWidenCallRecipe::print had a stray whitespace between call and
fucntion name. Strip stray whitespace and add strict whitespace test to
guard against regressions.
DeltaFile
+2-2llvm/test/Transforms/LoopVectorize/AArch64/struct-return-cost.ll
+2-2llvm/test/Transforms/LoopVectorize/VPlan/print-attributes.ll
+1-1llvm/test/Transforms/LoopVectorize/VPlan/AArch64/call-decisions.ll
+1-1llvm/test/Transforms/LoopVectorize/VPlan/vplan-widen-struct-return.ll
+1-1llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
+7-75 files

LLVM/project c563edbllvm/lib/Target/AMDGPU AMDGPULegalizerInfo.cpp

AMDGPU/GlobalISel: Clean up fp LLT usage in AMDGPULegalizerInfo

Remove local variables in favor of global F16/BF16/F32/F64/V2F16/V2BF16.
These are now proper floating point LLTs instead of LLT::scalar.
A couple of legalizer actions now use fp extended LLT for type checks.
This is intended and is planned for all floating point opcodes.
In most cases the current S16/S32/S64 action on floating point opcodes was
intended for F16/F32/F64, and we will need to define an action for BF16.
DeltaFile
+28-71llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
+28-711 files

LLVM/project 7c40a1dllvm/lib/Target/X86 X86TargetTransformInfo.cpp

[CostModel][X86] getArithmeticReductionCost - convert to CostKindTblEntry entries. NFC. (#210969)

No actual cost changes yet, but makes it much easier to adjust costs as
we progress.
DeltaFile
+94-82llvm/lib/Target/X86/X86TargetTransformInfo.cpp
+94-821 files

LLVM/project 7c445ablibc/src/__support/CPP/type_traits is_floating_point.h, libc/src/__support/FPUtil float128.h CMakeLists.txt

[libc] Float128 Emulation in LLVM libc (#200565)

Introducing emulated float128 in LLVM libc
DeltaFile
+161-0libc/src/__support/FPUtil/float128.h
+109-0libc/test/src/__support/FPUtil/float128_test.cpp
+18-0libc/src/__support/FPUtil/CMakeLists.txt
+15-0libc/src/__support/macros/properties/types.h
+12-0libc/test/src/__support/FPUtil/CMakeLists.txt
+8-1libc/src/__support/CPP/type_traits/is_floating_point.h
+323-14 files not shown
+330-510 files

LLVM/project 81081c0llvm/include/llvm/Transforms/Scalar GVN.h, llvm/lib/Transforms/Scalar GVN.cpp

[GVN] Remove unused debug helper (NFC) (#210333)

The `GVNPass::dump` method is not used anywhere. Moreover, there's no
`GVNPass` state that corresponds to its parameter type. Even if a
`GVNPass::dump` method could be useful, this one wasn't it.
DeltaFile
+0-11llvm/lib/Transforms/Scalar/GVN.cpp
+0-1llvm/include/llvm/Transforms/Scalar/GVN.h
+0-122 files

LLVM/project 215b3e4llvm/lib/CodeGen/SelectionDAG DAGCombiner.cpp, llvm/test/CodeGen/AArch64 load-combine-masked.ll

[DAGCombiner] Teach MatchLoadCombine to look through AND masks (#200247)

Fixes #191193

`MatchLoadCombine` can combine OR trees built from shifted/zexted
consecutive byte loads into a wider load, but it currently bails out
when one of the loaded bytes is masked before being shifted into place.
This will miss patterns such as the following
```
  zext(load i8 p) | (zext(and(load i8 p+1, 3)) << 8)
```
which can be implemented as a 16-bit load followed by a mask.

This PR teaches `calculateByteProvider()` to look through constant AND
masks by tracking the mask applied to each byte. When the byte providers
cover a consecutive load range, we form the wider load and apply a final
mask to preserve the original value.

Added X86 and AArch64 tests covering the masked-byte combine, plus

    [3 lines not shown]
DeltaFile
+308-0llvm/test/CodeGen/AArch64/load-combine-masked.ll
+245-0llvm/test/CodeGen/X86/load-combine-masked.ll
+62-12llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
+30-41llvm/test/CodeGen/AMDGPU/load-global-i16.ll
+16-22llvm/test/CodeGen/AMDGPU/load-constant-i16.ll
+7-15llvm/test/CodeGen/AMDGPU/load-local-i16.ll
+668-906 files