//#include<iostream>  
//#include<cstring>
//#include<algorithm>
//#include<string>
//#include<cassert>
//#include<iomanip>
//using namespace std;
//
//#define MAX 100
//#define for(i,a,b) for(i=a;i<b; i++)
//
//string gram[MAX][MAX];  //to store entered grammar
//string dpr[MAX];
//int p, np;       //np-> number of productions
//
//inline string concat(string a, string b)   //concatenates unique non-terminals
//{
//	int i;
//	string r = a;
//	for (i, 0, b.length())
//		if (r.find(b[i]) > r.length())
//			r += b[i];
//	return (r);
//}
//
//inline void break_gram(string a)    //seperates right hand side of entered grammar
//{
//	int i;
//	p = 0;
//	while (a.length())
//	{
//		i = a.find("|");
//		if (i>a.length())
//		{
//			dpr[p++] = a;
//			a = "";
//		}
//		else
//		{
//			dpr[p++] = a.substr(0, i);
//			a = a.substr(i + 1, a.length());
//		}
//	}
//}
//
//inline int lchomsky(string a)   //checks if LHS of entered grammar is in CNF
//{
//	if (a.length() == 1 && a[0] >= 'A' && a[0] <= 'Z')
//		return 1;
//	return 0;
//}
//
//inline int rchomsky(string a)   //checks if RHS of grammar is in CNF
//{
//	if (a.length() == 1 && a[0] >= 'a' && a[0] <= 'z')
//		return 1;
//	if (a.length() == 2 && a[0] >= 'A' && a[0] <= 'Z' && a[1] >= 'A' && a[1] <= 'Z')
//		return 1;
//	return 0;
//}
//
//inline string search_prod(string p) //returns a concatenated string of variables which can produce string p
//{
//	int j, k;
//	string r = "";
//	for (j, 0, np)
//	{
//		k = 1;
//		while (gram[j][k] != "")
//		{
//			if (gram[j][k] == p)
//			{
//				r = concat(r, gram[j][0]);
//			}
//			k++;
//		}
//	}
//	return r;
//}
//
//inline string gen_comb(string a, string b)  //creates every combination of variables from a and b . For eg: BA * AB = {BA, BB, AA, BB}
//{
//	int i, j;
//	string pri = a, re = "";
//	for (i, 0, a.length())
//		for (j, 0, b.length())
//		{
//			pri = "";
//			pri = pri + a[i] + b[j];
//			re = re + search_prod(pri);     //searches if the generated productions can be created or not
//		}
//	return re;
//}
//
//int main()
//{
//	int i, pt, j, l, k;
//	string a, str, r, pr, start;
//	cout << "\nEnter the start Variable ";
//	cin >> start;
//	cout << "\nNumber of productions ";
//	cin >> np;
//	for (i, 0, np)
//	{
//		cin >> a;
//		pt = a.find("->");
//		gram[i][0] = a.substr(0, pt);
//		if (lchomsky(gram[i][0]) == 0)
//		{
//			cout << "\nGrammar not in Chomsky Form";
//			abort();
//		}
//		a = a.substr(pt + 2, a.length());
//		break_gram(a);
//		for (j, 0, p)
//		{
//			gram[i][j + 1] = dpr[j];
//			if (rchomsky(dpr[j]) == 0)
//			{
//				cout << "\nGrammar not in Chomsky Form";
//				abort();
//			}
//		}
//	}
//	string matrix[MAX][MAX], st;
//	cout << "\nEnter string to be checked : ";
//	cin >> str;
//	for (i, 0, str.length())       //Assigns values to principal diagonal of matrix
//	{
//		r = "";
//		st = "";
//		st += str[i];
//		for (j, 0, np)
//		{
//			k = 1;
//			while (gram[j][k] != "")
//			{
//				if (gram[j][k] == st)
//				{
//					r = concat(r, gram[j][0]);
//				}
//				k++;
//			}
//		}
//		matrix[i][i] = r;
//	}
//	int ii, kk;
//	for (k, 1, str.length())       //Assigns values to upper half of the matrix
//	{
//		for (j, k, str.length())
//		{
//			r = "";
//			for (l, j - k, j)
//			{
//				pr = gen_comb(matrix[j - k][l], matrix[l + 1][j]);
//				r = concat(r, pr);
//			}
//			matrix[j - k][j] = r;
//		}
//	}
//
//	for (i, 0, str.length())   //Prints the matrix
//	{
//		k = 0;
//		l = str.length() - i - 1;
//		for (j, l, str.length())
//		{
//			cout << setw(5) << matrix[k++][j] << " ";
//		}
//		cout << endl;
//	}
//
//	int f = 0;
//	for (i, 0, start.length())
//		if (matrix[0][str.length() - 1].find(start[i]) <= matrix[0][str.length() - 1].length())   //Checks if last element of first row contains a Start variable
//		{
//			cout << "String can be generated\n";
//			getchar();
//			
//		}
//	cout << "String cannot be generated\n";
//	getchar();
//	return 0;
//}
	.file	"tmpxft_0027f53a_00000000-6_kernel.cudafe1.cpp"
	.text
#APP

#NO_APP
	.type	_ZL26__cudaUnregisterBinaryUtilv, @function
_ZL26__cudaUnregisterBinaryUtilv:
.LFB2010:
	.cfi_startproc
	endbr64
	movq	_ZL20__cudaFatCubinHandle(%rip), %rdi
	jmp	__cudaUnregisterFatBinary@PLT
	.cfi_endproc
.LFE2010:
	.size	_ZL26__cudaUnregisterBinaryUtilv, .-_ZL26__cudaUnregisterBinaryUtilv
	.section	.text.startup,"ax",@progbits
	.type	_ZL24__sti____cudaRegisterAllv, @function
_ZL24__sti____cudaRegisterAllv:
.LFB2033:
	.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
.LFE2033:
	.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:


#include <hip/hip_runtime.h>
//#include<iostream>  
//#include<cstring>
//#include<algorithm>
//#include<string>
//#include<cassert>
//#include<iomanip>
//using namespace std;
//
//#define MAX 100
//#define for(i,a,b) for(i=a;i<b; i++)
//
//string gram[MAX][MAX];  //to store entered grammar
//string dpr[MAX];
//int p, np;       //np-> number of productions
//
//inline string concat(string a, string b)   //concatenates unique non-terminals
//{
//	int i;
//	string r = a;
//	for (i, 0, b.length())
//		if (r.find(b[i]) > r.length())
//			r += b[i];
//	return (r);
//}
//
//inline void break_gram(string a)    //seperates right hand side of entered grammar
//{
//	int i;
//	p = 0;
//	while (a.length())
//	{
//		i = a.find("|");
//		if (i>a.length())
//		{
//			dpr[p++] = a;
//			a = "";
//		}
//		else
//		{
//			dpr[p++] = a.substr(0, i);
//			a = a.substr(i + 1, a.length());
//		}
//	}
//}
//
//inline int lchomsky(string a)   //checks if LHS of entered grammar is in CNF
//{
//	if (a.length() == 1 && a[0] >= 'A' && a[0] <= 'Z')
//		return 1;
//	return 0;
//}
//
//inline int rchomsky(string a)   //checks if RHS of grammar is in CNF
//{
//	if (a.length() == 1 && a[0] >= 'a' && a[0] <= 'z')
//		return 1;
//	if (a.length() == 2 && a[0] >= 'A' && a[0] <= 'Z' && a[1] >= 'A' && a[1] <= 'Z')
//		return 1;
//	return 0;
//}
//
//inline string search_prod(string p) //returns a concatenated string of variables which can produce string p
//{
//	int j, k;
//	string r = "";
//	for (j, 0, np)
//	{
//		k = 1;
//		while (gram[j][k] != "")
//		{
//			if (gram[j][k] == p)
//			{
//				r = concat(r, gram[j][0]);
//			}
//			k++;
//		}
//	}
//	return r;
//}
//
//inline string gen_comb(string a, string b)  //creates every combination of variables from a and b . For eg: BA * AB = {BA, BB, AA, BB}
//{
//	int i, j;
//	string pri = a, re = "";
//	for (i, 0, a.length())
//		for (j, 0, b.length())
//		{
//			pri = "";
//			pri = pri + a[i] + b[j];
//			re = re + search_prod(pri);     //searches if the generated productions can be created or not
//		}
//	return re;
//}
//
//int main()
//{
//	int i, pt, j, l, k;
//	string a, str, r, pr, start;
//	cout << "\nEnter the start Variable ";
//	cin >> start;
//	cout << "\nNumber of productions ";
//	cin >> np;
//	for (i, 0, np)
//	{
//		cin >> a;
//		pt = a.find("->");
//		gram[i][0] = a.substr(0, pt);
//		if (lchomsky(gram[i][0]) == 0)
//		{
//			cout << "\nGrammar not in Chomsky Form";
//			abort();
//		}
//		a = a.substr(pt + 2, a.length());
//		break_gram(a);
//		for (j, 0, p)
//		{
//			gram[i][j + 1] = dpr[j];
//			if (rchomsky(dpr[j]) == 0)
//			{
//				cout << "\nGrammar not in Chomsky Form";
//				abort();
//			}
//		}
//	}
//	string matrix[MAX][MAX], st;
//	cout << "\nEnter string to be checked : ";
//	cin >> str;
//	for (i, 0, str.length())       //Assigns values to principal diagonal of matrix
//	{
//		r = "";
//		st = "";
//		st += str[i];
//		for (j, 0, np)
//		{
//			k = 1;
//			while (gram[j][k] != "")
//			{
//				if (gram[j][k] == st)
//				{
//					r = concat(r, gram[j][0]);
//				}
//				k++;
//			}
//		}
//		matrix[i][i] = r;
//	}
//	int ii, kk;
//	for (k, 1, str.length())       //Assigns values to upper half of the matrix
//	{
//		for (j, k, str.length())
//		{
//			r = "";
//			for (l, j - k, j)
//			{
//				pr = gen_comb(matrix[j - k][l], matrix[l + 1][j]);
//				r = concat(r, pr);
//			}
//			matrix[j - k][j] = r;
//		}
//	}
//
//	for (i, 0, str.length())   //Prints the matrix
//	{
//		k = 0;
//		l = str.length() - i - 1;
//		for (j, l, str.length())
//		{
//			cout << setw(5) << matrix[k++][j] << " ";
//		}
//		cout << endl;
//	}
//
//	int f = 0;
//	for (i, 0, start.length())
//		if (matrix[0][str.length() - 1].find(start[i]) <= matrix[0][str.length() - 1].length())   //Checks if last element of first row contains a Start variable
//		{
//			cout << "String can be generated\n";
//			getchar();
//			
//		}
//	cout << "String cannot be generated\n";
//	getchar();
//	return 0;
//}
	.text
	.file	"kernel.hip"
	.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
