diff options
Diffstat (limited to 'external/clBLAS/src/library/common/kgen_guard.c')
-rw-r--r-- | external/clBLAS/src/library/common/kgen_guard.c | 159 |
1 files changed, 0 insertions, 159 deletions
diff --git a/external/clBLAS/src/library/common/kgen_guard.c b/external/clBLAS/src/library/common/kgen_guard.c deleted file mode 100644 index d7859051..00000000 --- a/external/clBLAS/src/library/common/kgen_guard.c +++ /dev/null @@ -1,159 +0,0 @@ -/* ************************************************************************ - * Copyright 2013 Advanced Micro Devices, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ************************************************************************/ - - -#include <stdlib.h> -#include <string.h> - -#include <kerngen.h> -#include <list.h> -#include <dis_warning.h> - -typedef struct FuncNode { - void *pattern; - char funcName[FUNC_NAME_MAXLEN]; - ListNode node; -} FuncNode; - -typedef struct FuncNodeKey { - const void *pattern; - size_t patSize; -} FuncNodeKey; - -struct KgenGuard { - struct KgenContext *ctx; - int (*genCallback)(struct KgenContext*, const void*); - size_t patSize; - ListHead funcs; -}; - -static int -funcNodeCmp(const ListNode *n, const void *key) -{ - const FuncNode *fnode = container_of(n, node, FuncNode); - const FuncNodeKey *fkey = (FuncNodeKey*)key; - - return memcmp(fnode->pattern, fkey->pattern, fkey->patSize); -} - -static void -destroyFuncNode(ListNode *node) -{ - FuncNode *fnode = container_of(node, node, FuncNode); - - free(fnode->pattern); - free(fnode); -} - -struct KgenGuard -*createKgenGuard( - struct KgenContext *ctx, - int (*genCallback)(struct KgenContext *ctx, const void *pattern), - size_t patSize) -{ - struct KgenGuard *guard; - - guard = malloc(sizeof(struct KgenGuard)); - if (guard != NULL) { - guard->ctx = ctx; - guard->genCallback = genCallback; - guard->patSize = patSize; - listInitHead(&guard->funcs); - } - - return guard; -} - -void -reinitKgenGuard( - struct KgenGuard *guard, - struct KgenContext *ctx, - int (*genCallback)(struct KgenContext *ctx, const void *pattern), - size_t patSize) -{ - listDoForEachSafe(&guard->funcs, destroyFuncNode); - listInitHead(&guard->funcs); - guard->ctx = ctx; - guard->genCallback = genCallback; - guard->patSize = patSize; -} - -/* - * Invokes generator to generate a function - * matching to the 'pattern' pattern or just - * returns its name if the function is already - * generated - */ -int -findGenerateFunction( - struct KgenGuard *guard, - const void *pattern, - char *name, - size_t nameLen) -{ - ListNode *n; - FuncNode *fnode = NULL; - - FuncNodeKey fkey = {pattern, guard->patSize}; - int ret = 0; - - n = listNodeSearch(&guard->funcs, &fkey, funcNodeCmp); - if (n == NULL) { - ret = guard->genCallback(guard->ctx, pattern); - if (!ret) { - fnode = malloc(sizeof(FuncNode)); - if (fnode == NULL) { - ret = -ENOMEM; - } - else { - fnode->pattern = malloc(guard->patSize); - if (fnode->pattern == NULL) { - free(fnode); - ret = -ENOMEM; - } - else { - memcpy(fnode->pattern, pattern, guard->patSize); - kgenGetLastFuncName(fnode->funcName, - sizeof(fnode->funcName), - guard->ctx); - fnode->funcName[FUNC_NAME_MAXLEN - 1] = '\0'; - listAddToTail(&guard->funcs, &fnode->node); - } - } - } - else { - ret = -EOVERFLOW; - } - } - else { - fnode = container_of(n, node, FuncNode); - } - - if (!ret) { - strncpy(name, fnode->funcName, nameLen); - name[nameLen - 1] = '\0'; - } - - return ret; -} - -void -destroyKgenGuard(struct KgenGuard *guard) -{ - listDoForEachSafe(&guard->funcs, destroyFuncNode); - free(guard); -} - |