1 /*
2 * This file and its contents are supplied under the terms of the
3 * Common Development and Distribution License ("CDDL"), version 1.0.
4 * You may only use this file in accordance with the terms of version
5 * 1.0 of the CDDL.
6 *
7 * A full copy of the text of the CDDL should have accompanied this
8 * source. A copy of the CDDL is also available via the Internet at
9 * http://www.illumos.org/license/CDDL.
10 */
11
12 /*
13 * Copyright 2018, Joyent, Inc.
14 */
15
16 /*
17 * Test our disassembly of the RV32F instructions. Instructions are ordered per
18 * the ISA manual.
19 */
20
21 .text
22 .align 16
23 .globl libdis_test
24 .type libdis_test, @function
25 libdis_test:
26 flw ft1, (s2)
27 flw ft1, -0x4(s2)
28 flw ft1, 0x42(s2)
29 fsw ft1, (s2)
30 fsw ft1, -0x4(s2)
31 fsw ft1, 0x42(s2)
32
33 fmadd.s ft1, ft2, ft3, ft4
34 fmadd.s ft1, ft2, ft3, ft4, rne
35 fmadd.s ft1, ft2, ft3, ft4, rtz
36 fmadd.s ft1, ft2, ft3, ft4, rdn
37 fmadd.s ft1, ft2, ft3, ft4, rup
38 fmadd.s ft1, ft2, ft3, ft4, rmm
39
40 fmsub.s ft1, ft2, ft3, ft4
41 fmsub.s ft1, ft2, ft3, ft4, rne
42 fmsub.s ft1, ft2, ft3, ft4, rtz
43 fmsub.s ft1, ft2, ft3, ft4, rdn
44 fmsub.s ft1, ft2, ft3, ft4, rup
45 fmsub.s ft1, ft2, ft3, ft4, rmm
46
47 fnmsub.s ft1, ft2, ft3, ft4
48 fnmsub.s ft1, ft2, ft3, ft4, rne
49 fnmsub.s ft1, ft2, ft3, ft4, rtz
50 fnmsub.s ft1, ft2, ft3, ft4, rdn
51 fnmsub.s ft1, ft2, ft3, ft4, rup
52 fnmsub.s ft1, ft2, ft3, ft4, rmm
53
54 fnmadd.s ft1, ft2, ft3, ft4
55 fnmadd.s ft1, ft2, ft3, ft4, rne
56 fnmadd.s ft1, ft2, ft3, ft4, rtz
57 fnmadd.s ft1, ft2, ft3, ft4, rdn
58 fnmadd.s ft1, ft2, ft3, ft4, rup
59 fnmadd.s ft1, ft2, ft3, ft4, rmm
60
61 fadd.s fs0, fs1, fs2
62 fadd.s fs1, fs2, fs3, rne
63 fadd.s fs2, fs3, fs4, rtz
64 fadd.s fs3, fs4, fs5, rdn
65 fadd.s fs4, fs5, fs6, rup
66 fadd.s fs5, fs6, fs7, rmm
67
68 fsub.s fs0, fs1, fs2
69 fsub.s fs1, fs2, fs3, rne
70 fsub.s fs2, fs3, fs4, rtz
71 fsub.s fs3, fs4, fs5, rdn
72 fsub.s fs4, fs5, fs6, rup
73 fsub.s fs5, fs6, fs7, rmm
74
75 fmul.s fs0, fs1, fs2
76 fmul.s fs1, fs2, fs3, rne
77 fmul.s fs2, fs3, fs4, rtz
78 fmul.s fs3, fs4, fs5, rdn
79 fmul.s fs4, fs5, fs6, rup
80 fmul.s fs5, fs6, fs7, rmm
81
82 fdiv.s fs0, fs1, fs2
83 fdiv.s fs1, fs2, fs3, rne
84 fdiv.s fs2, fs3, fs4, rtz
85 fdiv.s fs3, fs4, fs5, rdn
86 fdiv.s fs4, fs5, fs6, rup
87 fdiv.s fs5, fs6, fs7, rmm
88
89 fsqrt.s fs0, fs1
90 fsqrt.s fs1, fs2, rne
91 fsqrt.s fs2, fs3, rtz
92 fsqrt.s fs3, fs4, rdn
93 fsqrt.s fs4, fs5, rup
94 fsqrt.s fs5, fs6, rmm
95
96 fsgnj.s fa0, fa1, fa2
97 fsgnjn.s fa0, fa1, fa2
98 fsgnjx.s fa0, fa1, fa2
99 fmin.s fa0, fa1, fa2
100 fmax.s fa0, fa1, fa2
101
102 fcvt.w.s t0, ft1
103 fcvt.w.s t1, ft2, rne
104 fcvt.w.s t2, ft3, rtz
105 fcvt.w.s t3, ft4, rdn
106 fcvt.w.s t4, ft5, rup
107 fcvt.w.s t5, ft6, rmm
108
109 fcvt.wu.s t0, ft1
110 fcvt.wu.s t1, ft2, rne
111 fcvt.wu.s t2, ft3, rtz
112 fcvt.wu.s t3, ft4, rdn
113 fcvt.wu.s t4, ft5, rup
114 fcvt.wu.s t5, ft6, rmm
115
116 fmv.x.w t0, ft1
117 feq.s a0, ft8, ft7
118 flt.s a1, ft8, ft7
119 fle.s a2, ft8, ft7
120 fclass.s a3, ft8
121
122 fcvt.s.w ft1, t2
123 fcvt.s.w ft2, t3, rne
124 fcvt.s.w ft3, t4, rtz
125 fcvt.s.w ft4, t5, rdn
126 fcvt.s.w ft5, t6, rup
127 fcvt.s.w ft6, t6, rmm
128
129 fcvt.s.wu ft1, t2
130 fcvt.s.wu ft2, t3, rne
131 fcvt.s.wu ft3, t4, rtz
132 fcvt.s.wu ft4, t5, rdn
133 fcvt.s.wu ft5, t6, rup
134 fcvt.s.wu ft6, t6, rmm
135
136 fmv.w.x fs10, s10
137 .size libdis_test, [.-libdis_test]