-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathfp_op.asm
114 lines (103 loc) · 2 KB
/
fp_op.asm
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
.fun mul_f32 NORMAL [] = [S32 R32 R32 R32]
.reg U32 [tmp]
.reg R32 [dst expected src1 src2]
.bbl prolog
poparg testno:S32
poparg expected
poparg src1
poparg src2
mul dst src1 src2
beq dst expected ok
pusharg testno
bsr print_d_ln
bitcast tmp expected
pusharg tmp
bsr print_x_ln
bitcast tmp dst
pusharg tmp
bsr print_x_ln
.bbl ok
ret
.fun copysign_f32 NORMAL [] = [S32 R32 R32 R32]
.reg U32 [tmp]
.reg R32 [dst expected src1 src2]
.bbl prolog
poparg testno:S32
poparg expected
poparg src1
poparg src2
copysign dst src1 src2
beq dst expected ok
pusharg testno
bsr print_d_ln
bitcast tmp expected
pusharg tmp
bsr print_x_ln
bitcast tmp dst
pusharg tmp
bsr print_x_ln
trap
.bbl ok
ret
.fun abs_f32 NORMAL [] = [S32 R32 R32]
.reg U32 [tmp]
.reg R32 [dst expected src]
.bbl prolog
poparg testno:S32
poparg expected
poparg src
copysign dst src 0.0
beq dst expected ok
pusharg testno
bsr print_d_ln
bitcast tmp expected
pusharg tmp
bsr print_x_ln
bitcast tmp dst
pusharg tmp
bsr print_x_ln
trap
.bbl ok
ret
# ========================================
.fun main NORMAL [S32] = []
.bbl prolog
pusharg 0.4:R32
pusharg 0.0:R32
pusharg 0.0:R32
pusharg 101:S32
bsr mul_f32
pusharg -4.0:R32
pusharg -4.0:R32
pusharg 16.0:R32
pusharg 102:S32
bsr mul_f32
##########
pusharg 0.0:R32
pusharg 0.0:R32
pusharg 0.0:R32
pusharg 201:S32
bsr copysign_f32
pusharg 0.0:R32
pusharg -6.0:R32
pusharg 6.0:R32
pusharg 202:S32
bsr copysign_f32
pusharg 0.0:R32
pusharg 6.0:R32
pusharg 6.0:R32
pusharg 203:S32
bsr copysign_f32
##########
pusharg -66.0:R32
pusharg 66.0:R32
pusharg 301:S32
bsr abs_f32
pusharg 66.0:R32
pusharg 66.0:R32
pusharg 302:S32
bsr abs_f32
pusharg 666:S32
bsr print_d_ln
pusharg 0:S32
ret