Files
clang-p2996/polly/lib/External/ppcg/cuda_common.c
Tobias Grosser a041239bb7 Add ppcg-0.04 to lib/External
ppcg will be used to provide mapping decisions for GPU code generation.

As we do not use C as input language, we do not include pet. However, we include
pet.h from pet 82cacb71 plus a set of dummy functions to ensure ppcg links
without problems.

The version of ppcg committed is unmodified ppcg-0.04 which has been well tested
in the context of LLVM. It does not provide an official library interface yet,
which means that in upcoming commits we will add minor modifications to make
necessary functionality accessible. We will aim to upstream these modifications
after we gained enough experience with GPU generation support in Polly to
propose a stable interface.

Reviewers: Meinersbur

Subscribers: pollydev, llvm-commits

Differential Revision: http://reviews.llvm.org/D22033

llvm-svn: 275274
2016-07-13 15:54:47 +00:00

51 lines
1.3 KiB
C

/*
* Copyright 2010 INRIA Saclay
*
* Use of this software is governed by the MIT license
*
* Written by Sven Verdoolaege, INRIA Saclay - Ile-de-France,
* Parc Club Orsay Universite, ZAC des vignes, 4 rue Jacques Monod,
* 91893 Orsay, France
*/
#include <ctype.h>
#include <limits.h>
#include <string.h>
#include "cuda_common.h"
#include "ppcg.h"
/* Open the host .cu file and the kernel .hu and .cu files for writing.
* Add the necessary includes.
*/
void cuda_open_files(struct cuda_info *info, const char *input)
{
char name[PATH_MAX];
int len;
len = ppcg_extract_base_name(name, input);
strcpy(name + len, "_host.cu");
info->host_c = fopen(name, "w");
strcpy(name + len, "_kernel.cu");
info->kernel_c = fopen(name, "w");
strcpy(name + len, "_kernel.hu");
info->kernel_h = fopen(name, "w");
fprintf(info->host_c, "#include <assert.h>\n");
fprintf(info->host_c, "#include <stdio.h>\n");
fprintf(info->host_c, "#include \"%s\"\n", name);
fprintf(info->kernel_c, "#include \"%s\"\n", name);
fprintf(info->kernel_h, "#include \"cuda.h\"\n\n");
}
/* Close all output files.
*/
void cuda_close_files(struct cuda_info *info)
{
fclose(info->kernel_c);
fclose(info->kernel_h);
fclose(info->host_c);
}