Five fixes, for fcsel, fcvtz, fminnm, mls, and non-widening mul.
[external/binutils.git] / sim / testsuite / sim / aarch64 / fcvtz.s
1 # mach: aarch64
2
3 # Check the FP convert to int round toward zero instructions: fcvtszs32,
4 # fcvtszs, fcvtszd32, fcvtszd, fcvtzu.
5 # For 32-bit signed convert, test values -1.5, INT_MAX, and INT_MIN.
6 # For 64-bit signed convert, test values -1.5, LONG_MAX, and LONG_MIN.
7 # For 32-bit unsigned convert, test values 1.5, INT_MAX, and UINT_MAX.
8 # For 64-bit unsigned convert, test values 1.5, LONG_MAX, and ULONG_MAX.
9
10         .data
11 fm1p5:
12         .word   3217031168
13 fimax:
14         .word   1325400064
15 fimin:
16         .word   3472883712
17 flmax:
18         .word   1593835520
19 flmin:
20         .word   3741319168
21 f1p5:
22         .word   1069547520
23 fuimax:
24         .word   1333788672
25 fulmax:
26         .word   1602224128
27
28 dm1p5:
29         .word   0
30         .word   -1074266112
31 dimax:
32         .word   4290772992
33         .word   1105199103
34 dimin:
35         .word   0
36         .word   -1042284544
37 dlmax:
38         .word   0
39         .word   1138753536
40 dlmin:
41         .word   0
42         .word   -1008730112
43 d1p5:
44         .word   0
45         .word   1073217536
46 duimax:
47         .word   4292870144
48         .word   1106247679
49 dulmax:
50         .word   0
51         .word   1139802112
52
53 .include "testutils.inc"
54
55         start
56         adrp x0, fm1p5
57         ldr s0, [x0, #:lo12:fm1p5]
58         fcvtzs w1, s0
59         cmp w1, #-1
60         bne .Lfailure
61         adrp x0, fimax
62         ldr s0, [x0, #:lo12:fimax]
63         fcvtzs w1, s0
64         mov w2, #0x7fffffff
65         cmp w1, w2
66         bne .Lfailure
67         adrp x0, fimin
68         ldr s0, [x0, #:lo12:fimin]
69         fcvtzs w1, s0
70         mov w2, #0x80000000
71         cmp w1, w2
72         bne .Lfailure
73
74         adrp x0, fm1p5
75         ldr s0, [x0, #:lo12:fm1p5]
76         fcvtzs x1, s0
77         cmp x1, #-1
78         bne .Lfailure
79         adrp x0, flmax
80         ldr s0, [x0, #:lo12:flmax]
81         fcvtzs x1, s0
82         mov x2, #0x7fffffffffffffff
83         cmp x1, x2
84         bne .Lfailure
85         adrp x0, flmin
86         ldr s0, [x0, #:lo12:flmin]
87         fcvtzs x1, s0
88         mov x2, #0x8000000000000000
89         cmp x1, x2
90         bne .Lfailure
91
92         adrp x0, dm1p5
93         ldr d0, [x0, #:lo12:dm1p5]
94         fcvtzs w1, d0
95         cmp w1, #-1
96         bne .Lfailure
97         adrp x0, dimax
98         ldr d0, [x0, #:lo12:dimax]
99         fcvtzs w1, d0
100         mov w2, #0x7fffffff
101         cmp w1, w2
102         bne .Lfailure
103         adrp x0, dimin
104         ldr d0, [x0, #:lo12:dimin]
105         fcvtzs w1, d0
106         mov w2, #0x80000000
107         cmp w1, w2
108         bne .Lfailure
109
110         adrp x0, dm1p5
111         ldr d0, [x0, #:lo12:dm1p5]
112         fcvtzs x1, d0
113         cmp x1, #-1
114         bne .Lfailure
115         adrp x0, dlmax
116         ldr d0, [x0, #:lo12:dlmax]
117         fcvtzs x1, d0
118         mov x2, #0x7fffffffffffffff
119         cmp x1, x2
120         bne .Lfailure
121         adrp x0, dlmin
122         ldr d0, [x0, #:lo12:dlmin]
123         fcvtzs x1, d0
124         mov x2, #0x8000000000000000
125         cmp x1, x2
126         bne .Lfailure
127
128         adrp x0, f1p5
129         ldr s0, [x0, #:lo12:f1p5]
130         fcvtzu w1, s0
131         cmp w1, #1
132         bne .Lfailure
133         adrp x0, fimax
134         ldr s0, [x0, #:lo12:fimax]
135         fcvtzu w1, s0
136         mov w2, #0x80000000
137         cmp w1, w2
138         bne .Lfailure
139         adrp x0, fuimax
140         ldr s0, [x0, #:lo12:fuimax]
141         fcvtzu w1, s0
142         mov w2, #0xffffffff
143         cmp w1, w2
144         bne .Lfailure
145
146         adrp x0, f1p5
147         ldr s0, [x0, #:lo12:f1p5]
148         fcvtzu x1, s0
149         cmp x1, #1
150         bne .Lfailure
151         adrp x0, flmax
152         ldr s0, [x0, #:lo12:flmax]
153         fcvtzu x1, s0
154         mov x2, #0x8000000000000000
155         cmp x1, x2
156         bne .Lfailure
157         adrp x0, fulmax
158         ldr s0, [x0, #:lo12:fulmax]
159         fcvtzu x1, s0
160         mov x2, #0xffffffffffffffff
161         cmp x1, x2
162         bne .Lfailure
163
164         adrp x0, d1p5
165         ldr d0, [x0, #:lo12:d1p5]
166         fcvtzu w1, d0
167         cmp w1, #1
168         bne .Lfailure
169         adrp x0, dimax
170         ldr d0, [x0, #:lo12:dimax]
171         fcvtzu w1, d0
172         mov w2, #0x7fffffff
173         cmp w1, w2
174         bne .Lfailure
175         adrp x0, duimax
176         ldr d0, [x0, #:lo12:duimax]
177         fcvtzu w1, d0
178         mov w2, #0xffffffff
179         cmp w1, w2
180         bne .Lfailure
181
182         adrp x0, d1p5
183         ldr d0, [x0, #:lo12:d1p5]
184         fcvtzu x1, d0
185         cmp x1, #1
186         bne .Lfailure
187         adrp x0, dlmax
188         ldr d0, [x0, #:lo12:dlmax]
189         fcvtzu x1, d0
190         mov x2, #0x8000000000000000
191         cmp x1, x2
192         bne .Lfailure
193         adrp x0, dulmax
194         ldr d0, [x0, #:lo12:dulmax]
195         fcvtzu x1, d0
196         mov x2, #0xffffffffffffffff
197         cmp x1, x2
198         bne .Lfailure
199
200         pass
201 .Lfailure:
202         fail