1a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham%verify "executed"
2a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham%include "mips/unflopWide.S" {"instr":"b d2l_doconv", "st_result":"STORE64(rRESULT0, rRESULT1, rOBJ)"}
3a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham%break
4a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham
5a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandhamd2l_doconv:
6a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham#ifdef SOFT_FLOAT
7a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    la        t0, .LDOUBLE_TO_LONG_max
8a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    LOAD64(rARG2, rARG3, t0)
9a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    move      rBIX, rARG0                  #  save a0
10a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    move      rTEMP, rARG1                 #  and a1
11a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    JAL(__gedf2)
12a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham
13a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    move      t1, v0
14a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    la        t0, .LDOUBLE_TO_LONG_ret_max
15a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    LOAD64(rRESULT0, rRESULT1, t0)
16a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    bgez      t1, .L${opcode}_set_vreg
17a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham
18a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    move      rARG0, rBIX
19a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    move      rARG1, rTEMP
20a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    la        t0, .LDOUBLE_TO_LONG_min
21a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    LOAD64(rARG2, rARG3, t0)
22a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    JAL(__ledf2)
23a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham
24a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    move      t1, v0
25a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    la        t0, .LDOUBLE_TO_LONG_ret_min
26a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    LOAD64(rRESULT0, rRESULT1, t0)
27a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    blez      t1, .L${opcode}_set_vreg
28a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham
29a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    move      rARG0, rBIX
30a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    move      rARG1, rTEMP
31a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    move      rARG2, rBIX
32a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    move      rARG3, rTEMP
33a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    JAL(__nedf2)
34a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham
35a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    move      t0, v0
36a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    li        rRESULT0, 0
37a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    li        rRESULT1, 0
38a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    bnez      t0, .L${opcode}_set_vreg
39a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham
40a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    move      rARG0, rBIX
41a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    move      rARG1, rTEMP
42a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    JAL(__fixdfdi)
43a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham
44a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham#else
45a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    la        t0, .LDOUBLE_TO_LONG_max
46a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    LOAD64_F(fa1, fa1f, t0)
47a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    c.ole.d   fcc0, fa1, fa0
48a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    la        t0, .LDOUBLE_TO_LONG_ret_max
49a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    LOAD64(rRESULT0, rRESULT1, t0)
50a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    bc1t      .L${opcode}_set_vreg
51a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham
52a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    la        t0, .LDOUBLE_TO_LONG_min
53a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    LOAD64_F(fa1, fa1f, t0)
54a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    c.ole.d   fcc0, fa0, fa1
55a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    la        t0, .LDOUBLE_TO_LONG_ret_min
56a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    LOAD64(rRESULT0, rRESULT1, t0)
57a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    bc1t      .L${opcode}_set_vreg
58a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham
59a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    mov.d     fa1, fa0
60a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    c.un.d    fcc0, fa0, fa1
61a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    li        rRESULT0, 0
62a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    li        rRESULT1, 0
63a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    bc1t      .L${opcode}_set_vreg
64a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    JAL(__fixdfdi)
65a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham#endif
66a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    b         .L${opcode}_set_vreg
67a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham
68a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham
69a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham.LDOUBLE_TO_LONG_max:
70a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    .dword 0x43e0000000000000              #  maxlong, as a double (high word)
71a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham.LDOUBLE_TO_LONG_min:
72a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    .dword 0xc3e0000000000000              #  minlong, as a double (high word)
73a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham.LDOUBLE_TO_LONG_ret_max:
74a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    .dword 0x7fffffffffffffff
75a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham.LDOUBLE_TO_LONG_ret_min:
76a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham    .dword 0x8000000000000000
77