<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/lib/Target/SystemZ/SystemZCallingConv.td, branch users/nico/python-2</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/'/>
<entry>
<title>[SystemZ] Add support for 16-bit floating point. (#109164)</title>
<updated>2025-04-16T18:02:56+00:00</updated>
<author>
<name>Jonas Paulsson</name>
<email>paulson1@linux.ibm.com</email>
</author>
<published>2025-04-16T18:02:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=6d03f51f0c59171f1ec3c5cc5c1fe71c30956273'/>
<id>6d03f51f0c59171f1ec3c5cc5c1fe71c30956273</id>
<content type='text'>
- _Float16 is now accepted by Clang.

- The half IR type is fully handled by the backend.

- These values are passed in FP registers and converted to/from float around
  each operation.

- Compiler-rt conversion functions are now built for s390x including the missing
  extendhfdf2 which was added.

Fixes #50374</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- _Float16 is now accepted by Clang.

- The half IR type is fully handled by the backend.

- These values are passed in FP registers and converted to/from float around
  each operation.

- Compiler-rt conversion functions are now built for s390x including the missing
  extendhfdf2 which was added.

Fixes #50374</pre>
</div>
</content>
</entry>
<entry>
<title>[Target] Use templated MachineFunction::getSubtarget in *CallingConv.td. NFC (#107311)</title>
<updated>2024-09-05T06:15:25+00:00</updated>
<author>
<name>Craig Topper</name>
<email>craig.topper@sifive.com</email>
</author>
<published>2024-09-05T06:15:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=aafaa6943463b56db2928081dc72b116e246c249'/>
<id>aafaa6943463b56db2928081dc72b116e246c249</id>
<content type='text'>
This hides away the static_cast needed to get the target specific Subtarget
object.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This hides away the static_cast needed to get the target specific Subtarget
object.</pre>
</div>
</content>
</entry>
<entry>
<title>[SystemZ][z/OS] Continuation of __ptr32 support (#103393)</title>
<updated>2024-08-14T17:26:30+00:00</updated>
<author>
<name>Abhina Sree</name>
<email>Abhina.Sreeskantharajan@ibm.com</email>
</author>
<published>2024-08-14T17:26:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=a0be7053d7ce4c93dfb10f5566b611069083994f'/>
<id>a0be7053d7ce4c93dfb10f5566b611069083994f</id>
<content type='text'>
This is a continuation of the __ptr32 support added here
https://github.com/llvm/llvm-project/commit/135fecd4441068667ef23f56098befd0c42f89f2</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is a continuation of the __ptr32 support added here
https://github.com/llvm/llvm-project/commit/135fecd4441068667ef23f56098befd0c42f89f2</pre>
</div>
</content>
</entry>
<entry>
<title>[SystemZ] Support i128 as legal type in VRs (#74625)</title>
<updated>2023-12-15T11:55:15+00:00</updated>
<author>
<name>Ulrich Weigand</name>
<email>ulrich.weigand@de.ibm.com</email>
</author>
<published>2023-12-15T11:55:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=a65ccc1b9fe740c9f65d9cf2b627de50278aad56'/>
<id>a65ccc1b9fe740c9f65d9cf2b627de50278aad56</id>
<content type='text'>
On processors supporting vector registers and SIMD instructions, enable
i128 as legal type in VRs. This allows many operations to be implemented
via native instructions directly in VRs (including add, subtract,
logical operations and shifts). For a few other operations (e.g.
multiply and divide, as well as atomic operations), we need to move the
i128 value back to a GPR pair to use the corresponding instruction
there. Overall, this is still beneficial.

The patch includes the following LLVM changes:
- Enable i128 as legal type
- Set up legal operations (in SystemZInstrVector.td)
- Custom expansion for i128 add/subtract with carry
- Custom expansion for i128 comparisons and selects
- Support for moving i128 to/from GPR pairs when required
- Handle 128-bit integer constant values everywhere
- Use i128 as intrinsic operand type where appropriate
- Updated and new test cases

In addition, clang builtins are updated to reflect the intrinsic operand
type changes (which also improves compatibility with GCC).</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
On processors supporting vector registers and SIMD instructions, enable
i128 as legal type in VRs. This allows many operations to be implemented
via native instructions directly in VRs (including add, subtract,
logical operations and shifts). For a few other operations (e.g.
multiply and divide, as well as atomic operations), we need to move the
i128 value back to a GPR pair to use the corresponding instruction
there. Overall, this is still beneficial.

The patch includes the following LLVM changes:
- Enable i128 as legal type
- Set up legal operations (in SystemZInstrVector.td)
- Custom expansion for i128 add/subtract with carry
- Custom expansion for i128 comparisons and selects
- Support for moving i128 to/from GPR pairs when required
- Handle 128-bit integer constant values everywhere
- Use i128 as intrinsic operand type where appropriate
- Updated and new test cases

In addition, clang builtins are updated to reflect the intrinsic operand
type changes (which also improves compatibility with GCC).</pre>
</div>
</content>
</entry>
<entry>
<title>[SystemZ][z/OS] Introduce CCAssignToRegAndStack to calling convention</title>
<updated>2022-07-19T17:55:25+00:00</updated>
<author>
<name>Yusra Syeda</name>
<email>yusra.syeda@ibm.com</email>
</author>
<published>2022-07-19T17:34:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=6fb27bc2e3eac45d597bfc9285e5e1cb8ca16a60'/>
<id>6fb27bc2e3eac45d597bfc9285e5e1cb8ca16a60</id>
<content type='text'>
Differential Revision: https://reviews.llvm.org/D127328
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Differential Revision: https://reviews.llvm.org/D127328
</pre>
</div>
</content>
</entry>
<entry>
<title>Reland "[SystemZ][z/OS] Fix f32 variadic argument assertion"</title>
<updated>2022-07-18T18:25:17+00:00</updated>
<author>
<name>Mubariz Afzal</name>
<email>mubarizafzal@gmail.com</email>
</author>
<published>2022-07-18T18:24:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=c444f037878c61bcc750855c6edbcdac8f0871a5'/>
<id>c444f037878c61bcc750855c6edbcdac8f0871a5</id>
<content type='text'>
This patch relands the f32 vararg assertion on z/OS fix that was reverted previously due to the testcase failing on non-z/OS platforms. It is now passing.

The tablegen lines that specify the XPLINK64 calling convention for promoting an f32 vararg to an f64 are effectively overwritten by the following tablegen line which bitcast an f64 vararg to an i64 (so that it can be used in the GPRs). Thus it becomes a bitcast from f32 to i64. We don't handle bitcasts for f32s and so this causes an assertion to be thrown.

We fix this by simplifying the tablegen lines to explicity show this behaviour, and allow the f32 in the bitcast case by first promoting it to an f64.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch relands the f32 vararg assertion on z/OS fix that was reverted previously due to the testcase failing on non-z/OS platforms. It is now passing.

The tablegen lines that specify the XPLINK64 calling convention for promoting an f32 vararg to an f64 are effectively overwritten by the following tablegen line which bitcast an f64 vararg to an i64 (so that it can be used in the GPRs). Thus it becomes a bitcast from f32 to i64. We don't handle bitcasts for f32s and so this causes an assertion to be thrown.

We fix this by simplifying the tablegen lines to explicity show this behaviour, and allow the f32 in the bitcast case by first promoting it to an f64.
</pre>
</div>
</content>
</entry>
<entry>
<title>[SystemZ] [z/OS] Use assignCalleeSavedSpillSlots() to mark handle special registers in CSR list instead of determineCalleeSave</title>
<updated>2022-07-07T02:22:25+00:00</updated>
<author>
<name>Neumann Hon</name>
<email>h.neukc@gmail.com</email>
</author>
<published>2022-07-07T02:22:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=c45ec53e7b852c1d874b6ffac11ce71ca21415dd'/>
<id>c45ec53e7b852c1d874b6ffac11ce71ca21415dd</id>
<content type='text'>
This PR moves the handling of special registers that need to be saved/restored in the prolog/epilog respectively from determineCalleeSaves to assignCalleeSavedSpillSlots. The documentation of the parent function of assignCalleeSavedSpillSlots explicitly allows the modification of the CSI hence adding the special registers (the stack pointer register, the return address register, and the entry point register) to the CSI list at that stage should be permissible.

This cleans up the code a bit and makes it so that we do not have to place registers that are not actually considered CSRs by the spec in the CSR list, which is something of a hack.

Reviewed By: uweigand

Differential Revision: https://reviews.llvm.org/D125044
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This PR moves the handling of special registers that need to be saved/restored in the prolog/epilog respectively from determineCalleeSaves to assignCalleeSavedSpillSlots. The documentation of the parent function of assignCalleeSavedSpillSlots explicitly allows the modification of the CSI hence adding the special registers (the stack pointer register, the return address register, and the entry point register) to the CSI list at that stage should be permissible.

This cleans up the code a bit and makes it so that we do not have to place registers that are not actually considered CSRs by the spec in the CSR list, which is something of a hack.

Reviewed By: uweigand

Differential Revision: https://reviews.llvm.org/D125044
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert [SystemZ][z/OS] Fix f32 variadic argument assertion</title>
<updated>2022-02-16T04:28:40+00:00</updated>
<author>
<name>Mubariz Afzal</name>
<email>mubarizafzal@gmail.com</email>
</author>
<published>2022-02-16T04:25:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=1a5b881d4cf0fafe78258825f6442277e1636ecb'/>
<id>1a5b881d4cf0fafe78258825f6442277e1636ecb</id>
<content type='text'>
This reverts ea0676f97d734196b15da7553cd407e6a36cef2d
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts ea0676f97d734196b15da7553cd407e6a36cef2d
</pre>
</div>
</content>
</entry>
<entry>
<title>[SystemZ][z/OS] Fix f32 variadic argument assertion</title>
<updated>2022-02-15T23:11:57+00:00</updated>
<author>
<name>Mubariz Afzal</name>
<email>mubarizafzal@gmail.com</email>
</author>
<published>2022-02-15T23:11:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=ea0676f97d734196b15da7553cd407e6a36cef2d'/>
<id>ea0676f97d734196b15da7553cd407e6a36cef2d</id>
<content type='text'>
The tablegen lines that specify the XPLINK64 calling convention for promoting an f32 vararg to an f64 are effectively overwritten by the following tablegen line which bitcast an f64 vararg to an i64 (so that it can be used in the GPRs). It becomes a bitcast from f32 to i64.

Since we don't handle a bitcast for f32s this caused an assertion.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The tablegen lines that specify the XPLINK64 calling convention for promoting an f32 vararg to an f64 are effectively overwritten by the following tablegen line which bitcast an f64 vararg to an i64 (so that it can be used in the GPRs). It becomes a bitcast from f32 to i64.

Since we don't handle a bitcast for f32s this caused an assertion.
</pre>
</div>
</content>
</entry>
<entry>
<title>[z/OS]  Implement prologue and epilogue generation for z/OS target.</title>
<updated>2021-12-16T14:04:05+00:00</updated>
<author>
<name>Neumann Hon</name>
<email>neumann.hon@ibm.com</email>
</author>
<published>2021-12-15T22:02:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=9a35844990159f2ced980147f2af4ead4c2d4e93'/>
<id>9a35844990159f2ced980147f2af4ead4c2d4e93</id>
<content type='text'>
This patch adds support for prologue and epilogue generation for the z/OS target under the XPLINK64 ABI for functions with a stack size of less than 1048576 bytes (huge stack frames).

Reviewed By: uweigand

Differential Revision: https://reviews.llvm.org/D114457
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch adds support for prologue and epilogue generation for the z/OS target under the XPLINK64 ABI for functions with a stack size of less than 1048576 bytes (huge stack frames).

Reviewed By: uweigand

Differential Revision: https://reviews.llvm.org/D114457
</pre>
</div>
</content>
</entry>
</feed>
