brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · a557211 Raw
50 lines · plain
1//===-- BPFCallingConv.td - Calling Conventions BPF --------*- tablegen -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9// This describes the calling conventions for the BPF architecture.10//11//===----------------------------------------------------------------------===//12 13// BPF 64-bit C return-value convention.14def RetCC_BPF64 : CallingConv<[CCIfType<[i64], CCAssignToReg<[R0]>>]>;15 16// BPF 64-bit C Calling convention.17def CC_BPF64 : CallingConv<[18  // Promote i8/i16/i32 args to i6419  CCIfType<[ i8, i16, i32 ], CCPromoteToType<i64>>,20 21  // All arguments get passed in integer registers if there is space.22  CCIfType<[i64], CCAssignToReg<[ R1, R2, R3, R4, R5 ]>>,23 24  // Could be assigned to the stack in 8-byte aligned units, but unsupported25  CCAssignToStack<8, 8>26]>;27 28// Return-value convention when -mattr=+alu32 enabled29def RetCC_BPF32 : CallingConv<[30  CCIfType<[i32], CCAssignToRegWithShadow<[W0], [R0]>>,31  CCIfType<[i64], CCAssignToRegWithShadow<[R0], [W0]>>32]>;33 34// Calling convention when -mattr=+alu32 enabled35def CC_BPF32 : CallingConv<[36  // Promote i8/i16/i32 args to i6437  CCIfType<[i32], CCAssignToRegWithShadow<[W1, W2, W3, W4, W5],38                                          [R1, R2, R3, R4, R5]>>,39 40  // All arguments get passed in integer registers if there is space.41  CCIfType<[i64], CCAssignToRegWithShadow<[R1, R2, R3, R4, R5],42                                          [W1, W2, W3, W4, W5]>>,43 44  // Could be assigned to the stack in 8-byte aligned units, but unsupported45  CCAssignToStack<8, 8>46]>;47 48def CSR : CalleeSavedRegs<(add R6, R7, R8, R9, R10)>;49def CSR_PreserveAll : CalleeSavedRegs<(add R0, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10)>;50