~ubuntu-branches/debian/sid/ocaml/sid

« back to all changes in this revision

Viewing changes to testsuite/tests/asmcomp/arith.cmm

  • Committer: Bazaar Package Importer
  • Author(s): Stéphane Glondu
  • Date: 2011-04-21 21:35:08 UTC
  • mfrom: (1.1.11 upstream) (12.1.14 sid)
  • Revision ID: james.westby@ubuntu.com-20110421213508-kg34453aqmb0moha
* Fixes related to -output-obj with g++ (in debian/patches):
  - add Declare-primitive-name-table-as-const-char
  - add Avoid-multiple-declarations-in-generated-.c-files-in
  - fix Embed-bytecode-in-C-object-when-using-custom: the closing
    brace for extern "C" { ... } was missing in some cases

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
(***********************************************************************)
 
2
(*                                                                     *)
 
3
(*                           Objective Caml                            *)
 
4
(*                                                                     *)
 
5
(*            Xavier Leroy, projet Cristal, INRIA Rocquencourt         *)
 
6
(*                                                                     *)
 
7
(*  Copyright 1996 Institut National de Recherche en Informatique et   *)
 
8
(*  en Automatique.  All rights reserved.  This file is distributed    *)
 
9
(*  under the terms of the Q Public License version 1.0.               *)
 
10
(*                                                                     *)
 
11
(***********************************************************************)
 
12
 
 
13
(* $Id: arith.cmm 3218 2000-06-29 11:45:24Z xleroy $ *)
 
14
 
 
15
(* Regression test for arithmetic instructions *)
 
16
 
 
17
(function "testarith" ()
 
18
   (let r "R"
 
19
   (let d "D"
 
20
   (let x (load int "X")
 
21
   (let y (load int "Y")
 
22
   (let f (load float "F")
 
23
   (let g (load float "G")
 
24
      (addraset r 0 0)
 
25
      (addraset r 1 1)
 
26
      (addraset r 2 -1)
 
27
      (addraset r 3 256)
 
28
      (addraset r 4 65536)
 
29
      (addraset r 5 16777216)
 
30
      (addraset r 6 -256)
 
31
      (addraset r 7 -65536)
 
32
      (addraset r 8 -16777216)
 
33
 
 
34
      (addraset r 9 (+ x y))
 
35
      (addraset r 10 (+ x 1))
 
36
      (addraset r 11 (+ x -1))
 
37
 
 
38
      (addraset r 12 (+a "R" 8))
 
39
      (addraset r 13 (+a "R" y))
 
40
 
 
41
      (addraset r 14 (- x y))
 
42
      (addraset r 15 (- x 1))
 
43
      (addraset r 16 (- x -1))
 
44
 
 
45
      (addraset r 17 (-a "R" 8))
 
46
      (addraset r 18 (-a "R" y))
 
47
 
 
48
      (addraset r 19 ( * x 2))
 
49
      (addraset r 20 ( * 2 x))
 
50
      (addraset r 21 ( * x 16))
 
51
      (addraset r 22 ( * 16 x))
 
52
      (addraset r 23 ( * x 12345))
 
53
      (addraset r 24 ( * 12345 x))
 
54
      (addraset r 25 ( * x y))
 
55
 
 
56
      (addraset r 26 (/ x 2))
 
57
      (addraset r 27 (/ x 16))
 
58
      (addraset r 28 (/ x 7))
 
59
      (addraset r 29 (if (!= y 0) (/ x y) 0))
 
60
 
 
61
      (addraset r 30 (mod x 2))
 
62
      (addraset r 31 (mod x 16))
 
63
      (addraset r 32 (if (!= y 0) (mod x y) 0))
 
64
 
 
65
      (addraset r 33 (and x y))
 
66
      (addraset r 34 (and x 3))
 
67
      (addraset r 35 (and 3 x))
 
68
 
 
69
      (addraset r 36 (or x y))
 
70
      (addraset r 37 (or x 3))
 
71
      (addraset r 38 (or 3 x))
 
72
 
 
73
      (addraset r 39 (xor x y))
 
74
      (addraset r 40 (xor x 3))
 
75
      (addraset r 41 (xor 3 x))
 
76
 
 
77
      (addraset r 42 (<< x y))
 
78
      (addraset r 43 (<< x 1))
 
79
      (addraset r 44 (<< x 8))
 
80
 
 
81
      (addraset r 45 (>>u x y))
 
82
      (addraset r 46 (>>u x 1))
 
83
      (addraset r 47 (>>u x 8))
 
84
 
 
85
      (addraset r 48 (>>s x y))
 
86
      (addraset r 49 (>>s x 1))
 
87
      (addraset r 50 (>>s x 8))
 
88
 
 
89
      (addraset r 51 (== x y))
 
90
      (addraset r 52 (!= x y))
 
91
      (addraset r 53 (< x y))
 
92
      (addraset r 54 (> x y))
 
93
      (addraset r 55 (<= x y))
 
94
      (addraset r 56 (>= x y))
 
95
      (addraset r 57 (== x 1))
 
96
      (addraset r 58 (!= x 1))
 
97
      (addraset r 59 (< x 1))
 
98
      (addraset r 60 (> x 1))
 
99
      (addraset r 61 (<= x 1))
 
100
      (addraset r 62 (>= x 1))
 
101
 
 
102
      (addraset r 63 (==a x y))
 
103
      (addraset r 64 (!=a x y))
 
104
      (addraset r 65 (<a x y))
 
105
      (addraset r 66 (>a x y))
 
106
      (addraset r 67 (<=a x y))
 
107
      (addraset r 68 (>=a x y))
 
108
      (addraset r 69 (==a x 1))
 
109
      (addraset r 70 (!=a x 1))
 
110
      (addraset r 71 (<a x 1))
 
111
      (addraset r 72 (>a x 1))
 
112
      (addraset r 73 (<=a x 1))
 
113
      (addraset r 74 (>=a x 1))
 
114
 
 
115
      (addraset r 75 (+ x (<< y 1)))
 
116
      (addraset r 76 (+ x (<< y 2)))
 
117
      (addraset r 77 (+ x (<< y 3)))
 
118
      (addraset r 78 (- x (<< y 1)))
 
119
      (addraset r 79 (- x (<< y 2)))
 
120
      (addraset r 80 (- x (<< y 3)))
 
121
 
 
122
      (floataset d 0 0.0)
 
123
      (floataset d 1 1.0)
 
124
      (floataset d 2 -1.0)
 
125
      (floataset d 3 (+f f g))
 
126
      (floataset d 4 (-f f g))
 
127
      (floataset d 5 ( *f f g))
 
128
      (floataset d 6 (/f f g))
 
129
 
 
130
      (floataset d 7 (+f f (+f g 1.0)))
 
131
      (floataset d 8 (-f f (+f g 1.0)))
 
132
      (floataset d 9 ( *f f (+f g 1.0)))
 
133
      (floataset d 10 (/f f (+f g 1.0)))
 
134
 
 
135
      (floataset d 11 (+f (+f f 1.0) g))
 
136
      (floataset d 12 (-f (+f f 1.0) g))
 
137
      (floataset d 13 ( *f (+f f 1.0) g))
 
138
      (floataset d 14 (/f (+f f 1.0) g))
 
139
 
 
140
      (floataset d 15 (+f (+f f 1.0) (+f g 1.0)))
 
141
      (floataset d 16 (-f (+f f 1.0) (+f g 1.0)))
 
142
      (floataset d 17 ( *f (+f f 1.0) (+f g 1.0)))
 
143
      (floataset d 18 (/f (+f f 1.0) (+f g 1.0)))
 
144
 
 
145
      (addraset r 81 (==f f g))
 
146
      (addraset r 82 (!=f f g))
 
147
      (addraset r 83 (<f f g))
 
148
      (addraset r 84 (>f f g))
 
149
      (addraset r 85 (<=f f g))
 
150
      (addraset r 86 (>=f f g))
 
151
 
 
152
      (floataset d 19 (floatofint x))
 
153
      (addraset r 87 (intoffloat f))
 
154
 
 
155
      (if (and (>= x 0) (< x y))
 
156
          (seq (checkbound y x) (addraset r 88 1))
 
157
        (addraset r 88 0))
 
158
 
 
159
      (if (< 0 y)
 
160
          (seq (checkbound y 0) (addraset r 89 1))
 
161
        (addraset r 89 0))
 
162
 
 
163
      (if (< 5 y)
 
164
          (seq (checkbound y 5) (addraset r 90 1))
 
165
        (addraset r 90 0))
 
166
 
 
167
      (addraset r 91 (let res 1 (if (==f f g) [] (assign res 0)) res))
 
168
      (addraset r 92 (let res 1 (if (!=f f g) [] (assign res 0)) res))
 
169
      (addraset r 93 (let res 1 (if (<f f g) [] (assign res 0)) res))
 
170
      (addraset r 94 (let res 1 (if (>f f g) [] (assign res 0)) res))
 
171
      (addraset r 95 (let res 1 (if (<=f f g) [] (assign res 0)) res))
 
172
      (addraset r 96 (let res 1 (if (>=f f g) [] (assign res 0)) res))
 
173
 
 
174
      (addraset r 97 (==f (+f f 1.0) (+f g 1.0)))
 
175
      (addraset r 98 (!=f (+f f 1.0) (+f g 1.0)))
 
176
      (addraset r 99 (<f (+f f 1.0) (+f g 1.0)))
 
177
      (addraset r 100 (>f (+f f 1.0) (+f g 1.0)))
 
178
      (addraset r 101 (<=f (+f f 1.0) (+f g 1.0)))
 
179
      (addraset r 102 (>=f (+f f 1.0) (+f g 1.0)))
 
180
 
 
181
      (addraset r 103 (==f f (+f g 1.0)))
 
182
      (addraset r 104 (!=f f (+f g 1.0)))
 
183
      (addraset r 105 (<f f (+f g 1.0)))
 
184
      (addraset r 106 (>f f (+f g 1.0)))
 
185
      (addraset r 107 (<=f f (+f g 1.0)))
 
186
      (addraset r 108 (>=f f (+f g 1.0)))
 
187
 
 
188
      (addraset r 109 (==f (+f f 1.0) g))
 
189
      (addraset r 110 (!=f (+f f 1.0) g))
 
190
      (addraset r 111 (<f (+f f 1.0) g))
 
191
      (addraset r 112 (>f (+f f 1.0) g))
 
192
      (addraset r 113 (<=f (+f f 1.0) g))
 
193
      (addraset r 114 (>=f (+f f 1.0) g))
 
194
 
 
195
      (floataset d 20 (+f (floatofint x) 1.0))
 
196
      (addraset r 115 (intoffloat (+f f 1.0)))
 
197
 
 
198
      (floataset d 21 (+f f (load float "G")))
 
199
      (floataset d 22 (+f (load float "G") f))
 
200
      (floataset d 23 (-f f (load float "G")))
 
201
      (floataset d 24 (-f (load float "G") f))
 
202
      (floataset d 25 ( *f f (load float "G")))
 
203
      (floataset d 26 ( *f (load float "G") f))
 
204
      (floataset d 27 (/f f (load float "G")))
 
205
      (floataset d 28 (/f (load float "G") f))
 
206
 
 
207
      (floataset d 29 (+f ( *f f 2.0) (load float "G")))
 
208
      (floataset d 30 (+f (load float "G") ( *f f 2.0)))
 
209
      (floataset d 31 (-f ( *f f 2.0) (load float "G")))
 
210
      (floataset d 32 (-f (load float "G") ( *f f 2.0)))
 
211
      (floataset d 33 ( *f ( +f f 2.0) (load float "G")))
 
212
      (floataset d 34 ( *f (load float "G") ( +f f 2.0)))
 
213
      (floataset d 35 (/f ( *f f 2.0) (load float "G")))
 
214
      (floataset d 36 (/f (load float "G") ( *f f 2.0)))
 
215
 
 
216
      (floataset d 37 (-f f))
 
217
      (floataset d 38 (absf f))
 
218
 
 
219
)))))))
 
220
 
 
221
 
 
222