11-floatcall.s 2.88 KB
Newer Older
jhe's avatar
jhe committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
	.text
	.globl mod
	.type mod, @function
mod:
	st.d $ra, $sp, -8
	st.d $fp, $sp, -16
	addi.d $fp, $sp, 0
	addi.d $sp, $sp, -112
	fst.s $fa0, $fp, -20
	fst.s $fa1, $fp, -24
.mod_label_entry:
# %op2 = alloca float
	addi.d $t0, $fp, -36
	st.d $t0, $fp, -32
# store float %arg0, float* %op2
	ld.d $t0, $fp, -32
	fld.s $ft0, $fp, -20
	fst.s $ft0, $t0, 0
# %op3 = alloca float
	addi.d $t0, $fp, -48
	st.d $t0, $fp, -44
# store float %arg1, float* %op3
	ld.d $t0, $fp, -44
	fld.s $ft0, $fp, -24
	fst.s $ft0, $t0, 0
# %op4 = alloca i32
	addi.d $t0, $fp, -60
	st.d $t0, $fp, -56
# %op5 = load float, float* %op2
	ld.d $t0, $fp, -32
	fld.s $ft0, $t0, 0
	fst.s $ft0, $fp, -64
# %op6 = load float, float* %op3
	ld.d $t0, $fp, -44
	fld.s $ft0, $t0, 0
	fst.s $ft0, $fp, -68
# %op7 = fdiv float %op5, %op6
	fld.s $ft0, $fp, -64
	fld.s $ft1, $fp, -68
	fdiv.s $ft2, $ft0, $ft1
	fst.s $ft2, $fp, -72
# %op8 = fptosi float %op7 to i32
	fld.s $ft0, $fp, -72
	ftintrz.w.s $ft0, $ft0
	movfr2gr.s $t0, $ft0
	st.w $t0, $fp, -76
# store i32 %op8, i32* %op4
	ld.d $t0, $fp, -56
	ld.w $t1, $fp, -76
	st.w $t1, $t0, 0
# %op9 = load float, float* %op2
	ld.d $t0, $fp, -32
	fld.s $ft0, $t0, 0
	fst.s $ft0, $fp, -80
# %op10 = load i32, i32* %op4
	ld.d $t0, $fp, -56
	ld.w $t0, $t0, 0
	st.w $t0, $fp, -84
# %op11 = load float, float* %op3
	ld.d $t0, $fp, -44
	fld.s $ft0, $t0, 0
	fst.s $ft0, $fp, -88
# %op12 = sitofp i32 %op10 to float
	ld.w $t0, $fp, -84
	movgr2fr.w $ft0, $t0
	ffint.s.w $ft0, $ft0
	fst.s $ft0, $fp, -92
# %op13 = fmul float %op12, %op11
	fld.s $ft0, $fp, -92
	fld.s $ft1, $fp, -88
	fmul.s $ft2, $ft0, $ft1
	fst.s $ft2, $fp, -96
# %op14 = fsub float %op9, %op13
	fld.s $ft0, $fp, -80
	fld.s $ft1, $fp, -96
	fsub.s $ft2, $ft0, $ft1
	fst.s $ft2, $fp, -100
# ret float %op14
	fld.s $fa0, $fp, -100
	b mod_exit
mod_exit:
	addi.d $sp, $sp, 112
	ld.d $ra, $sp, -8
	ld.d $fp, $sp, -16
	jr $ra
	.globl main
	.type main, @function
main:
	st.d $ra, $sp, -8
	st.d $fp, $sp, -16
	addi.d $fp, $sp, 0
	addi.d $sp, $sp, -64
.main_label_entry:
# %op0 = alloca float
	addi.d $t0, $fp, -28
	st.d $t0, $fp, -24
# %op1 = alloca float
	addi.d $t0, $fp, -40
	st.d $t0, $fp, -36
# store float 0x4026666660000000, float* %op0
	ld.d $t0, $fp, -24
	lu12i.w $t8, 267059
	ori $t8, $t8, 819
	movgr2fr.w $ft0, $t8
	fst.s $ft0, $t0, 0
# store float 0x40019999a0000000, float* %op1
	ld.d $t0, $fp, -36
	lu12i.w $t8, 262348
	ori $t8, $t8, 3277
	movgr2fr.w $ft0, $t8
	fst.s $ft0, $t0, 0
# %op2 = load float, float* %op0
	ld.d $t0, $fp, -24
	fld.s $ft0, $t0, 0
	fst.s $ft0, $fp, -44
# %op3 = load float, float* %op1
	ld.d $t0, $fp, -36
	fld.s $ft0, $t0, 0
	fst.s $ft0, $fp, -48
# %op4 = call float @mod(float %op2, float %op3)
	fld.s $fa0, $fp, -44
	fld.s $fa1, $fp, -48
	bl mod
	fst.s $fa0, $fp, -52
# call void @outputFloat(float %op4)
	fld.s $fa0, $fp, -52
	bl outputFloat
# ret i32 0
	addi.w $a0, $zero, 0
	b main_exit
main_exit:
	addi.d $sp, $sp, 64
	ld.d $ra, $sp, -8
	ld.d $fp, $sp, -16
	jr $ra