Revision tags: llvmorg-21-init |
|
#
8424bf20 |
| 20-Jan-2025 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[SystemZ] Add support for new cpu architecture - arch15
This patch adds support for the next-generation arch15 CPU architecture to the SystemZ backend.
This includes: - Basic support for the new pr
[SystemZ] Add support for new cpu architecture - arch15
This patch adds support for the next-generation arch15 CPU architecture to the SystemZ backend.
This includes: - Basic support for the new processor and its features. - Detection of arch15 as host processor. - Assembler/disassembler support for new instructions. - Exploitation of new instructions for code generation. - New vector (signed|unsigned|bool) __int128 data types. - New LLVM intrinsics for certain new instructions. - Support for low-level builtins mapped to new LLVM intrinsics. - New high-level intrinsics in vecintrin.h. - Indicate support by defining __VEC__ == 10305.
Note: No currently available Z system supports the arch15 architecture. Once new systems become available, the official system name will be added as supported -march name.
show more ...
|
Revision tags: llvmorg-19.1.7, llvmorg-19.1.6 |
|
#
deed1b06 |
| 03-Dec-2024 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[SystemZ] Fix address parsing in HLASM mode
When parsing an address that contains only a single register for an instruction that actually has both a base and an index register, the parsed register i
[SystemZ] Fix address parsing in HLASM mode
When parsing an address that contains only a single register for an instruction that actually has both a base and an index register, the parsed register is treated as base by AsmParser.
This is correct when emulating the GNU assembler, but not when emulating HLASM, as the latter treat the register as index in this case.
show more ...
|
Revision tags: llvmorg-19.1.5, llvmorg-19.1.4 |
|
#
798a8941 |
| 15-Nov-2024 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[SystemZ] Fix address operand parsing incompatibilities with GAS
The LLVM AsmParser showed different behavior compared to GAS when parsing address operands in the following two ways:
- If the addre
[SystemZ] Fix address operand parsing incompatibilities with GAS
The LLVM AsmParser showed different behavior compared to GAS when parsing address operands in the following two ways:
- If the address operand only has a single register (no comma), it is always interpreted as base register by GAS, even in the vector-index case (vgef etc.) This means the following is actually incorrect usage, as the base cannot be a vector register: vgef %v0, 0(%v1), 0.
- GAS allows specifying a missing base register by using a comma after the first register, e.g. vgef %v0, 0(%v1,), 0.
show more ...
|
Revision tags: llvmorg-19.1.3 |
|
#
6512a8dd |
| 22-Oct-2024 |
tltao <tony.le.tao@gmail.com> |
[SystemZ] Split SystemZInstPrinter to two classes based on Asm dialect (#112975)
In preparation for future work on separating the output of the GNU/HLASM
ASM dialects, we first separate the SystemZ
[SystemZ] Split SystemZInstPrinter to two classes based on Asm dialect (#112975)
In preparation for future work on separating the output of the GNU/HLASM
ASM dialects, we first separate the SystemZInstPrinter classes to two
versions, one for each ASM dialect.
The common code remains in a SystemZInstPrinterCommon class instead.
---------
Co-authored-by: Tony Tao <tonytao@ca.ibm.com>
show more ...
|
#
783901bd |
| 18-Oct-2024 |
tltao <tony.le.tao@gmail.com> |
[SystemZ] Rename SystemZ ATT Asm dialect to GNU Asm dialect (#112800)
The ATT assembler dialect on SystemZ seems to have been taken from the
existing ATT/Intel code. However, on SystemZ, ATT does n
[SystemZ] Rename SystemZ ATT Asm dialect to GNU Asm dialect (#112800)
The ATT assembler dialect on SystemZ seems to have been taken from the
existing ATT/Intel code. However, on SystemZ, ATT does not hold any
meaning. In reality, we are splitting the difference between GNU Asm
syntax and HLASM Asm syntax, so it makes sense to rename ATT to GNU
instead.
Co-authored-by: Tony Tao <tonytao@ca.ibm.com>
show more ...
|
Revision tags: llvmorg-19.1.2, llvmorg-19.1.1 |
|
#
4b524088 |
| 18-Sep-2024 |
Lei Huang <lei@ca.ibm.com> |
[NFC] Update function names in MCTargetAsmParser.h (#108643)
Update function names to adhere to LLVM coding standard.
|
Revision tags: llvmorg-19.1.0 |
|
#
ebc7f557 |
| 05-Sep-2024 |
Alex Rønne Petersen <alex@alexrp.com> |
[llvm][SystemZ] Fix parsing of `.cfi_undefined` with percent-less registers. (#107032)
This is just e3d658b applied to SystemZ.
An example of this being used in the wild:
https://sourceware.org/
[llvm][SystemZ] Fix parsing of `.cfi_undefined` with percent-less registers. (#107032)
This is just e3d658b applied to SystemZ.
An example of this being used in the wild:
https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/s390/s390-64/start.S;h=59eeb7e998227bdf32029cd074f0876c450404ea;hb=HEAD#l63
show more ...
|
Revision tags: llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1, llvmorg-20-init, llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3 |
|
#
5e5b6561 |
| 25-Mar-2024 |
Sergei Barannikov <barannikov88@gmail.com> |
[MC] Make `MCParsedAsmOperand::getReg()` return `MCRegister` (#86444)
|
Revision tags: llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init |
|
#
586ecdf2 |
| 12-Dec-2023 |
Kazu Hirata <kazu@google.com> |
[llvm] Use StringRef::{starts,ends}_with (NFC) (#74956)
This patch replaces uses of StringRef::{starts,ends}with with
StringRef::{starts,ends}_with for consistency with
std::{string,string_view}::
[llvm] Use StringRef::{starts,ends}_with (NFC) (#74956)
This patch replaces uses of StringRef::{starts,ends}with with
StringRef::{starts,ends}_with for consistency with
std::{string,string_view}::{starts,ends}_with in C++20.
I'm planning to deprecate and eventually remove
StringRef::{starts,ends}with.
show more ...
|
#
901e484f |
| 04-Dec-2023 |
Ulrich Weigand <ulrich.weigand@de.ibm.com> |
[SystemZ] Handle index-only addresses in (dis)assembler
Most addresses in SystemZ instructions take two registers, an index register and a base register. However, either of those can be omitted. I
[SystemZ] Handle index-only addresses in (dis)assembler
Most addresses in SystemZ instructions take two registers, an index register and a base register. However, either of those can be omitted. If there is just a single register, this usually is taken as the base register - however, there are certain rare cases where you specifically want to use an index register but no base register. This is currently not handled consistently by the assembler / disassembler.
Fix this by - always emitting a dummy 0 as base register for index- only addresses - correctly handle dummy 0 as indicating no base register when parsing an address
This is compatible with current GNU binutils behavior.
show more ...
|
Revision tags: llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4 |
|
#
9104e824 |
| 25-Oct-2023 |
Kai Nacke <kai.peter.nacke@ibm.com> |
[SystemZ][NFC] Fix a couple of style issues (#69958)
Some fixes for style issues pointed out by clang-tidy:
- Upper case/lower case fixes
- No else after return
- Removed unused #include's
- A
[SystemZ][NFC] Fix a couple of style issues (#69958)
Some fixes for style issues pointed out by clang-tidy:
- Upper case/lower case fixes
- No else after return
- Removed unused #include's
- Added NOLINTNEXTLINE() for the LLVM* functions
All changes are NFC.
show more ...
|
Revision tags: llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0 |
|
#
a479be0f |
| 06-Sep-2023 |
Sergei Barannikov <barannikov88@gmail.com> |
[MC] Change tryParseRegister to return ParseStatus (NFC)
This finishes the work of replacing OperandMatchResultTy with ParseStatus, started in D154101. As a drive-by change, rename some RegNo variab
[MC] Change tryParseRegister to return ParseStatus (NFC)
This finishes the work of replacing OperandMatchResultTy with ParseStatus, started in D154101. As a drive-by change, rename some RegNo variables to just Reg (a leftover from the days when RegNo had 'unsigned' type).
show more ...
|
Revision tags: llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init |
|
#
aeeaadd6 |
| 03-Jul-2023 |
Sergei Barannikov <barannikov88@gmail.com> |
[SystemZ] Replace OperandMatchResultTy with ParseStatus (NFC)
ParseStatus is slightly more convenient to use due to implicit conversion from bool, which allows to do something like: ``` return Err
[SystemZ] Replace OperandMatchResultTy with ParseStatus (NFC)
ParseStatus is slightly more convenient to use due to implicit conversion from bool, which allows to do something like: ``` return Error(L, "msg"); ``` when with MatchOperandResultTy it had to be: ``` Error(L, "msg"); return MatchOperand_ParseFail; ``` It also has more appropriate name since parse* methods are not only for parsing operands.
Reviewed By: uweigand
Differential Revision: https://reviews.llvm.org/D154316
show more ...
|
#
a0eee6c9 |
| 20-Jul-2023 |
Ilya Leoshkevich <iii@linux.ibm.com> |
[SystemZ] Allow symbols in immediate asm operands
Currently mentioning any symbols in immediate asm operands is not supported, for example:
error: invalid operand for instruction lghi %r4,f
[SystemZ] Allow symbols in immediate asm operands
Currently mentioning any symbols in immediate asm operands is not supported, for example:
error: invalid operand for instruction lghi %r4,foo_end-foo
The immediate problem is that is*Imm() and print*Operand() functions do not accept MCExprs, but simply relaxing these checks is not enough: after symbol addresses are computed, range checks need to run against resolved values.
Add a number of SystemZ::FixupKind members for each kind of immediate value and process them in SystemZMCAsmBackend::applyFixup(). Only perform the range checks, do not change anything.
Adjust the tests: move previously failing cases like the one shown above out of insn-bad.s.
Reviewed By: uweigand
Differential Revision: https://reviews.llvm.org/D154899
show more ...
|
#
af20c1c1 |
| 29-Jun-2023 |
Sergei Barannikov <barannikov88@gmail.com> |
[MC] Add three-state parseDirective as a replacement for ParseDirective
Conventionally, parsing methods return false on success and true on error. However, directive parsing methods need a third sta
[MC] Add three-state parseDirective as a replacement for ParseDirective
Conventionally, parsing methods return false on success and true on error. However, directive parsing methods need a third state: the directive is not target specific. AsmParser::parseStatement detected this case by using a fragile heuristic: if the target parser did not consume any tokens, the directive is assumed to be not target-specific.
Some targets fail to follow the convention: they return success after emitting an error or do not consume the entire line and return failure on successful parsing. This was partially worked around by checking for pending errors in parseStatement.
This patch tries to improve the situation by introducing parseDirective method that returns ParseStatus -- three-state class. The new method should eventually replace the old one returning bool.
ParseStatus is intentionally implicitly constructible from bool to allow uses like `return Error(Loc, "message")`. It also has a potential to replace OperandMatchResulTy as it is more convenient to use due to the implicit construction from bool and more type safe.
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D154101
show more ...
|
#
b0abd489 |
| 17-Jun-2023 |
Elliot Goodrich <elliotgoodrich@gmail.com> |
[llvm] Add missing StringExtras.h includes
In preparation for removing the `#include "llvm/ADT/StringExtras.h"` from the header to source file of `llvm/Support/Error.h`, first add in all the missing
[llvm] Add missing StringExtras.h includes
In preparation for removing the `#include "llvm/ADT/StringExtras.h"` from the header to source file of `llvm/Support/Error.h`, first add in all the missing includes that were previously included transitively through this header.
show more ...
|
Revision tags: llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1 |
|
#
3c8df692 |
| 04-Apr-2023 |
Ilya Leoshkevich <iii@linux.ibm.com> |
Drop U6Imm-related definitions
They are no longer used, which leads to the -Wunused-function warning.
Reviewed By: uweigand
Differential Revision: https://reviews.llvm.org/D147521
|
Revision tags: llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7 |
|
#
4d48ccfc |
| 18-Dec-2022 |
Sergei Barannikov <barannikov88@gmail.com> |
[MC] Use `MCRegister` instead of `unsigned` in `MCTargetAsmParser`
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D140273
|
Revision tags: llvmorg-15.0.6, llvmorg-15.0.5, llvmorg-15.0.4, llvmorg-15.0.3, working, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init, llvmorg-14.0.6, llvmorg-14.0.5, llvmorg-14.0.4, llvmorg-14.0.3, llvmorg-14.0.2, llvmorg-14.0.1, llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3, llvmorg-14.0.0-rc2, llvmorg-14.0.0-rc1, llvmorg-15-init, llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2, llvmorg-13.0.1-rc1, llvmorg-13.0.0, llvmorg-13.0.0-rc4, llvmorg-13.0.0-rc3, llvmorg-13.0.0-rc2, llvmorg-13.0.0-rc1, llvmorg-14-init |
|
#
481bb44b |
| 28-Jun-2021 |
Jonas Paulsson <paulsson@linux.vnet.ibm.com> |
[SystemZ] Emit a .gnu_attribute for an externally visible vector abi.
On SystemZ, the vector ABI changes depending on the presence of hardware vector support. Therefore, each binary compiled with a
[SystemZ] Emit a .gnu_attribute for an externally visible vector abi.
On SystemZ, the vector ABI changes depending on the presence of hardware vector support. Therefore, each binary compiled with a visible vector ABI (e.g. one that calls an external function with a vector argument) should be marked with a .gnu_attribute describing this.
Reviewed By: uweigand
Differential Revision: https://reviews.llvm.org/D105067
show more ...
|
#
7070c6a9 |
| 02-May-2022 |
Ilya Leoshkevich <iii@linux.ibm.com> |
[SystemZ] Accept (. - 0x100000000) PCRel32 constants
Clang does not accept instructions like brasl %r0,.-0x100000000, because the second operand's right-hand-side (0x100000000) barely misses the acc
[SystemZ] Accept (. - 0x100000000) PCRel32 constants
Clang does not accept instructions like brasl %r0,.-0x100000000, because the second operand's right-hand-side (0x100000000) barely misses the acceptable range. However, since it's being subtracted, it makes sense to perform the range check on the negated value.
Reviewed By: uweigand
Differential Revision: https://reviews.llvm.org/D124780
show more ...
|
#
06943537 |
| 09-Feb-2022 |
serge-sans-paille <sguelton@redhat.com> |
Cleanup MCParser headers
As usual with that header cleanup series, some implicit dependencies now need to be explicit:
llvm/MC/MCParser/MCAsmParser.h no longer includes llvm/MC/MCParser/MCAsmLexer.
Cleanup MCParser headers
As usual with that header cleanup series, some implicit dependencies now need to be explicit:
llvm/MC/MCParser/MCAsmParser.h no longer includes llvm/MC/MCParser/MCAsmLexer.h
Preprocessed lines to build llvm on my setup: after: 1068185081 before: 1068324320
So no compile time benefit to expect, but we still get the looser coupling between files which is great.
Discourse thread: https://discourse.llvm.org/t/include-what-you-use-include-cleanup Differential Revision: https://reviews.llvm.org/D119359
show more ...
|
#
1c3ef9ef |
| 05-Nov-2021 |
Jonas Paulsson <paulsson@linux.vnet.ibm.com> |
[SystemZ] Support symbolic displacements.
This patch adds support for symbolic displacements, e.g. like 'lg %r0, sym(%r1)', which is done using relocations. This is needed to compile the kernel with
[SystemZ] Support symbolic displacements.
This patch adds support for symbolic displacements, e.g. like 'lg %r0, sym(%r1)', which is done using relocations. This is needed to compile the kernel without disabling the integrated assembler.
Review: Ulrich Weigand
Differential Revision: https://reviews.llvm.org/D113341
show more ...
|
#
89b57061 |
| 08-Oct-2021 |
Reid Kleckner <rnk@google.com> |
Move TargetRegistry.(h|cpp) from Support to MC
This moves the registry higher in the LLVM library dependency stack. Every client of the target registry needs to link against MC anyway to actually us
Move TargetRegistry.(h|cpp) from Support to MC
This moves the registry higher in the LLVM library dependency stack. Every client of the target registry needs to link against MC anyway to actually use the target, so we might as well move this out of Support.
This allows us to ensure that Support doesn't have includes from MC/*.
Differential Revision: https://reviews.llvm.org/D111454
show more ...
|
#
9e4f1f92 |
| 28-Sep-2021 |
Kazu Hirata <kazu@google.com> |
[SystemZ] Remove redundant declaration SystemZMnemonicSpellCheck (NFC)
Note that SystemZMnemonicSpellCheck is defined in SystemZGenAsmMatcher.inc, which SystemZAsmParser.cpp includes.
Identified wi
[SystemZ] Remove redundant declaration SystemZMnemonicSpellCheck (NFC)
Note that SystemZMnemonicSpellCheck is defined in SystemZGenAsmMatcher.inc, which SystemZAsmParser.cpp includes.
Identified with readability-redundant-declaration.
show more ...
|
#
1a5ab3e9 |
| 12-Sep-2021 |
Jonas Paulsson <paulsson@linux.vnet.ibm.com> |
[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 Rev
[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
show more ...
|