//
// Generated by LLVM NVPTX Back-End
//

.version 6.1
.target sm_35
.address_size 64

	// .globl	cudaMalloc
.global .align 1 .b8 blockIdx[1];
.global .align 1 .b8 blockDim[1];
.global .align 1 .b8 threadIdx[1];

.visible .func  (.param .b32 func_retval0) cudaMalloc(
	.param .b64 cudaMalloc_param_0,
	.param .b64 cudaMalloc_param_1
)
{
	.local .align 8 .b8 	__local_depot0[16];
	.reg .b64 	%SP;
	.reg .b64 	%SPL;
	.reg .b32 	%r<2>;
	.reg .b64 	%rd<3>;

	mov.u64 	%SPL, __local_depot0;
	cvta.local.u64 	%SP, %SPL;
	ld.param.u64 	%rd2, [cudaMalloc_param_1];
	ld.param.u64 	%rd1, [cudaMalloc_param_0];
	st.u64 	[%SP+0], %rd1;
	st.u64 	[%SP+8], %rd2;
	mov.u32 	%r1, 30;
	st.param.b32 	[func_retval0+0], %r1;
	ret;
}

	// .globl	cudaFuncGetAttributes
.visible .func  (.param .b32 func_retval0) cudaFuncGetAttributes(
	.param .b64 cudaFuncGetAttributes_param_0,
	.param .b64 cudaFuncGetAttributes_param_1
)
{
	.local .align 8 .b8 	__local_depot1[16];
	.reg .b64 	%SP;
	.reg .b64 	%SPL;
	.reg .b32 	%r<2>;
	.reg .b64 	%rd<3>;

	mov.u64 	%SPL, __local_depot1;
	cvta.local.u64 	%SP, %SPL;
	ld.param.u64 	%rd2, [cudaFuncGetAttributes_param_1];
	ld.param.u64 	%rd1, [cudaFuncGetAttributes_param_0];
	st.u64 	[%SP+0], %rd1;
	st.u64 	[%SP+8], %rd2;
	mov.u32 	%r1, 30;
	st.param.b32 	[func_retval0+0], %r1;
	ret;
}

	// .globl	cudaDeviceGetAttribute
.visible .func  (.param .b32 func_retval0) cudaDeviceGetAttribute(
	.param .b64 cudaDeviceGetAttribute_param_0,
	.param .b32 cudaDeviceGetAttribute_param_1,
	.param .b32 cudaDeviceGetAttribute_param_2
)
{
	.local .align 8 .b8 	__local_depot2[16];
	.reg .b64 	%SP;
	.reg .b64 	%SPL;
	.reg .b32 	%r<4>;
	.reg .b64 	%rd<2>;

	mov.u64 	%SPL, __local_depot2;
	cvta.local.u64 	%SP, %SPL;
	ld.param.u32 	%r2, [cudaDeviceGetAttribute_param_2];
	ld.param.u32 	%r1, [cudaDeviceGetAttribute_param_1];
	ld.param.u64 	%rd1, [cudaDeviceGetAttribute_param_0];
	st.u64 	[%SP+0], %rd1;
	st.u32 	[%SP+8], %r1;
	st.u32 	[%SP+12], %r2;
	mov.u32 	%r3, 30;
	st.param.b32 	[func_retval0+0], %r3;
	ret;
}

	// .globl	cudaGetDevice
.visible .func  (.param .b32 func_retval0) cudaGetDevice(
	.param .b64 cudaGetDevice_param_0
)
{
	.local .align 8 .b8 	__local_depot3[8];
	.reg .b64 	%SP;
	.reg .b64 	%SPL;
	.reg .b32 	%r<2>;
	.reg .b64 	%rd<2>;

	mov.u64 	%SPL, __local_depot3;
	cvta.local.u64 	%SP, %SPL;
	ld.param.u64 	%rd1, [cudaGetDevice_param_0];
	st.u64 	[%SP+0], %rd1;
	mov.u32 	%r1, 30;
	st.param.b32 	[func_retval0+0], %r1;
	ret;
}

	// .globl	cudaOccupancyMaxActiveBlocksPerMultiprocessor
.visible .func  (.param .b32 func_retval0) cudaOccupancyMaxActiveBlocksPerMultiprocessor(
	.param .b64 cudaOccupancyMaxActiveBlocksPerMultiprocessor_param_0,
	.param .b64 cudaOccupancyMaxActiveBlocksPerMultiprocessor_param_1,
	.param .b32 cudaOccupancyMaxActiveBlocksPerMultiprocessor_param_2,
	.param .b64 cudaOccupancyMaxActiveBlocksPerMultiprocessor_param_3
)
{
	.local .align 8 .b8 	__local_depot4[32];
	.reg .b64 	%SP;
	.reg .b64 	%SPL;
	.reg .b32 	%r<3>;
	.reg .b64 	%rd<4>;

	mov.u64 	%SPL, __local_depot4;
	cvta.local.u64 	%SP, %SPL;
	ld.param.u64 	%rd3, [cudaOccupancyMaxActiveBlocksPerMultiprocessor_param_3];
	ld.param.u32 	%r1, [cudaOccupancyMaxActiveBlocksPerMultiprocessor_param_2];
	ld.param.u64 	%rd2, [cudaOccupancyMaxActiveBlocksPerMultiprocessor_param_1];
	ld.param.u64 	%rd1, [cudaOccupancyMaxActiveBlocksPerMultiprocessor_param_0];
	st.u64 	[%SP+0], %rd1;
	st.u64 	[%SP+8], %rd2;
	st.u32 	[%SP+16], %r1;
	st.u64 	[%SP+24], %rd3;
	mov.u32 	%r2, 30;
	st.param.b32 	[func_retval0+0], %r2;
	ret;
}

	// .globl	cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags
.visible .func  (.param .b32 func_retval0) cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags(
	.param .b64 cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags_param_0,
	.param .b64 cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags_param_1,
	.param .b32 cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags_param_2,
	.param .b64 cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags_param_3,
	.param .b32 cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags_param_4
)
{
	.local .align 8 .b8 	__local_depot5[40];
	.reg .b64 	%SP;
	.reg .b64 	%SPL;
	.reg .b32 	%r<4>;
	.reg .b64 	%rd<4>;

	mov.u64 	%SPL, __local_depot5;
	cvta.local.u64 	%SP, %SPL;
	ld.param.u32 	%r2, [cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags_param_4];
	ld.param.u64 	%rd3, [cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags_param_3];
	ld.param.u32 	%r1, [cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags_param_2];
	ld.param.u64 	%rd2, [cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags_param_1];
	ld.param.u64 	%rd1, [cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags_param_0];
	st.u64 	[%SP+0], %rd1;
	st.u64 	[%SP+8], %rd2;
	st.u32 	[%SP+16], %r1;
	st.u64 	[%SP+24], %rd3;
	st.u32 	[%SP+32], %r2;
	mov.u32 	%r3, 30;
	st.param.b32 	[func_retval0+0], %r3;
	ret;
}

	// .globl	_Z6vecAddPfS_S_i
.visible .entry _Z6vecAddPfS_S_i(
	.param .u64 _Z6vecAddPfS_S_i_param_0,
	.param .u64 _Z6vecAddPfS_S_i_param_1,
	.param .u64 _Z6vecAddPfS_S_i_param_2,
	.param .u32 _Z6vecAddPfS_S_i_param_3
)
{
	.local .align 8 .b8 	__local_depot6[32];
	.reg .b64 	%SP;
	.reg .b64 	%SPL;
	.reg .pred 	%p<2>;
	.reg .f32 	%f<4>;
	.reg .b32 	%r<9>;
	.reg .b64 	%rd<18>;

	mov.u64 	%SPL, __local_depot6;
	cvta.local.u64 	%SP, %SPL;
	ld.param.u32 	%r1, [_Z6vecAddPfS_S_i_param_3];
	ld.param.u64 	%rd3, [_Z6vecAddPfS_S_i_param_2];
	ld.param.u64 	%rd2, [_Z6vecAddPfS_S_i_param_1];
	ld.param.u64 	%rd1, [_Z6vecAddPfS_S_i_param_0];
	cvta.to.global.u64 	%rd4, %rd3;
	cvta.global.u64 	%rd5, %rd4;
	cvta.to.global.u64 	%rd6, %rd2;
	cvta.global.u64 	%rd7, %rd6;
	cvta.to.global.u64 	%rd8, %rd1;
	cvta.global.u64 	%rd9, %rd8;
	st.u64 	[%SP+0], %rd9;
	st.u64 	[%SP+8], %rd7;
	st.u64 	[%SP+16], %rd5;
	st.u32 	[%SP+24], %r1;
	mov.u32 	%r2, %ctaid.x;
	mov.u32 	%r3, %ntid.x;
	mul.lo.s32 	%r4, %r2, %r3;
	mov.u32 	%r5, %tid.x;
	add.s32 	%r6, %r4, %r5;
	st.u32 	[%SP+28], %r6;
	ld.u32 	%r7, [%SP+28];
	ld.u32 	%r8, [%SP+24];
	setp.ge.s32 	%p1, %r7, %r8;
	@%p1 bra 	LBB6_2;
	bra.uni 	LBB6_1;
LBB6_1:
	ld.u64 	%rd10, [%SP+0];
	ld.s32 	%rd11, [%SP+28];
	shl.b64 	%rd12, %rd11, 2;
	add.s64 	%rd13, %rd10, %rd12;
	ld.f32 	%f1, [%rd13];
	ld.u64 	%rd14, [%SP+8];
	add.s64 	%rd15, %rd14, %rd12;
	ld.f32 	%f2, [%rd15];
	add.rn.f32 	%f3, %f1, %f2;
	ld.u64 	%rd16, [%SP+16];
	add.s64 	%rd17, %rd16, %rd12;
	st.f32 	[%rd17], %f3;
	bra.uni 	LBB6_2;
LBB6_2:
	ret;
}