llvm with tablegen backend for capstone disassembler
Go to file
Renato Golin 7e486d5c2d [MLIR][Linalg] Named op 'add' element-wise
This adds the first strict element-wise named op to Linalg.

The semantics here is to not allow auto-cast, broadcast semantics and to
restrict the operations only to identical types. The remaining semantics
must come in the form of surrounding operations on operands, to avoid
ambiguity.

Examples:
```
  // Cast int-to-fp
  %0 = linalg.copy ins(%in: tensor<32x32xi32>)
                   outs(%out: tensor<32x32xf32>)
  %1 = linalg.add  ins(%arg, %0: tensor<32x32xf32>, tensor<32x32xf32>)
                   outs(%0: tensor<32x32xf32>)

  // This can be lowered to
  %1 = linalg.generic {...}
            ins(%arg, %in: tensor<32x32xf32>, tensor<32x32xi32>)
            outs(%0: tensor<32x32xf32>) {
    ^bb0(%a: f32, %i: i32, %out: f32):
      %f = arith.uitofp %i : f32
      %0 = arith.addf %a, %f : f32
      linalg.yield %0 : f32
  }

  // Broadcast
  %0 = linalg.broadcast ins(%in: tensor<32xf32>)
                        init(%out: tensor<32x32xf32>)
  %1 = linalg.add  ins(%arg, %0: tensor<32x32xf32>, tensor<32x32xf32>)
                   outs(%0: tensor<32x32xf32>)

  // This can be lowered to
  #bcast_map = affine_map<(d0, d1) -> (d0)>
  %1 = linalg.generic {... #bcast_map] }
            ins(%arg, %in: tensor<32x32xf32>, tensor<32xf32>)
            outs(%0: tensor<32x32xf32>) {
    ^bb0(%a: f32, %b: f32, %out: f32):
      %0 = arith.addf %a, %b : f32
      linalg.yield %0 : f32
  }
```

Once this gets accepted, other arithmetic and maths operations will be
added accordingly, with the same semantics.

Differential Revision: https://reviews.llvm.org/D154500
2023-07-05 16:37:42 +01:00
.github/workflows Temporary switch off labeler on closed issues 2023-06-27 11:09:00 -07:00
bolt Reland "[BOLT][Instrumentation] Don't share counters when using append-pid" 2023-06-30 09:14:58 -07:00
clang [AST] Fix bug in UnresolvedSet::erase of last element 2023-07-05 16:02:40 +01:00
clang-tools-extra [include-cleaner] Add a signal to down-rank exporting headers 2023-07-05 15:37:17 +02:00
cmake
compiler-rt [scudo] Implement Fuchsia backend for the new MemMap API 2023-07-05 14:07:37 +02:00
cross-project-tests
flang [flang][openacc] Fix false error when common block is in copy clause 2023-07-05 08:34:22 -07:00
libc [libc] Initiliaze the global pointer in riscv startup code. 2023-07-05 07:32:31 +00:00
libclc
libcxx [libc++] Synchronize clock selection between chrono.cpp and filesystem_clock.cpp 2023-07-05 08:38:20 -04:00
libcxxabi [libc++][NFC] Consistently qualify malloc and free calls with std:: 2023-06-16 09:40:31 -04:00
libunwind [libunwind] Add cached compile and link flags to libunwind 2023-06-29 07:41:08 +00:00
lld [lld/COFF] Add /dwodir to enable DWARF fission with LTO 2023-07-01 08:59:12 +08:00
lldb [lldb][AArch64] Handle different default vector length in SVE testing 2023-07-04 11:17:54 +01:00
llvm [InstCombine] Add old extract to worklist for DCE 2023-07-05 17:00:40 +02:00
llvm-libgcc
mlir [MLIR][Linalg] Named op 'add' element-wise 2023-07-05 16:37:42 +01:00
openmp [Libomptarget][Obvious] Missing comma on enum 2023-07-04 22:01:03 -05:00
polly [Polly][FIX] Adjust enum after D153305 2023-07-03 12:49:28 -07:00
pstl
runtimes
third-party [unittest] teach gTest to print entries of DenseMap as pairs 2023-06-28 11:29:52 +02:00
utils Fix bazel build after https://reviews.llvm.org/D150578. 2023-07-05 14:33:49 +02:00
.arcconfig
.arclint
.clang-format
.clang-tidy
.git-blame-ignore-revs Add clang-format commit to git blame ignore revs 2023-07-04 11:21:21 -04:00
.gitignore
.mailmap
CONTRIBUTING.md
LICENSE.TXT
README.md
SECURITY.md

The LLVM Compiler Infrastructure

Welcome to the LLVM project!

This repository contains the source code for LLVM, a toolkit for the construction of highly optimized compilers, optimizers, and run-time environments.

The LLVM project has multiple components. The core of the project is itself called "LLVM". This contains all of the tools, libraries, and header files needed to process intermediate representations and convert them into object files. Tools include an assembler, disassembler, bitcode analyzer, and bitcode optimizer.

C-like languages use the Clang frontend. This component compiles C, C++, Objective-C, and Objective-C++ code into LLVM bitcode -- and from there into object files, using LLVM.

Other components include: the libc++ C++ standard library, the LLD linker, and more.

Getting the Source Code and Building LLVM

Consult the Getting Started with LLVM page for information on building and running LLVM.

For information on how to contribute to the LLVM project, please take a look at the Contributing to LLVM guide.

Getting in touch

Join the LLVM Discourse forums, Discord chat, or #llvm IRC channel on OFTC.

The LLVM project has adopted a code of conduct for participants to all modes of communication within the project.