#include "/srv/home/gc-sdk/ipu-stack/device/static_runtime.S"
#include "/srv/home/gc-sdk/ipu-stack/device/worker_support.S"
	.text
	.allow_optimizations
	.file	"3"
	.section	.text.__runCodelet_AddF16,"ax",@progbits
	.globl	__runCodelet_AddF16             # -- Begin function __runCodelet_AddF16
	.p2align	2
	.type	__runCodelet_AddF16,@function
__runCodelet_AddF16:                    # @__runCodelet_AddF16
	.worker
.Lcode0_func_begin0:
# %bb.0:                                # %entry
	setzi $m6, 32
	cmpult $m6, $m6, __worker_stack_max_growth_plus_one
	brz $m6, _stackoverflow
	add $m11, $m12, -32
	get $m0, 1
	ld32 $m10, $m13, $m15, 3
	and $m6, $m0, 7
	ld32 $m1, $m13, $m15, 4
	ld32 $m3, $m13, $m15, 5
	st32 $m10, $m11, $m15, 7                # 4-byte Folded Spill
	brz $m10, .Lcode0_BB0_18
# %bb.1:                                # %entry
	and $m0, $m10, 3
	brnz $m0, .Lcode0_BB0_18
# %bb.2:                                # %entry
	and $m0, $m1, 3
	brnz $m0, .Lcode0_BB0_18
# %bb.3:                                # %entry
	and $m0, $m3, 3
	brnz $m0, .Lcode0_BB0_18
# %bb.4:                                # %land.lhs.true12.i
	ld32 $m0, $m13, $m15, 0
	ld32 $m2, $m13, $m15, 1
	or $m5, $m2, $m0
	ld32 $m4, $m13, $m15, 2
	or $m5, $m5, $m4
	and $m5, $m5, 6
	brz $m5, .Lcode0_BB0_5
.Lcode0_BB0_18:                               # %if.end62.i
	shr $m4, $m10, 1
	brz $m6, .Lcode0_BB0_20
# %bb.19:                               # %if.end62.i
	cmpult $m0, $m6, $m4
	brnz $m0, .Lcode0_BB0_20
.Lcode0_BB0_72:                               # %_ZN6AddF167computeEj.exit
	exitz $m15
.Lcode0_BB0_20:                               # %if.end68.i
	st32 $m6, $m11, $m15, 2                 # 4-byte Folded Spill
	and $m2, $m10, 1
	brnz $m2, .Lcode0_BB0_50
# %bb.21:                               # %if.end68.i
	and $m0, $m1, 1
	brnz $m0, .Lcode0_BB0_50
# %bb.22:                               # %if.end68.i
	and $m0, $m3, 1
	brnz $m0, .Lcode0_BB0_50
# %bb.23:                               # %if.then77.i
	cmpne $m2, $m1, $m10
	ld32 $m0, $m13, $m15, 0
	st32 $m0, $m11, $m15, 6                 # 4-byte Folded Spill
	ld32 $m7, $m13, $m15, 1
	ld32 $m0, $m13, $m15, 2
	st32 $m0, $m11, $m15, 5                 # 4-byte Folded Spill
	cmpne $m0, $m3, $m10
	brnz $m2, .Lcode0_BB0_28
# %bb.24:                               # %if.then77.i
	brnz $m0, .Lcode0_BB0_28
# %bb.25:                               # %for.cond89.preheader.i
	ld32 $m5, $m11, $m15, 2                 # 4-byte Folded Reload
	cmpult $m0, $m5, $m4
	brz $m0, .Lcode0_BB0_72
# %bb.26:                               # %for.body93.i.preheader
	xnor $m0, $m5, $m15
	add $m0, $m0, $m4
	setzi $m1, 43691
	sort4x16lo $m2, $m0, $m15
	shr $m0, $m0, 16
	mul $m3, $m2, $m1
	mul $m1, $m0, $m1
	shr $m3, $m3, 16
	add $m1, $m1, $m3
	setzi $m3, 43690
	mul $m2, $m2, $m3
	mul $m0, $m0, $m3
	sort4x16lo $m3, $m1, $m15
	shr $m1, $m1, 16
	add $m2, $m2, $m3
	add $m0, $m0, $m1
	shr $m1, $m2, 16
	add $m0, $m0, $m1
	shr $m0, $m0, 2
	shl $m3, $m5, 2
	ld32 $m1, $m11, $m15, 5                 # 4-byte Folded Reload
	add $m1, $m1, $m3
	add $m2, $m7, $m3
	ld32 $m4, $m11, $m15, 6                 # 4-byte Folded Reload
	add $m3, $m4, $m3
.Lcode0_BB0_27:                               # %for.body93.i
                                        # =>This Inner Loop Header: Depth=1
	ld32step $a0, $m15, $m3+=, 6
	ld32step $a1, $m15, $m2+=, 6
	f16v2add $a0, $a0, $a1
	st32step $a0, $m15, $m1+=, 6
	brnzdec $m0, .Lcode0_BB0_27
	bri .Lcode0_BB0_72
.Lcode0_BB0_50:                               # %if.end180.i
	st32 $m2, $m11, $m15, 1                 # 4-byte Folded Spill
	ld32 $m0, $m11, $m15, 2                 # 4-byte Folded Reload
	shl $m4, $m0, 1
	add $m6, $m1, $m4
	mov	$m0, $m4
.Lcode0_BB0_51:                               # %while.cond.i433.i
                                        # =>This Inner Loop Header: Depth=1
	cmpult $m2, $m0, $m1
	sub $m0, $m0, $m1
	sub $m6, $m6, $m1
	brz $m2, .Lcode0_BB0_51
# %bb.52:                               # %while.cond.i438.i.preheader
	add $m7, $m3, $m4
	mov	$m0, $m4
.Lcode0_BB0_53:                               # %while.cond.i438.i
                                        # =>This Inner Loop Header: Depth=1
	cmpult $m2, $m0, $m3
	sub $m0, $m0, $m3
	sub $m7, $m7, $m3
	brz $m2, .Lcode0_BB0_53
# %bb.54:                               # %for.cond188.preheader.i
	or $m0, $m4, 1
	cmpult $m0, $m0, $m10
	brz $m0, .Lcode0_BB0_65
# %bb.55:                               # %for.body192.lr.ph.i
	shl $m8, $m1, 1
	shl $m9, $m3, 1
	add $m0, $m8, 2
	st32 $m0, $m11, $m15, 6                 # 4-byte Folded Spill
	add $m0, $m9, 2
	st32 $m0, $m11, $m15, 5                 # 4-byte Folded Spill
	add $m0, $m1, 12
	st32 $m0, $m11, $m15, 4                 # 4-byte Folded Spill
	add $m0, $m3, 12
	st32 $m0, $m11, $m15, 3                 # 4-byte Folded Spill
.Lcode0_BB0_56:                               # %for.body192.i
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB0_57 Depth 2
                                        #     Child Loop BB0_59 Depth 2
                                        #     Child Loop BB0_61 Depth 2
                                        #     Child Loop BB0_63 Depth 2
	ld32 $m5, $m13, $m15, 0
	shl $m0, $m6, 1
	ldb16 $a0, $m5, $m15, $m6
	add $m10, $m6, 1
	ld32 $m2, $m11, $m15, 6                 # 4-byte Folded Reload
	add $m0, $m2, $m0
.Lcode0_BB0_57:                               # %while.cond.i443.i
                                        #   Parent Loop BB0_56 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	cmpult $m2, $m10, $m1
	sub $m10, $m10, $m1
	sub $m0, $m0, $m8
	brz $m2, .Lcode0_BB0_57
# %bb.58:                               # %_ZN6AddF164wrapEjj.exit444.i
                                        #   in Loop: Header=BB0_56 Depth=1
	ld32 $m10, $m13, $m15, 1
	ldb16 $a1, $m5, $m0, 0
	shl $m2, $m7, 1
	ldb16 $a2, $m10, $m15, $m7
	add $m0, $m7, 1
	ld32 $m5, $m11, $m15, 5                 # 4-byte Folded Reload
	add $m5, $m5, $m2
.Lcode0_BB0_59:                               # %while.cond.i448.i
                                        #   Parent Loop BB0_56 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	cmpult $m2, $m0, $m3
	sub $m0, $m0, $m3
	sub $m5, $m5, $m9
	brz $m2, .Lcode0_BB0_59
# %bb.60:                               # %_ZN6AddF164wrapEjj.exit449.i
                                        #   in Loop: Header=BB0_56 Depth=1
	{
		ldb16 $a1, $m10, $m5, 0
		sort4x16lo $a0, $a0, $a1
	}
	{
		ld32 $m0, $m13, $m15, 2
		sort4x16lo $a1, $a2, $a1
	}
	{
		shl $m2, $m4, 1
		f16v2add $a0, $a0, $a1
	}
	st32 $a0, $m0, $m2, 0
	add $m0, $m6, 12
	ld32 $m2, $m11, $m15, 4                 # 4-byte Folded Reload
	add $m6, $m2, $m6
.Lcode0_BB0_61:                               # %while.cond.i453.i
                                        #   Parent Loop BB0_56 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	cmpult $m2, $m0, $m1
	sub $m0, $m0, $m1
	sub $m6, $m6, $m1
	brz $m2, .Lcode0_BB0_61
# %bb.62:                               # %_ZN6AddF164wrapEjj.exit454.i
                                        #   in Loop: Header=BB0_56 Depth=1
	add $m0, $m7, 12
	ld32 $m2, $m11, $m15, 3                 # 4-byte Folded Reload
	add $m7, $m2, $m7
	ld32 $m10, $m11, $m15, 7                # 4-byte Folded Reload
.Lcode0_BB0_63:                               # %while.cond.i458.i
                                        #   Parent Loop BB0_56 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	cmpult $m2, $m0, $m3
	sub $m0, $m0, $m3
	sub $m7, $m7, $m3
	brz $m2, .Lcode0_BB0_63
# %bb.64:                               # %_ZN6AddF164wrapEjj.exit459.i
                                        #   in Loop: Header=BB0_56 Depth=1
	add $m4, $m4, 12
	or $m0, $m4, 1
	cmpult $m0, $m0, $m10
	brnz $m0, .Lcode0_BB0_56
.Lcode0_BB0_65:                               # %for.cond.cleanup191.i
	ld32 $m0, $m11, $m15, 2                 # 4-byte Folded Reload
	brnz $m0, .Lcode0_BB0_72
# %bb.66:                               # %for.cond.cleanup191.i
	ld32 $m0, $m11, $m15, 1                 # 4-byte Folded Reload
	brz $m0, .Lcode0_BB0_72
# %bb.67:                               # %if.then224.i
	shl $m2, $m10, 1
	shl $m4, $m1, 1
	add $m0, $m10, -1
	add $m5, $m2, $m4
	add $m5, $m5, -2
	mov	$m6, $m0
.Lcode0_BB0_68:                               # %while.cond.i463.i
                                        # =>This Inner Loop Header: Depth=1
	cmpult $m7, $m6, $m1
	sub $m6, $m6, $m1
	sub $m5, $m5, $m4
	brz $m7, .Lcode0_BB0_68
# %bb.69:                               # %_ZN6AddF164wrapEjj.exit464.i
	shl $m4, $m3, 1
	add $m1, $m2, $m4
	add $m1, $m1, -2
	ld32 $m2, $m13, $m15, 0
	ldb16 $a0, $m2, $m5, 0
	mov	$m2, $m0
.Lcode0_BB0_70:                               # %while.cond.i468.i
                                        # =>This Inner Loop Header: Depth=1
	cmpult $m5, $m2, $m3
	sub $m2, $m2, $m3
	sub $m1, $m1, $m4
	brz $m5, .Lcode0_BB0_70
# %bb.71:                               # %_ZN6AddF164wrapEjj.exit469.i
	ld32 $m2, $m13, $m15, 1
	shl $m0, $m0, 1
	ldb16 $a1, $m2, $m1, 0
	{
		ld32 $m1, $m13, $m15, 2
		f16v2add $a0, $a0, $a1
	}
	{
		andc $m0, $m0, 3
		sort4x16lo $a0, $a0, $azero
	}
	ld32 $m2, $m1, $m0, 0
	setzi $m3, 65535
	andc $m2, $m2, $m3
	mov	$m3, $a0
	or $m2, $m2, $m3
	st32 $m2, $m1, $m0, 0
	exitz $m15
.Lcode0_BB0_5:                                # %if.then.i
	cmpne $m5, $m1, $m10
	brnz $m5, .Lcode0_BB0_9
# %bb.6:                                # %if.then.i
	cmpne $m5, $m3, $m10
	brnz $m5, .Lcode0_BB0_9
# %bb.7:                                # %if.then19.i
	shr $m1, $m10, 2
	cmpult $m3, $m6, $m1
	mov	$m7, $m6
	brz $m3, .Lcode0_BB0_72
# %bb.8:                                # %if.end.i.i
	sub $m1, $m1, $m7
	add $m1, $m1, 5
	setzi $m3, 43691
	sort4x16lo $m5, $m1, $m15
	shr $m1, $m1, 16
	mul $m6, $m5, $m3
	mul $m3, $m1, $m3
	shr $m6, $m6, 16
	add $m3, $m3, $m6
	setzi $m6, 43690
	mul $m5, $m5, $m6
	mul $m1, $m1, $m6
	sort4x16lo $m6, $m3, $m15
	shr $m3, $m3, 16
	add $m5, $m5, $m6
	add $m1, $m1, $m3
	shr $m3, $m5, 16
	shl $m5, $m7, 3
	add $m1, $m1, $m3
	add $m0, $m0, $m5
	add $m2, $m2, $m5
	add $m3, $m4, $m5
	shr $m1, $m1, 2
	#APP
	{
		rpt $m1, 3
		fnop
	}

	{
		ld64step $ap0, $m15, $m0+=, 6
		fnop
	}

	{
		ld64step $ap1, $m15, $m2+=, 6
		fnop
	}

	{
		nop
		f16v4add $ap0, $ap0, $ap1
	}

	{
		st64step $ap0, $m15, $m3+=, 6
		fnop
	}


	#NO_APP
	exitz $m15
.Lcode0_BB0_28:                               # %if.else.i
	cmpeq $m2, $m1, $m10
	ld32 $m6, $m11, $m15, 2                 # 4-byte Folded Reload
	brnz $m2, .Lcode0_BB0_30
# %bb.29:                               # %if.else.i
	brnz $m0, .Lcode0_BB0_39
.Lcode0_BB0_30:                               # %land.lhs.true103.i
	cmpult $m8, $m1, $m3
	mov	$m0, $m3
	movnz	$m0, $m8, $m1
	sub $m8, 0, $m0
	mov	$m9, $m10
.Lcode0_BB0_31:                               # %while.cond.i408.i
                                        # =>This Inner Loop Header: Depth=1
	cmpult $m10, $m9, $m0
	sub $m9, $m9, $m0
	add $m8, $m8, $m0
	brz $m10, .Lcode0_BB0_31
# %bb.32:                               # %_ZN6AddF164wrapEjj.exit409.i
	ld32 $m5, $m11, $m15, 7                 # 4-byte Folded Reload
	cmpne $m0, $m5, $m8
	brnz $m0, .Lcode0_BB0_39
# %bb.33:                               # %if.then111.i
	cmpult $m0, $m5, 2
	mov	$m8, $m6
	brnz $m0, .Lcode0_BB0_72
# %bb.34:                               # %for.cond138.preheader.lr.ph.i
	mov	$m0, $m15
	movnz	$m1, $m2, $m3
	shr $m1, $m1, 1
	xnor $m3, $m8, $m15
	add $m3, $m3, $m1
	setzi $m5, 43691
	sort4x16lo $m9, $m3, $m15
	shr $m3, $m3, 16
	mul $m10, $m9, $m5
	mul $m5, $m3, $m5
	shr $m10, $m10, 16
	add $m5, $m5, $m10
	setzi $m10, 43690
	mul $m9, $m9, $m10
	mul $m3, $m3, $m10
	sort4x16lo $m10, $m5, $m15
	shr $m5, $m5, 16
	add $m9, $m9, $m10
	add $m3, $m3, $m5
	shr $m5, $m9, 16
	mov	$m9, $m7
	add $m3, $m3, $m5
	ld32 $m5, $m11, $m15, 6                 # 4-byte Folded Reload
	movnz	$m9, $m2, $m5
	movnz	$m5, $m2, $m7
	shl $m2, $m8, 2
	shr $m7, $m3, 2
	add $m3, $m5, $m2
	st32 $m3, $m11, $m15, 7                 # 4-byte Folded Spill
	ld32 $m3, $m11, $m15, 5                 # 4-byte Folded Reload
	add $m3, $m3, $m2
	shl $m5, $m1, 2
	add $m6, $m9, $m2
	add $m7, $m7, 1
	bri .Lcode0_BB0_35
.Lcode0_BB0_38:                               # %for.cond.cleanup140.i
                                        #   in Loop: Header=BB0_35 Depth=1
	add $m0, $m0, $m1
	cmpult $m2, $m0, $m4
	add $m3, $m3, $m5
	add $m6, $m6, $m5
	ld32 $m8, $m11, $m15, 2                 # 4-byte Folded Reload
	brz $m2, .Lcode0_BB0_72
.Lcode0_BB0_35:                               # %for.cond138.preheader.i
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB0_37 Depth 2
	cmpult $m2, $m8, $m1
	brz $m2, .Lcode0_BB0_38
# %bb.36:                               # %for.body141.i.preheader
                                        #   in Loop: Header=BB0_35 Depth=1
	mov	$m8, $m7
	mov	$m9, $m6
	mov	$m10, $m3
	ld32 $m2, $m11, $m15, 7                 # 4-byte Folded Reload
	add $m8, $m8, -1
.Lcode0_BB0_37:                               # %for.body141.i
                                        #   Parent Loop BB0_35 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	ld32step $a0, $m15, $m9+=, 6
	ld32step $a1, $m15, $m2+=, 6
	f16v2add $a0, $a0, $a1
	st32step $a0, $m15, $m10+=, 6
	brnzdec $m8, .Lcode0_BB0_37
	bri .Lcode0_BB0_38
.Lcode0_BB0_9:                                # %if.end.i
	cmpeq $m7, $m1, $m10
	brnz $m7, .Lcode0_BB0_11
# %bb.10:                               # %if.end.i
	cmpne $m5, $m3, $m10
	brnz $m5, .Lcode0_BB0_18
.Lcode0_BB0_11:                               # %land.lhs.true28.i
	st32 $m6, $m11, $m15, 2                 # 4-byte Folded Spill
	cmpult $m6, $m1, $m3
	mov	$m5, $m3
	movnz	$m5, $m6, $m1
	sub $m6, 0, $m5
	mov	$m8, $m10
.Lcode0_BB0_12:                               # %while.cond.i.i
                                        # =>This Inner Loop Header: Depth=1
	cmpult $m9, $m8, $m5
	sub $m8, $m8, $m5
	add $m6, $m6, $m5
	brz $m9, .Lcode0_BB0_12
# %bb.13:                               # %_ZN6AddF164wrapEjj.exit.i
	cmpne $m5, $m10, $m6
	ld32 $m6, $m11, $m15, 2                 # 4-byte Folded Reload
	brnz $m5, .Lcode0_BB0_18
# %bb.14:                               # %if.then32.i
	mov	$m5, $m15
	movnz	$m1, $m7, $m3
	shr $m3, $m1, 2
	st32 $m7, $m11, $m15, 5                 # 4-byte Folded Spill
	mov	$m7, $m6
	sub $m6, $m3, $m7
	add $m6, $m6, 5
	setzi $m8, 43691
	sort4x16lo $m9, $m6, $m15
	shr $m6, $m6, 16
	mul $m10, $m9, $m8
	mul $m8, $m6, $m8
	shr $m10, $m10, 16
	add $m8, $m8, $m10
	setzi $m10, 43690
	mul $m9, $m9, $m10
	mul $m10, $m6, $m10
	sort4x16lo $m6, $m8, $m15
	shr $m8, $m8, 16
	add $m9, $m9, $m6
	mov	$m6, $m2
	add $m8, $m10, $m8
	st32 $m8, $m11, $m15, 4                 # 4-byte Folded Spill
	ld32 $m10, $m11, $m15, 7                # 4-byte Folded Reload
	shr $m9, $m9, 16
	ld32 $m8, $m11, $m15, 5                 # 4-byte Folded Reload
	movnz	$m6, $m8, $m0
	st32 $m6, $m11, $m15, 6                 # 4-byte Folded Spill
	movnz	$m0, $m8, $m2
	shl $m2, $m7, 3
	ld32 $m6, $m11, $m15, 4                 # 4-byte Folded Reload
	add $m6, $m6, $m9
	add $m0, $m0, $m2
	st32 $m0, $m11, $m15, 5                 # 4-byte Folded Spill
	shr $m6, $m6, 2
	shl $m8, $m1, 1
	bri .Lcode0_BB0_15
.Lcode0_BB0_17:                               # %_ZL8addQuadsPKDhS0_PDhjj.exit404.i
                                        #   in Loop: Header=BB0_15 Depth=1
	add $m5, $m5, $m1
	cmpult $m0, $m5, $m10
	add $m2, $m2, $m8
	ld32 $m7, $m11, $m15, 2                 # 4-byte Folded Reload
	brz $m0, .Lcode0_BB0_72
.Lcode0_BB0_15:                               # %for.body.i
                                        # =>This Inner Loop Header: Depth=1
	cmpult $m9, $m7, $m3
	brz $m9, .Lcode0_BB0_17
# %bb.16:                               # %if.end.i403.i
                                        #   in Loop: Header=BB0_15 Depth=1
	ld32 $m0, $m11, $m15, 6                 # 4-byte Folded Reload
	add $m9, $m0, $m2
	add $m10, $m4, $m2
	ld32 $m0, $m11, $m15, 5                 # 4-byte Folded Reload
	#APP
	{
		rpt $m6, 3
		fnop
	}

	{
		ld64step $ap0, $m15, $m9+=, 6
		fnop
	}

	{
		ld64step $ap1, $m15, $m0+=, 6
		fnop
	}

	{
		nop
		f16v4add $ap0, $ap0, $ap1
	}

	{
		st64step $ap0, $m15, $m10+=, 6
		fnop
	}


	#NO_APP
	ld32 $m10, $m11, $m15, 7                # 4-byte Folded Reload
	bri .Lcode0_BB0_17
.Lcode0_BB0_39:                               # %if.else154.i
	shr $m1, $m1, 1
	add $m2, $m1, $m6
	mov	$m0, $m6
.Lcode0_BB0_40:                               # %while.cond.i413.i
                                        # =>This Inner Loop Header: Depth=1
	cmpult $m8, $m0, $m1
	sub $m0, $m0, $m1
	sub $m2, $m2, $m1
	brz $m8, .Lcode0_BB0_40
# %bb.41:                               # %_ZN6AddF164wrapEjj.exit414.i
	shr $m3, $m3, 1
	add $m8, $m3, $m6
	mov	$m0, $m6
.Lcode0_BB0_42:                               # %while.cond.i418.i
                                        # =>This Inner Loop Header: Depth=1
	cmpult $m9, $m0, $m3
	sub $m0, $m0, $m3
	sub $m8, $m8, $m3
	brz $m9, .Lcode0_BB0_42
# %bb.43:                               # %for.cond160.preheader.i
	cmpult $m0, $m6, $m4
	brz $m0, .Lcode0_BB0_72
# %bb.44:                               # %for.body164.i.preheader
	xnor $m0, $m6, $m15
	add $m0, $m0, $m4
	setzi $m4, 43691
	sort4x16lo $m9, $m0, $m15
	shr $m0, $m0, 16
	mul $m10, $m9, $m4
	mul $m4, $m0, $m4
	shr $m10, $m10, 16
	add $m4, $m4, $m10
	setzi $m10, 43690
	sort4x16lo $m5, $m4, $m15
	mul $m9, $m9, $m10
	shr $m4, $m4, 16
	mul $m0, $m0, $m10
	add $m9, $m9, $m5
	add $m0, $m0, $m4
	shr $m4, $m9, 16
	add $m0, $m0, $m4
	shr $m0, $m0, 2
	add $m4, $m1, 6
	add $m9, $m3, 6
.Lcode0_BB0_45:                               # %for.body164.i
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB0_46 Depth 2
                                        #     Child Loop BB0_48 Depth 2
	ld32 $m5, $m11, $m15, 6                 # 4-byte Folded Reload
	ld32 $a0, $m5, $m15, $m2
	ld32 $a1, $m7, $m15, $m8
	{
		mov	$m5, $m6
		f16v2add $a0, $a0, $a1
	}
	ld32 $m10, $m11, $m15, 5                # 4-byte Folded Reload
	st32 $a0, $m10, $m15, $m6
	add $m10, $m2, 6
	add $m2, $m4, $m2
.Lcode0_BB0_46:                               # %while.cond.i423.i
                                        #   Parent Loop BB0_45 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	cmpult $m6, $m10, $m1
	sub $m10, $m10, $m1
	sub $m2, $m2, $m1
	brz $m6, .Lcode0_BB0_46
# %bb.47:                               # %_ZN6AddF164wrapEjj.exit424.i
                                        #   in Loop: Header=BB0_45 Depth=1
	add $m10, $m8, 6
	add $m8, $m9, $m8
.Lcode0_BB0_48:                               # %while.cond.i428.i
                                        #   Parent Loop BB0_45 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	cmpult $m6, $m10, $m3
	sub $m10, $m10, $m3
	sub $m8, $m8, $m3
	brz $m6, .Lcode0_BB0_48
# %bb.49:                               # %_ZN6AddF164wrapEjj.exit429.i
                                        #   in Loop: Header=BB0_45 Depth=1
	mov	$m6, $m5
	add $m6, $m6, 6
	brnzdec $m0, .Lcode0_BB0_45
	bri .Lcode0_BB0_72
.Lcode0_func_end0:
	.size	__runCodelet_AddF16, .Lcode0_func_end0-__runCodelet_AddF16
	.section	.stack_sizes,"o",@progbits,.text.__runCodelet_AddF16
	.long	.Lcode0_func_begin0
	.byte	32
	.section	.text.__runCodelet_AddF16,"ax",@progbits
                                        # -- End function
	.ident	"clang version 16.0.0 (git@github.com:Software-GCAI/llvm-project.git 6343a843cd5af31429c62a83b6ba249a74d36969)"
	.section	".note.GNU-stack","",@progbits
	.addrsig

#define WORKER_CALL_SYMBOL add_f16
#define WORKER_CODELET_SYMBOL __runCodelet_AddF16
#define WORKER_ARGUMENTS $m3,$m4,$m2,$m5,$m6,$m7
#define WORKER_FRAME_BYTES 48
#include "/srv/home/gc-sdk/ipu-stack/device/worker_call.S"
#undef WORKER_CALL_SYMBOL
#undef WORKER_CODELET_SYMBOL
#undef WORKER_ARGUMENTS
#undef WORKER_FRAME_BYTES
	.text
	.allow_optimizations
	.file	"3"
	.section	.text.__runCodelet_LayerNormF16,"ax",@progbits
	.globl	__runCodelet_LayerNormF16       # -- Begin function __runCodelet_LayerNormF16
	.p2align	2
	.type	__runCodelet_LayerNormF16,@function
__runCodelet_LayerNormF16:              # @__runCodelet_LayerNormF16
	.worker
.Lcode1_func_begin0:
# %bb.0:                                # %entry
	setzi $m6, 16
	cmpult $m6, $m6, __worker_stack_max_growth_plus_one
	brz $m6, _stackoverflow
	add $m11, $m12, -16
	get $m0, 1
	ld32 $m4, $m13, $m15, 7
	and $m0, $m0, 7
	ld32 $m1, $m13, $m15, 6
	ld32 $m2, $m13, $m15, 0
	ld32 $m3, $m13, $m15, 5
	brz $m4, .Lcode1_BB0_6
# %bb.1:                                # %for.body.preheader.i
	ld64 $ap0, $m1, $m15, 0
	{
		ld64 $ap1, $m1, $m15, 1
		f32v2add $ap0, $ap0, $apzero
	}
	{
		ld64 $ap1, $m1, $m15, 2
		f32v2add $ap0, $ap0, $ap1
	}
	{
		ld64 $ap1, $m1, $m15, 3
		f32v2add $ap0, $ap0, $ap1
	}
	{
		ld64 $ap1, $m1, $m15, 4
		f32v2add $ap0, $ap0, $ap1
	}
	{
		ld64 $ap1, $m1, $m15, 5
		f32v2add $ap0, $ap0, $ap1
	}
	{
		cmpeq $m4, $m4, 1
		f32v2add $ap0, $ap0, $ap1
	}
	{
		st32 $m3, $m11, $m15, 1
		f32add $a0, $a0, $a1
	}
	ld32 $a1, $m11, $m15, 1
	f32fromui32 $a1, $a1
	{
		brz $m4, .Lcode1_BB0_2
		f32div $a0, $a0, $a1
	}
# %bb.12:                               # %if.then11.i
	cmpult $m4, $m3, 96
	brnz $m4, .Lcode1_BB0_15
# %bb.13:                               # %if.then11.i
	or $m4, $m3, $m2
	and $m4, $m4, 7
	brnz $m4, .Lcode1_BB0_15
# %bb.14:                               # %if.then.i73.i
	mov	$m4, $m15
	{
		shr $m3, $m3, 2
		f32sub $a7, $azero, $a0
	}
	sub $m5, $m3, $m0
	add $m3, $m11, 8
	add $m5, $m5, 5
	setzi $m6, 43691
	sort4x16lo $m7, $m5, $m15
	shr $m5, $m5, 16
	mul $m8, $m7, $m6
	mul $m6, $m5, $m6
	shr $m8, $m8, 16
	add $m6, $m6, $m8
	setzi $m8, 43690
	mul $m7, $m7, $m8
	mul $m5, $m5, $m8
	sort4x16lo $m8, $m6, $m15
	shr $m6, $m6, 16
	add $m7, $m7, $m8
	add $m5, $m5, $m6
	shr $m6, $m7, 16
	shl $m7, $m0, 3
	add $m5, $m5, $m6
	add $m2, $m2, $m7
	shr $m5, $m5, 2
	#APP
	setzi $a0, 8
	put	1, $a0
	mov	$a6, $a7
	{
		rpt $m5, 5
		fnop
	}

	{
		ld64step $ap2, $m15, $m2+=, 6
		fnop
	}

	{
		nop
		f16v2tof32 $ap0, $a4
	}

	{
		nop
		f16v2tof32 $ap1, $a5
	}

	{
		nop
		f32v2add $ap0, $a6:B, $ap0
	}

	{
		nop
		f32v2add $ap1, $a6:B, $ap1
	}

	{
		nop
		f32v4sqacc $aq0
	}

	f32v2gina $ap0, $apzero, 0
	f32v2gina $ap1, $apzero, 0
	f32v2add $ap0, $ap0, $ap1
	st64 $ap0, $m3, $m15, 0

	#NO_APP
	ld64 $ap3, $m11, $m15, 1
	bri .Lcode1_BB0_18
.Lcode1_BB0_6:                                # %if.then.i
	cmpult $m4, $m3, 96
	brnz $m4, .Lcode1_BB0_9
# %bb.7:                                # %if.then.i
	or $m4, $m3, $m2
	and $m4, $m4, 7
	brnz $m4, .Lcode1_BB0_9
# %bb.8:                                # %if.then.i.i
	mov	$m4, $m15
	shr $m5, $m3, 3
	add $m3, $m11, 8
	sub $m5, $m5, $m0
	add $m5, $m5, 5
	setzi $m6, 43691
	sort4x16lo $m7, $m5, $m15
	shr $m5, $m5, 16
	mul $m8, $m7, $m6
	mul $m6, $m5, $m6
	shr $m8, $m8, 16
	add $m6, $m6, $m8
	setzi $m8, 43690
	mul $m7, $m7, $m8
	mul $m5, $m5, $m8
	sort4x16lo $m8, $m6, $m15
	shr $m6, $m6, 16
	add $m7, $m7, $m8
	add $m5, $m5, $m6
	shr $m6, $m7, 16
	shl $m7, $m0, 4
	add $m5, $m5, $m6
	add $m2, $m2, $m7
	shr $m5, $m5, 2
	#APP
	setzi $a0, 8
	put	1, $a0
	{
		rpt $m5, 2
		fnop
	}

	{
		ld64step $ap0, $m15, $m2+=, 1
		fnop
	}

	{
		ld64step $ap1, $m15, $m2+=, 11
		fnop
	}

	{
		nop
		f16v8acc $aq0
	}

	f32v2gina $ap0, $apzero, 0
	f32v2gina $ap1, $apzero, 0
	f32v2add $ap0, $ap0, $ap1
	f32v2gina $ap1, $apzero, 0
	f32v2add $ap0, $ap0, $ap1
	f32v2gina $ap1, $apzero, 0
	f32v2add $ap0, $ap0, $ap1
	st64 $ap0, $m3, $m15, 0

	#NO_APP
	ld64 $ap2, $m11, $m15, 1
	st64 $ap2, $m1, $m15, $m0
	exitz $m15
.Lcode1_BB0_2:                                # %for.body20.preheader.i
	{
		ld64 $ap1, $m1, $m15, 6
		setzi $a4, 407485
	}
	{
		and $m6, $m3, 3
		f32v2add $ap1, $ap1, $apzero
	}
	{
		ld32 $m5, $m13, $m15, 1
		or $a4, $a4, 897581056
	}
	ld32 $m4, $m13, $m15, 2
	ld64 $ap3, $m1, $m15, 7
	{
		ld64 $ap3, $m1, $m15, 8
		f32v2add $ap1, $ap1, $ap3
	}
	{
		ld64 $ap3, $m1, $m15, 9
		f32v2add $ap1, $ap1, $ap3
	}
	{
		ld64 $ap3, $m1, $m15, 10
		f32v2add $ap1, $ap1, $ap3
	}
	{
		ld64 $ap3, $m1, $m15, 11
		f32v2add $ap1, $ap1, $ap3
	}
	{
		ld32 $m1, $m13, $m15, 3
		f32v2add $ap1, $ap1, $ap3
	}
	f32add $a2, $a2, $a3
	f32div $a1, $a2, $a1
	f32add $a1, $a1, $a4
	#APP
	f32oorx $a1, $a1
	#NO_APP
	brnz $m6, .Lcode1_BB0_19
# %bb.3:                                # %land.lhs.true.i.i
	or $m6, $m5, $m2
	or $m6, $m6, $m4
	or $m6, $m6, $m1
	and $m6, $m6, 6
	brz $m6, .Lcode1_BB0_4
.Lcode1_BB0_19:                               # %if.end18.i.i
	shr $m6, $m3, 1
	cmpult $m3, $m0, $m6
	brz $m3, .Lcode1_BB0_21
# %bb.20:                               # %if.end22.i.i
	mov	$m3, $m15
	{
		sub $m6, $m6, $m0
		f32sub $a0, $azero, $a0
	}
	add $m7, $m6, 5
	st32 $a0, $m11, $m15, 2
	setzi $m8, 43691
	st32 $a1, $m11, $m15, 3
	sort4x16lo $m9, $m7, $m15
	add $m6, $m11, 8
	shr $m7, $m7, 16
	shl $m10, $m0, 2
	add $m0, $m2, $m10
	add $m2, $m5, $m10
	add $m4, $m4, $m10
	add $m1, $m1, $m10
	mul $m5, $m9, $m8
	mul $m8, $m7, $m8
	shr $m5, $m5, 16
	add $m5, $m8, $m5
	setzi $m8, 43690
	mul $m9, $m9, $m8
	mul $m7, $m7, $m8
	sort4x16lo $m8, $m5, $m15
	shr $m5, $m5, 16
	add $m8, $m9, $m8
	add $m5, $m7, $m5
	shr $m7, $m8, 16
	add $m5, $m5, $m7
	shr $m5, $m5, 2
	#APP
	ld32 $a6, $m6, $m15, 0
	ld32 $a7, $m6, $m15, 1
	{
		rpt $m5, 9
		fnop
	}

	{
		ld32step $a0, $m15, $m0+=, 6
		fnop
	}

	{
		nop
		f16v2tof32 $ap0, $a0
	}

	{
		nop
		f32v2add $ap0, $a6:B, $ap0
	}

	{
		ld32step $a2, $m15, $m2+=, 6
		f32v2mul $ap0, $a7:B, $ap0
	}

	{
		nop
		f16v2tof32 $ap1, $a2
	}

	{
		ld32step $a4, $m15, $m4+=, 6
		f32v2mul $ap0, $ap0, $ap1
	}

	{
		nop
		f16v2tof32 $ap1, $a4
	}

	{
		nop
		f32v2add $ap0, $ap0, $ap1
	}

	{
		nop
		f32v2tof16 $a0, $ap0
	}

	{
		st32step $a0, $m15, $m1+=, 6
		fnop
	}


	#NO_APP
.Lcode1_BB0_21:                               # %_ZN12LayerNormF167computeEj.exit
	exitz $m15
.Lcode1_BB0_9:                                # %if.end.i.i
	{
		shr $m4, $m3, 1
		zero	$ap2
	}
	cmpult $m3, $m0, $m4
	brz $m3, .Lcode1_BB0_11
# %bb.10:                               # %if.end6.i.i
	mov	$m3, $m15
	sub $m4, $m4, $m0
	add $m4, $m4, 5
	setzi $m5, 43691
	sort4x16lo $m6, $m4, $m15
	shr $m4, $m4, 16
	mul $m7, $m6, $m5
	mul $m5, $m4, $m5
	shr $m7, $m7, 16
	add $m5, $m5, $m7
	setzi $m7, 43690
	mul $m6, $m6, $m7
	mul $m4, $m4, $m7
	sort4x16lo $m7, $m5, $m15
	shr $m5, $m5, 16
	add $m6, $m6, $m7
	add $m4, $m4, $m5
	shr $m5, $m6, 16
	shl $m6, $m0, 2
	add $m4, $m4, $m5
	add $m2, $m2, $m6
	shr $m4, $m4, 2
	#APP
	{
		rpt $m4, 2
		fnop
	}

	{
		ld32step $a0, $m15, $m2+=, 6
		fnop
	}

	{
		nop
		f16v2tof32 $ap0, $a0
	}

	{
		nop
		f32v2add $ap2, $ap2, $ap0
	}


	#NO_APP
.Lcode1_BB0_11:                               # %_ZL7normSumPKDhS0_jjfb.exit.i
	st64 $ap2, $m1, $m15, $m0
	exitz $m15
.Lcode1_BB0_15:                               # %if.end.i76.i
	shr $m4, $m3, 1
	cmpult $m3, $m0, $m4
	brz $m3, .Lcode1_BB0_16
# %bb.17:                               # %if.end6.i82.i
	{
		mov	$m3, $m15
		zero	$ap3
	}
	{
		sub $m4, $m4, $m0
		f32sub $a3, $azero, $a0
	}
	add $m4, $m4, 5
	setzi $m5, 43691
	sort4x16lo $m6, $m4, $m15
	shr $m4, $m4, 16
	mul $m7, $m6, $m5
	mul $m5, $m4, $m5
	shr $m7, $m7, 16
	add $m5, $m5, $m7
	setzi $m7, 43690
	mul $m6, $m6, $m7
	mul $m4, $m4, $m7
	sort4x16lo $m7, $m5, $m15
	shr $m5, $m5, 16
	add $m6, $m6, $m7
	add $m4, $m4, $m5
	shr $m5, $m6, 16
	shl $m6, $m0, 2
	add $m4, $m4, $m5
	add $m2, $m2, $m6
	shr $m4, $m4, 2
	#APP
	mov	$a4, $a3
	{
		rpt $m4, 4
		fnop
	}

	{
		ld32step $a0, $m15, $m2+=, 6
		fnop
	}

	{
		nop
		f16v2tof32 $ap0, $a0
	}

	{
		nop
		f32v2add $ap0, $a4:B, $ap0
	}

	{
		nop
		f32v2mul $ap0, $ap0, $ap0
	}

	{
		nop
		f32v2add $ap3, $ap3, $ap0
	}


	#NO_APP
	bri .Lcode1_BB0_18
.Lcode1_BB0_16:
	zero	$ap3
.Lcode1_BB0_18:                               # %_ZL7normSumPKDhS0_jjfb.exit85.i
	shl $m0, $m0, 3
	st64 $ap3, $m0, $m1, 6
	exitz $m15
.Lcode1_BB0_4:                                # %if.then.i86.i
	shr $m6, $m3, 2
	cmpult $m3, $m0, $m6
	brz $m3, .Lcode1_BB0_21
# %bb.5:                                # %if.end.i92.i
	mov	$m3, $m15
	{
		sub $m6, $m6, $m0
		f32sub $a0, $azero, $a0
	}
	add $m7, $m6, 5
	st32 $a0, $m11, $m15, 2
	setzi $m8, 43691
	st32 $a1, $m11, $m15, 3
	sort4x16lo $m9, $m7, $m15
	add $m6, $m11, 8
	shr $m7, $m7, 16
	shl $m10, $m0, 3
	add $m0, $m2, $m10
	add $m2, $m5, $m10
	add $m4, $m4, $m10
	add $m1, $m1, $m10
	mul $m5, $m9, $m8
	mul $m8, $m7, $m8
	shr $m5, $m5, 16
	add $m5, $m8, $m5
	setzi $m8, 43690
	mul $m9, $m9, $m8
	mul $m7, $m7, $m8
	sort4x16lo $m8, $m5, $m15
	shr $m5, $m5, 16
	add $m8, $m9, $m8
	add $m5, $m7, $m5
	shr $m7, $m8, 16
	add $m5, $m5, $m7
	shr $m5, $m5, 2
	#APP
	ld32 $a6, $m6, $m15, 0
	ld32 $a7, $m6, $m15, 1
	{
		rpt $m5, 11
		fnop
	}

	{
		ld64step $ap2, $m15, $m0+=, 6
		fnop
	}

	{
		nop
		f16v2tof32 $ap0, $a4
	}

	{
		nop
		f16v2tof32 $ap1, $a5
	}

	{
		nop
		f32v2add $ap0, $a6:B, $ap0
	}

	{
		nop
		f32v2add $ap1, $a6:B, $ap1
	}

	{
		nop
		f32v2mul $ap0, $a7:B, $ap0
	}

	{
		nop
		f32v2mul $ap1, $a7:B, $ap1
	}

	{
		ld64step $ap2, $m15, $m2+=, 6
		f32v2tof16 $a0, $ap0
	}

	{
		ld64step $ap1, $m15, $m4+=, 6
		f32v2tof16 $a1, $ap1
	}

	{
		nop
		f16v4mul $ap0, $ap0, $ap2
	}

	{
		nop
		f16v4add $ap0, $ap0, $ap1
	}

	{
		st64step $ap0, $m15, $m1+=, 6
		fnop
	}


	#NO_APP
	exitz $m15
.Lcode1_func_end0:
	.size	__runCodelet_LayerNormF16, .Lcode1_func_end0-__runCodelet_LayerNormF16
	.section	.stack_sizes,"o",@progbits,.text.__runCodelet_LayerNormF16
	.long	.Lcode1_func_begin0
	.byte	16
	.section	.text.__runCodelet_LayerNormF16,"ax",@progbits
                                        # -- End function
	.ident	"clang version 16.0.0 (git@github.com:Software-GCAI/llvm-project.git 6343a843cd5af31429c62a83b6ba249a74d36969)"
	.section	".note.GNU-stack","",@progbits
	.addrsig

#include "arch/gc_tile_defines.h"

#ifdef NORM_WITH_ADD
#define NORM_SYMBOL add_layer_norm_f16
#define NORM_VERTEX __runCodelet_AddLayerNormF16
#define NORM_ROWS $m7
#define NORM_WIDTH $m8
#define NORM_GAMMA $m5
#define NORM_BETA $m6
#define NORM_SHIFT 1
#define NORM_STACK 160
#define NORM_SCRATCH 64
#elif defined(NORM_FP8)
#define NORM_SYMBOL layer_norm_f8
#define NORM_VERTEX __runCodelet_LayerNormF8
#define NORM_ROWS $m6
#define NORM_WIDTH $m7
#define NORM_GAMMA $m4
#define NORM_BETA $m5
#define NORM_SHIFT 0
#define NORM_STACK 160
#define NORM_SCRATCH 64
#else
#define NORM_SYMBOL layer_norm_f16
#define NORM_VERTEX __runCodelet_LayerNormF16
#define NORM_ROWS $m6
#define NORM_WIDTH $m7
#define NORM_GAMMA $m4
#define NORM_BETA $m5
#define NORM_SHIFT 0
#define NORM_STACK 128
#define NORM_SCRATCH 32
#endif

// Share each row across all six workers. Separate sum and centered-variance
// buffers avoid read/write races; local sync separates the three passes.
	.text
	.allow_optimizations
	.section .text.NORM_SYMBOL,"ax",@progbits
	.globl NORM_SYMBOL
	.p2align 2
	.type NORM_SYMBOL,@function
NORM_SYMBOL:
	.supervisor
	add $m11, $m11, -NORM_STACK
	st32 $m3, $m11, $m15, 0
#ifdef NORM_WITH_ADD
	st32 $m4, $m11, $m15, 1
#endif
	st32 NORM_GAMMA, $m11, $m15, (1 + NORM_SHIFT)
	st32 NORM_BETA, $m11, $m15, (2 + NORM_SHIFT)
	st32 $m2, $m11, $m15, (3 + NORM_SHIFT)
	st32 NORM_ROWS, $m11, $m15, (4 + NORM_SHIFT)
	st32 NORM_WIDTH, $m11, $m15, (5 + NORM_SHIFT)
	add $m0, $m11, NORM_SCRATCH
	st32 $m0, $m11, $m15, (6 + NORM_SHIFT)
#ifdef NORM_FP8
	st32 $m15, $m11, $m15, 8
	st32 $m8, $m11, $m15, 9
	st32 $m9, $m11, $m15, 10
#endif
	setzi $m0, NORM_VERTEX
.Lwrap1_row:
	setzi $m1, 0
.Lwrap1_stage:
	st32 $m1, $m11, $m15, (7 + NORM_SHIFT)
	runall $m0, $m11, 0
	sync TEXCH_SYNCZONE_LOCAL
	add $m1, $m1, 1
	cmpeq $m2, $m1, 3
	brz $m2, .Lwrap1_stage
	shl $m2, NORM_WIDTH, 1
	ld32 $m3, $m11, $m15, 0
	add $m3, $m3, $m2
	st32 $m3, $m11, $m15, 0
#ifdef NORM_FP8
	ld32 $m3, $m11, $m15, 8
	add $m3, $m3, 1
	st32 $m3, $m11, $m15, 8
#else
	ld32 $m3, $m11, $m15, (3 + NORM_SHIFT)
	add $m3, $m3, $m2
	st32 $m3, $m11, $m15, (3 + NORM_SHIFT)
#endif
#ifdef NORM_WITH_ADD
	ld32 $m3, $m11, $m15, 1
	add $m3, $m3, $m2
	st32 $m3, $m11, $m15, 1
#endif
	sub NORM_ROWS, NORM_ROWS, 1
	brnz NORM_ROWS, .Lwrap1_row
	add $m11, $m11, NORM_STACK
	br $m10
	.size NORM_SYMBOL, .-NORM_SYMBOL

#undef NORM_STORE_SUM
#undef MOMENTS_SYMBOL
#undef MOMENTS_VERTEX
#undef MOMENTS_ROWS
#undef MOMENTS_WIDTH
#undef NORM_FP8
#undef NORM_WITH_ADD
#undef NORM_SYMBOL
#undef NORM_VERTEX
#undef NORM_ROWS
#undef NORM_WIDTH
#undef NORM_GAMMA
#undef NORM_BETA
#undef NORM_SHIFT
#undef NORM_STACK
#undef NORM_SCRATCH
	.text
	.allow_optimizations
	.file	"3"
	.section	.text.__runCodelet_AddLayerNormF16,"ax",@progbits
	.globl	__runCodelet_AddLayerNormF16    # -- Begin function __runCodelet_AddLayerNormF16
	.p2align	2
	.type	__runCodelet_AddLayerNormF16,@function
__runCodelet_AddLayerNormF16:           # @__runCodelet_AddLayerNormF16
	.worker
.Lcode2_func_begin0:
# %bb.0:                                # %entry
	setzi $m6, 16
	cmpult $m6, $m6, __worker_stack_max_growth_plus_one
	brz $m6, _stackoverflow
	add $m11, $m12, -16
	get $m0, 1
	ld32 $m5, $m13, $m15, 8
	and $m0, $m0, 7
	ld32 $m1, $m13, $m15, 7
	ld32 $m3, $m13, $m15, 0
	ld32 $m2, $m13, $m15, 1
	ld32 $m4, $m13, $m15, 6
	brz $m5, .Lcode2_BB0_6
# %bb.1:                                # %for.body.preheader.i
	ld64 $ap0, $m1, $m15, 0
	{
		ld64 $ap1, $m1, $m15, 1
		f32v2add $ap0, $ap0, $apzero
	}
	{
		ld64 $ap1, $m1, $m15, 2
		f32v2add $ap0, $ap0, $ap1
	}
	{
		ld64 $ap1, $m1, $m15, 3
		f32v2add $ap0, $ap0, $ap1
	}
	{
		ld64 $ap1, $m1, $m15, 4
		f32v2add $ap0, $ap0, $ap1
	}
	{
		ld64 $ap1, $m1, $m15, 5
		f32v2add $ap0, $ap0, $ap1
	}
	{
		cmpeq $m5, $m5, 1
		f32v2add $ap0, $ap0, $ap1
	}
	{
		st32 $m4, $m11, $m15, 1
		f32add $a0, $a0, $a1
	}
	ld32 $a1, $m11, $m15, 1
	f32fromui32 $a1, $a1
	{
		brz $m5, .Lcode2_BB0_2
		f32div $a0, $a0, $a1
	}
# %bb.13:                               # %if.then12.i
	cmpult $m5, $m4, 96
	brnz $m5, .Lcode2_BB0_17
# %bb.14:                               # %if.then12.i
	and $m5, $m4, 7
	brnz $m5, .Lcode2_BB0_17
# %bb.15:                               # %land.lhs.true1.i74.i
	or $m5, $m2, $m3
	and $m5, $m5, 6
	brz $m5, .Lcode2_BB0_16
.Lcode2_BB0_17:                               # %if.end.i85.i
	{
		shr $m4, $m4, 1
		zero	$ap3
	}
	cmpult $m5, $m0, $m4
	brz $m5, .Lcode2_BB0_19
# %bb.18:                               # %if.end6.i92.i
	{
		sub $m4, $m4, $m0
		f32sub $a3, $azero, $a0
	}
	add $m4, $m4, 5
	setzi $m5, 43691
	sort4x16lo $m6, $m4, $m15
	shr $m4, $m4, 16
	mul $m7, $m6, $m5
	mul $m5, $m4, $m5
	shr $m7, $m7, 16
	add $m5, $m5, $m7
	setzi $m7, 43690
	sort4x16lo $m8, $m5, $m15
	mul $m6, $m6, $m7
	shr $m5, $m5, 16
	mul $m4, $m4, $m7
	add $m6, $m6, $m8
	add $m4, $m4, $m5
	shr $m5, $m6, 16
	shl $m6, $m0, 2
	add $m4, $m4, $m5
	add $m3, $m3, $m6
	add $m2, $m2, $m6
	shr $m4, $m4, 2
	#APP
	mov	$a4, $a3
	{
		rpt $m4, 6
		fnop
	}

	{
		ld32step $a0, $m15, $m3+=, 6
		fnop
	}

	{
		ld32step $a2, $m15, $m2+=, 6
		fnop
	}

	{
		nop
		f16v2add $a0, $a0, $a2
	}

	{
		nop
		f16v2tof32 $ap0, $a0
	}

	{
		nop
		f32v2add $ap0, $a4:B, $ap0
	}

	{
		nop
		f32v2mul $ap0, $ap0, $ap0
	}

	{
		nop
		f32v2add $ap3, $ap3, $ap0
	}


	#NO_APP
	bri .Lcode2_BB0_19
.Lcode2_BB0_6:                                # %if.then.i
	cmpult $m5, $m4, 96
	brnz $m5, .Lcode2_BB0_10
# %bb.7:                                # %if.then.i
	and $m5, $m4, 7
	brnz $m5, .Lcode2_BB0_10
# %bb.8:                                # %land.lhs.true1.i.i
	or $m5, $m2, $m3
	and $m5, $m5, 6
	brz $m5, .Lcode2_BB0_9
.Lcode2_BB0_10:                               # %if.end.i.i
	{
		shr $m4, $m4, 1
		zero	$ap2
	}
	cmpult $m5, $m0, $m4
	brz $m5, .Lcode2_BB0_12
# %bb.11:                               # %if.end6.i.i
	sub $m4, $m4, $m0
	add $m4, $m4, 5
	setzi $m5, 43691
	sort4x16lo $m6, $m4, $m15
	shr $m4, $m4, 16
	mul $m7, $m6, $m5
	mul $m5, $m4, $m5
	shr $m7, $m7, 16
	add $m5, $m5, $m7
	setzi $m7, 43690
	sort4x16lo $m8, $m5, $m15
	mul $m6, $m6, $m7
	shr $m5, $m5, 16
	mul $m4, $m4, $m7
	add $m6, $m6, $m8
	add $m4, $m4, $m5
	shr $m5, $m6, 16
	shl $m6, $m0, 2
	add $m4, $m4, $m5
	add $m3, $m3, $m6
	add $m2, $m2, $m6
	shr $m4, $m4, 2
	#APP
	{
		rpt $m4, 4
		fnop
	}

	{
		ld32step $a0, $m15, $m3+=, 6
		fnop
	}

	{
		ld32step $a2, $m15, $m2+=, 6
		fnop
	}

	{
		nop
		f16v2add $a0, $a0, $a2
	}

	{
		nop
		f16v2tof32 $ap0, $a0
	}

	{
		nop
		f32v2add $ap2, $ap2, $ap0
	}


	#NO_APP
.Lcode2_BB0_12:                               # %_ZL7normSumPKDhS0_jjfb.exit.i
	st64 $ap2, $m1, $m15, $m0
	exitz $m15
.Lcode2_BB0_2:                                # %for.body21.preheader.i
	{
		ld64 $ap1, $m1, $m15, 6
		setzi $a4, 407485
	}
	{
		and $m7, $m4, 3
		f32v2add $ap1, $ap1, $apzero
	}
	{
		ld32 $m6, $m13, $m15, 2
		or $a4, $a4, 897581056
	}
	ld32 $m5, $m13, $m15, 3
	ld64 $ap3, $m1, $m15, 7
	{
		ld64 $ap3, $m1, $m15, 8
		f32v2add $ap1, $ap1, $ap3
	}
	{
		ld64 $ap3, $m1, $m15, 9
		f32v2add $ap1, $ap1, $ap3
	}
	{
		ld64 $ap3, $m1, $m15, 10
		f32v2add $ap1, $ap1, $ap3
	}
	{
		ld64 $ap3, $m1, $m15, 11
		f32v2add $ap1, $ap1, $ap3
	}
	{
		ld32 $m1, $m13, $m15, 4
		f32v2add $ap1, $ap1, $ap3
	}
	f32add $a2, $a2, $a3
	f32div $a1, $a2, $a1
	f32add $a1, $a1, $a4
	#APP
	f32oorx $a1, $a1
	#NO_APP
	brnz $m7, .Lcode2_BB0_20
# %bb.3:                                # %land.lhs.true.i.i
	or $m7, $m2, $m3
	or $m7, $m7, $m6
	or $m7, $m7, $m5
	or $m7, $m7, $m1
	and $m7, $m7, 7
	brz $m7, .Lcode2_BB0_4
.Lcode2_BB0_20:                               # %if.end20.i.i
	shr $m4, $m4, 1
	cmpult $m7, $m0, $m4
	brz $m7, .Lcode2_BB0_22
# %bb.21:                               # %if.end24.i.i
	{
		sub $m4, $m4, $m0
		f32sub $a0, $azero, $a0
	}
	add $m7, $m4, 5
	st32 $a0, $m11, $m15, 2
	setzi $m8, 43691
	st32 $a1, $m11, $m15, 3
	sort4x16lo $m9, $m7, $m15
	add $m4, $m11, 8
	shr $m7, $m7, 16
	shl $m10, $m0, 2
	add $m0, $m3, $m10
	add $m2, $m2, $m10
	add $m3, $m6, $m10
	add $m5, $m5, $m10
	add $m1, $m1, $m10
	mul $m6, $m9, $m8
	mul $m8, $m7, $m8
	shr $m6, $m6, 16
	add $m6, $m8, $m6
	setzi $m8, 43690
	mul $m9, $m9, $m8
	mul $m7, $m7, $m8
	sort4x16lo $m8, $m6, $m15
	shr $m6, $m6, 16
	add $m8, $m9, $m8
	add $m6, $m7, $m6
	shr $m7, $m8, 16
	add $m6, $m6, $m7
	shr $m6, $m6, 2
	#APP
	ld32 $a6, $m4, $m15, 0
	ld32 $a7, $m4, $m15, 1
	{
		rpt $m6, 11
		fnop
	}

	{
		ld32step $a0, $m15, $m0+=, 6
		fnop
	}

	{
		ld32step $a2, $m15, $m2+=, 6
		fnop
	}

	{
		nop
		f16v2add $a0, $a0, $a2
	}

	{
		nop
		f16v2tof32 $ap0, $a0
	}

	{
		nop
		f32v2add $ap0, $a6:B, $ap0
	}

	{
		ld32step $a2, $m15, $m3+=, 6
		f32v2mul $ap0, $a7:B, $ap0
	}

	{
		nop
		f16v2tof32 $ap1, $a2
	}

	{
		ld32step $a4, $m15, $m5+=, 6
		f32v2mul $ap0, $ap0, $ap1
	}

	{
		nop
		f16v2tof32 $ap1, $a4
	}

	{
		nop
		f32v2add $ap0, $ap0, $ap1
	}

	{
		nop
		f32v2tof16 $a0, $ap0
	}

	{
		st32step $a0, $m15, $m1+=, 6
		fnop
	}


	#NO_APP
.Lcode2_BB0_22:                               # %_ZN15AddLayerNormF167computeEj.exit
	exitz $m15
.Lcode2_BB0_9:                                # %if.then.i.i
	shr $m5, $m4, 3
	add $m4, $m11, 8
	sub $m5, $m5, $m0
	add $m5, $m5, 5
	setzi $m6, 43691
	sort4x16lo $m7, $m5, $m15
	shr $m5, $m5, 16
	mul $m8, $m7, $m6
	mul $m6, $m5, $m6
	shr $m8, $m8, 16
	add $m6, $m6, $m8
	setzi $m8, 43690
	mul $m7, $m7, $m8
	mul $m5, $m5, $m8
	sort4x16lo $m8, $m6, $m15
	shr $m6, $m6, 16
	add $m7, $m7, $m8
	add $m5, $m5, $m6
	shr $m6, $m7, 16
	shl $m7, $m0, 4
	add $m5, $m5, $m6
	add $m3, $m3, $m7
	add $m2, $m2, $m7
	shr $m5, $m5, 2
	#APP
	setzi $a0, 8
	put	1, $a0
	{
		rpt $m5, 5
		fnop
	}

	{
		ld64step $ap0, $m15, $m3+=, 1
		fnop
	}

	{
		ld64step $ap1, $m15, $m3+=, 11
		fnop
	}

	{
		ld64step $ap2, $m15, $m2+=, 1
		fnop
	}

	{
		ld64step $ap3, $m15, $m2+=, 11
		f16v4add $ap0, $ap0, $ap2
	}

	{
		nop
		f16v4add $ap1, $ap1, $ap3
	}

	{
		nop
		f16v8acc $aq0
	}

	f32v2gina $ap0, $apzero, 0
	f32v2gina $ap1, $apzero, 0
	f32v2add $ap0, $ap0, $ap1
	f32v2gina $ap1, $apzero, 0
	f32v2add $ap0, $ap0, $ap1
	f32v2gina $ap1, $apzero, 0
	f32v2add $ap0, $ap0, $ap1
	st64 $ap0, $m4, $m15, 0

	#NO_APP
	ld64 $ap2, $m11, $m15, 1
	st64 $ap2, $m1, $m15, $m0
	exitz $m15
.Lcode2_BB0_16:                               # %if.then.i82.i
	{
		shr $m4, $m4, 2
		f32sub $a7, $azero, $a0
	}
	sub $m5, $m4, $m0
	add $m4, $m11, 8
	add $m5, $m5, 5
	setzi $m6, 43691
	sort4x16lo $m7, $m5, $m15
	shr $m5, $m5, 16
	mul $m8, $m7, $m6
	mul $m6, $m5, $m6
	shr $m8, $m8, 16
	add $m6, $m6, $m8
	setzi $m8, 43690
	mul $m7, $m7, $m8
	mul $m5, $m5, $m8
	sort4x16lo $m8, $m6, $m15
	shr $m6, $m6, 16
	add $m7, $m7, $m8
	add $m5, $m5, $m6
	shr $m6, $m7, 16
	shl $m7, $m0, 3
	add $m5, $m5, $m6
	add $m3, $m3, $m7
	add $m2, $m2, $m7
	shr $m5, $m5, 2
	#APP
	setzi $a0, 8
	put	1, $a0
	mov	$a6, $a7
	{
		rpt $m5, 7
		fnop
	}

	{
		ld64step $ap2, $m15, $m3+=, 6
		fnop
	}

	{
		ld64step $ap0, $m15, $m2+=, 6
		fnop
	}

	{
		nop
		f16v4add $ap2, $ap2, $ap0
	}

	{
		nop
		f16v2tof32 $ap0, $a4
	}

	{
		nop
		f16v2tof32 $ap1, $a5
	}

	{
		nop
		f32v2add $ap0, $a6:B, $ap0
	}

	{
		nop
		f32v2add $ap1, $a6:B, $ap1
	}

	{
		nop
		f32v4sqacc $aq0
	}

	f32v2gina $ap0, $apzero, 0
	f32v2gina $ap1, $apzero, 0
	f32v2add $ap0, $ap0, $ap1
	st64 $ap0, $m4, $m15, 0

	#NO_APP
	ld64 $ap3, $m11, $m15, 1
.Lcode2_BB0_19:                               # %_ZL7normSumPKDhS0_jjfb.exit95.i
	shl $m0, $m0, 3
	st64 $ap3, $m0, $m1, 6
	exitz $m15
.Lcode2_BB0_4:                                # %if.then.i100.i
	shr $m4, $m4, 2
	cmpult $m7, $m0, $m4
	brz $m7, .Lcode2_BB0_22
# %bb.5:                                # %if.end.i106.i
	{
		sub $m4, $m4, $m0
		f32sub $a0, $azero, $a0
	}
	add $m7, $m4, 5
	st32 $a0, $m11, $m15, 2
	setzi $m8, 43691
	st32 $a1, $m11, $m15, 3
	sort4x16lo $m9, $m7, $m15
	add $m4, $m11, 8
	shr $m7, $m7, 16
	shl $m10, $m0, 3
	add $m0, $m3, $m10
	add $m2, $m2, $m10
	add $m3, $m6, $m10
	add $m5, $m5, $m10
	add $m1, $m1, $m10
	mul $m6, $m9, $m8
	mul $m8, $m7, $m8
	shr $m6, $m6, 16
	add $m6, $m8, $m6
	setzi $m8, 43690
	mul $m9, $m9, $m8
	mul $m7, $m7, $m8
	sort4x16lo $m8, $m6, $m15
	shr $m6, $m6, 16
	add $m8, $m9, $m8
	add $m6, $m7, $m6
	shr $m7, $m8, 16
	add $m6, $m6, $m7
	shr $m6, $m6, 2
	#APP
	ld32 $a6, $m4, $m15, 0
	ld32 $a7, $m4, $m15, 1
	{
		rpt $m6, 13
		fnop
	}

	{
		ld64step $ap2, $m15, $m0+=, 6
		fnop
	}

	{
		ld64step $ap0, $m15, $m2+=, 6
		fnop
	}

	{
		nop
		f16v4add $ap2, $ap2, $ap0
	}

	{
		nop
		f16v2tof32 $ap0, $a4
	}

	{
		nop
		f16v2tof32 $ap1, $a5
	}

	{
		nop
		f32v2add $ap0, $a6:B, $ap0
	}

	{
		nop
		f32v2add $ap1, $a6:B, $ap1
	}

	{
		nop
		f32v2mul $ap0, $a7:B, $ap0
	}

	{
		nop
		f32v2mul $ap1, $a7:B, $ap1
	}

	{
		ld64step $ap2, $m15, $m3+=, 6
		f32v2tof16 $a0, $ap0
	}

	{
		ld64step $ap1, $m15, $m5+=, 6
		f32v2tof16 $a1, $ap1
	}

	{
		nop
		f16v4mul $ap0, $ap0, $ap2
	}

	{
		nop
		f16v4add $ap0, $ap0, $ap1
	}

	{
		st64step $ap0, $m15, $m1+=, 6
		fnop
	}


	#NO_APP
	exitz $m15
.Lcode2_func_end0:
	.size	__runCodelet_AddLayerNormF16, .Lcode2_func_end0-__runCodelet_AddLayerNormF16
	.section	.stack_sizes,"o",@progbits,.text.__runCodelet_AddLayerNormF16
	.long	.Lcode2_func_begin0
	.byte	16
	.section	.text.__runCodelet_AddLayerNormF16,"ax",@progbits
                                        # -- End function
	.ident	"clang version 16.0.0 (git@github.com:Software-GCAI/llvm-project.git 6343a843cd5af31429c62a83b6ba249a74d36969)"
	.section	".note.GNU-stack","",@progbits
	.addrsig

#define NORM_WITH_ADD
#include "arch/gc_tile_defines.h"

#ifdef NORM_WITH_ADD
#define NORM_SYMBOL add_layer_norm_f16
#define NORM_VERTEX __runCodelet_AddLayerNormF16
#define NORM_ROWS $m7
#define NORM_WIDTH $m8
#define NORM_GAMMA $m5
#define NORM_BETA $m6
#define NORM_SHIFT 1
#define NORM_STACK 160
#define NORM_SCRATCH 64
#elif defined(NORM_FP8)
#define NORM_SYMBOL layer_norm_f8
#define NORM_VERTEX __runCodelet_LayerNormF8
#define NORM_ROWS $m6
#define NORM_WIDTH $m7
#define NORM_GAMMA $m4
#define NORM_BETA $m5
#define NORM_SHIFT 0
#define NORM_STACK 160
#define NORM_SCRATCH 64
#else
#define NORM_SYMBOL layer_norm_f16
#define NORM_VERTEX __runCodelet_LayerNormF16
#define NORM_ROWS $m6
#define NORM_WIDTH $m7
#define NORM_GAMMA $m4
#define NORM_BETA $m5
#define NORM_SHIFT 0
#define NORM_STACK 128
#define NORM_SCRATCH 32
#endif

// Share each row across all six workers. Separate sum and centered-variance
// buffers avoid read/write races; local sync separates the three passes.
	.text
	.allow_optimizations
	.section .text.NORM_SYMBOL,"ax",@progbits
	.globl NORM_SYMBOL
	.p2align 2
	.type NORM_SYMBOL,@function
NORM_SYMBOL:
	.supervisor
	add $m11, $m11, -NORM_STACK
	st32 $m3, $m11, $m15, 0
#ifdef NORM_WITH_ADD
	st32 $m4, $m11, $m15, 1
#endif
	st32 NORM_GAMMA, $m11, $m15, (1 + NORM_SHIFT)
	st32 NORM_BETA, $m11, $m15, (2 + NORM_SHIFT)
	st32 $m2, $m11, $m15, (3 + NORM_SHIFT)
	st32 NORM_ROWS, $m11, $m15, (4 + NORM_SHIFT)
	st32 NORM_WIDTH, $m11, $m15, (5 + NORM_SHIFT)
	add $m0, $m11, NORM_SCRATCH
	st32 $m0, $m11, $m15, (6 + NORM_SHIFT)
#ifdef NORM_FP8
	st32 $m15, $m11, $m15, 8
	st32 $m8, $m11, $m15, 9
	st32 $m9, $m11, $m15, 10
#endif
	setzi $m0, NORM_VERTEX
.Lwrap2_row:
	setzi $m1, 0
.Lwrap2_stage:
	st32 $m1, $m11, $m15, (7 + NORM_SHIFT)
	runall $m0, $m11, 0
	sync TEXCH_SYNCZONE_LOCAL
	add $m1, $m1, 1
	cmpeq $m2, $m1, 3
	brz $m2, .Lwrap2_stage
	shl $m2, NORM_WIDTH, 1
	ld32 $m3, $m11, $m15, 0
	add $m3, $m3, $m2
	st32 $m3, $m11, $m15, 0
#ifdef NORM_FP8
	ld32 $m3, $m11, $m15, 8
	add $m3, $m3, 1
	st32 $m3, $m11, $m15, 8
#else
	ld32 $m3, $m11, $m15, (3 + NORM_SHIFT)
	add $m3, $m3, $m2
	st32 $m3, $m11, $m15, (3 + NORM_SHIFT)
#endif
#ifdef NORM_WITH_ADD
	ld32 $m3, $m11, $m15, 1
	add $m3, $m3, $m2
	st32 $m3, $m11, $m15, 1
#endif
	sub NORM_ROWS, NORM_ROWS, 1
	brnz NORM_ROWS, .Lwrap2_row
	add $m11, $m11, NORM_STACK
	br $m10
	.size NORM_SYMBOL, .-NORM_SYMBOL

#undef NORM_STORE_SUM
#undef MOMENTS_SYMBOL
#undef MOMENTS_VERTEX
#undef MOMENTS_ROWS
#undef MOMENTS_WIDTH
#undef NORM_FP8
#undef NORM_WITH_ADD
#undef NORM_SYMBOL
#undef NORM_VERTEX
#undef NORM_ROWS
#undef NORM_WIDTH
#undef NORM_GAMMA
#undef NORM_BETA
#undef NORM_SHIFT
#undef NORM_STACK
#undef NORM_SCRATCH
	.text
	.allow_optimizations
	.file	"3"
	.section	.text.__runCodelet_LayerNormMoments,"ax",@progbits
	.globl	__runCodelet_LayerNormMoments   # -- Begin function __runCodelet_LayerNormMoments
	.p2align	2
	.type	__runCodelet_LayerNormMoments,@function
__runCodelet_LayerNormMoments:          # @__runCodelet_LayerNormMoments
	.worker
.Lcode3_func_begin0:
# %bb.0:                                # %entry
	setzi $m6, 16
	cmpult $m6, $m6, __worker_stack_max_growth_plus_one
	brz $m6, _stackoverflow
	add $m11, $m12, -16
	get $m0, 1
	ld32 $m2, $m13, $m15, 4
	and $m1, $m0, 7
	ld32 $m0, $m13, $m15, 3
	ld32 $m3, $m13, $m15, 0
	ld32 $m4, $m13, $m15, 2
	brz $m2, .Lcode3_BB0_5
# %bb.1:                                # %for.body.preheader.i
	ld64 $ap0, $m0, $m15, 0
	{
		ld64 $ap1, $m0, $m15, 1
		f32v2add $ap0, $ap0, $apzero
	}
	{
		ld64 $ap1, $m0, $m15, 2
		f32v2add $ap0, $ap0, $ap1
	}
	{
		ld64 $ap1, $m0, $m15, 3
		f32v2add $ap0, $ap0, $ap1
	}
	{
		ld64 $ap1, $m0, $m15, 4
		f32v2add $ap0, $ap0, $ap1
	}
	{
		ld64 $ap1, $m0, $m15, 5
		f32v2add $ap0, $ap0, $ap1
	}
	{
		st32 $m4, $m11, $m15, 1
		f32v2add $ap0, $ap0, $ap1
	}
	ld32 $a2, $m11, $m15, 1
	{
		cmpeq $m2, $m2, 1
		f32add $a0, $a0, $a1
	}
	f32fromui32 $a1, $a2
	{
		brz $m2, .Lcode3_BB0_15
		f32div $a0, $a0, $a1
	}
# %bb.2:                                # %if.then11.i
	cmpult $m5, $m4, 96
	shl $m2, $m1, 3
	brnz $m5, .Lcode3_BB0_11
# %bb.3:                                # %if.then11.i
	or $m5, $m4, $m3
	and $m5, $m5, 7
	brnz $m5, .Lcode3_BB0_11
# %bb.4:                                # %if.then.i66.i
	mov	$m5, $m15
	{
		shr $m4, $m4, 2
		f32sub $a7, $azero, $a0
	}
	sub $m4, $m4, $m1
	add $m1, $m11, 8
	add $m4, $m4, 5
	setzi $m6, 43691
	sort4x16lo $m7, $m4, $m15
	shr $m4, $m4, 16
	add $m3, $m3, $m2
	mul $m8, $m7, $m6
	mul $m6, $m4, $m6
	shr $m8, $m8, 16
	add $m6, $m6, $m8
	setzi $m8, 43690
	mul $m7, $m7, $m8
	mul $m4, $m4, $m8
	sort4x16lo $m8, $m6, $m15
	shr $m6, $m6, 16
	add $m7, $m7, $m8
	add $m4, $m4, $m6
	shr $m6, $m7, 16
	add $m4, $m4, $m6
	shr $m4, $m4, 2
	#APP
	setzi $a0, 8
	put	1, $a0
	mov	$a6, $a7
	{
		rpt $m4, 5
		fnop
	}

	{
		ld64step $ap2, $m15, $m3+=, 6
		fnop
	}

	{
		nop
		f16v2tof32 $ap0, $a4
	}

	{
		nop
		f16v2tof32 $ap1, $a5
	}

	{
		nop
		f32v2add $ap0, $a6:B, $ap0
	}

	{
		nop
		f32v2add $ap1, $a6:B, $ap1
	}

	{
		nop
		f32v4sqacc $aq0
	}

	f32v2gina $ap0, $apzero, 0
	f32v2gina $ap1, $apzero, 0
	f32v2add $ap0, $ap0, $ap1
	st64 $ap0, $m1, $m15, 0

	#NO_APP
	ld64 $ap3, $m11, $m15, 1
	st64 $ap3, $m2, $m0, 6
	exitz $m15
.Lcode3_BB0_5:                                # %if.then.i
	cmpult $m2, $m4, 96
	brnz $m2, .Lcode3_BB0_8
# %bb.6:                                # %if.then.i
	or $m2, $m4, $m3
	and $m2, $m2, 7
	brnz $m2, .Lcode3_BB0_8
# %bb.7:                                # %if.then.i.i
	mov	$m2, $m15
	shr $m5, $m4, 3
	add $m4, $m11, 8
	sub $m5, $m5, $m1
	add $m5, $m5, 5
	setzi $m6, 43691
	sort4x16lo $m7, $m5, $m15
	shr $m5, $m5, 16
	mul $m8, $m7, $m6
	mul $m6, $m5, $m6
	shr $m8, $m8, 16
	add $m6, $m6, $m8
	setzi $m8, 43690
	mul $m7, $m7, $m8
	mul $m5, $m5, $m8
	sort4x16lo $m8, $m6, $m15
	shr $m6, $m6, 16
	add $m7, $m7, $m8
	add $m5, $m5, $m6
	shr $m6, $m7, 16
	shl $m7, $m1, 4
	add $m5, $m5, $m6
	add $m3, $m3, $m7
	shr $m5, $m5, 2
	#APP
	setzi $a0, 8
	put	1, $a0
	{
		rpt $m5, 2
		fnop
	}

	{
		ld64step $ap0, $m15, $m3+=, 1
		fnop
	}

	{
		ld64step $ap1, $m15, $m3+=, 11
		fnop
	}

	{
		nop
		f16v8acc $aq0
	}

	f32v2gina $ap0, $apzero, 0
	f32v2gina $ap1, $apzero, 0
	f32v2add $ap0, $ap0, $ap1
	f32v2gina $ap1, $apzero, 0
	f32v2add $ap0, $ap0, $ap1
	f32v2gina $ap1, $apzero, 0
	f32v2add $ap0, $ap0, $ap1
	st64 $ap0, $m4, $m15, 0

	#NO_APP
	ld64 $ap2, $m11, $m15, 1
	st64 $ap2, $m0, $m15, $m1
	exitz $m15
.Lcode3_BB0_15:                               # %if.else.i
	brz $m1, .Lcode3_BB0_16
# %bb.17:                               # %_ZN16LayerNormMoments7computeEj.exit
	exitz $m15
.Lcode3_BB0_8:                                # %if.end.i.i
	{
		shr $m4, $m4, 1
		zero	$ap2
	}
	cmpult $m2, $m1, $m4
	brz $m2, .Lcode3_BB0_10
# %bb.9:                                # %if.end6.i.i
	mov	$m2, $m15
	sub $m4, $m4, $m1
	add $m4, $m4, 5
	setzi $m5, 43691
	sort4x16lo $m6, $m4, $m15
	shr $m4, $m4, 16
	mul $m7, $m6, $m5
	mul $m5, $m4, $m5
	shr $m7, $m7, 16
	add $m5, $m5, $m7
	setzi $m7, 43690
	mul $m6, $m6, $m7
	mul $m4, $m4, $m7
	sort4x16lo $m7, $m5, $m15
	shr $m5, $m5, 16
	add $m6, $m6, $m7
	add $m4, $m4, $m5
	shr $m5, $m6, 16
	shl $m6, $m1, 2
	add $m4, $m4, $m5
	add $m3, $m3, $m6
	shr $m4, $m4, 2
	#APP
	{
		rpt $m4, 2
		fnop
	}

	{
		ld32step $a0, $m15, $m3+=, 6
		fnop
	}

	{
		nop
		f16v2tof32 $ap0, $a0
	}

	{
		nop
		f32v2add $ap2, $ap2, $ap0
	}


	#NO_APP
.Lcode3_BB0_10:                               # %_ZL7normSumPKDhS0_jjfb.exit.i
	st64 $ap2, $m0, $m15, $m1
	exitz $m15
.Lcode3_BB0_11:                               # %if.end.i69.i
	shr $m5, $m4, 1
	cmpult $m4, $m1, $m5
	brz $m4, .Lcode3_BB0_12
# %bb.13:                               # %if.end6.i75.i
	{
		mov	$m4, $m15
		zero	$ap3
	}
	{
		sub $m5, $m5, $m1
		f32sub $a3, $azero, $a0
	}
	add $m5, $m5, 5
	setzi $m6, 43691
	sort4x16lo $m7, $m5, $m15
	shr $m5, $m5, 16
	shl $m1, $m1, 2
	add $m1, $m3, $m1
	mul $m3, $m7, $m6
	mul $m6, $m5, $m6
	shr $m3, $m3, 16
	add $m3, $m6, $m3
	setzi $m6, 43690
	mul $m7, $m7, $m6
	mul $m5, $m5, $m6
	sort4x16lo $m6, $m3, $m15
	shr $m3, $m3, 16
	add $m6, $m7, $m6
	add $m3, $m5, $m3
	shr $m5, $m6, 16
	add $m3, $m3, $m5
	shr $m3, $m3, 2
	#APP
	mov	$a4, $a3
	{
		rpt $m3, 4
		fnop
	}

	{
		ld32step $a0, $m15, $m1+=, 6
		fnop
	}

	{
		nop
		f16v2tof32 $ap0, $a0
	}

	{
		nop
		f32v2add $ap0, $a4:B, $ap0
	}

	{
		nop
		f32v2mul $ap0, $ap0, $ap0
	}

	{
		nop
		f32v2add $ap3, $ap3, $ap0
	}


	#NO_APP
	st64 $ap3, $m2, $m0, 6
	exitz $m15
.Lcode3_BB0_16:                               # %for.body21.preheader.i
	ld64 $ap1, $m0, $m15, 6
	{
		ld64 $ap2, $m0, $m15, 7
		f32v2add $ap1, $ap1, $apzero
	}
	{
		ld64 $ap2, $m0, $m15, 8
		f32v2add $ap1, $ap1, $ap2
	}
	{
		ld64 $ap2, $m0, $m15, 9
		f32v2add $ap1, $ap1, $ap2
	}
	{
		ld64 $ap2, $m0, $m15, 10
		f32v2add $ap1, $ap1, $ap2
	}
	{
		ld64 $ap2, $m0, $m15, 11
		f32v2add $ap1, $ap1, $ap2
	}
	{
		ld32 $m0, $m13, $m15, 1
		f32v2add $ap1, $ap1, $ap2
	}
	f32add $a2, $a2, $a3
	f32div $a1, $a2, $a1
	st64 $ap0, $m0, $m15, 0
	exitz $m15
.Lcode3_BB0_12:
	zero	$ap3
	st64 $ap3, $m2, $m0, 6
	exitz $m15
.Lcode3_func_end0:
	.size	__runCodelet_LayerNormMoments, .Lcode3_func_end0-__runCodelet_LayerNormMoments
	.section	.stack_sizes,"o",@progbits,.text.__runCodelet_LayerNormMoments
	.long	.Lcode3_func_begin0
	.byte	16
	.section	.text.__runCodelet_LayerNormMoments,"ax",@progbits
                                        # -- End function
	.ident	"clang version 16.0.0 (git@github.com:Software-GCAI/llvm-project.git 6343a843cd5af31429c62a83b6ba249a74d36969)"
	.section	".note.GNU-stack","",@progbits
	.addrsig

#include "arch/gc_tile_defines.h"
#ifdef NORM_STORE_SUM
#define MOMENTS_SYMBOL add_layer_norm_moments
#define MOMENTS_VERTEX __runCodelet_AddLayerNormMoments
#define MOMENTS_ROWS $m6
#define MOMENTS_WIDTH $m7
#else
#define MOMENTS_SYMBOL layer_norm_moments
#define MOMENTS_VERTEX __runCodelet_LayerNormMoments
#define MOMENTS_ROWS $m4
#define MOMENTS_WIDTH $m5
#endif
// Output moments, source, [right, residual output], rows, local width.
	.text
	.allow_optimizations
	.section .text.MOMENTS_SYMBOL,"ax",@progbits
	.globl MOMENTS_SYMBOL
	.p2align 2
	.type MOMENTS_SYMBOL,@function
MOMENTS_SYMBOL:
	.supervisor
	add $m11, $m11, -128
	st32 $m3, $m11, $m15, 0
	st32 $m2, $m11, $m15, 1
	st32 MOMENTS_WIDTH, $m11, $m15, 2
	add $m0, $m11, 32
	st32 $m0, $m11, $m15, 3
	#ifdef NORM_STORE_SUM
	st32 $m4, $m11, $m15, 5
	st32 $m5, $m11, $m15, 6
#endif
	setzi $m0, MOMENTS_VERTEX
.Lwrap3_row:
	setzi $m1, 0
.Lwrap3_stage:
	st32 $m1, $m11, $m15, 4
	runall $m0, $m11, 0
	sync TEXCH_SYNCZONE_LOCAL
	add $m1, $m1, 1
	cmpeq $m2, $m1, 3
	brz $m2, .Lwrap3_stage
	ld32 $m3, $m11, $m15, 0
	shl $m2, MOMENTS_WIDTH, 1
	add $m3, $m3, $m2
	st32 $m3, $m11, $m15, 0
#ifdef NORM_STORE_SUM
	ld32 $m3, $m11, $m15, 5
	add $m3, $m3, $m2
	st32 $m3, $m11, $m15, 5
	ld32 $m3, $m11, $m15, 6
	add $m3, $m3, $m2
	st32 $m3, $m11, $m15, 6
#endif
	ld32 $m2, $m11, $m15, 1
	add $m2, $m2, 8
	st32 $m2, $m11, $m15, 1
	sub MOMENTS_ROWS, MOMENTS_ROWS, 1
	brnz MOMENTS_ROWS, .Lwrap3_row
	add $m11, $m11, 128
	br $m10
	.size MOMENTS_SYMBOL, .-MOMENTS_SYMBOL

#undef NORM_STORE_SUM
#undef MOMENTS_SYMBOL
#undef MOMENTS_VERTEX
#undef MOMENTS_ROWS
#undef MOMENTS_WIDTH
#undef NORM_FP8
#undef NORM_WITH_ADD
#undef NORM_SYMBOL
#undef NORM_VERTEX
#undef NORM_ROWS
#undef NORM_WIDTH
#undef NORM_GAMMA
#undef NORM_BETA
#undef NORM_SHIFT
#undef NORM_STACK
#undef NORM_SCRATCH
	.text
	.allow_optimizations
	.file	"3"
	.section	.text.__runCodelet_LayerNormApply,"ax",@progbits
	.globl	__runCodelet_LayerNormApply     # -- Begin function __runCodelet_LayerNormApply
	.p2align	2
	.type	__runCodelet_LayerNormApply,@function
__runCodelet_LayerNormApply:            # @__runCodelet_LayerNormApply
	.worker
.Lcode4_func_begin0:
# %bb.0:                                # %entry
	setzi $m6, 120
	cmpult $m6, $m6, __worker_stack_max_growth_plus_one
	brz $m6, _stackoverflow
	add $m11, $m12, -120
	get $m2, 1
	ld32 $m0, $m13, $m15, 5
	brz $m0, .Lcode4_BB0_18
# %bb.1:                                # %for.cond9.preheader.lr.ph.i
	mov	$m1, $m15
	and $m3, $m2, 7
	{
		add $m0, $m0, -1
		setzi $a0, 407485
	}
	ld32 $m2, $m13, $m15, 6
	{
		st32 $m2, $m11, $m15, 23
		or $a5, $a0, 897581056
	}
	shr $m5, $m2, 1
	sub $m4, 5, $m3
	shr $m6, $m2, 2
	st32 $m5, $m11, $m15, 22                # 4-byte Folded Spill
	add $m5, $m5, $m4
	st32 $m6, $m11, $m15, 10                # 4-byte Folded Spill
	add $m4, $m6, $m4
	setzi $m6, 43691
	sort4x16lo $m7, $m5, $m15
	shr $m5, $m5, 16
	sort4x16lo $m8, $m4, $m15
	shr $m4, $m4, 16
	mul $m9, $m7, $m6
	shr $m9, $m9, 16
	st32 $m9, $m11, $m15, 27                # 4-byte Folded Spill
	mul $m10, $m8, $m6
	shr $m9, $m10, 16
	st32 $m9, $m11, $m15, 26                # 4-byte Folded Spill
	mul $m9, $m5, $m6
	ld32 $m10, $m11, $m15, 27               # 4-byte Folded Reload
	add $m9, $m9, $m10
	mul $m6, $m4, $m6
	ld32 $m10, $m11, $m15, 26               # 4-byte Folded Reload
	add $m6, $m6, $m10
	setzi $m10, 43690
	mul $m7, $m7, $m10
	mul $m8, $m8, $m10
	mul $m5, $m5, $m10
	mul $m4, $m4, $m10
	sort4x16lo $m10, $m9, $m15
	add $m7, $m7, $m10
	shr $m9, $m9, 16
	add $m5, $m5, $m9
	sort4x16lo $m9, $m6, $m15
	shr $m10, $m6, 16
	add $m8, $m8, $m9
	ld32 $m6, $m13, $m15, 7
	shr $m7, $m7, 16
	add $m4, $m4, $m10
	shr $m8, $m8, 16
	ld32 $m9, $m13, $m15, 1
	st32 $m6, $m11, $m15, 1
	ld32 $a0, $m11, $m15, 1
	{
		add $m5, $m5, $m7
		f32fromui32 $a6, $a0
	}
	{
		ld32 $m10, $m13, $m15, 2
		f32div $a7, $azero, $a6
	}
	add $m4, $m4, $m8
	ld32 $m7, $m13, $m15, 3
	st32 $m7, $m11, $m15, 27                # 4-byte Folded Spill
	shr $m5, $m5, 2
	st32 $m5, $m11, $m15, 15                # 4-byte Folded Spill
	shr $m4, $m4, 2
	st32 $m4, $m11, $m15, 5                 # 4-byte Folded Spill
	shl $m4, $m3, 1
	shl $m4, $m4, 1
	st32 $m4, $m11, $m15, 14                # 4-byte Folded Spill
	shl $m5, $m3, 2
	shl $m4, $m3, 3
	ld32 $m7, $m13, $m15, 0
	ld32 $m8, $m13, $m15, 4
	st32 $m8, $m11, $m15, 26                # 4-byte Folded Spill
	and $m8, $m2, 3
	st32 $m8, $m11, $m15, 25                # 4-byte Folded Spill
	or $m8, $m10, $m9
	st32 $m8, $m11, $m15, 11                # 4-byte Folded Spill
	add $m8, $m9, $m5
	st32 $m8, $m11, $m15, 13                # 4-byte Folded Spill
	add $m8, $m9, $m4
	st32 $m8, $m11, $m15, 3                 # 4-byte Folded Spill
	add $m4, $m10, $m4
	st32 $m4, $m11, $m15, 2                 # 4-byte Folded Spill
	st32 $m5, $m11, $m15, 4                 # 4-byte Folded Spill
	add $m2, $m10, $m5
	st32 $m2, $m11, $m15, 12                # 4-byte Folded Spill
	shl $m2, $m6, 3
	st32 $m2, $m11, $m15, 24                # 4-byte Folded Spill
	ld32 $m2, $m11, $m15, 27                # 4-byte Folded Reload
	add $m10, $m2, 4
	st32 $m3, $m11, $m15, 19                # 4-byte Folded Spill
	st32 $a6, $m11, $m15, 18                # 4-byte Folded Spill
	st32 $a7, $m11, $m15, 17                # 4-byte Folded Spill
	st32 $m7, $m11, $m15, 16                # 4-byte Folded Spill
	st32 $a5, $m11, $m15, 6                 # 4-byte Folded Spill
.Lcode4_BB0_2:                                # %for.cond9.preheader.i
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB0_5 Depth 2
                                        #     Child Loop BB0_8 Depth 2
	mov	$a1, $a7
	{
		brz $m6, .Lcode4_BB0_10
		mov	$a0, $a7
	}
# %bb.3:                                # %for.body12.lr.ph.i
                                        #   in Loop: Header=BB0_2 Depth=1
	{
		setzi $m9, 1
		mov	$a0, $azero
	}
	ld32 $m5, $m11, $m15, 27                # 4-byte Folded Reload
	cmpslt $m8, $m9, $m6
	ld32step $a1, $m15, $m5+=, 2
	add $m9, $m6, -1
	brz $m8, .Lcode4_BB0_6
# %bb.4:                                # %for.body12.i
                                        #   in Loop: Header=BB0_2 Depth=1
	add $m9, $m9, -1
.Lcode4_BB0_5:                                # %for.body12.i
                                        #   Parent Loop BB0_2 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	{
		ld32step $a1, $m15, $m5+=, 2
		f32add $a0, $a0, $a1
	}
	brnzdec $m9, .Lcode4_BB0_5
.Lcode4_BB0_6:                                #   in Loop: Header=BB0_2 Depth=1
	f32add $a0, $a0, $a1
	mov	$a1, $azero
	{
		add $m2, $m15, -4
		f32div $a0, $a0, $a6
	}
	ld64 $ap1, $m10, $m2, 0
	{
		setzi $m2, 1
		f32sub $a2, $a2, $a0
	}
	{
		cmpslt $m2, $m2, $m6
		f32mul $a2, $a2, $a2
	}
	add $m9, $m10, 8
	add $m5, $m6, -1
	brz $m2, .Lcode4_BB0_9
# %bb.7:                                # %for.body18.i
                                        #   in Loop: Header=BB0_2 Depth=1
	add $m5, $m5, -1
.Lcode4_BB0_8:                                # %for.body18.i
                                        #   Parent Loop BB0_2 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	{
		add $m2, $m15, -4
		f32add $a4, $a2, $a3
	}
	{
		ld64 $ap1, $m9, $m2, 0
		f32add $a1, $a1, $a4
	}
	{
		add $m9, $m9, 8
		f32sub $a2, $a2, $a0
	}
	{
		brnzdec $m5, .Lcode4_BB0_8
		f32mul $a2, $a2, $a2
	}
.Lcode4_BB0_9:                                #   in Loop: Header=BB0_2 Depth=1
	f32add $a2, $a2, $a3
	f32add $a1, $a1, $a2
	f32div $a1, $a1, $a6
.Lcode4_BB0_10:                               # %for.cond.cleanup17.i
                                        #   in Loop: Header=BB0_2 Depth=1
	ld32 $m2, $m11, $m15, 23                # 4-byte Folded Reload
	{
		mul $m5, $m1, $m2
		f32add $a1, $a1, $a5
	}
	shl $m5, $m5, 1
	#APP
	f32oorx $a1, $a1
	#NO_APP
	add $m9, $m7, $m5
	ld32 $m2, $m11, $m15, 26                # 4-byte Folded Reload
	add $m5, $m2, $m5
	ld32 $m2, $m11, $m15, 25                # 4-byte Folded Reload
	brnz $m2, .Lcode4_BB0_14
# %bb.11:                               # %land.lhs.true.i.i
                                        #   in Loop: Header=BB0_2 Depth=1
	ld32 $m2, $m11, $m15, 11                # 4-byte Folded Reload
	or $m8, $m2, $m9
	or $m8, $m8, $m5
	and $m8, $m8, 6
	brz $m8, .Lcode4_BB0_12
.Lcode4_BB0_14:                               # %if.end18.i.i
                                        #   in Loop: Header=BB0_2 Depth=1
	ld32 $m2, $m11, $m15, 22                # 4-byte Folded Reload
	cmpult $m2, $m3, $m2
	brz $m2, .Lcode4_BB0_17
# %bb.15:                               # %if.end22.i.i
                                        #   in Loop: Header=BB0_2 Depth=1
	{
		mov	$m2, $m15
		f32sub $a0, $azero, $a0
	}
	ld32 $m7, $m11, $m15, 14                # 4-byte Folded Reload
	add $m3, $m9, $m7
	add $m5, $m5, $m7
	st32 $a0, $m11, $m15, 28
	st32 $a1, $m11, $m15, 29
	add $m7, $m11, 112
	st32 $m7, $m11, $m15, 21                # 4-byte Folded Spill
	ld32 $m9, $m11, $m15, 12                # 4-byte Folded Reload
	st32 $m0, $m11, $m15, 20                # 4-byte Folded Spill
	mov	$m0, $m1
	mov	$m1, $m6
	ld32 $m4, $m11, $m15, 13                # 4-byte Folded Reload
	ld32 $m8, $m11, $m15, 15                # 4-byte Folded Reload
	ld32 $m7, $m11, $m15, 21                # 4-byte Folded Reload
	#APP
	ld32 $a6, $m7, $m15, 0
	ld32 $a7, $m7, $m15, 1
	{
		rpt $m8, 9
		fnop
	}

	{
		ld32step $a0, $m15, $m3+=, 6
		fnop
	}

	{
		nop
		f16v2tof32 $ap0, $a0
	}

	{
		nop
		f32v2add $ap0, $a6:B, $ap0
	}

	{
		ld32step $a2, $m15, $m4+=, 6
		f32v2mul $ap0, $a7:B, $ap0
	}

	{
		nop
		f16v2tof32 $ap1, $a2
	}

	{
		ld32step $a4, $m15, $m9+=, 6
		f32v2mul $ap0, $ap0, $ap1
	}

	{
		nop
		f16v2tof32 $ap1, $a4
	}

	{
		nop
		f32v2add $ap0, $ap0, $ap1
	}

	{
		nop
		f32v2tof16 $a0, $ap0
	}

	{
		st32step $a0, $m15, $m5+=, 6
		fnop
	}


	#NO_APP
	ld32 $a7, $m11, $m15, 17                # 4-byte Folded Reload
	ld32 $a6, $m11, $m15, 18                # 4-byte Folded Reload
	mov	$m1, $m0
	ld32 $m0, $m11, $m15, 20                # 4-byte Folded Reload
	ld32 $m7, $m11, $m15, 16                # 4-byte Folded Reload
.Lcode4_BB0_16:                               # %_ZL9normApplyPKDhS0_S0_S0_PDhjjff.exit.i
                                        #   in Loop: Header=BB0_2 Depth=1
	ld32 $m3, $m11, $m15, 19                # 4-byte Folded Reload
.Lcode4_BB0_17:                               # %_ZL9normApplyPKDhS0_S0_S0_PDhjjff.exit.i
                                        #   in Loop: Header=BB0_2 Depth=1
	add $m1, $m1, 1
	ld32 $m2, $m11, $m15, 27                # 4-byte Folded Reload
	ld32 $m5, $m11, $m15, 24                # 4-byte Folded Reload
	add $m2, $m2, $m5
	st32 $m2, $m11, $m15, 27                # 4-byte Folded Spill
	add $m10, $m10, $m5
	brnzdec $m0, .Lcode4_BB0_2
	bri .Lcode4_BB0_18
.Lcode4_BB0_12:                               # %if.then.i.i
                                        #   in Loop: Header=BB0_2 Depth=1
	ld32 $m2, $m11, $m15, 10                # 4-byte Folded Reload
	cmpult $m8, $m3, $m2
	brz $m8, .Lcode4_BB0_17
# %bb.13:                               # %if.end.i.i
                                        #   in Loop: Header=BB0_2 Depth=1
	st32 $m15, $m11, $m15, 20               # 4-byte Folded Spill
	ld32 $m2, $m11, $m15, 4                 # 4-byte Folded Reload
	{
		shl $m3, $m2, 1
		f32sub $a0, $azero, $a0
	}
	add $m2, $m9, $m3
	st32 $m2, $m11, $m15, 9                 # 4-byte Folded Spill
	st32 $a0, $m11, $m15, 28
	add $m2, $m5, $m3
	st32 $m2, $m11, $m15, 8                 # 4-byte Folded Spill
	st32 $a1, $m11, $m15, 29
	add $m2, $m11, 112
	st32 $m2, $m11, $m15, 21                # 4-byte Folded Spill
	ld32 $m2, $m11, $m15, 3                 # 4-byte Folded Reload
	st32 $m2, $m11, $m15, 7                 # 4-byte Folded Spill
	ld32 $m5, $m11, $m15, 2                 # 4-byte Folded Reload
	ld32 $m7, $m11, $m15, 5                 # 4-byte Folded Reload
	ld32 $m8, $m11, $m15, 21                # 4-byte Folded Reload
	ld32 $m9, $m11, $m15, 20                # 4-byte Folded Reload
	ld32 $m3, $m11, $m15, 9                 # 4-byte Folded Reload
	ld32 $m2, $m11, $m15, 8                 # 4-byte Folded Reload
	ld32 $m4, $m11, $m15, 7                 # 4-byte Folded Reload
	#APP
	ld32 $a6, $m8, $m15, 0
	ld32 $a7, $m8, $m15, 1
	{
		rpt $m7, 11
		fnop
	}

	{
		ld64step $ap2, $m15, $m3+=, 6
		fnop
	}

	{
		nop
		f16v2tof32 $ap0, $a4
	}

	{
		nop
		f16v2tof32 $ap1, $a5
	}

	{
		nop
		f32v2add $ap0, $a6:B, $ap0
	}

	{
		nop
		f32v2add $ap1, $a6:B, $ap1
	}

	{
		nop
		f32v2mul $ap0, $a7:B, $ap0
	}

	{
		nop
		f32v2mul $ap1, $a7:B, $ap1
	}

	{
		ld64step $ap2, $m15, $m4+=, 6
		f32v2tof16 $a0, $ap0
	}

	{
		ld64step $ap1, $m15, $m5+=, 6
		f32v2tof16 $a1, $ap1
	}

	{
		nop
		f16v4mul $ap0, $ap0, $ap2
	}

	{
		nop
		f16v4add $ap0, $ap0, $ap1
	}

	{
		st64step $ap0, $m15, $m2+=, 6
		fnop
	}


	#NO_APP
	ld32 $m7, $m11, $m15, 16                # 4-byte Folded Reload
	ld32 $a7, $m11, $m15, 17                # 4-byte Folded Reload
	ld32 $a6, $m11, $m15, 18                # 4-byte Folded Reload
	ld32 $a5, $m11, $m15, 6                 # 4-byte Folded Reload
	bri .Lcode4_BB0_16
.Lcode4_BB0_18:                               # %_ZN14LayerNormApply7computeEj.exit
	exitz $m15
.Lcode4_func_end0:
	.size	__runCodelet_LayerNormApply, .Lcode4_func_end0-__runCodelet_LayerNormApply
	.section	.stack_sizes,"o",@progbits,.text.__runCodelet_LayerNormApply
	.long	.Lcode4_func_begin0
	.byte	120
	.section	.text.__runCodelet_LayerNormApply,"ax",@progbits
                                        # -- End function
	.ident	"clang version 16.0.0 (git@github.com:Software-GCAI/llvm-project.git 6343a843cd5af31429c62a83b6ba249a74d36969)"
	.section	".note.GNU-stack","",@progbits
	.addrsig

#define WORKER_CALL_SYMBOL layer_norm_apply
#define WORKER_CODELET_SYMBOL __runCodelet_LayerNormApply
#define WORKER_ARGUMENTS $m3,$m4,$m5,$m6,$m2,$m7,$m8,$m9
#define WORKER_FRAME_BYTES 48
#include "/srv/home/gc-sdk/ipu-stack/device/worker_call.S"
#undef WORKER_CALL_SYMBOL
#undef WORKER_CODELET_SYMBOL
#undef WORKER_ARGUMENTS
#undef WORKER_FRAME_BYTES
	.text
	.allow_optimizations
	.file	"3"
	.section	.text.__runCodelet_LayerNormF8,"ax",@progbits
	.globl	__runCodelet_LayerNormF8        # -- Begin function __runCodelet_LayerNormF8
	.p2align	2
	.type	__runCodelet_LayerNormF8,@function
__runCodelet_LayerNormF8:               # @__runCodelet_LayerNormF8
	.worker
.Lcode5_func_begin0:
# %bb.0:                                # %entry
	setzi $m6, 40
	cmpult $m6, $m6, __worker_stack_max_growth_plus_one
	brz $m6, _stackoverflow
	add $m11, $m12, -40
	get $m0, 1
	ld32 $m3, $m13, $m15, 7
	and $m0, $m0, 7
	ld32 $m1, $m13, $m15, 6
	ld32 $m5, $m13, $m15, 0
	ld32 $m2, $m13, $m15, 5
	brz $m3, .Lcode5_BB0_6
# %bb.1:                                # %for.body.preheader.i
	ld64 $ap0, $m1, $m15, 0
	{
		ld64 $ap1, $m1, $m15, 1
		f32v2add $ap0, $ap0, $apzero
	}
	{
		ld64 $ap1, $m1, $m15, 2
		f32v2add $ap0, $ap0, $ap1
	}
	{
		ld64 $ap1, $m1, $m15, 3
		f32v2add $ap0, $ap0, $ap1
	}
	{
		ld64 $ap1, $m1, $m15, 4
		f32v2add $ap0, $ap0, $ap1
	}
	{
		ld64 $ap1, $m1, $m15, 5
		f32v2add $ap0, $ap0, $ap1
	}
	{
		cmpeq $m3, $m3, 1
		f32v2add $ap0, $ap0, $ap1
	}
	{
		st32 $m2, $m11, $m15, 0
		f32add $a0, $a0, $a1
	}
	ld32 $a1, $m11, $m15, 0
	f32fromui32 $a1, $a1
	{
		brz $m3, .Lcode5_BB0_2
		f32div $a0, $a0, $a1
	}
# %bb.13:                               # %if.then11.i
	cmpult $m3, $m2, 96
	brnz $m3, .Lcode5_BB0_16
# %bb.14:                               # %if.then11.i
	or $m3, $m2, $m5
	and $m3, $m3, 7
	brnz $m3, .Lcode5_BB0_16
# %bb.15:                               # %if.then.i75.i
	mov	$m3, $m15
	{
		shr $m2, $m2, 2
		f32sub $a7, $azero, $a0
	}
	sub $m4, $m2, $m0
	add $m2, $m11, 32
	add $m4, $m4, 5
	setzi $m6, 43691
	sort4x16lo $m7, $m4, $m15
	shr $m4, $m4, 16
	mul $m8, $m7, $m6
	mul $m6, $m4, $m6
	shr $m8, $m8, 16
	add $m6, $m6, $m8
	setzi $m8, 43690
	mul $m7, $m7, $m8
	mul $m4, $m4, $m8
	sort4x16lo $m8, $m6, $m15
	shr $m6, $m6, 16
	add $m7, $m7, $m8
	add $m4, $m4, $m6
	shr $m6, $m7, 16
	shl $m7, $m0, 3
	add $m4, $m4, $m6
	add $m5, $m5, $m7
	shr $m4, $m4, 2
	#APP
	setzi $a0, 8
	put	1, $a0
	mov	$a6, $a7
	{
		rpt $m4, 5
		fnop
	}

	{
		ld64step $ap2, $m15, $m5+=, 6
		fnop
	}

	{
		nop
		f16v2tof32 $ap0, $a4
	}

	{
		nop
		f16v2tof32 $ap1, $a5
	}

	{
		nop
		f32v2add $ap0, $a6:B, $ap0
	}

	{
		nop
		f32v2add $ap1, $a6:B, $ap1
	}

	{
		nop
		f32v4sqacc $aq0
	}

	f32v2gina $ap0, $apzero, 0
	f32v2gina $ap1, $apzero, 0
	f32v2add $ap0, $ap0, $ap1
	st64 $ap0, $m2, $m15, 0

	#NO_APP
	ld64 $ap3, $m11, $m15, 4
	bri .Lcode5_BB0_18
.Lcode5_BB0_6:                                # %if.then.i
	cmpult $m3, $m2, 96
	brnz $m3, .Lcode5_BB0_9
# %bb.7:                                # %if.then.i
	or $m3, $m2, $m5
	and $m3, $m3, 7
	brnz $m3, .Lcode5_BB0_9
# %bb.8:                                # %if.then.i.i
	mov	$m3, $m15
	shr $m4, $m2, 3
	add $m2, $m11, 32
	sub $m4, $m4, $m0
	add $m4, $m4, 5
	setzi $m6, 43691
	sort4x16lo $m7, $m4, $m15
	shr $m4, $m4, 16
	mul $m8, $m7, $m6
	mul $m6, $m4, $m6
	shr $m8, $m8, 16
	add $m6, $m6, $m8
	setzi $m8, 43690
	mul $m7, $m7, $m8
	mul $m4, $m4, $m8
	sort4x16lo $m8, $m6, $m15
	shr $m6, $m6, 16
	add $m7, $m7, $m8
	add $m4, $m4, $m6
	shr $m6, $m7, 16
	shl $m7, $m0, 4
	add $m4, $m4, $m6
	add $m5, $m5, $m7
	shr $m4, $m4, 2
	#APP
	setzi $a0, 8
	put	1, $a0
	{
		rpt $m4, 2
		fnop
	}

	{
		ld64step $ap0, $m15, $m5+=, 1
		fnop
	}

	{
		ld64step $ap1, $m15, $m5+=, 11
		fnop
	}

	{
		nop
		f16v8acc $aq0
	}

	f32v2gina $ap0, $apzero, 0
	f32v2gina $ap1, $apzero, 0
	f32v2add $ap0, $ap0, $ap1
	f32v2gina $ap1, $apzero, 0
	f32v2add $ap0, $ap0, $ap1
	f32v2gina $ap1, $apzero, 0
	f32v2add $ap0, $ap0, $ap1
	st64 $ap0, $m2, $m15, 0

	#NO_APP
	ld64 $ap2, $m11, $m15, 4
	st64 $ap2, $m1, $m15, $m0
	exitz $m15
.Lcode5_BB0_2:                                # %for.body20.preheader.i
	{
		ld64 $ap1, $m1, $m15, 6
		setzi $a4, 407485
	}
	{
		ld32 $m3, $m13, $m15, 9
		f32v2add $ap1, $ap1, $apzero
	}
	{
		sub $m3, 0, $m3
		or $a4, $a4, 897581056
	}
	{
		and $m3, $m3, 255
		setzi $a5, 2
	}
	f32sub $a0, $azero, $a0
	st32 $a0, $m11, $m15, 7                 # 4-byte Folded Spill
	ld64 $ap3, $m1, $m15, 7
	{
		ld64 $ap3, $m1, $m15, 8
		f32v2add $ap1, $ap1, $ap3
	}
	{
		ld64 $ap3, $m1, $m15, 9
		f32v2add $ap1, $ap1, $ap3
	}
	{
		ld64 $ap3, $m1, $m15, 10
		f32v2add $ap1, $ap1, $ap3
	}
	{
		ld64 $ap3, $m1, $m15, 11
		f32v2add $ap1, $ap1, $ap3
	}
	st32 $m3, $m11, $m15, 0
	ld32 $a0, $m11, $m15, 0
	#APP
	put	9, $a5
	put	10, $a0
	#NO_APP
	f32v2add $ap1, $ap1, $ap3
	{
		ld32 $m4, $m13, $m15, 4
		f32add $a0, $a2, $a3
	}
	{
		cmpeq $m7, $m4, 1
		f32div $a0, $a0, $a1
	}
	f32add $a0, $a0, $a4
	#APP
	f32oorx $a0, $a0
	#NO_APP
	ld32 $m3, $m13, $m15, 1
	ld32 $m9, $m13, $m15, 2
	ld32 $a1, $m11, $m15, 7                 # 4-byte Folded Reload
	st32 $a1, $m11, $m15, 8
	ld32 $m10, $m13, $m15, 3
	st32 $a0, $m11, $m15, 9
	ld32 $m8, $m13, $m15, 8
	ld32 $m1, $m13, $m15, 10
	st32 $m10, $m11, $m15, 6                # 4-byte Folded Spill
	brnz $m7, .Lcode5_BB0_4
# %bb.3:                                # %for.body20.preheader.i
	brz $m1, .Lcode5_BB0_4
# %bb.19:                               # %if.else.i.i
	shl $m7, $m0, 2
	cmpult $m6, $m7, $m2
	brz $m6, .Lcode5_BB0_24
# %bb.20:                               # %for.body.i.i.preheader
	st32 $m1, $m11, $m15, 2                 # 4-byte Folded Spill
	st32 $m0, $m11, $m15, 1                 # 4-byte Folded Spill
	shl $m6, $m0, 3
	add $m0, $m11, 32
	st32 $m0, $m11, $m15, 5                 # 4-byte Folded Spill
	add $m9, $m9, $m6
	add $m3, $m3, $m6
	add $m5, $m5, $m6
	setzi $m0, 1
	st32 $m0, $m11, $m15, 4                 # 4-byte Folded Spill
	st32 $m8, $m11, $m15, 7                 # 4-byte Folded Spill
	st32 $m4, $m11, $m15, 3                 # 4-byte Folded Spill
.Lcode5_BB0_21:                               # %for.body.i.i
                                        # =>This Inner Loop Header: Depth=1
	shr $m0, $m7, 5
	mul $m0, $m0, $m4
	ld32 $m1, $m11, $m15, 7                 # 4-byte Folded Reload
	add $m0, $m0, $m1
	shl $m0, $m0, 5
	mov	$m4, $m2
	and $m2, $m7, 28
	or $m0, $m0, $m2
	add $m7, $m7, 24
	add $m0, $m10, $m0
	mov	$m2, $m5
	add $m5, $m5, 48
	mov	$m1, $m9
	add $m9, $m9, 48
	mov	$m10, $m3
	ld32 $m6, $m11, $m15, 5                 # 4-byte Folded Reload
	ld32 $m8, $m11, $m15, 4                 # 4-byte Folded Reload
	#APP
	ld32 $a6, $m6, $m15, 0
	ld32 $a7, $m6, $m15, 1
	{
		rpt $m8, 20
		fnop
	}

	{
		ld32step $a0, $m15, $m2+=, 1
		fnop
	}

	{
		nop
		f16v2tof32 $ap0, $a0
	}

	{
		nop
		f32v2add $ap0, $a6:B, $ap0
	}

	{
		ld32step $a2, $m15, $m10+=, 1
		f32v2mul $ap0, $a7:B, $ap0
	}

	{
		nop
		f16v2tof32 $ap1, $a2
	}

	{
		ld32step $a4, $m15, $m1+=, 1
		f32v2mul $ap0, $ap0, $ap1
	}

	{
		nop
		f16v2tof32 $ap1, $a4
	}

	{
		nop
		f32v2add $ap0, $ap0, $ap1
	}

	{
		nop
		f32v2tof16 $a5, $ap0
	}

	{
		ld32step $a0, $m15, $m2+=, 11
		f16v2tof8 $a5, $a5
	}

	{
		nop
		f16v2tof32 $ap0, $a0
	}

	{
		nop
		f32v2add $ap0, $a6:B, $ap0
	}

	{
		ld32step $a2, $m15, $m10+=, 11
		f32v2mul $ap0, $a7:B, $ap0
	}

	{
		nop
		f16v2tof32 $ap1, $a2
	}

	{
		ld32step $a4, $m15, $m1+=, 11
		f32v2mul $ap0, $ap0, $ap1
	}

	{
		nop
		f16v2tof32 $ap1, $a4
	}

	{
		nop
		f32v2add $ap0, $ap0, $ap1
	}

	{
		nop
		f32v2tof16 $a0, $ap0
	}

	{
		nop
		f16v2tof8 $a0, $a0
	}

	{
		nop
		sort4x16lo $a0, $a5, $a0
	}

	{
		st32step $a0, $m15, $m0+=, 6
		fnop
	}


	#NO_APP
	ld32 $m10, $m11, $m15, 6                # 4-byte Folded Reload
	mov	$m2, $m4
	ld32 $m4, $m11, $m15, 3                 # 4-byte Folded Reload
	add $m3, $m3, 48
	cmpult $m0, $m7, $m2
	brnz $m0, .Lcode5_BB0_21
	bri .Lcode5_BB0_22
.Lcode5_BB0_9:                                # %if.end.i.i
	shr $m3, $m2, 1
	cmpult $m2, $m0, $m3
	brz $m2, .Lcode5_BB0_10
# %bb.11:                               # %if.end6.i.i
	{
		mov	$m2, $m15
		zero	$ap2
	}
	sub $m3, $m3, $m0
	add $m3, $m3, 5
	setzi $m4, 43691
	sort4x16lo $m6, $m3, $m15
	shr $m3, $m3, 16
	mul $m7, $m6, $m4
	mul $m4, $m3, $m4
	shr $m7, $m7, 16
	add $m4, $m4, $m7
	setzi $m7, 43690
	mul $m6, $m6, $m7
	mul $m3, $m3, $m7
	sort4x16lo $m7, $m4, $m15
	shr $m4, $m4, 16
	add $m6, $m6, $m7
	add $m3, $m3, $m4
	shr $m4, $m6, 16
	shl $m6, $m0, 2
	add $m3, $m3, $m4
	add $m4, $m5, $m6
	shr $m3, $m3, 2
	#APP
	{
		rpt $m3, 2
		fnop
	}

	{
		ld32step $a0, $m15, $m4+=, 6
		fnop
	}

	{
		nop
		f16v2tof32 $ap0, $a0
	}

	{
		nop
		f32v2add $ap2, $ap2, $ap0
	}


	#NO_APP
	st64 $ap2, $m1, $m15, $m0
	exitz $m15
.Lcode5_BB0_16:                               # %if.end.i78.i
	{
		shr $m3, $m2, 1
		zero	$ap3
	}
	cmpult $m2, $m0, $m3
	brz $m2, .Lcode5_BB0_18
# %bb.17:                               # %if.end6.i84.i
	mov	$m2, $m15
	{
		sub $m3, $m3, $m0
		f32sub $a3, $azero, $a0
	}
	add $m3, $m3, 5
	setzi $m4, 43691
	sort4x16lo $m6, $m3, $m15
	shr $m3, $m3, 16
	mul $m7, $m6, $m4
	mul $m4, $m3, $m4
	shr $m7, $m7, 16
	add $m4, $m4, $m7
	setzi $m7, 43690
	mul $m6, $m6, $m7
	mul $m3, $m3, $m7
	sort4x16lo $m7, $m4, $m15
	shr $m4, $m4, 16
	add $m6, $m6, $m7
	add $m3, $m3, $m4
	shr $m4, $m6, 16
	shl $m6, $m0, 2
	add $m3, $m3, $m4
	add $m4, $m5, $m6
	shr $m3, $m3, 2
	#APP
	mov	$a4, $a3
	{
		rpt $m3, 4
		fnop
	}

	{
		ld32step $a0, $m15, $m4+=, 6
		fnop
	}

	{
		nop
		f16v2tof32 $ap0, $a0
	}

	{
		nop
		f32v2add $ap0, $a4:B, $ap0
	}

	{
		nop
		f32v2mul $ap0, $ap0, $ap0
	}

	{
		nop
		f32v2add $ap3, $ap3, $ap0
	}


	#NO_APP
.Lcode5_BB0_18:                               # %_ZL7normSumPKDhS0_jjfb.exit87.i
	shl $m0, $m0, 3
	st64 $ap3, $m0, $m1, 6
	exitz $m15
.Lcode5_BB0_4:                                # %if.then.i90.i
	st32 $m1, $m11, $m15, 2                 # 4-byte Folded Spill
	shr $m7, $m2, 2
	st32 $m0, $m11, $m15, 1                 # 4-byte Folded Spill
	st32 $m8, $m11, $m15, 7                 # 4-byte Folded Spill
	cmpult $m8, $m0, $m7
	brz $m8, .Lcode5_BB0_22
# %bb.5:                                # %if.then2.i.i
	ld32 $m0, $m11, $m15, 1                 # 4-byte Folded Reload
	sub $m8, $m7, $m0
	add $m1, $m11, 32
	st32 $m1, $m11, $m15, 5                 # 4-byte Folded Spill
	add $m8, $m8, 5
	st32 $m9, $m11, $m15, 4                 # 4-byte Folded Spill
	setzi $m9, 43691
	sort4x16lo $m10, $m8, $m15
	shr $m8, $m8, 16
	mul $m7, $m10, $m9
	mul $m9, $m8, $m9
	shr $m7, $m7, 16
	add $m7, $m9, $m7
	setzi $m9, 43690
	mul $m10, $m10, $m9
	mul $m8, $m8, $m9
	sort4x16lo $m9, $m7, $m15
	shr $m7, $m7, 16
	add $m9, $m10, $m9
	ld32 $m1, $m11, $m15, 7                 # 4-byte Folded Reload
	mul $m10, $m1, $m2
	add $m7, $m8, $m7
	shr $m8, $m9, 16
	shl $m9, $m0, 2
	ld32 $m1, $m11, $m15, 6                 # 4-byte Folded Reload
	add $m10, $m1, $m10
	add $m7, $m7, $m8
	shl $m6, $m0, 3
	add $m5, $m5, $m6
	add $m8, $m3, $m6
	ld32 $m0, $m11, $m15, 4                 # 4-byte Folded Reload
	add $m6, $m0, $m6
	add $m9, $m10, $m9
	ld32 $m10, $m11, $m15, 6                # 4-byte Folded Reload
	shr $m7, $m7, 2
	ld32 $m0, $m11, $m15, 5                 # 4-byte Folded Reload
	#APP
	ld32 $a6, $m0, $m15, 0
	ld32 $a7, $m0, $m15, 1
	{
		rpt $m7, 20
		fnop
	}

	{
		ld32step $a0, $m15, $m5+=, 1
		fnop
	}

	{
		nop
		f16v2tof32 $ap0, $a0
	}

	{
		nop
		f32v2add $ap0, $a6:B, $ap0
	}

	{
		ld32step $a2, $m15, $m8+=, 1
		f32v2mul $ap0, $a7:B, $ap0
	}

	{
		nop
		f16v2tof32 $ap1, $a2
	}

	{
		ld32step $a4, $m15, $m6+=, 1
		f32v2mul $ap0, $ap0, $ap1
	}

	{
		nop
		f16v2tof32 $ap1, $a4
	}

	{
		nop
		f32v2add $ap0, $ap0, $ap1
	}

	{
		nop
		f32v2tof16 $a5, $ap0
	}

	{
		ld32step $a0, $m15, $m5+=, 11
		f16v2tof8 $a5, $a5
	}

	{
		nop
		f16v2tof32 $ap0, $a0
	}

	{
		nop
		f32v2add $ap0, $a6:B, $ap0
	}

	{
		ld32step $a2, $m15, $m8+=, 11
		f32v2mul $ap0, $a7:B, $ap0
	}

	{
		nop
		f16v2tof32 $ap1, $a2
	}

	{
		ld32step $a4, $m15, $m6+=, 11
		f32v2mul $ap0, $ap0, $ap1
	}

	{
		nop
		f16v2tof32 $ap1, $a4
	}

	{
		nop
		f32v2add $ap0, $ap0, $ap1
	}

	{
		nop
		f32v2tof16 $a0, $ap0
	}

	{
		nop
		f16v2tof8 $a0, $a0
	}

	{
		nop
		sort4x16lo $a0, $a5, $a0
	}

	{
		st32step $a0, $m15, $m9+=, 6
		fnop
	}


	#NO_APP
.Lcode5_BB0_22:                               # %if.end26.i.i
	ld32 $m8, $m11, $m15, 7                 # 4-byte Folded Reload
	ld32 $m0, $m11, $m15, 2                 # 4-byte Folded Reload
	brz $m0, .Lcode5_BB0_27
# %bb.23:                               # %if.end26.i.if.then28.i_crit_edge.i
	ld32 $m0, $m11, $m15, 1                 # 4-byte Folded Reload
	shl $m7, $m0, 2
.Lcode5_BB0_24:                               # %if.then28.i.i
	add $m1, $m2, 31
	add $m0, $m7, $m2
	andc $m5, $m1, 31
	cmpult $m1, $m0, $m5
	brz $m1, .Lcode5_BB0_27
# %bb.25:                               # %for.body38.i.i.preheader
	add $m1, $m7, $m2
	add $m1, $m1, 24
	mov	$m3, $m2
	cmpult $m2, $m1, $m5
	movnz	$m1, $m2, $m5
	sub $m1, $m1, $m7
	sub $m1, $m1, $m3
	add $m1, $m1, -24
	cmpeq $m2, $m1, 0
	setzi $m3, 1
	movnz	$m3, $m2, $m1
	sub $m1, $m1, $m3
	setzi $m2, 43691
	sort4x16lo $m5, $m1, $m15
	shr $m1, $m1, 16
	mul $m6, $m5, $m2
	mul $m2, $m1, $m2
	shr $m6, $m6, 16
	add $m2, $m2, $m6
	setzi $m6, 43690
	sort4x16lo $m7, $m2, $m15
	mul $m5, $m5, $m6
	shr $m2, $m2, 16
	mul $m1, $m1, $m6
	add $m5, $m5, $m7
	add $m1, $m1, $m2
	shr $m2, $m5, 16
	add $m1, $m1, $m2
	shr $m1, $m1, 4
	add $m1, $m3, $m1
	add $m2, $m1, 1
	add $m2, $m2, -1
.Lcode5_BB0_26:                               # %for.body38.i.i
                                        # =>This Inner Loop Header: Depth=1
	shr $m1, $m0, 5
	mul $m1, $m1, $m4
	add $m1, $m1, $m8
	shl $m1, $m1, 5
	and $m3, $m0, 31
	or $m1, $m1, $m3
	st32 $azero, $m10, $m1, 0
	add $m0, $m0, 24
	brnzdec $m2, .Lcode5_BB0_26
.Lcode5_BB0_27:                               # %_ZN11LayerNormF87computeEj.exit
	exitz $m15
.Lcode5_BB0_10:
	zero	$ap2
	st64 $ap2, $m1, $m15, $m0
	exitz $m15
.Lcode5_func_end0:
	.size	__runCodelet_LayerNormF8, .Lcode5_func_end0-__runCodelet_LayerNormF8
	.section	.stack_sizes,"o",@progbits,.text.__runCodelet_LayerNormF8
	.long	.Lcode5_func_begin0
	.byte	40
	.section	.text.__runCodelet_LayerNormF8,"ax",@progbits
                                        # -- End function
	.ident	"clang version 16.0.0 (git@github.com:Software-GCAI/llvm-project.git 6343a843cd5af31429c62a83b6ba249a74d36969)"
	.section	".note.GNU-stack","",@progbits
	.addrsig

#define NORM_FP8
#include "arch/gc_tile_defines.h"

#ifdef NORM_WITH_ADD
#define NORM_SYMBOL add_layer_norm_f16
#define NORM_VERTEX __runCodelet_AddLayerNormF16
#define NORM_ROWS $m7
#define NORM_WIDTH $m8
#define NORM_GAMMA $m5
#define NORM_BETA $m6
#define NORM_SHIFT 1
#define NORM_STACK 160
#define NORM_SCRATCH 64
#elif defined(NORM_FP8)
#define NORM_SYMBOL layer_norm_f8
#define NORM_VERTEX __runCodelet_LayerNormF8
#define NORM_ROWS $m6
#define NORM_WIDTH $m7
#define NORM_GAMMA $m4
#define NORM_BETA $m5
#define NORM_SHIFT 0
#define NORM_STACK 160
#define NORM_SCRATCH 64
#else
#define NORM_SYMBOL layer_norm_f16
#define NORM_VERTEX __runCodelet_LayerNormF16
#define NORM_ROWS $m6
#define NORM_WIDTH $m7
#define NORM_GAMMA $m4
#define NORM_BETA $m5
#define NORM_SHIFT 0
#define NORM_STACK 128
#define NORM_SCRATCH 32
#endif

// Share each row across all six workers. Separate sum and centered-variance
// buffers avoid read/write races; local sync separates the three passes.
	.text
	.allow_optimizations
	.section .text.NORM_SYMBOL,"ax",@progbits
	.globl NORM_SYMBOL
	.p2align 2
	.type NORM_SYMBOL,@function
NORM_SYMBOL:
	.supervisor
	add $m11, $m11, -NORM_STACK
	st32 $m3, $m11, $m15, 0
#ifdef NORM_WITH_ADD
	st32 $m4, $m11, $m15, 1
#endif
	st32 NORM_GAMMA, $m11, $m15, (1 + NORM_SHIFT)
	st32 NORM_BETA, $m11, $m15, (2 + NORM_SHIFT)
	st32 $m2, $m11, $m15, (3 + NORM_SHIFT)
	st32 NORM_ROWS, $m11, $m15, (4 + NORM_SHIFT)
	st32 NORM_WIDTH, $m11, $m15, (5 + NORM_SHIFT)
	add $m0, $m11, NORM_SCRATCH
	st32 $m0, $m11, $m15, (6 + NORM_SHIFT)
#ifdef NORM_FP8
	st32 $m15, $m11, $m15, 8
	st32 $m8, $m11, $m15, 9
	st32 $m9, $m11, $m15, 10
#endif
	setzi $m0, NORM_VERTEX
.Lwrap5_row:
	setzi $m1, 0
.Lwrap5_stage:
	st32 $m1, $m11, $m15, (7 + NORM_SHIFT)
	runall $m0, $m11, 0
	sync TEXCH_SYNCZONE_LOCAL
	add $m1, $m1, 1
	cmpeq $m2, $m1, 3
	brz $m2, .Lwrap5_stage
	shl $m2, NORM_WIDTH, 1
	ld32 $m3, $m11, $m15, 0
	add $m3, $m3, $m2
	st32 $m3, $m11, $m15, 0
#ifdef NORM_FP8
	ld32 $m3, $m11, $m15, 8
	add $m3, $m3, 1
	st32 $m3, $m11, $m15, 8
#else
	ld32 $m3, $m11, $m15, (3 + NORM_SHIFT)
	add $m3, $m3, $m2
	st32 $m3, $m11, $m15, (3 + NORM_SHIFT)
#endif
#ifdef NORM_WITH_ADD
	ld32 $m3, $m11, $m15, 1
	add $m3, $m3, $m2
	st32 $m3, $m11, $m15, 1
#endif
	sub NORM_ROWS, NORM_ROWS, 1
	brnz NORM_ROWS, .Lwrap5_row
	add $m11, $m11, NORM_STACK
	br $m10
	.size NORM_SYMBOL, .-NORM_SYMBOL

#undef NORM_STORE_SUM
#undef MOMENTS_SYMBOL
#undef MOMENTS_VERTEX
#undef MOMENTS_ROWS
#undef MOMENTS_WIDTH
#undef NORM_FP8
#undef NORM_WITH_ADD
#undef NORM_SYMBOL
#undef NORM_VERTEX
#undef NORM_ROWS
#undef NORM_WIDTH
#undef NORM_GAMMA
#undef NORM_BETA
#undef NORM_SHIFT
#undef NORM_STACK
#undef NORM_SCRATCH
	.text
	.allow_optimizations
	.file	"3"
	.section	.text.__runCodelet_AddLayerNormMoments,"ax",@progbits
	.globl	__runCodelet_AddLayerNormMoments # -- Begin function __runCodelet_AddLayerNormMoments
	.p2align	2
	.type	__runCodelet_AddLayerNormMoments,@function
__runCodelet_AddLayerNormMoments:       # @__runCodelet_AddLayerNormMoments
	.worker
.Lcode6_func_begin0:
# %bb.0:                                # %entry
	setzi $m6, 16
	cmpult $m6, $m6, __worker_stack_max_growth_plus_one
	brz $m6, _stackoverflow
	add $m11, $m12, -16
	get $m0, 1
	ld32 $m3, $m13, $m15, 4
	and $m1, $m0, 7
	ld32 $m0, $m13, $m15, 3
	ld32 $m2, $m13, $m15, 2
	brz $m3, .Lcode6_BB0_1
# %bb.11:                               # %if.end.i
	ld64 $ap0, $m0, $m15, 0
	{
		ld64 $ap1, $m0, $m15, 1
		f32v2add $ap0, $ap0, $apzero
	}
	{
		ld64 $ap1, $m0, $m15, 2
		f32v2add $ap0, $ap0, $ap1
	}
	{
		ld64 $ap1, $m0, $m15, 3
		f32v2add $ap0, $ap0, $ap1
	}
	{
		ld64 $ap1, $m0, $m15, 4
		f32v2add $ap0, $ap0, $ap1
	}
	{
		ld64 $ap1, $m0, $m15, 5
		f32v2add $ap0, $ap0, $ap1
	}
	{
		st32 $m2, $m11, $m15, 1
		f32v2add $ap0, $ap0, $ap1
	}
	ld32 $a2, $m11, $m15, 1
	{
		cmpeq $m3, $m3, 1
		f32add $a0, $a0, $a1
	}
	f32fromui32 $a1, $a2
	{
		brz $m3, .Lcode6_BB0_19
		f32div $a0, $a0, $a1
	}
# %bb.12:                               # %if.then15.i
	cmpult $m5, $m2, 96
	ld32 $m4, $m13, $m15, 6
	shl $m3, $m1, 3
	brnz $m5, .Lcode6_BB0_15
# %bb.13:                               # %if.then15.i
	or $m5, $m2, $m4
	and $m5, $m5, 7
	brnz $m5, .Lcode6_BB0_15
# %bb.14:                               # %if.then.i.i
	mov	$m5, $m15
	{
		shr $m2, $m2, 2
		f32sub $a7, $azero, $a0
	}
	sub $m2, $m2, $m1
	add $m1, $m11, 8
	add $m2, $m2, 5
	setzi $m6, 43691
	sort4x16lo $m7, $m2, $m15
	shr $m8, $m2, 16
	add $m2, $m4, $m3
	mul $m4, $m7, $m6
	mul $m6, $m8, $m6
	shr $m4, $m4, 16
	add $m4, $m6, $m4
	setzi $m6, 43690
	mul $m7, $m7, $m6
	mul $m6, $m8, $m6
	sort4x16lo $m8, $m4, $m15
	shr $m4, $m4, 16
	add $m7, $m7, $m8
	add $m4, $m6, $m4
	shr $m6, $m7, 16
	add $m4, $m4, $m6
	shr $m4, $m4, 2
	#APP
	setzi $a0, 8
	put	1, $a0
	mov	$a6, $a7
	{
		rpt $m4, 5
		fnop
	}

	{
		ld64step $ap2, $m15, $m2+=, 6
		fnop
	}

	{
		nop
		f16v2tof32 $ap0, $a4
	}

	{
		nop
		f16v2tof32 $ap1, $a5
	}

	{
		nop
		f32v2add $ap0, $a6:B, $ap0
	}

	{
		nop
		f32v2add $ap1, $a6:B, $ap1
	}

	{
		nop
		f32v4sqacc $aq0
	}

	f32v2gina $ap0, $apzero, 0
	f32v2gina $ap1, $apzero, 0
	f32v2add $ap0, $ap0, $ap1
	st64 $ap0, $m1, $m15, 0

	#NO_APP
	ld64 $ap3, $m11, $m15, 1
	st64 $ap3, $m3, $m0, 6
	exitz $m15
.Lcode6_BB0_1:                                # %if.then.i
	{
		add $m3, $m2, 7
		zero	$ap0
	}
	shr $m3, $m3, 3
	cmpult $m6, $m1, $m3
	ld32 $m4, $m13, $m15, 0
	st64 $apzero, $m11, $m15, 1
	ld32 $m5, $m13, $m15, 5
	ld32 $m3, $m13, $m15, 6
	brz $m6, .Lcode6_BB0_10
# %bb.2:                                # %if.end.i.i
	shr $m6, $m2, 3
	cmpult $m7, $m1, $m6
	brz $m7, .Lcode6_BB0_3
# %bb.4:                                # %cond.true.i.i
	sub $m6, $m6, $m1
	add $m6, $m6, 5
	setzi $m7, 43691
	sort4x16lo $m8, $m6, $m15
	shr $m6, $m6, 16
	mul $m9, $m8, $m7
	mul $m7, $m6, $m7
	shr $m9, $m9, 16
	add $m7, $m7, $m9
	setzi $m9, 43690
	sort4x16lo $m10, $m7, $m15
	mul $m8, $m8, $m9
	shr $m7, $m7, 16
	mul $m6, $m6, $m9
	add $m8, $m8, $m10
	add $m6, $m6, $m7
	shr $m7, $m8, 16
	add $m6, $m6, $m7
	shr $m6, $m6, 2
	bri .Lcode6_BB0_5
.Lcode6_BB0_19:                               # %if.else.i
	brz $m1, .Lcode6_BB0_20
# %bb.21:                               # %_ZN19AddLayerNormMoments7computeEj.exit
	exitz $m15
.Lcode6_BB0_15:                               # %if.end.i63.i
	shr $m5, $m2, 1
	cmpult $m2, $m1, $m5
	brz $m2, .Lcode6_BB0_16
# %bb.17:                               # %if.then10.i69.i
	{
		mov	$m2, $m15
		zero	$ap3
	}
	{
		sub $m5, $m5, $m1
		f32sub $a3, $azero, $a0
	}
	add $m5, $m5, 5
	setzi $m6, 43691
	sort4x16lo $m7, $m5, $m15
	shr $m5, $m5, 16
	mul $m8, $m7, $m6
	mul $m6, $m5, $m6
	shr $m8, $m8, 16
	add $m6, $m6, $m8
	setzi $m8, 43690
	mul $m7, $m7, $m8
	mul $m5, $m5, $m8
	sort4x16lo $m8, $m6, $m15
	shr $m6, $m6, 16
	add $m7, $m7, $m8
	add $m5, $m5, $m6
	shr $m6, $m7, 16
	add $m5, $m5, $m6
	shl $m1, $m1, 2
	shr $m5, $m5, 2
	add $m1, $m4, $m1
	#APP
	mov	$a4, $a3
	{
		rpt $m5, 4
		fnop
	}

	{
		ld32step $a0, $m15, $m1+=, 6
		fnop
	}

	{
		nop
		f16v2tof32 $ap0, $a0
	}

	{
		nop
		f32v2add $ap0, $a4:B, $ap0
	}

	{
		nop
		f32v2mul $ap0, $ap0, $ap0
	}

	{
		nop
		f32v2add $ap3, $ap3, $ap0
	}


	#NO_APP
	st64 $ap3, $m3, $m0, 6
	exitz $m15
.Lcode6_BB0_20:                               # %for.body25.preheader.i
	ld64 $ap1, $m0, $m15, 6
	{
		ld64 $ap2, $m0, $m15, 7
		f32v2add $ap1, $ap1, $apzero
	}
	{
		ld64 $ap2, $m0, $m15, 8
		f32v2add $ap1, $ap1, $ap2
	}
	{
		ld64 $ap2, $m0, $m15, 9
		f32v2add $ap1, $ap1, $ap2
	}
	{
		ld64 $ap2, $m0, $m15, 10
		f32v2add $ap1, $ap1, $ap2
	}
	{
		ld64 $ap2, $m0, $m15, 11
		f32v2add $ap1, $ap1, $ap2
	}
	{
		ld32 $m0, $m13, $m15, 1
		f32v2add $ap1, $ap1, $ap2
	}
	f32add $a2, $a2, $a3
	f32div $a1, $a2, $a1
	st64 $ap0, $m0, $m15, 0
	exitz $m15
.Lcode6_BB0_3:
	mov	$m6, $m15
.Lcode6_BB0_5:                                # %cond.end.i.i
	shl $m8, $m1, 4
	#APP
	setzi $a0, 8
	put	1, $a0
	#NO_APP
	shl $m7, $m1, 3
	add $m4, $m4, $m8
	add $m5, $m5, $m8
	add $m3, $m3, $m8
	brz $m6, .Lcode6_BB0_7
# %bb.6:                                # %if.then10.i.i
	#APP
	{
		rpt $m6, 6
		fnop
	}

	{
		ld64step $ap0, $m15, $m4+=, 1
		fnop
	}

	{
		ld64step $ap1, $m15, $m4+=, 11
		fnop
	}

	{
		ld64step $ap2, $m15, $m5+=, 1
		fnop
	}

	{
		ld64step $ap3, $m15, $m5+=, 11
		f16v4add $ap0, $ap0, $ap2
	}

	{
		nop
		f16v4add $ap1, $ap1, $ap3
	}

	{
		st64step $ap0, $m15, $m3+=, 1
		fnop
	}

	{
		st64step $ap1, $m15, $m3+=, 11
		f16v8acc $aq0
	}


	#NO_APP
.Lcode6_BB0_7:                                # %if.end13.i.i
	mul $m6, $m6, 48
	add $m6, $m6, $m7
	cmpult $m2, $m6, $m2
	brz $m2, .Lcode6_BB0_9
# %bb.8:                                # %if.then18.i.i
	#APP
	ld64 $ap0, $m4, $m15, 0
	ld64 $ap2, $m5, $m15, 0
	f16v4add $ap0, $ap0, $ap2
	zero	$ap1
	{
		st64 $ap0, $m3, $m15, 0
		f16v8acc $aq0
	}


	#NO_APP
.Lcode6_BB0_9:                                # %if.end19.i.i
	add $m2, $m11, 8
	#APP
	f32v2gina $ap0, $apzero, 0
	f32v2gina $ap1, $apzero, 0
	f32v2add $ap0, $ap0, $ap1
	f32v2gina $ap1, $apzero, 0
	f32v2add $ap0, $ap0, $ap1
	f32v2gina $ap1, $apzero, 0
	f32v2add $ap0, $ap0, $ap1
	st64 $ap0, $m2, $m15, 0

	#NO_APP
	ld64 $ap0, $m11, $m15, 1
.Lcode6_BB0_10:                               # %_ZL15normAddAndStorePKDhS0_PDhjj.exit.i
	st64 $ap0, $m0, $m15, $m1
	exitz $m15
.Lcode6_BB0_16:
	zero	$ap3
	st64 $ap3, $m3, $m0, 6
	exitz $m15
.Lcode6_func_end0:
	.size	__runCodelet_AddLayerNormMoments, .Lcode6_func_end0-__runCodelet_AddLayerNormMoments
	.section	.stack_sizes,"o",@progbits,.text.__runCodelet_AddLayerNormMoments
	.long	.Lcode6_func_begin0
	.byte	16
	.section	.text.__runCodelet_AddLayerNormMoments,"ax",@progbits
                                        # -- End function
	.ident	"clang version 16.0.0 (git@github.com:Software-GCAI/llvm-project.git 6343a843cd5af31429c62a83b6ba249a74d36969)"
	.section	".note.GNU-stack","",@progbits
	.addrsig

#define NORM_STORE_SUM
#include "arch/gc_tile_defines.h"
#ifdef NORM_STORE_SUM
#define MOMENTS_SYMBOL add_layer_norm_moments
#define MOMENTS_VERTEX __runCodelet_AddLayerNormMoments
#define MOMENTS_ROWS $m6
#define MOMENTS_WIDTH $m7
#else
#define MOMENTS_SYMBOL layer_norm_moments
#define MOMENTS_VERTEX __runCodelet_LayerNormMoments
#define MOMENTS_ROWS $m4
#define MOMENTS_WIDTH $m5
#endif
// Output moments, source, [right, residual output], rows, local width.
	.text
	.allow_optimizations
	.section .text.MOMENTS_SYMBOL,"ax",@progbits
	.globl MOMENTS_SYMBOL
	.p2align 2
	.type MOMENTS_SYMBOL,@function
MOMENTS_SYMBOL:
	.supervisor
	add $m11, $m11, -128
	st32 $m3, $m11, $m15, 0
	st32 $m2, $m11, $m15, 1
	st32 MOMENTS_WIDTH, $m11, $m15, 2
	add $m0, $m11, 32
	st32 $m0, $m11, $m15, 3
	#ifdef NORM_STORE_SUM
	st32 $m4, $m11, $m15, 5
	st32 $m5, $m11, $m15, 6
#endif
	setzi $m0, MOMENTS_VERTEX
.Lwrap6_row:
	setzi $m1, 0
.Lwrap6_stage:
	st32 $m1, $m11, $m15, 4
	runall $m0, $m11, 0
	sync TEXCH_SYNCZONE_LOCAL
	add $m1, $m1, 1
	cmpeq $m2, $m1, 3
	brz $m2, .Lwrap6_stage
	ld32 $m3, $m11, $m15, 0
	shl $m2, MOMENTS_WIDTH, 1
	add $m3, $m3, $m2
	st32 $m3, $m11, $m15, 0
#ifdef NORM_STORE_SUM
	ld32 $m3, $m11, $m15, 5
	add $m3, $m3, $m2
	st32 $m3, $m11, $m15, 5
	ld32 $m3, $m11, $m15, 6
	add $m3, $m3, $m2
	st32 $m3, $m11, $m15, 6
#endif
	ld32 $m2, $m11, $m15, 1
	add $m2, $m2, 8
	st32 $m2, $m11, $m15, 1
	sub MOMENTS_ROWS, MOMENTS_ROWS, 1
	brnz MOMENTS_ROWS, .Lwrap6_row
	add $m11, $m11, 128
	br $m10
	.size MOMENTS_SYMBOL, .-MOMENTS_SYMBOL

#undef NORM_STORE_SUM
#undef MOMENTS_SYMBOL
#undef MOMENTS_VERTEX
#undef MOMENTS_ROWS
#undef MOMENTS_WIDTH
#undef NORM_FP8
#undef NORM_WITH_ADD
#undef NORM_SYMBOL
#undef NORM_VERTEX
#undef NORM_ROWS
#undef NORM_WIDTH
#undef NORM_GAMMA
#undef NORM_BETA
#undef NORM_SHIFT
#undef NORM_STACK
#undef NORM_SCRATCH
#include "/srv/home/gc-sdk/ipu-stack/device/gelu_f8.S"
