~mmach/netext73/mesa-haswell

« back to all changes in this revision

Viewing changes to src/gallium/drivers/llvmpipe/lp_test_printf.c

  • Committer: mmach
  • Date: 2022-09-22 19:56:13 UTC
  • Revision ID: netbit73@gmail.com-20220922195613-wtik9mmy20tmor0i
2022-09-22 21:17:09

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/**************************************************************************
2
 
 *
3
 
 * Copyright 2010 VMware, Inc.
4
 
 * All Rights Reserved.
5
 
 *
6
 
 * Permission is hereby granted, free of charge, to any person obtaining a
7
 
 * copy of this software and associated documentation files (the
8
 
 * "Software"), to deal in the Software without restriction, including
9
 
 * without limitation the rights to use, copy, modify, merge, publish,
10
 
 * distribute, sub license, and/or sell copies of the Software, and to
11
 
 * permit persons to whom the Software is furnished to do so, subject to
12
 
 * the following conditions:
13
 
 *
14
 
 * The above copyright notice and this permission notice (including the
15
 
 * next paragraph) shall be included in all copies or substantial portions
16
 
 * of the Software.
17
 
 *
18
 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19
 
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20
 
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
21
 
 * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
22
 
 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23
 
 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24
 
 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25
 
 *
26
 
 **************************************************************************/
27
 
 
28
 
 
29
 
#include <stdlib.h>
30
 
#include <stdio.h>
31
 
 
32
 
#include "util/u_pointer.h"
33
 
#include "gallivm/lp_bld.h"
34
 
#include "gallivm/lp_bld_init.h"
35
 
#include "gallivm/lp_bld_assert.h"
36
 
#include "gallivm/lp_bld_printf.h"
37
 
 
38
 
#include "lp_test.h"
39
 
 
40
 
 
41
 
struct printf_test_case {
42
 
   int foo;
43
 
};
44
 
 
45
 
void
46
 
write_tsv_header(FILE *fp)
47
 
{
48
 
   fprintf(fp,
49
 
           "result\t"
50
 
           "format\n");
51
 
 
52
 
   fflush(fp);
53
 
}
54
 
 
55
 
 
56
 
 
57
 
typedef void (*test_printf_t)(int i);
58
 
 
59
 
 
60
 
static LLVMValueRef
61
 
add_printf_test(struct gallivm_state *gallivm)
62
 
{
63
 
   LLVMModuleRef module = gallivm->module;
64
 
   LLVMTypeRef args[1] = { LLVMIntTypeInContext(gallivm->context, 32) };
65
 
   LLVMValueRef func = LLVMAddFunction(module, "test_printf", LLVMFunctionType(LLVMVoidTypeInContext(gallivm->context), args, 1, 0));
66
 
   LLVMBuilderRef builder = gallivm->builder;
67
 
   LLVMBasicBlockRef block = LLVMAppendBasicBlockInContext(gallivm->context, func, "entry");
68
 
 
69
 
   LLVMSetFunctionCallConv(func, LLVMCCallConv);
70
 
 
71
 
   LLVMPositionBuilderAtEnd(builder, block);
72
 
   lp_build_printf(gallivm, "hello, world\n");
73
 
   lp_build_printf(gallivm, "print 5 6: %d %d\n", LLVMConstInt(LLVMInt32TypeInContext(gallivm->context), 5, 0),
74
 
                                LLVMConstInt(LLVMInt32TypeInContext(gallivm->context), 6, 0));
75
 
 
76
 
   /* Also test lp_build_assert().  This should not fail. */
77
 
   lp_build_assert(gallivm, LLVMConstInt(LLVMInt32TypeInContext(gallivm->context), 1, 0), "assert(1)");
78
 
 
79
 
   LLVMBuildRetVoid(builder);
80
 
 
81
 
   gallivm_verify_function(gallivm, func);
82
 
 
83
 
   return func;
84
 
}
85
 
 
86
 
 
87
 
PIPE_ALIGN_STACK
88
 
static boolean
89
 
test_printf(unsigned verbose, FILE *fp,
90
 
            const struct printf_test_case *testcase)
91
 
{
92
 
   LLVMContextRef context;
93
 
   struct gallivm_state *gallivm;
94
 
   LLVMValueRef test;
95
 
   test_printf_t test_printf_func;
96
 
   boolean success = TRUE;
97
 
 
98
 
   context = LLVMContextCreate();
99
 
   gallivm = gallivm_create("test_module", context, NULL);
100
 
 
101
 
   test = add_printf_test(gallivm);
102
 
 
103
 
   gallivm_compile_module(gallivm);
104
 
 
105
 
   test_printf_func = (test_printf_t) gallivm_jit_function(gallivm, test);
106
 
 
107
 
   gallivm_free_ir(gallivm);
108
 
 
109
 
   test_printf_func(0);
110
 
 
111
 
   gallivm_destroy(gallivm);
112
 
   LLVMContextDispose(context);
113
 
 
114
 
   return success;
115
 
}
116
 
 
117
 
 
118
 
boolean
119
 
test_all(unsigned verbose, FILE *fp)
120
 
{
121
 
   boolean success = TRUE;
122
 
 
123
 
   test_printf(verbose, fp, NULL);
124
 
 
125
 
   return success;
126
 
}
127
 
 
128
 
 
129
 
boolean
130
 
test_some(unsigned verbose, FILE *fp,
131
 
          unsigned long n)
132
 
{
133
 
   return test_all(verbose, fp);
134
 
}
135
 
 
136
 
 
137
 
boolean
138
 
test_single(unsigned verbose, FILE *fp)
139
 
{
140
 
   printf("no test_single()");
141
 
   return TRUE;
142
 
}