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]