//
// Generated by LLVM NVPTX Back-End
//

.version 8.8
.target sm_89
.address_size 64

	// .globl	quant_key_per_thread_int8_kernel // -- Begin function quant_key_per_thread_int8_kernel
.extern .shared .align 16 .b8 global_smem[];
                                        // @quant_key_per_thread_int8_kernel
.visible .entry quant_key_per_thread_int8_kernel(
	.param .u64 .ptr .global .align 1 quant_key_per_thread_int8_kernel_param_0,
	.param .u64 .ptr .global .align 1 quant_key_per_thread_int8_kernel_param_1,
	.param .u64 .ptr .global .align 1 quant_key_per_thread_int8_kernel_param_2,
	.param .u32 quant_key_per_thread_int8_kernel_param_3,
	.param .u32 quant_key_per_thread_int8_kernel_param_4,
	.param .u32 quant_key_per_thread_int8_kernel_param_5,
	.param .u32 quant_key_per_thread_int8_kernel_param_6,
	.param .u32 quant_key_per_thread_int8_kernel_param_7,
	.param .u32 quant_key_per_thread_int8_kernel_param_8,
	.param .u32 quant_key_per_thread_int8_kernel_param_9,
	.param .u32 quant_key_per_thread_int8_kernel_param_10,
	.param .u32 quant_key_per_thread_int8_kernel_param_11,
	.param .u64 .ptr .global .align 1 quant_key_per_thread_int8_kernel_param_12,
	.param .u64 .ptr .global .align 1 quant_key_per_thread_int8_kernel_param_13
)
.reqntid 128
{
	.reg .pred 	%p<20>;
	.reg .b16 	%rs<49>;
	.reg .b32 	%r<215>;
	.reg .b64 	%rd<26>;
	.loc	1 49 0                          // quant_per_thread.py:49:0
$L__func_begin0:
	.loc	1 49 0                          // quant_per_thread.py:49:0

// %bb.0:
	ld.param.b64 	%rd6, [quant_key_per_thread_int8_kernel_param_0];
	ld.param.b64 	%rd7, [quant_key_per_thread_int8_kernel_param_1];
$L__tmp0:
	.loc	1 54 15                         // quant_per_thread.py:54:15
	mov.u32 	%r17, %ctaid.x;
	.loc	1 55 15                         // quant_per_thread.py:55:15
	and.b32 	%r18, %r17, 3;
	ld.param.b64 	%rd8, [quant_key_per_thread_int8_kernel_param_2];
	ld.param.b32 	%r19, [quant_key_per_thread_int8_kernel_param_3];
	.loc	1 56 13                         // quant_per_thread.py:56:13
	mov.u32 	%r20, %ctaid.y;
	.loc	1 57 13                         // quant_per_thread.py:57:13
	mov.u32 	%r21, %ctaid.z;
	ld.param.b32 	%r22, [quant_key_per_thread_int8_kernel_param_4];
	.loc	1 75 15                         // quant_per_thread.py:75:15
	shl.b32 	%r23, %r17, 4;
	ld.param.b32 	%r24, [quant_key_per_thread_int8_kernel_param_5];
	and.b32 	%r25, %r23, -64;
	ld.param.b32 	%r26, [quant_key_per_thread_int8_kernel_param_6];
	ld.param.b32 	%r27, [quant_key_per_thread_int8_kernel_param_7];
	.loc	1 75 31                         // quant_per_thread.py:75:31
	mov.u32 	%r28, %tid.x;
	shr.u32 	%r29, %r28, 1;
	ld.param.b32 	%r30, [quant_key_per_thread_int8_kernel_param_8];
	and.b32 	%r31, %r29, 56;
	ld.param.b32 	%r32, [quant_key_per_thread_int8_kernel_param_9];
	.loc	1 75 15                         // quant_per_thread.py:75:15
	or.b32 	%r33, %r25, %r31;
	ld.param.b32 	%r34, [quant_key_per_thread_int8_kernel_param_10];
	.loc	1 75 60                         // quant_per_thread.py:75:60
	shl.b32 	%r35, %r18, 1;
	ld.param.b32 	%r36, [quant_key_per_thread_int8_kernel_param_11];
	.loc	1 75 15                         // quant_per_thread.py:75:15
	or.b32 	%r37, %r33, %r35;
	.loc	1 76 15                         // quant_per_thread.py:76:15
	or.b32 	%r38, %r37, 1;
	.loc	1 79 27                         // quant_per_thread.py:79:27
	mul.lo.s32 	%r39, %r22, %r21;
	.loc	1 79 19                         // quant_per_thread.py:79:19
	mad.wide.s32 	%rd9, %r39, 2, %rd6;
	.loc	1 79 47                         // quant_per_thread.py:79:47
	mul.lo.s32 	%r40, %r24, %r20;
	.loc	1 79 19                         // quant_per_thread.py:79:19
	mad.wide.s32 	%rd10, %r40, 2, %rd9;
	.loc	1 79 67                         // quant_per_thread.py:79:67
	mul.lo.s32 	%r41, %r26, %r37;
	.loc	1 79 19                         // quant_per_thread.py:79:19
	mad.wide.s32 	%rd11, %r41, 2, %rd10;
	.loc	1 79 98                         // quant_per_thread.py:79:98
	shl.b32 	%r42, %r28, 3;
	and.b32 	%r43, %r42, 120;
	.loc	1 79 19                         // quant_per_thread.py:79:19
	cvt.u64.u32 	%rd12, %r43;
	mul.wide.u32 	%rd13, %r43, 2;
	add.s64 	%rd1, %rd11, %rd13;
	.loc	1 80 67                         // quant_per_thread.py:80:67
	mul.lo.s32 	%r44, %r26, %r38;
	.loc	1 80 19                         // quant_per_thread.py:80:19
	mad.wide.s32 	%rd14, %r44, 2, %rd10;
	add.s64 	%rd2, %rd14, %rd13;
	.loc	1 81 29                         // quant_per_thread.py:81:29
	mul.lo.s32 	%r45, %r27, %r21;
	.loc	1 81 20                         // quant_per_thread.py:81:20
	cvt.s64.s32 	%rd15, %r45;
	add.s64 	%rd16, %rd7, %rd15;
	.loc	1 81 49                         // quant_per_thread.py:81:49
	mul.lo.s32 	%r46, %r30, %r20;
	.loc	1 81 20                         // quant_per_thread.py:81:20
	cvt.s64.s32 	%rd17, %r46;
	add.s64 	%rd18, %rd16, %rd17;
	.loc	1 81 69                         // quant_per_thread.py:81:69
	mul.lo.s32 	%r47, %r32, %r37;
	.loc	1 81 20                         // quant_per_thread.py:81:20
	cvt.s64.s32 	%rd19, %r47;
	add.s64 	%rd20, %rd18, %rd19;
	add.s64 	%rd3, %rd20, %rd12;
	.loc	1 82 69                         // quant_per_thread.py:82:69
	mul.lo.s32 	%r48, %r32, %r38;
	.loc	1 82 20                         // quant_per_thread.py:82:20
	cvt.s64.s32 	%rd21, %r48;
	add.s64 	%rd22, %rd18, %rd21;
	add.s64 	%rd4, %rd22, %rd12;
	.loc	1 83 26                         // quant_per_thread.py:83:26
	mul.lo.s32 	%r49, %r34, %r21;
	.loc	1 83 18                         // quant_per_thread.py:83:18
	mad.wide.s32 	%rd23, %r49, 4, %rd8;
	.loc	1 83 46                         // quant_per_thread.py:83:46
	mul.lo.s32 	%r50, %r36, %r20;
	.loc	1 83 18                         // quant_per_thread.py:83:18
	mad.wide.s32 	%rd24, %r50, 4, %rd23;
	.loc	1 83 66                         // quant_per_thread.py:83:66
	and.b32 	%r51, %r17, 2147483644;
	.loc	1 83 18                         // quant_per_thread.py:83:18
	mad.wide.u32 	%rd25, %r51, 4, %rd24;
	mad.wide.u32 	%rd5, %r18, 4, %rd25;
	.loc	1 85 36                         // quant_per_thread.py:85:36
	setp.lt.s32 	%p1, %r37, %r19;
	.loc	1 85 10                         // quant_per_thread.py:85:10
	// begin inline asm
	.loc	1 85 10                         // quant_per_thread.py:85:10
	mov.u32 %r1, 0x0;
	.loc	1 86 10                         // quant_per_thread.py:86:10
	mov.u32 %r2, 0x0;
	.loc	1 87 10                         // quant_per_thread.py:87:10
	mov.u32 %r3, 0x0;
	.loc	1 88 10                         // quant_per_thread.py:88:10
	mov.u32 %r4, 0x0;
	@%p1 ld.global.v4.b32 { %r1, %r2, %r3, %r4 }, [ %rd1 + 0 ];

	// end inline asm
	mov.b32 	{%rs1, %rs2}, %r1;
	mov.b32 	{%rs3, %rs4}, %r2;
	mov.b32 	{%rs5, %rs6}, %r3;
	mov.b32 	{%rs7, %rs8}, %r4;
	.loc	1 86 36                         // quant_per_thread.py:86:36
	setp.lt.s32 	%p2, %r38, %r19;
	.loc	1 86 10                         // quant_per_thread.py:86:10
	// begin inline asm
	.loc	1 86 10                         // quant_per_thread.py:86:10
	mov.u32 %r5, 0x0;
	.loc	1 87 10                         // quant_per_thread.py:87:10
	mov.u32 %r6, 0x0;
	.loc	1 88 10                         // quant_per_thread.py:88:10
	mov.u32 %r7, 0x0;
	.loc	1 89 10                         // quant_per_thread.py:89:10
	mov.u32 %r8, 0x0;
	@%p2 ld.global.v4.b32 { %r5, %r6, %r7, %r8 }, [ %rd2 + 0 ];

	// end inline asm
	mov.b32 	{%rs9, %rs10}, %r5;
	mov.b32 	{%rs11, %rs12}, %r6;
	mov.b32 	{%rs13, %rs14}, %r7;
	mov.b32 	{%rs15, %rs16}, %r8;
	.loc	1 87 10                         // quant_per_thread.py:87:10
	cvt.f32.bf16 	%r52, %rs1;
	cvt.f32.bf16 	%r53, %rs2;
	cvt.f32.bf16 	%r54, %rs3;
	cvt.f32.bf16 	%r55, %rs4;
	cvt.f32.bf16 	%r56, %rs5;
	cvt.f32.bf16 	%r57, %rs6;
	cvt.f32.bf16 	%r58, %rs7;
	cvt.f32.bf16 	%r59, %rs8;
	.loc	1 88 10                         // quant_per_thread.py:88:10
	cvt.f32.bf16 	%r60, %rs9;
	cvt.f32.bf16 	%r61, %rs10;
	cvt.f32.bf16 	%r62, %rs11;
	cvt.f32.bf16 	%r63, %rs12;
	cvt.f32.bf16 	%r64, %rs13;
	cvt.f32.bf16 	%r65, %rs14;
	cvt.f32.bf16 	%r66, %rs15;
	cvt.f32.bf16 	%r67, %rs16;
	.loc	1 89 24                         // quant_per_thread.py:89:24
	abs.f32 	%r68, %r52;
	abs.f32 	%r69, %r53;
	abs.f32 	%r70, %r54;
	abs.f32 	%r71, %r55;
	abs.f32 	%r72, %r56;
	abs.f32 	%r73, %r57;
	abs.f32 	%r74, %r58;
	abs.f32 	%r75, %r59;
$L__tmp1:
	.loc	1 89 17                         // quant_per_thread.py:89:17
	.loc	2 191 16, function_name $L__info_string0, inlined_at 1 89 17 // standard.py:191:16
	.loc	2 170 12, function_name $L__info_string0, inlined_at 2 191 16 // standard.py:170:12
	max.f32 	%r76, %r68, %r69;
	max.f32 	%r77, %r70, %r71;
	max.f32 	%r78, %r72, %r73;
	max.f32 	%r79, %r74, %r75;
	max.f32 	%r80, %r76, %r77;
	max.f32 	%r81, %r78, %r79;
	max.f32 	%r82, %r80, %r81;
$L__tmp2:
	.loc	2 191 16, function_name $L__info_string0, inlined_at 1 89 17 // standard.py:191:16
	shfl.sync.bfly.b32 	%r83, %r82, 16, 31, -1;
$L__tmp3:
	.loc	2 170 12, function_name $L__info_string0, inlined_at 2 191 16 // standard.py:170:12
	max.f32 	%r84, %r82, %r83;
$L__tmp4:
	.loc	2 191 16, function_name $L__info_string0, inlined_at 1 89 17 // standard.py:191:16
	shfl.sync.bfly.b32 	%r85, %r84, 8, 31, -1;
$L__tmp5:
	.loc	2 170 12, function_name $L__info_string0, inlined_at 2 191 16 // standard.py:170:12
	max.f32 	%r86, %r84, %r85;
$L__tmp6:
	.loc	2 191 16, function_name $L__info_string0, inlined_at 1 89 17 // standard.py:191:16
	shfl.sync.bfly.b32 	%r87, %r86, 4, 31, -1;
$L__tmp7:
	.loc	2 170 12, function_name $L__info_string0, inlined_at 2 191 16 // standard.py:170:12
	max.f32 	%r88, %r86, %r87;
$L__tmp8:
	.loc	2 191 16, function_name $L__info_string0, inlined_at 1 89 17 // standard.py:191:16
	shfl.sync.bfly.b32 	%r89, %r88, 2, 31, -1;
$L__tmp9:
	.loc	2 170 12, function_name $L__info_string0, inlined_at 2 191 16 // standard.py:170:12
	max.f32 	%r90, %r88, %r89;
$L__tmp10:
	.loc	2 191 16, function_name $L__info_string0, inlined_at 1 89 17 // standard.py:191:16
	shfl.sync.bfly.b32 	%r91, %r90, 1, 31, -1;
$L__tmp11:
	.loc	2 170 12, function_name $L__info_string0, inlined_at 2 191 16 // standard.py:170:12
	max.f32 	%r10, %r90, %r91;
$L__tmp12:
	.loc	2 191 16, function_name $L__info_string0, inlined_at 1 89 17 // standard.py:191:16
	shr.u32 	%r92, %r28, 3;
	and.b32 	%r93, %r92, 12;
	mov.b32 	%r94, global_smem;
	add.s32 	%r9, %r94, %r93;
	// begin inline asm
	.loc	2 191 16, function_name $L__info_string0, inlined_at 1 89 17 // standard.py:191:16
	st.shared::cta.b32 [ %r9 + 0 ], %r10;

	// end inline asm
	bar.sync 	0;
	shl.b32 	%r95, %r28, 2;
	and.b32 	%r96, %r95, 12;
	add.s32 	%r97, %r94, %r96;
	ld.shared.b32 	%r98, [%r97];
	shfl.sync.bfly.b32 	%r99, %r98, 2, 31, -1;
$L__tmp13:
	.loc	2 170 12, function_name $L__info_string0, inlined_at 2 191 16 // standard.py:170:12
	max.f32 	%r100, %r98, %r99;
$L__tmp14:
	.loc	2 191 16, function_name $L__info_string0, inlined_at 1 89 17 // standard.py:191:16
	shfl.sync.bfly.b32 	%r101, %r100, 1, 31, -1;
$L__tmp15:
	.loc	2 170 12, function_name $L__info_string0, inlined_at 2 191 16 // standard.py:170:12
	max.f32 	%r102, %r100, %r101;
$L__tmp16:
	.loc	1 89 44                         // quant_per_thread.py:89:44
	abs.f32 	%r103, %r60;
	abs.f32 	%r104, %r61;
	abs.f32 	%r105, %r62;
	abs.f32 	%r106, %r63;
	abs.f32 	%r107, %r64;
	abs.f32 	%r108, %r65;
	abs.f32 	%r109, %r66;
	abs.f32 	%r110, %r67;
$L__tmp17:
	.loc	1 89 37                         // quant_per_thread.py:89:37
	.loc	2 191 16, function_name $L__info_string0, inlined_at 1 89 37 // standard.py:191:16
	bar.sync 	0;
$L__tmp18:
	.loc	2 170 12, function_name $L__info_string0, inlined_at 2 191 16 // standard.py:170:12
	max.f32 	%r111, %r103, %r104;
	max.f32 	%r112, %r105, %r106;
	max.f32 	%r113, %r107, %r108;
	max.f32 	%r114, %r109, %r110;
	max.f32 	%r115, %r111, %r112;
	max.f32 	%r116, %r113, %r114;
	max.f32 	%r117, %r115, %r116;
$L__tmp19:
	.loc	2 191 16, function_name $L__info_string0, inlined_at 1 89 37 // standard.py:191:16
	shfl.sync.bfly.b32 	%r118, %r117, 16, 31, -1;
$L__tmp20:
	.loc	2 170 12, function_name $L__info_string0, inlined_at 2 191 16 // standard.py:170:12
	max.f32 	%r119, %r117, %r118;
$L__tmp21:
	.loc	2 191 16, function_name $L__info_string0, inlined_at 1 89 37 // standard.py:191:16
	shfl.sync.bfly.b32 	%r120, %r119, 8, 31, -1;
$L__tmp22:
	.loc	2 170 12, function_name $L__info_string0, inlined_at 2 191 16 // standard.py:170:12
	max.f32 	%r121, %r119, %r120;
$L__tmp23:
	.loc	2 191 16, function_name $L__info_string0, inlined_at 1 89 37 // standard.py:191:16
	shfl.sync.bfly.b32 	%r122, %r121, 4, 31, -1;
$L__tmp24:
	.loc	2 170 12, function_name $L__info_string0, inlined_at 2 191 16 // standard.py:170:12
	max.f32 	%r123, %r121, %r122;
$L__tmp25:
	.loc	2 191 16, function_name $L__info_string0, inlined_at 1 89 37 // standard.py:191:16
	shfl.sync.bfly.b32 	%r124, %r123, 2, 31, -1;
$L__tmp26:
	.loc	2 170 12, function_name $L__info_string0, inlined_at 2 191 16 // standard.py:170:12
	max.f32 	%r125, %r123, %r124;
$L__tmp27:
	.loc	2 191 16, function_name $L__info_string0, inlined_at 1 89 37 // standard.py:191:16
	shfl.sync.bfly.b32 	%r126, %r125, 1, 31, -1;
$L__tmp28:
	.loc	2 170 12, function_name $L__info_string0, inlined_at 2 191 16 // standard.py:170:12
	max.f32 	%r11, %r125, %r126;
$L__tmp29:
	.loc	2 191 16, function_name $L__info_string0, inlined_at 1 89 37 // standard.py:191:16
	// begin inline asm
	.loc	2 191 16, function_name $L__info_string0, inlined_at 1 89 37 // standard.py:191:16
	st.shared::cta.b32 [ %r9 + 0 ], %r11;

	// end inline asm
	bar.sync 	0;
	ld.shared.b32 	%r127, [%r97];
	shfl.sync.bfly.b32 	%r128, %r127, 2, 31, -1;
$L__tmp30:
	.loc	2 170 12, function_name $L__info_string0, inlined_at 2 191 16 // standard.py:170:12
	max.f32 	%r129, %r127, %r128;
$L__tmp31:
	.loc	2 191 16, function_name $L__info_string0, inlined_at 1 89 37 // standard.py:191:16
	shfl.sync.bfly.b32 	%r130, %r129, 1, 31, -1;
$L__tmp32:
	.loc	2 170 12, function_name $L__info_string0, inlined_at 2 191 16 // standard.py:170:12
	max.f32 	%r131, %r129, %r130;
$L__tmp33:
	.loc	1 89 13                         // quant_per_thread.py:89:13
	max.f32 	%r132, %r102, %r131;
	mov.b32 	%r133, 0f42FE0000;
	div.full.f32 	%r134, %r132, %r133;
	add.f32 	%r16, %r134, 0f33D6BF95;
	.loc	1 90 15                         // quant_per_thread.py:90:15
	div.full.f32 	%r135, %r52, %r16;
	div.full.f32 	%r136, %r53, %r16;
	div.full.f32 	%r137, %r54, %r16;
	div.full.f32 	%r138, %r55, %r16;
	div.full.f32 	%r139, %r56, %r16;
	div.full.f32 	%r140, %r57, %r16;
	div.full.f32 	%r141, %r58, %r16;
	div.full.f32 	%r142, %r59, %r16;
	.loc	1 91 15                         // quant_per_thread.py:91:15
	div.full.f32 	%r143, %r60, %r16;
	div.full.f32 	%r144, %r61, %r16;
	div.full.f32 	%r145, %r62, %r16;
	div.full.f32 	%r146, %r63, %r16;
	div.full.f32 	%r147, %r64, %r16;
	div.full.f32 	%r148, %r65, %r16;
	div.full.f32 	%r149, %r66, %r16;
	div.full.f32 	%r150, %r67, %r16;
	.loc	1 92 31                         // quant_per_thread.py:92:31
	setp.ge.f32 	%p4, %r135, 0f00000000;
	setp.ge.f32 	%p5, %r136, 0f00000000;
	setp.ge.f32 	%p6, %r137, 0f00000000;
	setp.ge.f32 	%p7, %r138, 0f00000000;
	.loc	1 92 22                         // quant_per_thread.py:92:22
	selp.f32 	%r151, 0f3F000000, 0fBF000000, %p7;
	selp.f32 	%r152, 0f3F000000, 0fBF000000, %p6;
	selp.f32 	%r153, 0f3F000000, 0fBF000000, %p5;
	selp.f32 	%r154, 0f3F000000, 0fBF000000, %p4;
	.loc	1 92 5                          // quant_per_thread.py:92:5
	add.f32 	%r155, %r135, %r154;
	add.f32 	%r156, %r136, %r153;
	add.f32 	%r157, %r137, %r152;
	add.f32 	%r158, %r138, %r151;
	.loc	1 94 15                         // quant_per_thread.py:94:15
	cvt.rzi.s16.f32 	%rs17, %r158;
	cvt.rzi.s16.f32 	%rs18, %r157;
	mov.b32 	%r159, {%rs18, %rs17};
	mov.b32 	{%rs19, %rs20}, %r159;
	cvt.u32.u16 	%r160, %rs20;
	cvt.u32.u16 	%r161, %rs19;
	prmt.b32 	%r162, %r161, %r160, 0x3340U;
	cvt.rzi.s16.f32 	%rs21, %r156;
	cvt.rzi.s16.f32 	%rs22, %r155;
	mov.b32 	%r163, {%rs22, %rs21};
	mov.b32 	{%rs23, %rs24}, %r163;
	cvt.u32.u16 	%r164, %rs24;
	cvt.u32.u16 	%r165, %rs23;
	prmt.b32 	%r166, %r165, %r164, 0x3340U;
	prmt.b32 	%r12, %r166, %r162, 0x5410U;
	.loc	1 92 31                         // quant_per_thread.py:92:31
	setp.ge.f32 	%p8, %r139, 0f00000000;
	setp.ge.f32 	%p9, %r140, 0f00000000;
	setp.ge.f32 	%p10, %r141, 0f00000000;
	setp.ge.f32 	%p11, %r142, 0f00000000;
	.loc	1 92 22                         // quant_per_thread.py:92:22
	selp.f32 	%r167, 0f3F000000, 0fBF000000, %p11;
	selp.f32 	%r168, 0f3F000000, 0fBF000000, %p10;
	selp.f32 	%r169, 0f3F000000, 0fBF000000, %p9;
	selp.f32 	%r170, 0f3F000000, 0fBF000000, %p8;
	.loc	1 92 5                          // quant_per_thread.py:92:5
	add.f32 	%r171, %r139, %r170;
	add.f32 	%r172, %r140, %r169;
	add.f32 	%r173, %r141, %r168;
	add.f32 	%r174, %r142, %r167;
	.loc	1 94 15                         // quant_per_thread.py:94:15
	cvt.rzi.s16.f32 	%rs25, %r174;
	cvt.rzi.s16.f32 	%rs26, %r173;
	mov.b32 	%r175, {%rs26, %rs25};
	mov.b32 	{%rs27, %rs28}, %r175;
	cvt.u32.u16 	%r176, %rs28;
	cvt.u32.u16 	%r177, %rs27;
	prmt.b32 	%r178, %r177, %r176, 0x3340U;
	cvt.rzi.s16.f32 	%rs29, %r172;
	cvt.rzi.s16.f32 	%rs30, %r171;
	mov.b32 	%r179, {%rs30, %rs29};
	mov.b32 	{%rs31, %rs32}, %r179;
	cvt.u32.u16 	%r180, %rs32;
	cvt.u32.u16 	%r181, %rs31;
	prmt.b32 	%r182, %r181, %r180, 0x3340U;
	prmt.b32 	%r13, %r182, %r178, 0x5410U;
	.loc	1 93 31                         // quant_per_thread.py:93:31
	setp.ge.f32 	%p12, %r143, 0f00000000;
	setp.ge.f32 	%p13, %r144, 0f00000000;
	setp.ge.f32 	%p14, %r145, 0f00000000;
	setp.ge.f32 	%p15, %r146, 0f00000000;
	.loc	1 93 22                         // quant_per_thread.py:93:22
	selp.f32 	%r183, 0f3F000000, 0fBF000000, %p15;
	selp.f32 	%r184, 0f3F000000, 0fBF000000, %p14;
	selp.f32 	%r185, 0f3F000000, 0fBF000000, %p13;
	selp.f32 	%r186, 0f3F000000, 0fBF000000, %p12;
	.loc	1 93 5                          // quant_per_thread.py:93:5
	add.f32 	%r187, %r143, %r186;
	add.f32 	%r188, %r144, %r185;
	add.f32 	%r189, %r145, %r184;
	add.f32 	%r190, %r146, %r183;
	.loc	1 95 15                         // quant_per_thread.py:95:15
	cvt.rzi.s16.f32 	%rs33, %r190;
	cvt.rzi.s16.f32 	%rs34, %r189;
	mov.b32 	%r191, {%rs34, %rs33};
	mov.b32 	{%rs35, %rs36}, %r191;
	cvt.u32.u16 	%r192, %rs36;
	cvt.u32.u16 	%r193, %rs35;
	prmt.b32 	%r194, %r193, %r192, 0x3340U;
	cvt.rzi.s16.f32 	%rs37, %r188;
	cvt.rzi.s16.f32 	%rs38, %r187;
	mov.b32 	%r195, {%rs38, %rs37};
	mov.b32 	{%rs39, %rs40}, %r195;
	cvt.u32.u16 	%r196, %rs40;
	cvt.u32.u16 	%r197, %rs39;
	prmt.b32 	%r198, %r197, %r196, 0x3340U;
	prmt.b32 	%r14, %r198, %r194, 0x5410U;
	.loc	1 93 31                         // quant_per_thread.py:93:31
	setp.ge.f32 	%p16, %r147, 0f00000000;
	setp.ge.f32 	%p17, %r148, 0f00000000;
	setp.ge.f32 	%p18, %r149, 0f00000000;
	setp.ge.f32 	%p19, %r150, 0f00000000;
	.loc	1 93 22                         // quant_per_thread.py:93:22
	selp.f32 	%r199, 0f3F000000, 0fBF000000, %p19;
	selp.f32 	%r200, 0f3F000000, 0fBF000000, %p18;
	selp.f32 	%r201, 0f3F000000, 0fBF000000, %p17;
	selp.f32 	%r202, 0f3F000000, 0fBF000000, %p16;
	.loc	1 93 5                          // quant_per_thread.py:93:5
	add.f32 	%r203, %r147, %r202;
	add.f32 	%r204, %r148, %r201;
	add.f32 	%r205, %r149, %r200;
	add.f32 	%r206, %r150, %r199;
	.loc	1 95 15                         // quant_per_thread.py:95:15
	cvt.rzi.s16.f32 	%rs41, %r206;
	cvt.rzi.s16.f32 	%rs42, %r205;
	mov.b32 	%r207, {%rs42, %rs41};
	mov.b32 	{%rs43, %rs44}, %r207;
	cvt.u32.u16 	%r208, %rs44;
	cvt.u32.u16 	%r209, %rs43;
	prmt.b32 	%r210, %r209, %r208, 0x3340U;
	cvt.rzi.s16.f32 	%rs45, %r204;
	cvt.rzi.s16.f32 	%rs46, %r203;
	mov.b32 	%r211, {%rs46, %rs45};
	mov.b32 	{%rs47, %rs48}, %r211;
	cvt.u32.u16 	%r212, %rs48;
	cvt.u32.u16 	%r213, %rs47;
	prmt.b32 	%r214, %r213, %r212, 0x3340U;
	prmt.b32 	%r15, %r214, %r210, 0x5410U;
	.loc	1 96 5                          // quant_per_thread.py:96:5
	// begin inline asm
	@%p1 st.global.v2.b32 [ %rd3 + 0 ], { %r12, %r13 };

	// end inline asm
	.loc	1 97 5                          // quant_per_thread.py:97:5
	// begin inline asm
	@%p2 st.global.v2.b32 [ %rd4 + 0 ], { %r14, %r15 };

	// end inline asm
	.loc	1 98 5                          // quant_per_thread.py:98:5
	setp.eq.b32 	%p3, %r28, 0;
	// begin inline asm
	@%p3 st.global.b32 [ %rd5 + 0 ], { %r16 };

	// end inline asm
	.loc	1 49 1                          // quant_per_thread.py:49:1
	ret;
$L__tmp34:
$L__func_end0:
                                        // -- End function
}
	.file	1 "D:\\Comfy\\App\\ComfyUI_windows_portable\\python_embeded\\Lib\\site-packages\\sageattention\\triton\\quant_per_thread.py"
	.file	2 "D:\\Comfy\\App\\ComfyUI_windows_portable\\python_embeded\\Lib\\site-packages\\triton\\language\\standard.py"
	.section	.debug_abbrev
	{
.b8 1                                   // Abbreviation Code
.b8 17                                  // DW_TAG_compile_unit
.b8 1                                   // DW_CHILDREN_yes
.b8 37                                  // DW_AT_producer
.b8 8                                   // DW_FORM_string
.b8 19                                  // DW_AT_language
.b8 5                                   // DW_FORM_data2
.b8 3                                   // DW_AT_name
.b8 8                                   // DW_FORM_string
.b8 16                                  // DW_AT_stmt_list
.b8 6                                   // DW_FORM_data4
.b8 27                                  // DW_AT_comp_dir
.b8 8                                   // DW_FORM_string
.b8 0                                   // EOM(1)
.b8 0                                   // EOM(2)
.b8 2                                   // Abbreviation Code
.b8 46                                  // DW_TAG_subprogram
.b8 0                                   // DW_CHILDREN_no
.b8 3                                   // DW_AT_name
.b8 8                                   // DW_FORM_string
.b8 32                                  // DW_AT_inline
.b8 11                                  // DW_FORM_data1
.b8 0                                   // EOM(1)
.b8 0                                   // EOM(2)
.b8 3                                   // Abbreviation Code
.b8 46                                  // DW_TAG_subprogram
.b8 1                                   // DW_CHILDREN_yes
.b8 17                                  // DW_AT_low_pc
.b8 1                                   // DW_FORM_addr
.b8 18                                  // DW_AT_high_pc
.b8 1                                   // DW_FORM_addr
.b8 49                                  // DW_AT_abstract_origin
.b8 19                                  // DW_FORM_ref4
.b8 0                                   // EOM(1)
.b8 0                                   // EOM(2)
.b8 4                                   // Abbreviation Code
.b8 29                                  // DW_TAG_inlined_subroutine
.b8 1                                   // DW_CHILDREN_yes
.b8 49                                  // DW_AT_abstract_origin
.b8 19                                  // DW_FORM_ref4
.b8 17                                  // DW_AT_low_pc
.b8 1                                   // DW_FORM_addr
.b8 18                                  // DW_AT_high_pc
.b8 1                                   // DW_FORM_addr
.b8 88                                  // DW_AT_call_file
.b8 11                                  // DW_FORM_data1
.b8 89                                  // DW_AT_call_line
.b8 11                                  // DW_FORM_data1
.b8 87                                  // DW_AT_call_column
.b8 11                                  // DW_FORM_data1
.b8 0                                   // EOM(1)
.b8 0                                   // EOM(2)
.b8 5                                   // Abbreviation Code
.b8 29                                  // DW_TAG_inlined_subroutine
.b8 0                                   // DW_CHILDREN_no
.b8 49                                  // DW_AT_abstract_origin
.b8 19                                  // DW_FORM_ref4
.b8 17                                  // DW_AT_low_pc
.b8 1                                   // DW_FORM_addr
.b8 18                                  // DW_AT_high_pc
.b8 1                                   // DW_FORM_addr
.b8 88                                  // DW_AT_call_file
.b8 11                                  // DW_FORM_data1
.b8 89                                  // DW_AT_call_line
.b8 11                                  // DW_FORM_data1
.b8 87                                  // DW_AT_call_column
.b8 11                                  // DW_FORM_data1
.b8 0                                   // EOM(1)
.b8 0                                   // EOM(2)
.b8 0                                   // EOM(3)
	}
	.section	.debug_info
	{
.b32 289                                // Length of Unit
.b8 2                                   // DWARF version number
.b8 0
.b32 .debug_abbrev                      // Offset Into Abbrev. Section
.b8 8                                   // Address Size (in bytes)
.b8 1                                   // Abbrev [1] 0xb:0x11a DW_TAG_compile_unit
.b8 116                                 // DW_AT_producer
.b8 114
.b8 105
.b8 116
.b8 111
.b8 110
.b8 0
.b8 2                                   // DW_AT_language
.b8 0
.b8 113                                 // DW_AT_name
.b8 117
.b8 97
.b8 110
.b8 116
.b8 95
.b8 112
.b8 101
.b8 114
.b8 95
.b8 116
.b8 104
.b8 114
.b8 101
.b8 97
.b8 100
.b8 46
.b8 112
.b8 121
.b8 0
.b32 .debug_line                        // DW_AT_stmt_list
.b8 68                                  // DW_AT_comp_dir
.b8 58
.b8 92
.b8 67
.b8 111
.b8 109
.b8 102
.b8 121
.b8 92
.b8 65
.b8 112
.b8 112
.b8 92
.b8 67
.b8 111
.b8 109
.b8 102
.b8 121
.b8 85
.b8 73
.b8 95
.b8 119
.b8 105
.b8 110
.b8 100
.b8 111
.b8 119
.b8 115
.b8 95
.b8 112
.b8 111
.b8 114
.b8 116
.b8 97
.b8 98
.b8 108
.b8 101
.b8 92
.b8 112
.b8 121
.b8 116
.b8 104
.b8 111
.b8 110
.b8 95
.b8 101
.b8 109
.b8 98
.b8 101
.b8 100
.b8 101
.b8 100
.b8 92
.b8 76
.b8 105
.b8 98
.b8 92
.b8 115
.b8 105
.b8 116
.b8 101
.b8 45
.b8 112
.b8 97
.b8 99
.b8 107
.b8 97
.b8 103
.b8 101
.b8 115
.b8 92
.b8 115
.b8 97
.b8 103
.b8 101
.b8 97
.b8 116
.b8 116
.b8 101
.b8 110
.b8 116
.b8 105
.b8 111
.b8 110
.b8 92
.b8 116
.b8 114
.b8 105
.b8 116
.b8 111
.b8 110
.b8 0
.b8 2                                   // Abbrev [2] 0x89:0x23 DW_TAG_subprogram
.b8 113                                 // DW_AT_name
.b8 117
.b8 97
.b8 110
.b8 116
.b8 95
.b8 107
.b8 101
.b8 121
.b8 95
.b8 112
.b8 101
.b8 114
.b8 95
.b8 116
.b8 104
.b8 114
.b8 101
.b8 97
.b8 100
.b8 95
.b8 105
.b8 110
.b8 116
.b8 56
.b8 95
.b8 107
.b8 101
.b8 114
.b8 110
.b8 101
.b8 108
.b8 0
.b8 1                                   // DW_AT_inline
.b8 3                                   // Abbrev [3] 0xac:0x78 DW_TAG_subprogram
.b64 $L__func_begin0                    // DW_AT_low_pc
.b64 $L__func_end0                      // DW_AT_high_pc
.b32 137                                // DW_AT_abstract_origin
.b8 4                                   // Abbrev [4] 0xc1:0x31 DW_TAG_inlined_subroutine
.b32 137                                // DW_AT_abstract_origin
.b64 $L__tmp1                           // DW_AT_low_pc
.b64 $L__tmp16                          // DW_AT_high_pc
.b8 1                                   // DW_AT_call_file
.b8 89                                  // DW_AT_call_line
.b8 17                                  // DW_AT_call_column
.b8 5                                   // Abbrev [5] 0xd9:0x18 DW_TAG_inlined_subroutine
.b32 137                                // DW_AT_abstract_origin
.b64 $L__tmp1                           // DW_AT_low_pc
.b64 $L__tmp16                          // DW_AT_high_pc
.b8 2                                   // DW_AT_call_file
.b8 191                                 // DW_AT_call_line
.b8 16                                  // DW_AT_call_column
.b8 0                                   // End Of Children Mark
.b8 4                                   // Abbrev [4] 0xf2:0x31 DW_TAG_inlined_subroutine
.b32 137                                // DW_AT_abstract_origin
.b64 $L__tmp17                          // DW_AT_low_pc
.b64 $L__tmp33                          // DW_AT_high_pc
.b8 1                                   // DW_AT_call_file
.b8 89                                  // DW_AT_call_line
.b8 37                                  // DW_AT_call_column
.b8 5                                   // Abbrev [5] 0x10a:0x18 DW_TAG_inlined_subroutine
.b32 137                                // DW_AT_abstract_origin
.b64 $L__tmp18                          // DW_AT_low_pc
.b64 $L__tmp33                          // DW_AT_high_pc
.b8 2                                   // DW_AT_call_file
.b8 191                                 // DW_AT_call_line
.b8 16                                  // DW_AT_call_column
.b8 0                                   // End Of Children Mark
.b8 0                                   // End Of Children Mark
.b8 0                                   // End Of Children Mark
	}
	.section	.debug_str
	{
$L__info_string0:
.b8 113                                 // string offset=0 ; quant_key_per_thread_int8_kernel
.b8 117
.b8 97
.b8 110
.b8 116
.b8 95
.b8 107
.b8 101
.b8 121
.b8 95
.b8 112
.b8 101
.b8 114
.b8 95
.b8 116
.b8 104
.b8 114
.b8 101
.b8 97
.b8 100
.b8 95
.b8 105
.b8 110
.b8 116
.b8 56
.b8 95
.b8 107
.b8 101
.b8 114
.b8 110
.b8 101
.b8 108
.b8 0
	}
	.section	.debug_macinfo	{	}
