Changes

Summary

  1. [Test] Add simple test where IndVars fails to remove checks on negative values (details)
  2. [OpenCL] Supports optional pipe types in C++ for OpenCL 2021 (details)
  3. GlobalISel/Utils: Refactor integer/float constant match functions (details)
  4. [SystemZ]  Recognize .machine directive in parser. (details)
  5. [MLIR] Matrix: support resizing horizontally (details)
  6. [MLIR] AffineStructures::removeIdRange: support specifying a range within an IdKind (details)
  7. [MLIR] AffineStructures: support removing a range of constraints at once (details)
  8. [TextAPI] Use const-ref iterator in for-range loop. NFCI. (details)
  9. [TableGen] Record::checkRecordAssertions() - Use const-ref iterator in for-range loop. NFCI. (details)
  10. [AsmPrinter] DebugLocEntry::dump() - Use const-ref iterator in for-range loop. NFCI. (details)
  11. [CodeGen] MachineInstr::getUsedDebugRegs() - Use const-ref iterator in for-range loop. NFCI. (details)
  12. [X86][Atom] Fix integer shuffles uops, latency and throughput (details)
Commit 690f76958a737ebd1b17f9bc50f781b3aaa4f011 by mkazantsev
[Test] Add simple test where IndVars fails to remove checks on negative values
The file was addedllvm/test/Transforms/IndVarSimplify/negative_ranges.ll
Commit 37cdc7ebd9a373100cbbe39f5b9be7a4e4f7813d by Justas.Janickas
[OpenCL] Supports optional pipe types in C++ for OpenCL 2021

Adds support for a feature macro `__opencl_c_pipes` in C++ for
OpenCL 2021 enabling a respective optional core feature from
OpenCL 3.0.

This change aims to achieve compatibility between C++ for OpenCL
2021 and OpenCL 3.0.

Differential Revision: https://reviews.llvm.org/D109306
The file was modifiedclang/test/SemaOpenCL/invalid-pipes-cl1.2.cl
The file was modifiedclang/test/Misc/opencl-c-3.0.incorrect_options.cl
The file was modifiedclang/test/CodeGenOpenCL/pipe_types_mangling.cl
The file was modifiedclang/test/SemaOpenCL/invalid-pipes-cl2.0.cl
The file was modifiedclang/test/CodeGenOpenCL/pipe_types.cl
The file was modifiedclang/test/CodeGenOpenCL/address-spaces-mangling.cl
The file was modifiedclang/lib/Basic/TargetInfo.cpp
The file was modifiedclang/test/CodeGenOpenCL/address-spaces.cl
Commit d477a7c2e704f58be816159cd8ac11d5384334b5 by petar.avramovic
GlobalISel/Utils: Refactor integer/float constant match functions

Rework getConstantstVRegValWithLookThrough in order to make it clear if we
are matching integer/float constant only or any constant(default).
Add helper functions that get DefVReg and APInt/APFloat from constant instr
getIConstantVRegValWithLookThrough: integer constant, only G_CONSTANT
getFConstantVRegValWithLookThrough: float constant, only G_FCONSTANT
getAnyConstantVRegValWithLookThrough: either G_CONSTANT or G_FCONSTANT

Rename getConstantVRegVal and getConstantVRegSExtVal to getIConstantVRegVal
and getIConstantVRegSExtVal. These now only match G_CONSTANT as described
in comment.

Relevant matchers now return both DefVReg and APInt/APFloat.

Replace existing uses of getConstantstVRegValWithLookThrough and
getConstantVRegVal with new helper functions. Any constant match is
only required in:
ConstantFoldBinOp: for constant argument that was bit-cast of float to int
getAArch64VectorSplat: AArch64::G_DUP operands can be any constant
amdgpu select for G_BUILD_VECTOR_TRUNC: operands can be any constant

In other places use integer only constant match.

Differential Revision: https://reviews.llvm.org/D104409
The file was modifiedllvm/lib/CodeGen/GlobalISel/InstructionSelector.cpp
The file was modifiedllvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
The file was modifiedllvm/lib/Target/AArch64/GISel/AArch64LegalizerInfo.cpp
The file was modifiedllvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp
The file was modifiedllvm/lib/Target/AArch64/GISel/AArch64GlobalISelUtils.cpp
The file was modifiedllvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp
The file was modifiedllvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
The file was modifiedllvm/lib/Target/AArch64/GISel/AArch64PreLegalizerCombiner.cpp
The file was modifiedllvm/lib/CodeGen/GlobalISel/GISelKnownBits.cpp
The file was modifiedllvm/lib/Target/X86/X86InstructionSelector.cpp
The file was modifiedllvm/unittests/CodeGen/GlobalISel/PatternMatchTest.cpp
The file was modifiedllvm/lib/CodeGen/GlobalISel/Utils.cpp
The file was modifiedllvm/lib/Target/AArch64/GISel/AArch64InstructionSelector.cpp
The file was modifiedllvm/lib/Target/AArch64/GISel/AArch64PostLegalizerCombiner.cpp
The file was modifiedllvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp
The file was modifiedllvm/lib/Target/AMDGPU/AMDGPURegBankCombiner.cpp
The file was modifiedllvm/include/llvm/CodeGen/GlobalISel/MIPatternMatch.h
The file was modifiedllvm/lib/Target/AArch64/GISel/AArch64PostLegalizerLowering.cpp
The file was modifiedllvm/include/llvm/CodeGen/GlobalISel/Utils.h
Commit 1a5ab3e97c15708a0a9a19b3b0ccee73b0d757aa by paulsson
[SystemZ]  Recognize .machine directive in parser.

The .machine directive can be used in assembly files to specify the ISA for
the instructions following it.

Review: Ulrich Weigand
Differential Revision: https://reviews.llvm.org/D109660
The file was modifiedllvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCTargetDesc.cpp
The file was modifiedllvm/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp
The file was addedllvm/test/MC/SystemZ/machine-directive.s
The file was addedllvm/lib/Target/SystemZ/SystemZTargetStreamer.h
Commit f263ea157113ff0f119cc1bf23d76ce2727c40f9 by arjunpitchanathan
[MLIR] Matrix: support resizing horizontally

Reviewed By: Groverkss

Differential Revision: https://reviews.llvm.org/D109897
The file was modifiedmlir/include/mlir/Analysis/Presburger/Matrix.h
The file was modifiedmlir/unittests/Analysis/Presburger/MatrixTest.cpp
The file was modifiedmlir/lib/Analysis/Presburger/Matrix.cpp
Commit 6607bd9fd819de1a5872dce47ce1a67bbb9a12e8 by arjunpitchanathan
[MLIR] AffineStructures::removeIdRange: support specifying a range within an IdKind

Reviewed By: Groverkss, grosser

Differential Revision: https://reviews.llvm.org/D109896
The file was modifiedmlir/unittests/Analysis/AffineStructuresTest.cpp
The file was modifiedmlir/include/mlir/Analysis/AffineStructures.h
The file was modifiedmlir/lib/Analysis/AffineStructures.cpp
Commit 44db07f11f00b2115e277dd89d830e2abde684ab by arjunpitchanathan
[MLIR] AffineStructures: support removing a range of constraints at once

Reviewed By: Groverkss, grosser

Differential Revision: https://reviews.llvm.org/D109892
The file was modifiedmlir/lib/Analysis/AffineStructures.cpp
The file was modifiedmlir/unittests/Analysis/AffineStructuresTest.cpp
The file was modifiedmlir/include/mlir/Analysis/AffineStructures.h
Commit 8821345e68b2e027ababb5f4e1dba6916825681d by llvm-dev
[TextAPI] Use const-ref iterator in for-range loop. NFCI.

Avoid unnecessary copies, reported by MSVC static analyzer.
The file was modifiedllvm/include/llvm/TextAPI/InterfaceFile.h
Commit e4b2f66d7f7e27e01ecf4da240f1c39387dd9ede by llvm-dev
[TableGen] Record::checkRecordAssertions() - Use const-ref iterator in for-range loop. NFCI.

Avoid unnecessary copies, reported by MSVC static analyzer.
The file was modifiedllvm/lib/TableGen/Record.cpp
Commit 9e70d4e5f2e447685ee99d6327bbe60f89962e92 by llvm-dev
[AsmPrinter] DebugLocEntry::dump() - Use const-ref iterator in for-range loop. NFCI.

Avoid unnecessary copies, reported by MSVC static analyzer.
The file was modifiedllvm/lib/CodeGen/AsmPrinter/DebugLocEntry.h
Commit cbaaedea56fade69bf12164155734efece0f8931 by llvm-dev
[CodeGen] MachineInstr::getUsedDebugRegs() - Use const-ref iterator in for-range loop. NFCI.

Avoid unnecessary copies, reported by MSVC static analyzer.
The file was modifiedllvm/include/llvm/CodeGen/MachineInstr.h
Commit 5ebe95e256737506f152395b5a3eb66cf448e969 by llvm-dev
[X86][Atom] Fix integer shuffles uops, latency and throughput

The MMX pack/unpck shuffles don't need an override - they have the same behaviour as other shuffles (Port0 only).
The SSE pslldq/psrldq shuffles don't need an override - they have the same behaviour as other shuffles (Port0 only).
The SSE pshufb shuffles use 4uops (+1 load).

Noticed the pslldq/psrldq issue while trying to improve reduction costs via the D103695 helper script, and fixed the others while reviewing. Confirmed with Intel AoM / Agner / InstLatX64.
The file was modifiedllvm/test/tools/llvm-mca/X86/Atom/resources-ssse3.s
The file was modifiedllvm/lib/Target/X86/X86ScheduleAtom.td
The file was modifiedllvm/test/tools/llvm-mca/X86/Atom/resources-mmx.s
The file was modifiedllvm/test/tools/llvm-mca/X86/Atom/resources-sse2.s

Summary

  1. [test-suite] Add tests for FP classification intrinsics (details)
Commit b983131b7e46d34f0eb2be399baf6c2e48d5734c by sepavloff
[test-suite] Add tests for FP classification intrinsics

Differential Revision: https://reviews.llvm.org/D106804
The file was addedSingleSource/UnitTests/Float/check-helper.h
The file was addedSingleSource/UnitTests/Float/classify-ldouble.h
The file was addedSingleSource/UnitTests/Float/classify.c
The file was modifiedSingleSource/UnitTests/CMakeLists.txt (diff)
The file was addedSingleSource/UnitTests/Float/CMakeLists.txt
The file was addedSingleSource/UnitTests/Float/Makefile
The file was addedSingleSource/UnitTests/Float/classify-f32.h
The file was addedSingleSource/UnitTests/Float/fformat.h
The file was addedSingleSource/UnitTests/Float/classify.reference_output
The file was addedSingleSource/UnitTests/Float/classify-f64.h