[clang] [llvm] [PowerPC][AIX] 64-bit large code-model support for toc-data (PR #90619)
Amy Kwan via cfe-commits
cfe-commits at lists.llvm.org
Thu May 16 10:18:47 PDT 2024
================
@@ -6141,24 +6141,23 @@ void PPCDAGToDAGISel::Select(SDNode *N) {
assert((isPPC64 || (isAIXABI && !isPPC64)) && "We are dealing with 64-bit"
" ELF/AIX or 32-bit AIX in the following.");
- // Transforms the ISD::TOC_ENTRY node for 32-bit AIX large code model mode
- // or 64-bit medium (ELF-only) or large (ELF and AIX) code model code non
- // toc-data symbols.
+ // Transforms the ISD::TOC_ENTRY node for 32-bit AIX large code model mode,
+ // 64-bit medium (ELF-only), or large (ELF and AIX) code model code that
----------------
amy-kwan wrote:
Question about the comment. We say we are transforming for:
- 32-bit large AIX
- 64-bit medium ELF
- large (ELF and AIX)
And then the comment below says:
```
We generate two instructions as described below. The first source
// operand is a symbol reference. If it must be referenced via the TOC
// according to Subtarget, we generate:
// [32-bit AIX]
// LWZtocL(@sym, ADDIStocHA(%r2, @sym))
// [64-bit ELF/AIX]
// LDtocL(@sym, ADDIStocHA8(%x2, @sym))
// Otherwise we generate:
// ADDItocL8(ADDIStocHA8(%x2, @sym), @sym)
```
The first two `LWZtocL(@sym, ADDIStocHA(%r2, @sym))` and ` LDtocL(@sym, ADDIStocHA8(%x2, @sym))` should take care of large ELF and AIX, and then `ADDItocL8(ADDIStocHA8(%x2, @sym), @sym)` handles the 64-bit ELF.
The rest of the comment below it is toc-data related. Is it necessary to still say the `for 32-bit AIX large code model mode` part if this is almost encapsulated in the `large (ELF and AIX)` part? Or am I misunderstanding?
https://github.com/llvm/llvm-project/pull/90619
More information about the cfe-commits
mailing list