Lines Matching +full:non +full:- +full:compliant
1 //=- SystemZCallingConv.td - Calling conventions for SystemZ -*- tablegen -*-=//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
9 //===----------------------------------------------------------------------===//
21 : CCIf<"static_cast<SystemZCCState *>(&State)->IsFixed(ValNo)", A>;
25 : CCIf<"!(static_cast<SystemZCCState *>(&State)->IsFixed(ValNo))", A>;
29 : CCIf<"static_cast<SystemZCCState *>(&State)->IsShortVector(ValNo)", A>;
32 //===----------------------------------------------------------------------===//
34 //===----------------------------------------------------------------------===//
42 // ABI-compliant code returns 64-bit integers in R2. Make the other
43 // call-clobbered argument registers available for code that doesn't
45 // call-saved and therefore not suitable for return values.)
49 // ABI-complaint code returns float and double in F0. Make the
50 // other floating-point argument registers available for code that
51 // doesn't care about the ABI. All floating-point argument registers
52 // are call-clobbered, so we can use all of them here.
56 // Similarly for vectors, with V24 being the ABI-compliant choice.
57 // Sub-128 vectors are returned in the same way, but they're widened
64 //===----------------------------------------------------------------------===//
66 //===----------------------------------------------------------------------===//
87 //===----------------------------------------------------------------------===//
89 //===----------------------------------------------------------------------===//
99 // A SwiftSelf is passed in callee-saved R10.
102 // A SwiftError is passed in callee-saved R9.
112 // The first 5 integer arguments are passed in R2-R6. Note that R6
113 // is call-saved.
117 // The first 4 float and double arguments are passed in even registers F0-F6.
121 // The first 8 named vector arguments are passed in V24-V31. Sub-128 vectors
129 // However, sub-128 vectors which need to go on the stack occupy just a
130 // single 8-byte-aligned 8-byte stack slot. Pass as i64.
135 // Other vector arguments are passed in 8-byte-aligned 16-byte stack slots.
140 // Other arguments are passed in 8-byte-aligned 8-byte stack slots.
144 //===----------------------------------------------------------------------===//
145 // z/Linux callee-saved registers
146 //===----------------------------------------------------------------------===//
154 // Note that registers 0 and 1 are still defined as intra-call scratch
163 //===----------------------------------------------------------------------===//
164 // z/OS XPLINK64 callee-saved registers
165 //===----------------------------------------------------------------------===//
172 //===----------------------------------------------------------------------===//
174 //===----------------------------------------------------------------------===//
176 // XPLINK64 ABI compliant code widens integral types smaller than i64
180 // Structs of size 1-24 bytes are returned in R1D, R2D, and R3D.
182 // An i64 is returned in R3D. R2D and R1D provided for ABI non-compliant
186 // ABI compliant code returns floating point values in FPR0, FPR2, FPR4
188 // All floating point return-value registers are call-clobbered.
192 // ABI compliant code returns f128 in F0D and F2D, hence F0Q.
196 // ABI compliant code returns vectors in VR24 but other registers
203 //===----------------------------------------------------------------------===//
205 //===----------------------------------------------------------------------===//
206 // XPLink uses a logical argument list consisting of contiguous register-size
207 // words (8 bytes in 64-Bit mode) where some arguments are passed in registers
211 // The first three register-sized words of the parameter area are passed in
212 // GPRs 1-3. FP values and vector-type arguments are instead passed in FPRs
214 // the first three register-sized words of the parameter area, the corresponding
222 // XPLINK64 ABI compliant code widens integral types smaller than i64
232 // Non fixed vector arguments are treated in the same way as long
238 // A SwiftSelf is passed in callee-saved R10.
249 // The first 3 integer arguments are passed in registers R1D-R3D.
254 // The first 8 named vector arguments are passed in V24-V31. Sub-128 vectors
266 // FPR0-FPR6. The rest will be passed in the user area.
276 // Other arguments are passed in 8-byte-aligned 8-byte stack slots.
278 // Other f128 arguments are passed in 8-byte-aligned 16-byte stack slots.
280 // Vector arguments are passed in 8-byte-alinged 16-byte stack slots too.
286 //===----------------------------------------------------------------------===//
288 //===----------------------------------------------------------------------===//
299 //===----------------------------------------------------------------------===//
301 //===----------------------------------------------------------------------===//