Home | History | Annotate | Download | only in Mips
      1 # RUN: llvm-mc  %s -triple=mipsel-unknown-linux -show-encoding -mcpu=mips32r2 | FileCheck %s
      2 # Check that the assembler can handle the documented syntax
      3 # for FPU instructions.
      4 #------------------------------------------------------------------------------
      5 # FP aritmetic  instructions
      6 #------------------------------------------------------------------------------
      7 
      8 # CHECK:  abs.d      $f12, $f14         # encoding: [0x05,0x73,0x20,0x46]
      9 # CHECK:  abs.s      $f6, $f7           # encoding: [0x85,0x39,0x00,0x46]
     10 # CHECK:  add.d      $f8, $f12, $f14    # encoding: [0x00,0x62,0x2e,0x46]
     11 # CHECK:  add.s      $f9, $f6, $f7      # encoding: [0x40,0x32,0x07,0x46]
     12 # CHECK:  floor.w.d  $f12, $f14         # encoding: [0x0f,0x73,0x20,0x46]
     13 # CHECK:  floor.w.s  $f6, $f7           # encoding: [0x8f,0x39,0x00,0x46]
     14 # CHECK:  ceil.w.d   $f12, $f14         # encoding: [0x0e,0x73,0x20,0x46]
     15 # CHECK:  ceil.w.s   $f6, $f7           # encoding: [0x8e,0x39,0x00,0x46]
     16 # CHECK:  mul.d      $f8, $f12, $f14    # encoding: [0x02,0x62,0x2e,0x46]
     17 # CHECK:  mul.s      $f9, $f6, $f7      # encoding: [0x42,0x32,0x07,0x46]
     18 # CHECK:  neg.d      $f12, $f14         # encoding: [0x07,0x73,0x20,0x46]
     19 # CHECK:  neg.s      $f6, $f7           # encoding: [0x87,0x39,0x00,0x46]
     20 # CHECK:  round.w.d  $f12, $f14         # encoding: [0x0c,0x73,0x20,0x46]
     21 # CHECK:  round.w.s  $f6, $f7           # encoding: [0x8c,0x39,0x00,0x46]
     22 # CHECK:  sqrt.d     $f12, $f14         # encoding: [0x04,0x73,0x20,0x46]
     23 # CHECK:  sqrt.s     $f6, $f7           # encoding: [0x84,0x39,0x00,0x46]
     24 # CHECK:  sub.d      $f8, $f12, $f14    # encoding: [0x01,0x62,0x2e,0x46]
     25 # CHECK:  sub.s      $f9, $f6, $f7      # encoding: [0x41,0x32,0x07,0x46]
     26 # CHECK:  trunc.w.d  $f12, $f14         # encoding: [0x0d,0x73,0x20,0x46]
     27 # CHECK:  trunc.w.s  $f6, $f7           # encoding: [0x8d,0x39,0x00,0x46]
     28 
     29     abs.d      $f12,$f14
     30     abs.s      $f6,$f7
     31     add.d      $f8,$f12,$f14
     32     add.s      $f9,$f6,$f7
     33     floor.w.d  $f12,$f14
     34     floor.w.s  $f6,$f7
     35     ceil.w.d   $f12,$f14
     36     ceil.w.s   $f6,$f7
     37     mul.d      $f8,$f12,$f14
     38     mul.s      $f9,$f6, $f7
     39     neg.d      $f12,$f14
     40     neg.s      $f6,$f7
     41     round.w.d  $f12,$f14
     42     round.w.s  $f6,$f7
     43     sqrt.d     $f12,$f14
     44     sqrt.s     $f6,$f7
     45     sub.d      $f8,$f12,$f14
     46     sub.s      $f9,$f6,$f7
     47     trunc.w.d  $f12,$f14
     48     trunc.w.s  $f6,$f7
     49 
     50 #------------------------------------------------------------------------------
     51 # FP compare instructions
     52 #------------------------------------------------------------------------------
     53 
     54 # CHECK:  c.eq.d    $f12, $f14        # encoding: [0x32,0x60,0x2e,0x46]
     55 # CHECK:  c.eq.s    $f6, $f7          # encoding: [0x32,0x30,0x07,0x46]
     56 # CHECK:  c.f.d     $f12, $f14        # encoding: [0x30,0x60,0x2e,0x46]
     57 # CHECK:  c.f.s     $f6, $f7          # encoding: [0x30,0x30,0x07,0x46]
     58 # CHECK:  c.le.d    $f12, $f14        # encoding: [0x3e,0x60,0x2e,0x46]
     59 # CHECK:  c.le.s    $f6, $f7          # encoding: [0x3e,0x30,0x07,0x46]
     60 # CHECK:  c.lt.d    $f12, $f14        # encoding: [0x3c,0x60,0x2e,0x46]
     61 # CHECK:  c.lt.s    $f6, $f7          # encoding: [0x3c,0x30,0x07,0x46]
     62 # CHECK:  c.nge.d   $f12, $f14        # encoding: [0x3d,0x60,0x2e,0x46]
     63 # CHECK:  c.nge.s   $f6, $f7          # encoding: [0x3d,0x30,0x07,0x46]
     64 # CHECK:  c.ngl.d   $f12, $f14        # encoding: [0x3b,0x60,0x2e,0x46]
     65 # CHECK:  c.ngl.s   $f6, $f7          # encoding: [0x3b,0x30,0x07,0x46]
     66 # CHECK:  c.ngle.d  $f12, $f14        # encoding: [0x39,0x60,0x2e,0x46]
     67 # CHECK:  c.ngle.s  $f6, $f7          # encoding: [0x39,0x30,0x07,0x46]
     68 # CHECK:  c.ngt.d   $f12, $f14        # encoding: [0x3f,0x60,0x2e,0x46]
     69 # CHECK:  c.ngt.s   $f6, $f7          # encoding: [0x3f,0x30,0x07,0x46]
     70 # CHECK:  c.ole.d   $f12, $f14        # encoding: [0x36,0x60,0x2e,0x46]
     71 # CHECK:  c.ole.s   $f6, $f7          # encoding: [0x36,0x30,0x07,0x46]
     72 # CHECK:  c.olt.d   $f12, $f14        # encoding: [0x34,0x60,0x2e,0x46]
     73 # CHECK:  c.olt.s   $f6, $f7          # encoding: [0x34,0x30,0x07,0x46]
     74 # CHECK:  c.seq.d   $f12, $f14        # encoding: [0x3a,0x60,0x2e,0x46]
     75 # CHECK:  c.seq.s   $f6, $f7          # encoding: [0x3a,0x30,0x07,0x46]
     76 # CHECK:  c.sf.d    $f12, $f14        # encoding: [0x38,0x60,0x2e,0x46]
     77 # CHECK:  c.sf.s    $f6, $f7          # encoding: [0x38,0x30,0x07,0x46]
     78 # CHECK:  c.ueq.d   $f12, $f14        # encoding: [0x33,0x60,0x2e,0x46]
     79 # CHECK:  c.ueq.s   $f28, $f18        # encoding: [0x33,0xe0,0x12,0x46]
     80 # CHECK:  c.ule.d   $f12, $f14        # encoding: [0x37,0x60,0x2e,0x46]
     81 # CHECK:  c.ule.s   $f6, $f7          # encoding: [0x37,0x30,0x07,0x46]
     82 # CHECK:  c.ult.d   $f12, $f14        # encoding: [0x35,0x60,0x2e,0x46]
     83 # CHECK:  c.ult.s   $f6, $f7          # encoding: [0x35,0x30,0x07,0x46]
     84 # CHECK:  c.un.d    $f12, $f14        # encoding: [0x31,0x60,0x2e,0x46]
     85 # CHECK:  c.un.s    $f6, $f7          # encoding: [0x31,0x30,0x07,0x46]
     86 
     87      c.eq.d    $f12,$f14
     88      c.eq.s    $f6,$f7
     89      c.f.d     $f12,$f14
     90      c.f.s     $f6,$f7
     91      c.le.d    $f12,$f14
     92      c.le.s    $f6,$f7
     93      c.lt.d    $f12,$f14
     94      c.lt.s    $f6,$f7
     95      c.nge.d   $f12,$f14
     96      c.nge.s   $f6,$f7
     97      c.ngl.d   $f12,$f14
     98      c.ngl.s   $f6,$f7
     99      c.ngle.d  $f12,$f14
    100      c.ngle.s  $f6,$f7
    101      c.ngt.d   $f12,$f14
    102      c.ngt.s   $f6,$f7
    103      c.ole.d   $f12,$f14
    104      c.ole.s   $f6,$f7
    105      c.olt.d   $f12,$f14
    106      c.olt.s   $f6,$f7
    107      c.seq.d   $f12,$f14
    108      c.seq.s   $f6,$f7
    109      c.sf.d    $f12,$f14
    110      c.sf.s    $f6,$f7
    111      c.ueq.d   $f12,$f14
    112      c.ueq.s   $f28,$f18
    113      c.ule.d   $f12,$f14
    114      c.ule.s   $f6,$f7
    115      c.ult.d   $f12,$f14
    116      c.ult.s   $f6,$f7
    117      c.un.d    $f12,$f14
    118      c.un.s    $f6,$f7
    119 
    120 #------------------------------------------------------------------------------
    121 # FP convert instructions
    122 #------------------------------------------------------------------------------
    123 # CHECK:  cvt.d.s   $f6, $f7          # encoding: [0xa1,0x39,0x00,0x46]
    124 # CHECK:  cvt.d.w   $f12, $f14        # encoding: [0x21,0x73,0x80,0x46]
    125 # CHECK:  cvt.s.d   $f12, $f14        # encoding: [0x20,0x73,0x20,0x46]
    126 # CHECK:  cvt.s.w   $f6, $f7          # encoding: [0xa0,0x39,0x80,0x46]
    127 # CHECK:  cvt.w.d   $f12, $f14        # encoding: [0x24,0x73,0x20,0x46]
    128 # CHECK:  cvt.w.s   $f6, $f7          # encoding: [0xa4,0x39,0x00,0x46]
    129 
    130   cvt.d.s   $f6,$f7
    131   cvt.d.w   $f12,$f14
    132   cvt.s.d   $f12,$f14
    133   cvt.s.w   $f6,$f7
    134   cvt.w.d   $f12,$f14
    135   cvt.w.s   $f6,$f7
    136 
    137 #------------------------------------------------------------------------------
    138 # FP move instructions
    139 #------------------------------------------------------------------------------
    140 
    141 # CHECK:  cfc1    $6, $0               # encoding: [0x00,0x00,0x46,0x44]
    142 # CHECK:  ctc1    $10, $31             # encoding: [0x00,0xf8,0xca,0x44]
    143 # CHECK:  mfc1    $6, $f7              # encoding: [0x00,0x38,0x06,0x44]
    144 # CHECK:  mfhi    $5                   # encoding: [0x10,0x28,0x00,0x00]
    145 # CHECK:  mflo    $5                   # encoding: [0x12,0x28,0x00,0x00]
    146 # CHECK:  mov.d   $f6, $f8             # encoding: [0x86,0x41,0x20,0x46]
    147 # CHECK:  mov.s   $f6, $f7             # encoding: [0x86,0x39,0x00,0x46]
    148 # CHECK:  mtc1    $6, $f7              # encoding: [0x00,0x38,0x86,0x44]
    149 # CHECK:  mthi    $7                   # encoding: [0x11,0x00,0xe0,0x00]
    150 # CHECK:  mtlo    $7                   # encoding: [0x13,0x00,0xe0,0x00]
    151 # CHECK:  swc1    $f9, 9158($7)        # encoding: [0xc6,0x23,0xe9,0xe4]
    152 # CHECK:  mfc0    $6, $7, 0               # encoding: [0x00,0x38,0x06,0x40]
    153 # CHECK:  mtc0    $9, $8, 0               # encoding: [0x00,0x40,0x89,0x40]
    154 # CHECK:  mfc2    $5, $7, 0               # encoding: [0x00,0x38,0x05,0x48]
    155 # CHECK:  mtc2    $9, $4, 0               # encoding: [0x00,0x20,0x89,0x48]
    156 # CHECK:  mfc0    $6, $7, 2               # encoding: [0x02,0x38,0x06,0x40]
    157 # CHECK:  mtc0    $9, $8, 3               # encoding: [0x03,0x40,0x89,0x40]
    158 # CHECK:  mfc2    $5, $7, 4               # encoding: [0x04,0x38,0x05,0x48]
    159 # CHECK:  mtc2    $9, $4, 5               # encoding: [0x05,0x20,0x89,0x48]
    160 # CHECK:  movf    $2, $1, $fcc0           # encoding: [0x01,0x10,0x20,0x00]
    161 # CHECK:  movt    $2, $1, $fcc0           # encoding: [0x01,0x10,0x21,0x00]
    162 # CHECK:  movt    $4, $5, $fcc4           # encoding: [0x01,0x20,0xb1,0x00]
    163 # CHECK:  movf.d  $f4, $f6, $fcc2         # encoding: [0x11,0x31,0x28,0x46]
    164 # CHECK:  movf.s  $f4, $f6, $fcc5         # encoding: [0x11,0x31,0x14,0x46]
    165 # CHECK:  luxc1   $f0, $6($5)             # encoding: [0x05,0x00,0xa6,0x4c]
    166 # CHECK:  suxc1   $f4, $24($5)            # encoding: [0x0d,0x20,0xb8,0x4c]
    167 
    168    cfc1    $a2,$0
    169    ctc1    $10,$31
    170    mfc1    $a2,$f7
    171    mfhi    $a1
    172    mflo    $a1
    173    mov.d   $f6,$f8
    174    mov.s   $f6,$f7
    175    mtc1    $a2,$f7
    176    mthi    $a3
    177    mtlo    $a3
    178    swc1    $f9,9158($a3)
    179    mfc0    $6, $7
    180    mtc0    $9, $8
    181    mfc2    $5, $7
    182    mtc2    $9, $4
    183    mfc0    $6, $7, 2
    184    mtc0    $9, $8, 3
    185    mfc2    $5, $7, 4
    186    mtc2    $9, $4, 5
    187    movf    $2, $1, $fcc0
    188    movt    $2, $1, $fcc0
    189    movt    $4, $5, $fcc4
    190    movf.d  $f4, $f6, $fcc2
    191    movf.s  $f4, $f6, $fcc5
    192    luxc1 $f0, $a2($a1)
    193    suxc1 $f4, $t8($a1)