9 Commits

Author SHA1 Message Date
Fangrui Song
d93aff42c2 MC: Migrate away from operator<< MCExpr
MCExpr::print has an optional MCAsmInfo argument, which is error-prone
when omitted. MCExpr::print and the convenience helper operator<< are
discouraged to use. Switch to MCAsmInfo::printExpr instead. Use the
target-specific MCAsmInfo if available.
2025-06-28 10:58:09 -07:00
Fangrui Song
cf679e66fa SystemZ: Rename SystemZMCExpr::VK_ to SystemZ::S_
Prepare for removing SystemZMCExpr. Adopt the newer naming convention
used by most other targets.
2025-06-15 18:59:16 -07:00
Fangrui Song
a7e5de4723 SystemZ: Replace deprecated MCExpr::print with MCAsmInfo::printExpr 2025-06-15 17:23:13 -07:00
Fangrui Song
2f1c08215f SystemZMCExpr: Migrate to MCSpecifierExpr 2025-06-08 00:10:15 -07:00
Ulrich Weigand
fb21efa258
[SystemZ] Support PrintBranchImmAsAddress in disassembler (#141064)
As noticed in https://github.com/llvm/llvm-project/pull/140471, the
SystemZ target currently implements disassembly of PC-relative target
addresses differently from other back-ends. This patch brings SystemZ in
line with other targets.

Specifically, this patch changes the relevant MCInst instructions to
carry a PC-relative displacement instead of an absolute target address
in their immediate fields. When printing the instruction, this
displacement will either be shown as is (e.g. for llvm-mc), or else
translated into an absolute address at print time (e.g. for
llvm-objdump).

The existing llvm-mc based tests using PC-relative operands no longer
work and have to be rewritten, but printing displacements makes those
tests easier to maintain anyway.
2025-05-22 16:59:09 +02:00
Fangrui Song
b19b6d9fab Move SystemZ-specific MCSymbolRefExpr::VariantKind to SystemZMCExpr::Specifier
Similar to previous migration done for other targets (PowerPC, X86, ARM,
etc). Switch from the confusing VariantKind to Specifier, which aligns
with Arm and IBM AIX's documentation.

In addition, rename *MCExpr::getKind, which confusingly shadows the base class getKind.

In the future, relocation specifiers should be encoded as part of
SystemZMCExpr instead of MCSymbolRefExpr.
2025-03-22 18:05:40 -07:00
Ulrich Weigand
8424bf207e [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.
2025-01-20 19:30:21 +01:00
Fangrui Song
facdae62b7 [MCInstPrinter] Make printRegName non-const
Similar to printInst. printRegName may change states (e.g. #113834).
2024-10-29 19:14:54 -07:00
tltao
6512a8dd8c
[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>
2024-10-22 10:28:57 -04:00