/*
 * Copyright 1993-2007 NVIDIA Corporation.  All rights reserved.
 *
 * NOTICE TO USER:
 *
 * This source code is subject to NVIDIA ownership rights under U.S. and
 * international Copyright laws.  Users and possessors of this source code
 * are hereby granted a nonexclusive, royalty-free license to use this code
 * in individual and commercial software.
 *
 * NVIDIA MAKES NO REPRESENTATION ABOUT THE SUITABILITY OF THIS SOURCE
 * CODE FOR ANY PURPOSE.  IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR
 * IMPLIED WARRANTY OF ANY KIND.  NVIDIA DISCLAIMS ALL WARRANTIES WITH
 * REGARD TO THIS SOURCE CODE, INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE.
 * IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL,
 * OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
 * OF USE, DATA OR PROFITS,  WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
 * OR OTHER TORTIOUS ACTION,  ARISING OUT OF OR IN CONNECTION WITH THE USE
 * OR PERFORMANCE OF THIS SOURCE CODE.
 *
 * U.S. Government End Users.   This source code is a "commercial item" as
 * that term is defined at  48 C.F.R. 2.101 (OCT 1995), consisting  of
 * "commercial computer  software"  and "commercial computer software
 * documentation" as such terms are  used in 48 C.F.R. 12.212 (SEPT 1995)
 * and is provided to the U.S. Government only as a commercial end item.
 * Consistent with 48 C.F.R.12.212 and 48 C.F.R. 227.7202-1 through
 * 227.7202-4 (JUNE 1995), all U.S. Government End Users acquire the
 * source code with only those rights set forth herein.
 *
 * Any use of this source code in individual and commercial software must
 * include, in the user documentation and internal comments to the code,
 * the above Disclaimer and U.S. Government End Users Notice.
 */

/* Template project which demonstrates the basics on how to setup a project 
 * example application.
 * Host code.
 */

// includes, system
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>

// includes, project
//#include <cutil_inline.h>

// includes, kernels
//#include <alignment_kernel.cu>

//********************** global variables ***************************
// BLOSUM62 matrix and its size
// these should be copied to constant memory in the device
/* const int size_blosum  = 24; */
/* int BLOSUM62[size_blosum*size_blosum] = { */
/*   4,  -1,  -2,  -2,   0,  -1,  -1,   0,  -2,  -1,  -1,  -1,  -1,  -2,  -1,   1,   0,  -3,  -2,   0,  -2,  -1,   0,  -4,    */
/*   -1,   5,   0,  -2,  -3,   1,   0,  -2,   0,  -3,  -2,   2,  -1,  -3,  -2,  -1,  -1,  -3,  -2,  -3,  -1,   0,  -1,  -4,    */
/*   -2,   0,   6,   1,  -3,   0,   0,   0,   1,  -3,  -3,   0,  -2,  -3,  -2,   1,   0,  -4,  -2,  -3,   3,   0,  -1,  -4,    */
/*   -2,  -2,   1,   6,  -3,   0,   2,  -1,  -1,  -3,  -4,  -1,  -3,  -3,  -1,   0,  -1,  -4,  -3,  -3,   4,   1,  -1,  -4,    */
/*   0,  -3,  -3,  -3,   9,  -3,  -4,  -3,  -3,  -1,  -1,  -3,  -1,  -2,  -3,  -1,  -1,  -2,  -2,  -1,  -3,  -3,  -2,  -4,    */
/*   -1,   1,   0,   0,  -3,   5,   2,  -2,   0,  -3,  -2,   1,   0,  -3,  -1,   0,  -1,  -2,  -1,  -2,   0,   3,  -1,  -4,    */
/*   -1,   0,   0,   2,  -4,   2,   5,  -2,   0,  -3,  -3,   1,  -2,  -3,  -1,   0,  -1,  -3,  -2,  -2,   1,   4,  -1,  -4,    */
/*   0,  -2,   0,  -1,  -3,  -2,  -2,   6,  -2,  -4,  -4,  -2,  -3,  -3,  -2,   0,  -2,  -2,  -3,  -3,  -1,  -2,  -1,  -4,    */
/*   -2,   0,   1,  -1,  -3,   0,   0,  -2,   8,  -3,  -3,  -1,  -2,  -1,  -2,  -1,  -2,  -2,   2,  -3,   0,   0,  -1,  -4,    */
/*   -1,  -3,  -3,  -3,  -1,  -3,  -3,  -4,  -3,   4,   2,  -3,   1,   0,  -3,  -2,  -1,  -3,  -1,   3,  -3,  -3,  -1,  -4,    */
/*   -1,  -2,  -3,  -4,  -1,  -2,  -3,  -4,  -3,   2,   4,  -2,   2,   0,  -3,  -2,  -1,  -2,  -1,   1,  -4,  -3,  -1,  -4,    */
/*   -1,   2,   0,  -1,  -3,   1,   1,  -2,  -1,  -3,  -2,   5,  -1,  -3,  -1,   0,  -1,  -3,  -2,  -2,   0,   1,  -1,  -4,    */
/*   -1,  -1,  -2,  -3,  -1,   0,  -2,  -3,  -2,   1,   2,  -1,   5,   0,  -2,  -1,  -1,  -1,  -1,   1,  -3,  -1,  -1,  -4,    */
/*   -2,  -3,  -3,  -3,  -2,  -3,  -3,  -3,  -1,   0,   0,  -3,   0,   6,  -4,  -2,  -2,   1,   3,  -1,  -3,  -3,  -1,  -4,    */
/*   -1,  -2,  -2,  -1,  -3,  -1,  -1,  -2,  -2,  -3,  -3,  -1,  -2,  -4,   7,  -1,  -1,  -4,  -3,  -2,  -2,  -1,  -2,  -4,    */
/*   1,  -1,   1,   0,  -1,   0,   0,   0,  -1,  -2,  -2,   0,  -1,  -2,  -1,   4,   1,  -3,  -2,  -2,   0,   0,   0,  -4,    */
/*   0,  -1,   0,  -1,  -1,  -1,  -1,  -2,  -2,  -1,  -1,  -1,  -1,  -2,  -1,   1,   5,  -2,  -2,   0,  -1,  -1,   0,  -4,    */
/*   -3,  -3,  -4,  -4,  -2,  -2,  -3,  -2,  -2,  -3,  -2,  -3,  -1,   1,  -4,  -3,  -2, 11,   2,  -3,  -4,  -3,  -2,  -4,    */
/*   -2,  -2,  -2,  -3,  -2,  -1,  -2,  -3,   2,  -1,  -1,  -2,  -1,   3,  -3,  -2,  -2,   2,   7,  -1,  -3,  -2,  -1,  -4,    */
/*   0,  -3,  -3,  -3,  -1,  -2,  -2,  -3,  -3,   3,   1,  -2,   1,  -1,  -2,  -2,   0,  -3,  -1,   4,  -3,  -2,  -1,  -4,    */
/*   -2,  -1,   3,   4,  -3,   0,   1,  -1,   0,  -3,  -4,   0,  -3,  -3,  -2,   0,  -1,  -4,  -3,  -3,   4,   1,  -1,  -4,    */
/*   -1,   0,   0,   1,  -3,   3,   4,  -2,   0,  -3,  -3,   1,  -1,  -3,  -1,   0,  -1,  -3,  -2,  -2,   1,   4,  -1,  -4,    */
/*   0,  -1,  -1,  -1,  -2,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -2,   0,   0,  -2,  -1,  -1,  -1,  -1,  -1,  -4,    */
/*   -4,  -4,  -4,  -4,  -4,  -4,  -4,  -4,  -4,  -4,  -4,  -4,  -4,  -4,  -4,  -4,  -4,  -4,  -4,  -4,  -4,  -4,  -4,   1 */
/* }; */

////////////////////////////////////////////////////////////////////////////////
// declaration, forward
void alignment();

// external definition of the alignment kernel
extern "C"
void alignmentKernel( int* g_idata, int* g_index, int* g_odata );



////////////////////////////////////////////////////////////////////////////////
//! Run a simple test for CUDA
////////////////////////////////////////////////////////////////////////////////
//void runTest( int argc, char** argv) 
void alignment()
{
  /* // use command-line specified CUDA device, otherwise use device with highest Gflops/s */
  /* if( cutCheckCmdLineFlag(argc, (const char**)argv, "device") ) */
  /*   cutilDeviceInit(argc, argv); */
  /* else */
  /*   cudaSetDevice( cutGetMaxGflopsDeviceId() ); */

  /* // setup the timer */
  /* unsigned int timer = 0;  */
  /* cutilCheckError( cutCreateTimer( &timer)); */
  /* cutilCheckError( cutStartTimer( timer)); */

  /* // input */
  /* char *a = "atcggtcaattggcc"; */
  /* char *b = "atgccctgatgggccga"; */

  /* // dimension of multi-threading */
  /* unsigned int num_threads = 1; */
  /* unsigned int mem_size = sizeof( char ) * (num_threads + 1) * 1000; */
  /* unsigned int index_size = (num_threads + 2) * sizeof(int); */
  /* unsigned int out_size = num_threads * sizeof(int); */
  /* unsigned int shared_mem_size =  num_threads * strlen(a) * sizeof(char) * 2 ; */

  /* // allocate host memory */
  /* char* h_idata = (char*) malloc( mem_size ); */
  /* int* h_index = (int*) malloc( index_size ); */
  /* // initalize the memory */
  /* /\* for( unsigned int i = 0; i < num_threads; ++i)  */
  /*    { */
  /*    h_idata[i] = (float) i; */
  /*    }*\/ */
	
  /* *(h_index) = strlen(a); */
  /* *(h_index+1) = strlen(a) + strlen(b); */
  /* memcpy( h_idata, a, strlen(a) * sizeof(char) ); */
  /* memcpy( h_idata + strlen(a) * sizeof(char), b, strlen(b) * sizeof(char) ); */

  /* // allocate device memory */
  /* int* d_idata; */
  /* int* d_index; */
  /* cutilSafeCall( cudaMalloc( (void**) &d_idata, mem_size)); */
  /* cutilSafeCall( cudaMalloc( (void**) &d_index, index_size ) ); */
  /* // copy host memory to device */
  /* cutilSafeCall( cudaMemcpy( d_idata, h_idata, mem_size, cudaMemcpyHostToDevice) ); */
  /* cutilSafeCall( cudaMemcpy( d_index, h_index, index_size, cudaMemcpyHostToDevice ) ); */

  /* // allocate device memory for result */
  /* int* d_odata; */
  /* cutilSafeCall( cudaMalloc( (void**) &d_odata, out_size ) ); */

  /* // setup execution parameters */
  /* dim3  grid( 1, 1, 1); */
  /* dim3  threads( num_threads, 1, 1); */

  /* // execute the kernel */
  /* alignmentKernel<<< grid, threads, shared_mem_size >>>( d_idata, d_index,d_odata); */

  /* // check if kernel execution generated and error */
  /* cutilCheckMsg("Kernel execution failed"); */

  /* // allocate mem for the result on host side */
  /* int* h_odata = (int*) malloc( out_size ); */
  /* // copy result from device to host */
  /* cutilSafeCall( cudaMemcpy( h_odata, d_odata, sizeof( float) * num_threads, */
  /* 			     cudaMemcpyDeviceToHost) ); */

  /* // compute the time spent for device computation */
  /* cutilCheckError( cutStopTimer( timer)); */
  /* printf( "Processing time: %f (ms)\n", cutGetTimerValue( timer)); */
  /* cutilCheckError( cutDeleteTimer( timer)); */

  /* // calculate the final result */
  /* int result = 0; */
  /* for ( int i =0; i< num_threads; ++i ) */
  /*   { */
  /*     result += *( h_odata + i ); */
  /*   } */

  /* printf("result is %d\n", result); */

  /* // cleanup memory */
  /* free( h_idata); */
  /* free( h_index ); */
  /* free( h_odata); */
  /* cutilSafeCall(cudaFree(d_idata)); */
  /* cutilSafeCall(cudaFree(d_odata)); */
  /* cutilSafeCall(cudaFree(d_index)); */

  /* cudaThreadExit(); */
}

	.file	"tmpxft_0029279d_00000000-6_extra_alignment.cudafe1.cpp"
	.text
#APP

#NO_APP
	.type	_ZL26__cudaUnregisterBinaryUtilv, @function
_ZL26__cudaUnregisterBinaryUtilv:
.LFB2030:
	.cfi_startproc
	endbr64
	movq	_ZL20__cudaFatCubinHandle(%rip), %rdi
	jmp	__cudaUnregisterFatBinary@PLT
	.cfi_endproc
.LFE2030:
	.size	_ZL26__cudaUnregisterBinaryUtilv, .-_ZL26__cudaUnregisterBinaryUtilv
	.globl	_Z9alignmentv
	.type	_Z9alignmentv, @function
_Z9alignmentv:
.LFB2027:
	.cfi_startproc
	endbr64
	ret
	.cfi_endproc
.LFE2027:
	.size	_Z9alignmentv, .-_Z9alignmentv
	.section	.text.startup,"ax",@progbits
	.type	_ZL24__sti____cudaRegisterAllv, @function
_ZL24__sti____cudaRegisterAllv:
.LFB2053:
	.cfi_startproc
	endbr64
	pushq	%rax
	.cfi_def_cfa_offset 16
	leaq	_ZL15__fatDeviceText(%rip), %rdi
	call	__cudaRegisterFatBinary@PLT
	movq	%rax, %rdi
	movq	%rax, _ZL20__cudaFatCubinHandle(%rip)
	call	__cudaRegisterFatBinaryEnd@PLT
	leaq	_ZL26__cudaUnregisterBinaryUtilv(%rip), %rdi
	popq	%rdx
	.cfi_def_cfa_offset 8
	jmp	atexit@PLT
	.cfi_endproc
.LFE2053:
	.size	_ZL24__sti____cudaRegisterAllv, .-_ZL24__sti____cudaRegisterAllv
	.section	.init_array,"aw"
	.align 8
	.quad	_ZL24__sti____cudaRegisterAllv
	.section	.nvFatBinSegment,"aw"
	.align 8
	.type	_ZL15__fatDeviceText, @object
	.size	_ZL15__fatDeviceText, 24
_ZL15__fatDeviceText:
	.long	1180844977
	.long	1
	.quad	fatbinData
	.quad	0
	.local	_ZL20__cudaFatCubinHandle
	.comm	_ZL20__cudaFatCubinHandle,8,8
	.ident	"GCC: (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	1f - 0f
	.long	4f - 1f
	.long	5
0:
	.string	"GNU"
1:
	.align 8
	.long	0xc0000002
	.long	3f - 2f
2:
	.long	0x3
3:
	.align 8
4:

/*
 * Copyright 1993-2007 NVIDIA Corporation.  All rights reserved.
 *
 * NOTICE TO USER:
 *
 * This source code is subject to NVIDIA ownership rights under U.S. and
 * international Copyright laws.  Users and possessors of this source code
 * are hereby granted a nonexclusive, royalty-free license to use this code
 * in individual and commercial software.
 *
 * NVIDIA MAKES NO REPRESENTATION ABOUT THE SUITABILITY OF THIS SOURCE
 * CODE FOR ANY PURPOSE.  IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR
 * IMPLIED WARRANTY OF ANY KIND.  NVIDIA DISCLAIMS ALL WARRANTIES WITH
 * REGARD TO THIS SOURCE CODE, INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE.
 * IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL,
 * OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
 * OF USE, DATA OR PROFITS,  WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
 * OR OTHER TORTIOUS ACTION,  ARISING OUT OF OR IN CONNECTION WITH THE USE
 * OR PERFORMANCE OF THIS SOURCE CODE.
 *
 * U.S. Government End Users.   This source code is a "commercial item" as
 * that term is defined at  48 C.F.R. 2.101 (OCT 1995), consisting  of
 * "commercial computer  software"  and "commercial computer software
 * documentation" as such terms are  used in 48 C.F.R. 12.212 (SEPT 1995)
 * and is provided to the U.S. Government only as a commercial end item.
 * Consistent with 48 C.F.R.12.212 and 48 C.F.R. 227.7202-1 through
 * 227.7202-4 (JUNE 1995), all U.S. Government End Users acquire the
 * source code with only those rights set forth herein.
 *
 * Any use of this source code in individual and commercial software must
 * include, in the user documentation and internal comments to the code,
 * the above Disclaimer and U.S. Government End Users Notice.
 */

/* Template project which demonstrates the basics on how to setup a project 
 * example application.
 * Host code.
 */

// includes, system

#include <hip/hip_runtime.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>

// includes, project
//#include <cutil_inline.h>

// includes, kernels
//#include <alignment_kernel.cu>

//********************** global variables ***************************
// BLOSUM62 matrix and its size
// these should be copied to constant memory in the device
/* const int size_blosum  = 24; */
/* int BLOSUM62[size_blosum*size_blosum] = { */
/*   4,  -1,  -2,  -2,   0,  -1,  -1,   0,  -2,  -1,  -1,  -1,  -1,  -2,  -1,   1,   0,  -3,  -2,   0,  -2,  -1,   0,  -4,    */
/*   -1,   5,   0,  -2,  -3,   1,   0,  -2,   0,  -3,  -2,   2,  -1,  -3,  -2,  -1,  -1,  -3,  -2,  -3,  -1,   0,  -1,  -4,    */
/*   -2,   0,   6,   1,  -3,   0,   0,   0,   1,  -3,  -3,   0,  -2,  -3,  -2,   1,   0,  -4,  -2,  -3,   3,   0,  -1,  -4,    */
/*   -2,  -2,   1,   6,  -3,   0,   2,  -1,  -1,  -3,  -4,  -1,  -3,  -3,  -1,   0,  -1,  -4,  -3,  -3,   4,   1,  -1,  -4,    */
/*   0,  -3,  -3,  -3,   9,  -3,  -4,  -3,  -3,  -1,  -1,  -3,  -1,  -2,  -3,  -1,  -1,  -2,  -2,  -1,  -3,  -3,  -2,  -4,    */
/*   -1,   1,   0,   0,  -3,   5,   2,  -2,   0,  -3,  -2,   1,   0,  -3,  -1,   0,  -1,  -2,  -1,  -2,   0,   3,  -1,  -4,    */
/*   -1,   0,   0,   2,  -4,   2,   5,  -2,   0,  -3,  -3,   1,  -2,  -3,  -1,   0,  -1,  -3,  -2,  -2,   1,   4,  -1,  -4,    */
/*   0,  -2,   0,  -1,  -3,  -2,  -2,   6,  -2,  -4,  -4,  -2,  -3,  -3,  -2,   0,  -2,  -2,  -3,  -3,  -1,  -2,  -1,  -4,    */
/*   -2,   0,   1,  -1,  -3,   0,   0,  -2,   8,  -3,  -3,  -1,  -2,  -1,  -2,  -1,  -2,  -2,   2,  -3,   0,   0,  -1,  -4,    */
/*   -1,  -3,  -3,  -3,  -1,  -3,  -3,  -4,  -3,   4,   2,  -3,   1,   0,  -3,  -2,  -1,  -3,  -1,   3,  -3,  -3,  -1,  -4,    */
/*   -1,  -2,  -3,  -4,  -1,  -2,  -3,  -4,  -3,   2,   4,  -2,   2,   0,  -3,  -2,  -1,  -2,  -1,   1,  -4,  -3,  -1,  -4,    */
/*   -1,   2,   0,  -1,  -3,   1,   1,  -2,  -1,  -3,  -2,   5,  -1,  -3,  -1,   0,  -1,  -3,  -2,  -2,   0,   1,  -1,  -4,    */
/*   -1,  -1,  -2,  -3,  -1,   0,  -2,  -3,  -2,   1,   2,  -1,   5,   0,  -2,  -1,  -1,  -1,  -1,   1,  -3,  -1,  -1,  -4,    */
/*   -2,  -3,  -3,  -3,  -2,  -3,  -3,  -3,  -1,   0,   0,  -3,   0,   6,  -4,  -2,  -2,   1,   3,  -1,  -3,  -3,  -1,  -4,    */
/*   -1,  -2,  -2,  -1,  -3,  -1,  -1,  -2,  -2,  -3,  -3,  -1,  -2,  -4,   7,  -1,  -1,  -4,  -3,  -2,  -2,  -1,  -2,  -4,    */
/*   1,  -1,   1,   0,  -1,   0,   0,   0,  -1,  -2,  -2,   0,  -1,  -2,  -1,   4,   1,  -3,  -2,  -2,   0,   0,   0,  -4,    */
/*   0,  -1,   0,  -1,  -1,  -1,  -1,  -2,  -2,  -1,  -1,  -1,  -1,  -2,  -1,   1,   5,  -2,  -2,   0,  -1,  -1,   0,  -4,    */
/*   -3,  -3,  -4,  -4,  -2,  -2,  -3,  -2,  -2,  -3,  -2,  -3,  -1,   1,  -4,  -3,  -2, 11,   2,  -3,  -4,  -3,  -2,  -4,    */
/*   -2,  -2,  -2,  -3,  -2,  -1,  -2,  -3,   2,  -1,  -1,  -2,  -1,   3,  -3,  -2,  -2,   2,   7,  -1,  -3,  -2,  -1,  -4,    */
/*   0,  -3,  -3,  -3,  -1,  -2,  -2,  -3,  -3,   3,   1,  -2,   1,  -1,  -2,  -2,   0,  -3,  -1,   4,  -3,  -2,  -1,  -4,    */
/*   -2,  -1,   3,   4,  -3,   0,   1,  -1,   0,  -3,  -4,   0,  -3,  -3,  -2,   0,  -1,  -4,  -3,  -3,   4,   1,  -1,  -4,    */
/*   -1,   0,   0,   1,  -3,   3,   4,  -2,   0,  -3,  -3,   1,  -1,  -3,  -1,   0,  -1,  -3,  -2,  -2,   1,   4,  -1,  -4,    */
/*   0,  -1,  -1,  -1,  -2,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -2,   0,   0,  -2,  -1,  -1,  -1,  -1,  -1,  -4,    */
/*   -4,  -4,  -4,  -4,  -4,  -4,  -4,  -4,  -4,  -4,  -4,  -4,  -4,  -4,  -4,  -4,  -4,  -4,  -4,  -4,  -4,  -4,  -4,   1 */
/* }; */

////////////////////////////////////////////////////////////////////////////////
// declaration, forward
void alignment();

// external definition of the alignment kernel
extern "C"
void alignmentKernel( int* g_idata, int* g_index, int* g_odata );



////////////////////////////////////////////////////////////////////////////////
//! Run a simple test for CUDA
////////////////////////////////////////////////////////////////////////////////
//void runTest( int argc, char** argv) 
void alignment()
{
  /* // use command-line specified CUDA device, otherwise use device with highest Gflops/s */
  /* if( cutCheckCmdLineFlag(argc, (const char**)argv, "device") ) */
  /*   cutilDeviceInit(argc, argv); */
  /* else */
  /*   cudaSetDevice( cutGetMaxGflopsDeviceId() ); */

  /* // setup the timer */
  /* unsigned int timer = 0;  */
  /* cutilCheckError( cutCreateTimer( &timer)); */
  /* cutilCheckError( cutStartTimer( timer)); */

  /* // input */
  /* char *a = "atcggtcaattggcc"; */
  /* char *b = "atgccctgatgggccga"; */

  /* // dimension of multi-threading */
  /* unsigned int num_threads = 1; */
  /* unsigned int mem_size = sizeof( char ) * (num_threads + 1) * 1000; */
  /* unsigned int index_size = (num_threads + 2) * sizeof(int); */
  /* unsigned int out_size = num_threads * sizeof(int); */
  /* unsigned int shared_mem_size =  num_threads * strlen(a) * sizeof(char) * 2 ; */

  /* // allocate host memory */
  /* char* h_idata = (char*) malloc( mem_size ); */
  /* int* h_index = (int*) malloc( index_size ); */
  /* // initalize the memory */
  /* /\* for( unsigned int i = 0; i < num_threads; ++i)  */
  /*    { */
  /*    h_idata[i] = (float) i; */
  /*    }*\/ */
	
  /* *(h_index) = strlen(a); */
  /* *(h_index+1) = strlen(a) + strlen(b); */
  /* memcpy( h_idata, a, strlen(a) * sizeof(char) ); */
  /* memcpy( h_idata + strlen(a) * sizeof(char), b, strlen(b) * sizeof(char) ); */

  /* // allocate device memory */
  /* int* d_idata; */
  /* int* d_index; */
  /* cutilSafeCall( cudaMalloc( (void**) &d_idata, mem_size)); */
  /* cutilSafeCall( cudaMalloc( (void**) &d_index, index_size ) ); */
  /* // copy host memory to device */
  /* cutilSafeCall( cudaMemcpy( d_idata, h_idata, mem_size, cudaMemcpyHostToDevice) ); */
  /* cutilSafeCall( cudaMemcpy( d_index, h_index, index_size, cudaMemcpyHostToDevice ) ); */

  /* // allocate device memory for result */
  /* int* d_odata; */
  /* cutilSafeCall( cudaMalloc( (void**) &d_odata, out_size ) ); */

  /* // setup execution parameters */
  /* dim3  grid( 1, 1, 1); */
  /* dim3  threads( num_threads, 1, 1); */

  /* // execute the kernel */
  /* alignmentKernel<<< grid, threads, shared_mem_size >>>( d_idata, d_index,d_odata); */

  /* // check if kernel execution generated and error */
  /* cutilCheckMsg("Kernel execution failed"); */

  /* // allocate mem for the result on host side */
  /* int* h_odata = (int*) malloc( out_size ); */
  /* // copy result from device to host */
  /* cutilSafeCall( cudaMemcpy( h_odata, d_odata, sizeof( float) * num_threads, */
  /* 			     cudaMemcpyDeviceToHost) ); */

  /* // compute the time spent for device computation */
  /* cutilCheckError( cutStopTimer( timer)); */
  /* printf( "Processing time: %f (ms)\n", cutGetTimerValue( timer)); */
  /* cutilCheckError( cutDeleteTimer( timer)); */

  /* // calculate the final result */
  /* int result = 0; */
  /* for ( int i =0; i< num_threads; ++i ) */
  /*   { */
  /*     result += *( h_odata + i ); */
  /*   } */

  /* printf("result is %d\n", result); */

  /* // cleanup memory */
  /* free( h_idata); */
  /* free( h_index ); */
  /* free( h_odata); */
  /* cutilSafeCall(cudaFree(d_idata)); */
  /* cutilSafeCall(cudaFree(d_odata)); */
  /* cutilSafeCall(cudaFree(d_index)); */

  /* cudaThreadExit(); */
}

	.text
	.file	"extra_alignment.hip"
	.globl	_Z9alignmentv                   # -- Begin function _Z9alignmentv
	.type	_Z9alignmentv,@function
_Z9alignmentv:                          # @_Z9alignmentv
	.cfi_startproc
# %bb.0:
	retq
.Lfunc_end0:
	.size	_Z9alignmentv, .Lfunc_end0-_Z9alignmentv
	.cfi_endproc
                                        # -- End function
	.type	__hip_cuid_,@object             # @__hip_cuid_
	.bss
	.globl	__hip_cuid_
__hip_cuid_:
	.byte	0                               # 0x0
	.size	__hip_cuid_, 1

	.ident	"AMD clang version 18.0.0git (https://github.com/RadeonOpenCompute/llvm-project roc-6.3.2 25012 e5bf7e55c91490b07c49d8960fa7983d864936c4)"
	.section	".note.GNU-stack","",@progbits
	.addrsig
	.addrsig_sym __hip_cuid_

	.text
	.p2alignl 7, 3214868480
	.fill 96, 4, 3214868480
	.type	__hip_cuid_,@object             ; @__hip_cuid_
	.section	.bss,"aw",@nobits
	.globl	__hip_cuid_
__hip_cuid_:
	.byte	0                               ; 0x0
	.size	__hip_cuid_, 1

	.ident	"AMD clang version 18.0.0git (https://github.com/RadeonOpenCompute/llvm-project roc-6.3.2 25012 e5bf7e55c91490b07c49d8960fa7983d864936c4)"
	.section	".note.GNU-stack","",@progbits
	.addrsig
	.addrsig_sym __hip_cuid_
	.amdgcn_target "amdgcn-amd-amdhsa--gfx1100"
	.amdgpu_metadata
---
amdhsa.kernels:  []
amdhsa.target:   amdgcn-amd-amdhsa--gfx1100
amdhsa.version:
  - 1
  - 2
...

	.end_amdgpu_metadata
