- May 11, 2022
-
-
jacquesguan authored
This patch adds rvv codegen support for vp.fpext. The lowering of fp_round, vp.fptrunc, fp_extend and vp.fpext share most code so use a common lowering function to handle these four. And this patch changes the intermediate cast from ISD::FP_EXTEND/ISD::FP_ROUND to the RVV VL version op RISCVISD::FP_EXTEND_VL and RISCVISD::FP_ROUND_VL for scalable vectors. Reviewed By: frasercrmck Differential Revision: https://reviews.llvm.org/D123975
-
Peter Steinfeld authored
Similar to change D125046. If a programmer is able to compile and link a program that contains types that are not yet supported by the runtime, it must be because they're not yet implemented. This change will make it easier to find unimplemented code in tests. Differential Revision: https://reviews.llvm.org/D125267
-
Mingming Liu authored
Differential Revision: https://reviews.llvm.org/D125345
-
Mingming Liu authored
This reverts commit 8bef5476. Need to revert, update commit message and reapply.
-
Alexander Shaposhnikov authored
-
Xiang1 Zhang authored
Reviewed By: PengfeiWang Differential Revision: https://reviews.llvm.org/D125159
-
Mingming Liu authored
Differential Revision: https://reviews.llvm.org/D125345
-
Ting Wang authored
Enable FeatureISA2_06 on Power A2 target Reviewed By: nemanjai Differential Revision: https://reviews.llvm.org/D125203
-
Eduard Zingerman authored
Commit 8a633261 ("[BPF] Mark FI_ri as isPseudo to avoid assertion during disassembly") added isPseudo to FI_ri insn in BPFInstrInfo.td file. This patch added the missing test file. Differential Revision: https://reviews.llvm.org/D125185
-
Eduard Zingerman authored
When a specific sequence of bytes is present in the file during disassembly the disassembler fails with the following assertion: ... 0: 18 20 00 00 00 00 00 00 lea ... Assertion `idx < size()' failed. ... llvm::SmallVectorTemplateCommon<...>::operator[](...) ... llvm::MCInst::getOperand(unsigned int) ... llvm::BPFInstPrinter::printOperand(...) ... llvm::BPFInstPrinter::printInstruction() ... llvm::BPFInstPrinter::printInst(...) ... ... The byte sequence causing the error is (little endian): 18 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 The issue could be reproduced using the program bellow: test.ir: @G = constant [16 x i8] [i8 u0x18, i8 u0x20, i8 u0x00, i8 u0x00, i8 u0x00, i8 u0x00, i8 u0x00, i8 u0x00, i8 u0x00, i8 u0x00, i8 u0x00, i8 u0x00, i8 u0x00, i8 u0x00, i8 u0x00, i8 u0x00], section "foo", align 8 Compiled and disassembled as follows: cat test.ir | llc -march=bpfel -filetype=obj -o - \ | llvm-objdump --arch=bpfel --section=foo -d - This byte sequence corresponds to FI_ri instruction declared in the BPFInstrInfo.td as follows: def FI_ri : TYPE_LD_ST<BPF_IMM.Value, BPF_DW.Value, (outs GPR:$dst), (ins MEMri:$addr), "lea\t$dst, $addr", [(set i64:$dst, FIri:$addr)]> { // This is a tentative instruction, and will be replaced // with MOV_rr and ADD_ri in PEI phase let Inst{51-48} = 0; let Inst{55-52} = 2; let Inst{47-32} = 0; let Inst{31-0} = 0; let BPFClass = BPF_LD; } Notes: - First byte (opcode) is formed as follows: - BPF_IMM.Value is 0x00 - BPF_DW.Value is 0x18 - BPF_LD is 0x00 - Second byte (registers) is formed as follows: - let Inst{55-52} = 2; - let Inst{51-48} = 0; The FI_ri instruction is always replaced by MOV_rr ADD_ri instructions pair in the BPFRegisterInfo::eliminateFrameIndex method. Thus, this instruction should be invisible to disassembler. This patch achieves this by adding "isPseudo" flag for this instruction. The bug was found by decompiling of one of the BPF tests from Linux kernel (llvm-objdump -D tools/testing/selftests/bpf/bpf_iter_sockmap.o) Differential Revision: https://reviews.llvm.org/D125185 -
Florian Mayer authored
-
Florian Mayer authored
Don't fail on corrupted ELF file on indexing. This happens because files change in the directory from concurrent tests.
-
Peter Klausler authored
Inquiries into the bounds, size, and length of local variables (and function results) are acceptable specification expressions. A recent change allowed them for dummy arguments that are not OPTIONAL or INTENT(OUT), but didn't address other object entities. Differential Revision: https://reviews.llvm.org/D125343
-
Nick Desaulniers authored
We're having a hard time booting the ARCH=i386 Linux kernel with clang after removing -ffreestanding because instcombine was dropping inreg from callers during libcall simplification, but not the callees defined in different translation units. This led the callers and callees to have wildly different calling conventions, which (predictably) blew up at runtime. Infer the inreg param attrs on function declarations from the module metadata "NumRegisterParameters." This allows us to boot the ARCH=i386 Linux kernel (w/ -ffreestanding removed). Fixes: https://github.com/llvm/llvm-project/issues/53645 Reviewed By: efriedma Differential Revision: https://reviews.llvm.org/D125285
-
Wende Tan authored
The original fix (commit 23ec5782) of https://github.com/llvm/llvm-project/issues/52787 only adds `Function`s that have `Instruction`s that directly use `BlockAddress`es into the bitcode (`FUNC_CODE_BLOCKADDR_USERS`). However, in either @rickyz's original reproducing code: ``` void f(long); __attribute__((noinline)) static void fun(long x) { f(x + 1); } void repro(void) { fun(({ label: (long)&&label; })); } ``` ``` ... define dso_local void @repro() #0 { entry: br label %label label: ; preds = %entry tail call fastcc void @fun() ret void } define internal fastcc void @fun() unnamed_addr #1 { entry: tail call void @f(i64 add (i64 ptrtoint (i8* blockaddress(@repro, %label) to i64), i64 1)) #3 ret void } ... ``` or the xfs and overlayfs in the Linux kernel, `BlockAddress`es (e.g., `i8* blockaddress(@repro, %label)`) may first compose `ConstantExpr`s (e.g., `i64 ptrtoi...
-
Mingming Liu authored
(following AND) and eliminates redundant TEST instruction. Differential Revision: https://reviews.llvm.org/D124118
-
Chia-hung Duan authored
Before dump, Insetad of switching to generic form silently after verification failure. Print some debug logs to help identify why an op may be printed in a different way. Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D125136
-
Thomas Raoux authored
Move async copy operations to NVGPU as they only exist on NV target and are designed to match ptx semantic. This allows us to also add more fine grain caching hint attribute to the op. Add hint to bypass L1 and hook it up to NVVM op. Differential Revision: https://reviews.llvm.org/D125244
-
Vasileios Porpodas authored
The current reordering scheme only checks the ordering of in-tree operands. There are some cases, however, where we need to adjust the ordering based on the ordering of a future SLP-tree who's instructions are not part of the current tree, but are external users. This patch is a simple implementation of this. We keep track of scalar stores that are users of TreeEntries and if they look profitable to vectorize, then we keep track of their ordering. During the reordering step we take this new index order into account. This can remove some shuffles in cases like in the lit test. Differential Revision: https://reviews.llvm.org/D125111
-
Philip Reames authored
-
Philip Reames authored
-
Mike Rice authored
This adds support for variable stride with the val, uval, and ref linear modifiers. Previously only the no modifer type ls<argno> was supported. val -> Ls<argno> uval -> Us<argno> ref -> Rs<argno> Differential Revision: https://reviews.llvm.org/D125330
-
LLVM GN Syncbot authored
-
Mehdi Amini authored
-
Jan Korous authored
This reverts commit ce583b14.
-
Mingming Liu authored
This reverts commit d84ca05e. Will revert, update commit message and re-commit.
-
Vasileios Porpodas authored
[SLP][NFC] Precommit a lit test for a followup patch that improves tree reordering for external users. Differential Revision: https://reviews.llvm.org/D125110
-
Erich Keane authored
-
Jim Ingham authored
It was originally only in "gdb-remote process" but it is convenient to also have it come as part of gdb-remote packets.
-
Matthias Braun authored
-
Nathan James authored
-
jeff authored
This patch adds cluster edges between independent MFMA instructions. Additionally, it propogates all predecessors of cluster insts to the root of the cluster(s), and all successors to the leaf(ves) of the cluster(s) -- this is done to remove the possibility that those insts will be interspersed within the cluster. Reviewed By: kerbowa Differential Revision: https://reviews.llvm.org/D124678
-
Erich Keane authored
-
Mingming Liu authored
Differential Revision: https://reviews.llvm.org/D124118
-
Erich Keane authored
last.
-
jeff authored
Reviewed By: kerbowa Differential Revision: https://reviews.llvm.org/D124647
-
Arthur Eubanks authored
D98718 caused the order of Values/MemoryLocations we pass to alias() to be significant due to storing the offset in the PartialAlias case. But some callers weren't audited and were still passing swapped arguments, causing the returned PartialAlias offset to be negative in some cases. For example, the newly added unittests would return -1 instead of 1. Fixes #55343, a miscompile. Reviewed By: asbirlea, nikic Differential Revision: https://reviews.llvm.org/D125328
-
Florian Hahn authored
The patch extends AArch64TTIImpl::instCombineIntrinsic to simplify llvm.aarch64.neon.f{min,max}nm(a, a) -> a. This helps with simplifying code written using the ACLE, e.g. see https://godbolt.org/z/jYxsoc89c Reviewed By: dmgreen Differential Revision: https://reviews.llvm.org/D125234 -
Yaxun (Sam) Liu authored
-
Nicolas Vasilache authored
This is now subsumed by `replaceLoopWithNewYields`. Differential Revision: https://reviews.llvm.org/D125309
-