1. [LegalizeIntegerTypes] Further improve ExpandIntRes_SADDSUBO for targets where SADDO/SSUBO aren't supported. (details)
  2. [mlir][spirv] Define spv.GLSL.Ldexp (details)
  3. [lit] Add --ignore-fail (details)
  4. [RISCV] Support fixed vector extract element. Use VL=1 for scalable vector extract element. (details)
  5. [AArch64][GlobalISel] Fix manual selection for v4s16 and v8s8 G_DUP (details)
Commit fe50be12c8b845fffd44c508ad981901d25ac5f8 by craig.topper
[LegalizeIntegerTypes] Further improve ExpandIntRes_SADDSUBO for targets where SADDO/SSUBO aren't supported.

Rather than converting 3 signbits to bools and comparing them,
we can do bitwise logic on the whole vector and convert the
resulting sign bit to a bool at the end.

This is still a different algorithm than what we do in LegalizeDAG
through expandSADDOSSUBO. That algorithm needs to know that the
RHS of SSUBO is > 0, but that's costly when the type is split.

Reviewed By: RKSimon

Differential Revision:
The file was modifiedllvm/test/CodeGen/ARM/ssub_sat.ll
The file was modifiedllvm/test/CodeGen/RISCV/ssub_sat.ll
The file was modifiedllvm/test/CodeGen/Thumb2/mve-saturating-arith.ll
The file was modifiedllvm/test/CodeGen/ARM/sadd_sat.ll
The file was modifiedllvm/test/CodeGen/ARM/sadd_sat_plus.ll
The file was modifiedllvm/test/CodeGen/AArch64/sadd_sat_vec.ll
The file was modifiedllvm/test/CodeGen/AArch64/ssub_sat_vec.ll
The file was modifiedllvm/test/CodeGen/RISCV/xaluo.ll
The file was modifiedllvm/test/CodeGen/RISCV/ssub_sat_plus.ll
The file was modifiedllvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
The file was modifiedllvm/test/CodeGen/RISCV/sadd_sat_plus.ll
The file was modifiedllvm/test/CodeGen/RISCV/sadd_sat.ll
The file was modifiedllvm/test/CodeGen/ARM/ssub_sat_plus.ll
Commit ce2ad938ff1fd4bad6ee91809f970984b1614e35 by antiagainst
[mlir][spirv] Define spv.GLSL.Ldexp

co-authored-by: Alan Liu <>

Reviewed By: antiagainst

Differential Revision:
The file was modifiedmlir/include/mlir/Dialect/SPIRV/IR/
The file was modifiedmlir/test/Target/SPIRV/glsl-ops.mlir
The file was modifiedmlir/test/Dialect/SPIRV/IR/glsl-ops.mlir
The file was modifiedmlir/lib/Dialect/SPIRV/IR/SPIRVOps.cpp
Commit 2a5aa81739d31959600978c0f11332823010a754 by jdenny.ornl
[lit] Add --ignore-fail

For some build configurations, `check-all` calls lit multiple times to
run multiple lit test suites.  Most recently, I've found this to be
true when configuring openmp as part of `LLVM_ENABLE_RUNTIMES`, but
this is not the first time.

If one test suite fails, none of the remaining test suites run, so you
cannot determine if your patch has broken them.  It can then be
frustrating to try to determine which `check-` targets will run the
remaining tests without getting stuck on the failing tests.

When such cases arise, it is probably best to adjust the cmake
configuration for `check-all` to run all test suites as part of one
lit invocation.  Because that fix will likely not be implemented and
land immediately, this patch introduces `--ignore-fail` to serve as a
workaround for developers trying to see test results until it does

$ LIT_OPTS=--ignore-fail ninja check-all

One problem with `--ignore-fail` is that it makes it challenging to
detect test failures in a script, perhaps in CI.  This problem should
serve as motivation to actually fix the cmake configuration instead of
continuing to use `--ignore-fail` indefinitely.

Reviewed By: jhenderson, thopre

Differential Revision:
The file was modifiedllvm/utils/lit/lit/
The file was modifiedllvm/docs/CommandGuide/lit.rst
The file was addedllvm/utils/lit/tests/Inputs/ignore-fail/xpass.txt
The file was addedllvm/utils/lit/tests/Inputs/ignore-fail/xfail.txt
The file was addedllvm/utils/lit/tests/Inputs/ignore-fail/lit.cfg
The file was addedllvm/utils/lit/tests/Inputs/ignore-fail/unresolved.txt
The file was addedllvm/utils/lit/tests/Inputs/ignore-fail/fail.txt
The file was modifiedllvm/utils/lit/lit/
The file was addedllvm/utils/lit/tests/
Commit 086670d367869e62a3c5dffe3cd9bed04a5898c2 by craig.topper
[RISCV] Support fixed vector extract element. Use VL=1 for scalable vector extract element.

I've changed to use VL=1 for slidedown and shifts to avoid extra
element processing that we don't need.

The i64 fixed vector handling on i32 isn't great if the vector type
isn't legal due to an ordering issue in type legalization. If the
vector type isn't legal, we fall back to default legalization
which will bitcast the vector to vXi32 and use two independent extracts.
Doing better will require handling several different cases by
manually inserting insert_subvector/extract_subvector to adjust the type
to a legal vector before emitting custom nodes.

Reviewed By: frasercrmck

Differential Revision:
The file was modifiedllvm/test/CodeGen/RISCV/rvv/extractelt-int-rv32.ll
The file was modifiedllvm/test/CodeGen/RISCV/rvv/extractelt-int-rv64.ll
The file was modifiedllvm/test/CodeGen/RISCV/rvv/extractelt-fp-rv32.ll
The file was modifiedllvm/test/CodeGen/RISCV/rvv/extractelt-fp-rv64.ll
The file was modifiedllvm/test/CodeGen/RISCV/rvv/fixed-vectors-extract.ll
The file was modifiedllvm/test/CodeGen/RISCV/rvv/fixed-vectors-insert.ll
The file was modifiedllvm/lib/Target/RISCV/RISCVISelLowering.cpp
The file was modifiedllvm/test/CodeGen/RISCV/rvv/vreductions-int-rv32.ll
Commit e339bba637b941c8e78057319b7654c4babf18cb by Jessica Paquette
[AArch64][GlobalISel] Fix manual selection for v4s16 and v8s8 G_DUP

The manual G_DUP selection code would produce DUPv16i8 for v8s8s and DUPv8i16
for v4s16.

This adds the missing cases to the manual selection code, and makes it return
false when there is an unexpected size.

Update select-dup.mir to reflect the change.

Differential Revision:
The file was modifiedllvm/test/CodeGen/AArch64/GlobalISel/select-dup.mir
The file was modifiedllvm/lib/Target/AArch64/GISel/AArch64InstructionSelector.cpp


  1. [CUDA, test-suite] Disable testing of non-FP complex types. (details)
  2. [test-suite] Robust warnings for Fortran Test Suite tests that require Ninja. (details)
Commit 74bf87deb7ceb1d3e121c4425fa71848090dfe73 by tra
[CUDA, test-suite] Disable testing of non-FP complex types.

According to the standard, instantiating of non-FP complex types is an
unspecified behavior.

Non-FP complex types happen to work with libc++, libstdc++ 8 and older, but
break with libstdc++ 9 and newer due to the library not providing implicit
conversion std::complex<FP> ones.

Differential Revision:
The file was modifiedExternal/CUDA/ (diff)
Commit 37a356505b2a5add8065f1bdfc6c6bd7072d0e3a by naromero
[test-suite] Robust warnings for Fortran Test Suite tests that require Ninja.

  - ~~Add CMake issue number to Fortran Test Suite warning.~~
  - Add CMake issue number in CMake Fortran module.
  - Add ninja_required helper function.
  - Add ninja_required to SPEC2017 CPU ROMS floating point tests.

Reviewed By: Meinersbur

Differential Revision:
The file was modifiedExternal/SPEC/SpecCPU2017.cmake (diff)
The file was modifiedCMakeLists.txt (diff)
The file was modifiedExternal/SPEC/CFP2017rate/554.roms_r/CMakeLists.txt (diff)
The file was addedcmake/modules/Fortran.cmake