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
25libdis_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]
138