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