llvm with tablegen backend for capstone disassembler
Go to file
Yingwei Zheng be2723da5c
[InstSimplify] Fold icmp of X and/or C1 and X and/or C2 into constant (#65905)
This patch simplifies the pattern `icmp X and/or C1, X and/or C2` when
one constant mask is the subset of the other.
If `C1 & C2 == C1`, `A = X and/or C1`, `B = X and/or C2`, we can do the
following folds:
`icmp ule A, B -> true`
`icmp ugt A, B -> false`
We can apply similar folds for signed predicates when `C1` and `C2` are
the same sign:
`icmp sle A, B -> true`
`icmp sgt A, B -> false`

Alive2: https://alive2.llvm.org/ce/z/Q4ekP5
Fixes #65833.
2023-09-18 21:32:48 +08:00
.ci [ci] builkite don't escape windows targets (#66192) 2023-09-13 13:02:55 +02:00
.github workflows/pr-receive: Ignore pull requests with 10 or more commits (#66320) 2023-09-16 07:45:50 -07:00
bolt [Bolt] fix a relocation bug for R_AARCH64_CALL26 2023-09-18 19:55:35 +08:00
clang [clang][Sema] Remove irrelevant diagnostics from constraint satisfaction failure 2023-09-18 18:14:44 +09:00
clang-tools-extra [clang-tidy] Avoid checking magic numbers if _BitInt (#65888) 2023-09-17 14:00:57 -05:00
cmake [CMake] Switch the CMP0091 policy (MSVC_RUNTIME_LIBRARY) to the new behaviour 2023-07-17 09:59:05 +03:00
compiler-rt [scudo] Use MemMap in Vector 2023-09-18 14:47:39 +02:00
cross-project-tests Fix Dexter test broken with e6cc7b723f 2023-09-14 09:34:02 -07:00
flang [Flang][OpenMP] Run Flang-specific OpenMP MLIR passes in bbc 2023-09-18 14:10:04 +01:00
libc [libc] Add GPU config file using the new format (#66635) 2023-09-18 08:06:59 -05:00
libclc libclc: Fix signed integer underflow in abs_diff 2023-08-31 14:28:16 +01:00
libcxx [libc++] Implement LWG3545: std::pointer_traits should be SFINAE-friendly. (#65177) 2023-09-18 08:46:59 -04:00
libcxxabi [libc++abi][test][VE] Add UNSUPPORTED to pass tests on VE 2023-09-14 08:13:02 +09:00
libunwind [libunwind] Use __builtin_alloca to avoid missing include 2023-09-12 14:00:03 -04:00
lld [ELF] Make -t work with --format=binary 2023-09-16 00:41:23 -07:00
lldb [lldb][Docs] Link up the newly restored data formatters page 2023-09-18 13:20:42 +01:00
llvm [InstSimplify] Fold icmp of X and/or C1 and X and/or C2 into constant (#65905) 2023-09-18 21:32:48 +08:00
llvm-libgcc [llvm-libgcc] Don't export __{,de}register_frame_info* and __register_frame_table 2023-08-23 13:00:36 -07:00
mlir [mlir][Vector] Add a rewrite pattern for better low-precision bitcast… (#66387) 2023-09-18 15:08:18 +02:00
openmp [NFC][CodeGen] Change CodeGenOpt::Level/CodeGenFileType into enum classes (#66295) 2023-09-14 14:10:14 -07:00
polly [IR] Remove unnecessary bitcast from CreateMalloc() 2023-09-18 14:58:16 +02:00
pstl Clear release notes for 18.x 2023-07-25 13:58:49 +02:00
runtimes [CMake] Remove SetTargetTriple (#66464) 2023-09-14 23:44:13 -07:00
third-party Reland "Update GoogleTest to v1.14.0 (#65823)" 2023-09-13 14:17:24 -07:00
utils [bazel] Port for 88e3358f33 2023-09-18 08:58:07 +02:00
.arcconfig
.arclint
.clang-format
.clang-tidy Add -misc-use-anonymous-namespace to .clang-tidy 2023-05-06 02:33:20 +03:00
.git-blame-ignore-revs Revert "[mlir][spirv] Add D155747 to .git-blame-ignore-revs" 2023-07-21 10:59:16 -04:00
.gitignore Revert accidental .gitignore change from 9b7763821a 2023-09-07 22:42:05 -07:00
.mailmap Add entry to mailmap 2023-04-25 23:15:07 -07:00
CODE_OF_CONDUCT.md [llvm] Add CODE_OF_CONDUCT.md (#65816) 2023-09-09 10:55:31 -07:00
CONTRIBUTING.md Update CONTRIBUTING.md to remove the not about not accepting PR 2023-09-10 15:21:06 -07:00
LICENSE.TXT [docs] Add LICENSE.txt to the root of the mono-repo 2022-08-24 09:35:00 +02:00
README.md [docs] Update README and GettingStarted 2023-03-08 12:55:59 -08:00
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.