Home | History | Annotate | Download | only in mips
      1 %verify "executed"
      2 %include "mips/unflopWider.S" {"instr":"b f2l_doconv", "instr_f":"b f2l_doconv", "st_result":"STORE64(rRESULT0, rRESULT1, rOBJ)"}
      3 %break
      4 
      5 f2l_doconv:
      6 #ifdef SOFT_FLOAT
      7     li        a1, 0x5f000000
      8     move      rBIX, a0
      9     JAL(__gesf2)
     10 
     11     move      t0, v0
     12     li        rRESULT0, ~0
     13     li        rRESULT1, ~0x80000000
     14     bgez      t0, .L${opcode}_set_vreg
     15 
     16     move      a0, rBIX
     17     li        a1, 0xdf000000
     18     JAL(__lesf2)
     19 
     20     move      t0, v0
     21     li        rRESULT0, 0
     22     li        rRESULT1, 0x80000000
     23     blez      t0, .L${opcode}_set_vreg
     24 
     25     move      a0, rBIX
     26     move      a1, rBIX
     27     JAL(__nesf2)
     28 
     29     move      t0, v0
     30     li        rRESULT0, 0
     31     li        rRESULT1, 0
     32     bnez      t0, .L${opcode}_set_vreg
     33 
     34     move      a0, rBIX
     35     JAL(__fixsfdi)
     36 
     37 #else
     38     l.s       fa1, .LLONG_TO_max
     39     c.ole.s   fcc0, fa1, fa0
     40     li        rRESULT0, ~0
     41     li        rRESULT1, ~0x80000000
     42     bc1t      .L${opcode}_set_vreg
     43 
     44     l.s       fa1, .LLONG_TO_min
     45     c.ole.s   fcc0, fa0, fa1
     46     li        rRESULT0, 0
     47     li        rRESULT1, 0x80000000
     48     bc1t      .L${opcode}_set_vreg
     49 
     50     mov.s     fa1, fa0
     51     c.un.s    fcc0, fa0, fa1
     52     li        rRESULT0, 0
     53     li        rRESULT1, 0
     54     bc1t      .L${opcode}_set_vreg
     55 
     56     JAL(__fixsfdi)
     57 #endif
     58 
     59     b         .L${opcode}_set_vreg
     60 
     61 .LLONG_TO_max:
     62     .word 0x5f000000
     63 
     64 .LLONG_TO_min:
     65     .word 0xdf000000
     66