xref: /llvm-project/offload/test/tools/offload-tblgen/print_function.td (revision fd3907ccb583df99e9c19d2fe84e4e7c52d75de9)
1// RUN: %offload-tblgen -gen-print-header -I %S/../../../liboffload/API %s | %fcheck-generic --check-prefix=CHECK-PRINT
2// RUN: %offload-tblgen -gen-api -I %S/../../../liboffload/API %s | %fcheck-generic --check-prefix=CHECK-API
3
4// Check that print helpers are created for functions
5
6include "APIDefs.td"
7
8def : Handle {
9    let name = "ol_foo_handle_t";
10    let desc = "Example handle type";
11}
12
13def : Function {
14    let name = "FunctionA";
15    let desc = "Function A description";
16    let details = [ "Function A detailed information" ];
17    let params = [
18        Param<"uint32_t", "ParamValue", "A plain value parameter">,
19        Param<"ol_foo_handle_t", "ParamHandle", "A handle parameter">,
20        Param<"uint32_t*", "ParamPointer", "A pointer parameter">,
21    ];
22    let returns = [];
23}
24
25// CHECK-API: typedef struct function_a_params_t {
26// CHECK-API-NEXT: uint32_t* pParamValue;
27// CHECK-API-NEXT: ol_foo_handle_t* pParamHandle;
28// CHECK-API-NEXT: uint32_t** pParamPointer;
29
30// CHECK-PRINT: inline std::ostream &operator<<(std::ostream &os, const struct function_a_params_t *params)
31// CHECK-PRINT: os << ".ParamValue = ";
32// CHECK-PRINT: os << *params->pParamValue;
33// CHECK-PRINT: os << ", ";
34// CHECK-PRINT: os << ".ParamHandle = ";
35// CHECK-PRINT: printPtr(os, *params->pParamHandle);
36// CHECK-PRINT: os << ", ";
37// CHECK-PRINT: os << ".ParamPointer = ";
38// CHECK-PRINT: printPtr(os, *params->pParamPointer);
39