[Beignet] [PATCH] utests: Added unit tests to test LLVM and ASM dump generation.
Yang, Rong R
rong.r.yang at intel.com
Tue Sep 8 01:35:44 PDT 2015
Pushed, thanks.
> -----Original Message-----
> From: Beignet [mailto:beignet-bounces at lists.freedesktop.org] On Behalf Of
> Song, Ruiling
> Sent: Sunday, September 6, 2015 15:05
> To: Gandikota, Sirisha; Zou, Nanhai; beignet at lists.freedesktop.org
> Cc: Gandikota, Sirisha
> Subject: Re: [Beignet] [PATCH] utests: Added unit tests to test LLVM and
> ASM dump generation.
>
> LGTM
>
> Thanks!
> Ruiling
> > -----Original Message-----
> > From: Beignet [mailto:beignet-bounces at lists.freedesktop.org] On Behalf
> > Of Sirisha Gandikota
> > Sent: Wednesday, September 2, 2015 4:44 PM
> > To: Zou, Nanhai; beignet at lists.freedesktop.org
> > Cc: Gandikota, Sirisha
> > Subject: [Beignet] [PATCH] utests: Added unit tests to test LLVM and
> > ASM dump generation.
> >
> > This patch adds 2 new tests to the unit tests. It uses the existing
> > framework and data structures and tests the llvm/asm dump generation
> > when these flags (- dump-opt-llvm, -dump-opt-asm) are passed as build
> > options along with the dump file names.
> >
> > Methods added:
> > 1) get_build_llvm_info() tests LLVM dump generation
> > 2) get_build_asm_info() tests ASM dump generation
> >
> > Signed-off-by: Sirisha Gandikota <sirisha.gandikota at intel.com>
> > ---
> > utests/get_cl_info.cpp | 107
> > +++++++++++++++++++++++++++++++++++++++++++++++++
> > 1 file changed, 107 insertions(+)
> >
> > diff --git a/utests/get_cl_info.cpp b/utests/get_cl_info.cpp index
> > e2dc0d7..7c03d95 100644
> > --- a/utests/get_cl_info.cpp
> > +++ b/utests/get_cl_info.cpp
> > @@ -364,6 +364,113 @@ void get_program_build_info(void)
> >
> > MAKE_UTEST_FROM_FUNCTION(get_program_build_info);
> >
> > +
> > +// This method uses clGetProgramBuildInfo to check the llvm dump
> > +build options sent // and verifies that the llvm dump file is
> > +actually generated in the
> > backend.
> > +void get_build_llvm_info(void)
> > +{
> > + map<cl_program_info, void *> maps;
> > + cl_build_status expect_status;
> > + char llvm_file[] = "test_llvm_dump.txt";
> > + char build_opt[] = "-dump-opt-llvm=test_llvm_dump.txt";
> > + FILE *fp = NULL;
> > + int sz;
> > +
> > + //Remove any pre-existing file
> > + if( (fp = fopen(llvm_file, "r")) != NULL) {
> > + fclose(fp);
> > + std::remove(llvm_file);
> > + }
> > +
> > + OCL_CALL (cl_kernel_init, "compiler_if_else.cl",
> > + "compiler_if_else", SOURCE, build_opt);
> > +
> > + /* Do our test.*/
> > + expect_status = CL_BUILD_SUCCESS;
> > + maps.insert(make_pair(CL_PROGRAM_BUILD_STATUS,
> > + (void *)(new Info_Result<cl_build_status>(expect_status))));
> > + sz = strlen(build_opt) + 1;
> > + maps.insert(make_pair(CL_PROGRAM_BUILD_OPTIONS,
> > + (void *)(new Info_Result<char *>(build_opt,
> > + sz))));
> > +
> > + for (map<cl_program_info, void *>::iterator x = maps.begin(); x
> > + !=
> > maps.end(); ++x) {
> > + switch (x->first) {
> > + case CL_PROGRAM_BUILD_STATUS:
> > + CALL_PROG_BUILD_INFO_AND_RET(cl_build_status);
> > + break;
> > + case CL_PROGRAM_BUILD_OPTIONS:
> > + CALL_PROG_BUILD_INFO_AND_RET(char *);
> > + break;
> > + default:
> > + break;
> > + }
> > + }
> > +
> > + //Test is successful if the backend created the file
> > + if( (fp = fopen(llvm_file, "r")) == NULL) {
> > + std::cout << "LLVM file creation.. FAILED";
> > + OCL_ASSERT(0);
> > + } else {
> > + fclose(fp);
> > + std::cout << "LLVM file created.. SUCCESS";
> > + }
> > +}
> > +
> > +MAKE_UTEST_FROM_FUNCTION(get_build_llvm_info);
> > +
> > +
> > +// This method uses clGetProgramBuildInfo to check the asm dump build
> > +options sent // And verifies that the asm dump file is actually
> > +generated in the
> > backend.
> > +void get_build_asm_info(void)
> > +{
> > + map<cl_program_info, void *> maps;
> > + cl_build_status expect_status;
> > + char asm_file[] = "test_asm_dump.txt";
> > + char build_opt[] ="-dump-opt-asm=test_asm_dump.txt";
> > + FILE *fp = NULL;
> > + int sz;
> > +
> > + //Remove any pre-existing file
> > + if( (fp = fopen(asm_file, "r")) != NULL) {
> > + fclose(fp);
> > + std::remove(asm_file);
> > + }
> > +
> > + OCL_CALL (cl_kernel_init, "compiler_if_else.cl",
> > + "compiler_if_else", SOURCE, build_opt);
> > +
> > + /* Do our test.*/
> > + expect_status = CL_BUILD_SUCCESS;
> > + maps.insert(make_pair(CL_PROGRAM_BUILD_STATUS,
> > + (void *)(new Info_Result<cl_build_status>(expect_status))));
> > + sz = strlen(build_opt) + 1;
> > + maps.insert(make_pair(CL_PROGRAM_BUILD_OPTIONS,
> > + (void *)(new Info_Result<char *>(build_opt,
> > + sz))));
> > +
> > + for (map<cl_program_info, void *>::iterator x = maps.begin(); x
> > + !=
> > maps.end(); ++x) {
> > + switch (x->first) {
> > + case CL_PROGRAM_BUILD_STATUS:
> > + CALL_PROG_BUILD_INFO_AND_RET(cl_build_status);
> > + break;
> > + case CL_PROGRAM_BUILD_OPTIONS:
> > + CALL_PROG_BUILD_INFO_AND_RET(char *);
> > + break;
> > + default:
> > + break;
> > + }
> > + }
> > +
> > + //Test is successful if the backend created the file
> > + if( (fp = fopen(asm_file, "r")) == NULL) {
> > + std::cout << "ASM file creation.. FAILED";
> > + OCL_ASSERT(0);
> > + } else {
> > + fclose(fp);
> > + std::cout << "ASM file created.. SUCCESS";
> > + }
> > +}
> > +
> > +MAKE_UTEST_FROM_FUNCTION(get_build_asm_info);
> > +
> > +
> > /* ***************************************************** *
> > * clGetContextInfo *
> > * ***************************************************** */
> > --
> > 1.9.1
> >
> > _______________________________________________
> > Beignet mailing list
> > Beignet at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/beignet
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/beignet
More information about the Beignet
mailing list