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 RV32D 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	fld		ft1, (s2)
27	fld		ft1, -0x4(s2)
28	fld		ft1, 0x42(s2)
29	fsd		ft1, (s2)
30	fsd		ft1, -0x4(s2)
31	fsd		ft1, 0x42(s2)
32
33	fmadd.d		ft1, ft2, ft3, ft4
34	fmadd.d		ft1, ft2, ft3, ft4, rne
35	fmadd.d		ft1, ft2, ft3, ft4, rtz
36	fmadd.d		ft1, ft2, ft3, ft4, rdn
37	fmadd.d		ft1, ft2, ft3, ft4, rup
38	fmadd.d		ft1, ft2, ft3, ft4, rmm
39
40	fmsub.d		ft1, ft2, ft3, ft4
41	fmsub.d		ft1, ft2, ft3, ft4, rne
42	fmsub.d		ft1, ft2, ft3, ft4, rtz
43	fmsub.d		ft1, ft2, ft3, ft4, rdn
44	fmsub.d		ft1, ft2, ft3, ft4, rup
45	fmsub.d		ft1, ft2, ft3, ft4, rmm
46
47	fnmsub.d	ft1, ft2, ft3, ft4
48	fnmsub.d	ft1, ft2, ft3, ft4, rne
49	fnmsub.d	ft1, ft2, ft3, ft4, rtz
50	fnmsub.d	ft1, ft2, ft3, ft4, rdn
51	fnmsub.d	ft1, ft2, ft3, ft4, rup
52	fnmsub.d	ft1, ft2, ft3, ft4, rmm
53
54	fnmadd.d	ft1, ft2, ft3, ft4
55	fnmadd.d	ft1, ft2, ft3, ft4, rne
56	fnmadd.d	ft1, ft2, ft3, ft4, rtz
57	fnmadd.d	ft1, ft2, ft3, ft4, rdn
58	fnmadd.d	ft1, ft2, ft3, ft4, rup
59	fnmadd.d	ft1, ft2, ft3, ft4, rmm
60
61	fadd.d		fs0, fs1, fs2
62	fadd.d		fs1, fs2, fs3, rne
63	fadd.d		fs2, fs3, fs4, rtz
64	fadd.d		fs3, fs4, fs5, rdn
65	fadd.d		fs4, fs5, fs6, rup
66	fadd.d		fs5, fs6, fs7, rmm
67
68	fsub.d		fs0, fs1, fs2
69	fsub.d		fs1, fs2, fs3, rne
70	fsub.d		fs2, fs3, fs4, rtz
71	fsub.d		fs3, fs4, fs5, rdn
72	fsub.d		fs4, fs5, fs6, rup
73	fsub.d		fs5, fs6, fs7, rmm
74
75	fmul.d		fs0, fs1, fs2
76	fmul.d		fs1, fs2, fs3, rne
77	fmul.d		fs2, fs3, fs4, rtz
78	fmul.d		fs3, fs4, fs5, rdn
79	fmul.d		fs4, fs5, fs6, rup
80	fmul.d		fs5, fs6, fs7, rmm
81
82	fdiv.d		fs0, fs1, fs2
83	fdiv.d		fs1, fs2, fs3, rne
84	fdiv.d		fs2, fs3, fs4, rtz
85	fdiv.d		fs3, fs4, fs5, rdn
86	fdiv.d		fs4, fs5, fs6, rup
87	fdiv.d		fs5, fs6, fs7, rmm
88
89	fsqrt.d		fs0, fs1
90	fsqrt.d		fs1, fs2, rne
91	fsqrt.d		fs2, fs3, rtz
92	fsqrt.d		fs3, fs4, rdn
93	fsqrt.d		fs4, fs5, rup
94	fsqrt.d		fs5, fs6, rmm
95
96	fsgnj.d		fa0, fa1, fa2
97	fsgnjn.d	fa0, fa1, fa2
98	fsgnjx.d	fa0, fa1, fa2
99	fmin.d		fa0, fa1, fa2
100	fmax.d		fa0, fa1, fa2
101
102	fcvt.s.d	fs0, fs1
103	fcvt.s.d	fs1, fs2, rne
104	fcvt.s.d	fs2, fs3, rtz
105	fcvt.s.d	fs3, fs4, rdn
106	fcvt.s.d	fs4, fs5, rup
107	fcvt.s.d	fs5, fs6, rmm
108
109	fcvt.d.s	fa0, fa1
110
111	feq.d		a0, ft8, ft7
112	flt.d		a1, ft8, ft7
113	fle.d		a2, ft8, ft7
114	fclass.d	a3, ft8
115
116	fcvt.w.d	t0, ft1
117	fcvt.w.d	t1, ft2, rne
118	fcvt.w.d	t2, ft3, rtz
119	fcvt.w.d	t3, ft4, rdn
120	fcvt.w.d	t4, ft5, rup
121	fcvt.w.d	t5, ft6, rmm
122
123	fcvt.wu.d	t0, ft1
124	fcvt.wu.d	t1, ft2, rne
125	fcvt.wu.d	t2, ft3, rtz
126	fcvt.wu.d	t3, ft4, rdn
127	fcvt.wu.d	t4, ft5, rup
128	fcvt.wu.d	t5, ft6, rmm
129
130	fcvt.d.w	ft1, t2
131	fcvt.d.wu	ft1, t2
132.size libdis_test, [.-libdis_test]
133