454683 Commits

Author SHA1 Message Date
Matt Arsenault
672e91ed98 clang: Add baseline test for nofpclass emission 2023-03-15 01:13:08 -04:00
Matt Arsenault
cd60bff329 CodeGen: Add some additional is_fpclass lowering tests
Cover more cases in preparation for making greater use
of fcmp based lowerings. Also add more tests for the inverted
cases. Test iszero | isnan test masks. We should probably just
generate every combination of test masks.
2023-03-15 01:13:08 -04:00
Kazu Hirata
ce14f7b18f [mlir] Use Use *{Set,Map}::contains (NFC) 2023-03-14 21:48:49 -07:00
Kazu Hirata
65a2d6d690 [lldb] Use *{Set,Map}::contains (NFC) 2023-03-14 21:41:40 -07:00
Kazu Hirata
15aa965363 [clang-tools-extra] Use *{Set,Map}::contains (NFC) 2023-03-14 21:30:29 -07:00
Jie Fu
7707ed9727 [mlir] Fix two build warnings (NFC)
/data/llvm-project/mlir/lib/Dialect/Tensor/Utils/Utils.cpp:62:11: error: comparison of integers of different signs: 'int64_t' (aka 'long') and 'size_t' (aka 'unsigned long') [-Werror,-Wsign-compare]
  if (dim >= shape.size())
      ~~~ ^  ~~~~~~~~~~~~
1 error generated.

/data/llvm-project/mlir/lib/Dialect/Tensor/IR/TensorTilingInterfaceImpl.cpp:484:8: error: unused variable 'appendIndex' [-Werror,-Wunused-variable]
  auto appendIndex = [&](Value val, SmallVector<Value> &dynIndices,
       ^
1 error generated.
2023-03-15 12:07:25 +08:00
Mahesh Ravishankar
d3fa067e69 [mlir][Tensor] Use folded evaluators in tiling implementation of tensor.pad.
Reviewed By: springerm

Differential Revision: https://reviews.llvm.org/D145135
2023-03-15 03:19:55 +00:00
Jeff Bailey
1b89aeb517 [libc] Add instructions for linux headers
Reviewed By: sivachandra

Differential Revision: https://reviews.llvm.org/D146049
2023-03-15 03:02:16 +00:00
jinge90
b38aa29717 Add __builtin_set_flt_rounds
This builtin will be converted to llvm.set.rounding intrinsic
in IR level and should be work with "#pragma STDC FENV_ACCESS ON"
since it changes default FP environment. Users can change rounding
mode via this builtin without introducing libc dependency.

Reviewed by: andrew.w.kaylor, rjmccall, sepavloff, aaron.ballman
Differential Revision: https://reviews.llvm.org/D145765
Signed-off-by: jinge90 <ge.jin@intel.com>
2023-03-15 11:13:55 +08:00
Jacob Lambert
f3b9912026 [clang-offload-bundler] Fix error with regex in bundler test
Fix recently introduced error and further generalize
pattern matching for accepted HOST string
2023-03-14 19:51:26 -07:00
Arthur Eubanks
20ed9cebb6 [Pipeline] Remove early InstCombine in ThinLTO post link sample profile pipeline
With opaque pointers, all function pointer types are the same, meaning there should be no bitcasts.

Internal benchmarks with SampleFDO look neutral.

This was added in D36333.

Reviewed By: tejohnson, davidxl

Differential Revision: https://reviews.llvm.org/D146099
2023-03-14 19:48:31 -07:00
Kazu Hirata
ea9d404032 [clang] Use *{Set,Map}::contains (NFC) 2023-03-14 19:17:18 -07:00
Jacob Lambert
65fb636bd4 [clang-offload-bundler] Fix test failures and document typo
The recent bundler patch (e48ae0d) introduced a few errors
in two clang/Driver tests, and in the bundler documentation
2023-03-14 19:14:42 -07:00
Kazu Hirata
b595eb83e5 [llvm] Use *{Set,Map}::contains (NFC) 2023-03-14 18:56:07 -07:00
Douglas Yung
768211f48f Mark test modified in e48ae0d as XFAIL for PS4/PS5 until the author can investigate.
The test is failing on the PS4/PS5 bots:
https://lab.llvm.org/buildbot/#/builders/139/builds/37475
https://lab.llvm.org/buildbot/#/builders/216/builds/18354
2023-03-14 18:33:55 -07:00
Uday Bondhugula
3e497a1147 [MLIR] Update/fix memref region computation for affine.parallel ops
When the affine.parallel op was introduced, affine utilities weren't
extended to handle it. Extending these is straightforward and natural
given that addAffineParallelOpDomain has also been added.
Update/complete memref region compute to account for affine.parallel
ops. Handle failure cleanly.

Add and expose utilities missing for affine.parallel to be consistent
with affine.for.

All of these allow various affine passes to work with a combination of
affine.parallel and affine.for ops.

Differential Revision: https://reviews.llvm.org/D145669
2023-03-15 06:40:24 +05:30
Kazu Hirata
7ada7bbee1 [Target] Use *{Set,Map}::contains (NFC) 2023-03-14 18:06:55 -07:00
David Blaikie
f198c50810 Fix split-dwarf-dwp-invalid test to be Windows-path-separator compatible 2023-03-15 00:50:11 +00:00
Amir Ayupov
edda85771a [BOLT][NFC] Move addRelocation{X86,AArch64} into MCPlusBuilder
The two methods don't belong in BinaryFunction methods.
Move the dispatch tables into target-specific MCPlusBuilder methods.

Reviewed By: rafauler

Differential Revision: https://reviews.llvm.org/D131813
2023-03-14 17:34:25 -07:00
Ben Shi
cb45be2b4f [RISCV][NFC] Combine identical switch cases in TTI
Reviewed By: craig.topper, asb

Differential Revision: https://reviews.llvm.org/D146008
2023-03-15 08:27:58 +08:00
Amir Ayupov
ce1061074d [BOLT][NFC] Simplify MCPlusBuilder::getRegSize
Pre-calculate the register size table in MCPlusBuilder constructor,
similar to `AliasMap`/`SmallerAliasMap` in `initAliases`.

Reviewed By: #bolt, rafauler

Differential Revision: https://reviews.llvm.org/D145828
2023-03-14 17:26:36 -07:00
Frank Dischner
ef45c12f9e [compiler-rt][builtins] Support builtins for armv8m.base
This allows building the compiler builtins library for the Armv8-M
Baseline architecture. It can be built in the same way as other
baremetal targets using the appropriate '--target' flag
(e.g. --target=armv8m.base-eabi).

NOTE: As with the other Cortex-M targets, only the builtins library is
supported. There is no support for sanitizers, etc.

The armv8m.base architecture is a superset of armv6m, so adding it to
the cmake files using thumb1_SOURCES is almost enough for it to compile.
Minor changes are needed to divsi3 and udivsi3, because armv8m.base does
have support for div instructions but not mov with an immediate operand.

Reviewed By: MaskRay, peter.smith

Differential Revision: https://reviews.llvm.org/D143297
2023-03-14 17:20:54 -07:00
Amir Ayupov
4e99891e70 [BOLT][NFC] Provide default impl for MIB methods that are only overridden on X86
Simplifies D145687

Reviewed By: #bolt, rafauler

Differential Revision: https://reviews.llvm.org/D145972
2023-03-14 17:19:24 -07:00
Frank Tetzel
b6ae90b86c [lli] Register profiling support for ORC in lli
Adds perf event listeners when RTDyldObjectLinkingLayer is used in -jit-kind=orc
mode.

Reviewed By: lhames

Differential Revision: https://reviews.llvm.org/D126214
2023-03-14 17:02:43 -07:00
Michael Maitland
194f3dc8fd [VPlan] VPWidenIntOrFpInductionRecipe inherits from VPHeaderPHIRecipe
Differential Revision: https://reviews.llvm.org/D144125
2023-03-14 17:01:34 -07:00
Lei Zhang
141b7d49a3 [mlir][spirv] Fix UnifyAliasedResourcePass for 64-bit index
Reviewed By: kuhar

Differential Revision: https://reviews.llvm.org/D145079
2023-03-14 23:54:27 +00:00
Tom Stellard
68c14f582c JITLink: Add missing EHFrame NULL terminator on aarch64/ELF
This fixes test failures on AArch64 with libgcc-13:

Clang :: Interpreter/global-dtor.cpp
Clang-Unit :: Interpreter/./ClangReplInterpreterTests/2/4

Reviewed By: lhames, v.g.vassilev

Differential Revision: https://reviews.llvm.org/D146067
2023-03-14 16:51:22 -07:00
Yeting Kuo
9637e950cb [RISCV] Support ISD::STRICT_FADD/FSUB/FMUL/FDIV for vector types.
The patch handles fixed type strict-fp by new RISCVISD::STRICT_ prefixed
isd nodes.

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D145900
2023-03-15 07:47:16 +08:00
Shafik Yaghmour
c41be8fc74 [Clang] Fix ClassifyImplicitMemberAccess to handle cases where the access in an unevaluated context is not within a CXXRecordDecl or CXXMethodDecl
ClassifyImplicitMemberAccess assumes that if we are not in a static context then
the DeclContext must be a CXXRecordDecl or a CXXMethodDecl. In the case of the
unevaluated context this may not be true.

This will lead to a crash because contextClass will remain a nullptr.

Fixes: https://github.com/llvm/llvm-project/issues/37792
Fixes: https://github.com/llvm/llvm-project/issues/48405

Differential Revision: https://reviews.llvm.org/D142490
2023-03-14 16:37:58 -07:00
NAKAMURA Takumi
59fe64ae47 Let IntrinsicEmitter free from CodeGenTarget.h
For now, I have introduced `llvm::tmp::getValueType(Rec)` as a copy from
`CodeGenTarget.cpp`. This will be removed in the near future, when
IntrinsicEmitter will not depend on MVT.

Differential Revision: https://reviews.llvm.org/D143844
2023-03-15 08:09:44 +09:00
NAKAMURA Takumi
fe7b38cb6b llvm-tblgen: Split out CodeGenIntrinsics.cpp from CodeGenTarget.cpp
Differential Revision: https://reviews.llvm.org/D143844
2023-03-15 08:09:35 +09:00
NAKAMURA Takumi
d4a4d0d791 clang/test/Driver/clang-offload-bundler-standardize.c REQUIRES asserts. (fixup D145770) 2023-03-15 08:08:51 +09:00
Jorge Gorbe Moya
b5c661c2f4 [bazel][libc] Re-add dependency on errno to strtol_test_helper.
https://reviews.llvm.org/D146014 removed the dependency on errno from
several targets and added it to the `libc_test` macro. However,
strtol_test_helper is not a `libc_test` but a `cc_library` so it's
missing a dependency.
2023-03-14 15:52:22 -07:00
Fangrui Song
14a06b0dcc [test] Improve MC/AArch64/elf-reloc-plt32.s to check defined symbol 2023-03-14 15:50:03 -07:00
Jakub Kuderski
dfee4c7fb0 [mlir][spirv] Fix scf.yield pattern conversion
Only rewrite `scf.yield` when the parent op is supported by
scf-to-spirv.

Fixes: #61380, #61107, #61148

Reviewed By: antiagainst

Differential Revision: https://reviews.llvm.org/D146080
2023-03-14 18:47:34 -04:00
Jakub Kuderski
ab5eae0164 [mlir][spirv][NFC] Clean up scf-to-spirv pass
This is a clean up before fixing issues identified in this pass by
https://github.com/llvm/llvm-project/issues/61380 and similar issues.

- Move patterns definitions closer to declarations.
- Simplify pattern definitions.
- Drop hand-written pass constructor in favor of an auto-generated on.
- Fix typos in pass description.

Reviewed By: antiagainst

Differential Revision: https://reviews.llvm.org/D146077
2023-03-14 18:44:35 -04:00
David Blaikie
1fd9ba9a61 Add missing test for 35fd37177b9b201f26390fe963767be548c8c2e9 2023-03-14 22:43:53 +00:00
Amir Ayupov
2eae9d8eb2 [BOLT][NFC] Use llvm::is_contained
Apply the replacement throughout BOLT.

Reviewed By: #bolt, rafauler

Differential Revision: https://reviews.llvm.org/D145464
2023-03-14 15:37:03 -07:00
Amir Ayupov
16e67e6932 [BOLT][NFC] Remove BB::getBranchInfo accepting MCSymbol ptr
Reviewed By: #bolt, rafauler

Differential Revision: https://reviews.llvm.org/D144924
2023-03-14 15:35:05 -07:00
Fangrui Song
2f5fe16e6d [RISCV][MC] Adjust conditions to emit R_RISCV_ADD*/R_RISCV_SUB* pairs
D132262 tried to simplify `IsMetadataOrEHFrameSection` originally introduced in
D127549 but caused a regression as `.quad` directives in

```
.section .note,"a",@note; note:
.quad extern-note    # extern is undefined

.section .rodata,"a",@progbits; rodata:
.quad extern-rodata  # extern is undefined

.section .nonalloc,"",@progbits; nw:
.quad extern-nw
```

are incorrectly rejected: these differences may be link-time constants and
are allowed in GNU assembler and LLVM MC's non-RISC-V ports.

Relax the conditions to allow these cases. For A-B, A may be defined later, but
this requiresFixups call has to eagerly make a decision. For now, emit ADD/SUB
unless A is `.L*`. This euristic handles many temporary label differences for
.debug_* and .apple_types sections. Ideally we should delay the decision of
PC-relative vs ADD/SUB until A is defined.

Reviewed By: compnerd

Differential Revision: https://reviews.llvm.org/D145474
2023-03-14 15:17:38 -07:00
Fangrui Song
0ddc283a29 [RISCV] A@plt-B+C: emit R_RISCV_PLT32 even if A is defined
Follow-up to D143226

Currently we incorrectly emit R_RISCV_ADD32/R_RISCV_SUB32.
Emit R_RISCV_PLT32 instead. The new behavior matches x86-64 and AArch64.
2023-03-14 15:16:58 -07:00
Arthur Eubanks
093b2640ea [SimplifyLibCalls] Return Value from optimizeSinCosPi when making change
Or else InstCombine can incorrectly report that no change has been made.

This optimization doesn't really fit into InstCombine since it optimizes multiple instructions at once; there's likely a more comprehensive fix.

Reviewed By: nikic

Differential Revision: https://reviews.llvm.org/D146064
2023-03-14 15:16:44 -07:00
bixia1
2ef416273f [mlir][sparse] Improve sort operation by generating inlined code to compare values.
Previously, we generate function calls to compare values for sorting. It turns
out that the compiler doesn't inline those function calls. We now directly
generate inlined code. Also, modify the code for comparing values to use less
number of branches.

This improves all sort implementation in general. For arabic-2005.mtx CSR, the
improvement is around 25%.

Reviewed By: aartbik

Differential Revision: https://reviews.llvm.org/D145442
2023-03-14 15:14:49 -07:00
Kiran Chandramohan
c1125ae5b0 [MLIR] : Add integer mul in scf to openmp conversion
Add conversion for integer multiplication in scf reductions in the
SCF to OpenMP dialect conversion.

Reviewed By: ftynse

Differential Revision: https://reviews.llvm.org/D145948
2023-03-14 21:51:22 +00:00
Kiran Chandramohan
f51bdae4e3 [Flang][OpenMP] Add support for OpenMP max reduction
This patch adds support for reduction of max-intrinsic for scalar
types. Max is lowered as a compare-select in the default lowering
flow for Flang. This pattern is matched and replaced with the
OpenMP dialect reduction operation.

Note: This is a temporary flow. The plan is to move to a flow where
the OpenMP reduction operation is inserted during lowering.

Reviewed By: do

Differential Revision: https://reviews.llvm.org/D145083
2023-03-14 21:38:08 +00:00
David Green
180865a500 [AArch64] Add FP16 broadcast and transpose costs
The FP16 broadcast and transpose can always use the same instructions as are
used for i16 vectors, with or without +fullfp16. This fills in some extra costs
to make sure we get them right.

Differential Revision: https://reviews.llvm.org/D146035
2023-03-14 21:25:18 +00:00
Julian Lettner
e6a789ef9b Remove -lower-global-dtors-via-cxa-atexit flag
Remove the `-lower-global-dtors-via-cxa-atexit` escape hatch introduced
in D121736 [1], which switched the default lowering of global
destructors on MachO to use `__cxa_atexit()` to avoid emitting
deprecated `__mod_term_func` sections.

I added this flag as an escape hatch in case the switch causes any
problems.  We didn't discover any problems so now we can remove it.

[1] https://reviews.llvm.org/D121736

rdar://90277838

Differential Revision: https://reviews.llvm.org/D145715
2023-03-14 14:18:11 -07:00
Jacob Lambert
e48ae0dbd8 [clang-offload-bundler] Standardize TargetID field for bundler
The bundler accepts both of the following for the --target option:
  hip-amdgcn-amd-amdhsa-gfx900    (no env field)
  hip-amdgcn-amd-amdhsa--gfx900   (blank env field)

The environment field is defined as optional for Triples
in Triple.h. However, in this patch we update the bundler to
internally standardize to include the env field. While users
aren't required to specify an env field when listing targets on
the commandline, bundles generated by the offload-bundler will
include the ABI field.

This standardization simplifies things for APIs that deal with
bundles generated by the clang-offload-bundler tool.

Differential Revision: https://reviews.llvm.org/D145770
2023-03-14 14:12:31 -07:00
Philip Reames
c361741a27 [BasicBlockUtils] Expose an internal utility in API [nfc]
Shrinking a patch about to be posted for review.
2023-03-14 14:11:16 -07:00
Valery N Dmitriev
f9b438b519 [SLP] Outline GEP chain cost modeling into new TTI interface - NFCI.
Cost modeling for GEPs should actually be target dependent but is currently
done inside SLP target-independent way.
Sinking it into TTI enables target dependent implementation.
This patch adds new TTI interface and implementation of the basic functionality
trying to retain existing cost modeling.

Differential Revision: https://reviews.llvm.org/D144770
2023-03-14 14:01:34 -07:00