aboutsummaryrefslogtreecommitdiff
path: root/offload/test/tools/offload-tblgen/print_function.td
blob: 74b39f145a4000a41dc74b2a6c1633adbaf52868 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// RUN: %offload-tblgen -gen-print-header -I %S/../../../liboffload/API %s | %fcheck-generic --check-prefix=CHECK-PRINT
// RUN: %offload-tblgen -gen-api -I %S/../../../liboffload/API %s | %fcheck-generic --check-prefix=CHECK-API

// Check that print helpers are created for functions

include "APIDefs.td"

def ol_foo_handle_t : Handle {
    let desc = "Example handle type";
}

def FunctionA : Function {
    let desc = "Function A description";
    let details = [ "Function A detailed information" ];
    let params = [
        Param<"uint32_t", "ParamValue", "A plain value parameter">,
        Param<"ol_foo_handle_t", "ParamHandle", "A handle parameter">,
        Param<"uint32_t*", "ParamPointer", "A pointer parameter">,
    ];
    let returns = [];
}

// CHECK-API: typedef struct function_a_params_t {
// CHECK-API-NEXT: uint32_t* pParamValue;
// CHECK-API-NEXT: ol_foo_handle_t* pParamHandle;
// CHECK-API-NEXT: uint32_t** pParamPointer;

// CHECK-PRINT: inline llvm::raw_ostream &operator<<(llvm::raw_ostream &os, const struct function_a_params_t *params)
// CHECK-PRINT: os << ".ParamValue = ";
// CHECK-PRINT: os << *params->pParamValue;
// CHECK-PRINT: os << ", ";
// CHECK-PRINT: os << ".ParamHandle = ";
// CHECK-PRINT: printPtr(os, *params->pParamHandle);
// CHECK-PRINT: os << ", ";
// CHECK-PRINT: os << ".ParamPointer = ";
// CHECK-PRINT: printPtr(os, *params->pParamPointer);