Skip to content

Commit 4c9380b

Browse files
TheNumbatmshinwell
authored andcommitted
Promote float32 to stable (#2709)
* start * progress * impl * missing fns * bigarrays * tests * fix r5 * move to stable * fix tests * fix cvtsi2ss instruction * promote * fix bounds check tests * address comments * Code review * format --------- Co-authored-by: Mark Shinwell <[email protected]>
1 parent 26d0c75 commit 4c9380b

33 files changed

+282
-588
lines changed

backend/amd64/arch.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ let assert_simd_enabled () =
116116
(extension_universe stable) in your library configuration file."
117117

118118
let assert_float32_enabled () =
119-
if not (Language_extension.is_enabled Small_numbers) then
119+
if not (Language_extension.(is_at_least Small_numbers Stable)) then
120120
Misc.fatal_error "float32 is not enabled. This error might happen \
121121
if you are using float32 yourself or are linking code that uses it. \
122122
Pass [-extension-universe beta] to the compiler, or set \

backend/amd64/proc.ml

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -166,8 +166,8 @@ let hard_float32_reg =
166166
for i = 0 to 15 do v.(i) <- Reg.at_location Float32 (Reg (100 + i)) done;
167167
fun () -> assert_float32_enabled (); v
168168

169-
let extension_regs (type a) ?prefix (ext : a Language_extension.t) () =
170-
if not (Language_extension.is_enabled ext) then [||]
169+
let extension_regs (type a) ?prefix (ext : a Language_extension.t) (maturity : a) () =
170+
if not (Language_extension.is_at_least ext maturity) then [||]
171171
else let regs =
172172
match ext with
173173
| SIMD -> hard_vec128_reg ()
@@ -180,9 +180,10 @@ let extension_regs (type a) ?prefix (ext : a Language_extension.t) () =
180180
| Some p -> Array.sub regs 0 (Int.min p (Array.length regs))
181181

182182
let all_phys_regs =
183+
let open Language_extension in
183184
let basic_regs = Array.append hard_int_reg hard_float_reg in
184-
let simd_regs = extension_regs SIMD in
185-
let f32_regs = extension_regs Small_numbers in
185+
let simd_regs = extension_regs SIMD () in
186+
let f32_regs = extension_regs Small_numbers Stable in
186187
fun () -> Array.append basic_regs
187188
(Array.append (simd_regs ()) (f32_regs ()))
188189

@@ -204,7 +205,7 @@ let rbp = phys_reg Int 12
204205
let destroy_xmm n =
205206
let f64 = [| phys_reg Float (100 + n) |] in
206207
let f32 =
207-
if Language_extension.is_enabled Small_numbers
208+
if Language_extension.(is_at_least Small_numbers Stable)
208209
then [| phys_reg Float32 (100 + n) |]
209210
else [||]
210211
in
@@ -410,23 +411,25 @@ let int_regs_destroyed_at_c_call =
410411

411412
let destroyed_at_c_call_win64 =
412413
(* Win64: rbx, rbp, rsi, rdi, r12-r15, xmm6-xmm15 preserved *)
414+
let open Language_extension in
413415
let basic_regs = Array.append
414416
(Array.map (phys_reg Int) int_regs_destroyed_at_c_call_win64)
415417
(Array.sub hard_float_reg 0 6)
416418
in
417-
let v128_regs = extension_regs ~prefix:6 SIMD in
418-
let f32_regs = extension_regs ~prefix:6 Small_numbers in
419+
let v128_regs = extension_regs ~prefix:6 SIMD () in
420+
let f32_regs = extension_regs ~prefix:6 Small_numbers Stable in
419421
fun () -> Array.append basic_regs
420422
(Array.append (v128_regs ()) (f32_regs ()))
421423

422424
let destroyed_at_c_call_unix =
425+
let open Language_extension in
423426
(* Unix: rbx, rbp, r12-r15 preserved *)
424427
let basic_regs = Array.append
425428
(Array.map (phys_reg Int) int_regs_destroyed_at_c_call)
426429
hard_float_reg
427430
in
428-
let v128_regs = extension_regs SIMD in
429-
let f32_regs = extension_regs Small_numbers in
431+
let v128_regs = extension_regs SIMD () in
432+
let f32_regs = extension_regs Small_numbers Stable in
430433
fun () -> Array.append basic_regs
431434
(Array.append (v128_regs ()) (f32_regs ()))
432435

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
beta.mli
2-
beta.ml
3-
float32.mli
4-
float32.ml
1+
stdlib_beta.mli
2+
stdlib_beta.ml
3+
Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +0,0 @@
1-
module Float32 = Float32
2-
module Float32_u = Float32_u
Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +0,0 @@
1-
module Float32 = Float32
2-
module Float32_u = Float32_u
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
1-
stable.mli
2-
stable.ml
1+
stdlib_stable.mli
2+
stdlib_stable.ml
3+
float32.mli
4+
float32.ml
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
module Iarray = Iarray
22
module IarrayLabels = IarrayLabels
3+
module Float32 = Float32
4+
module Float32_u = Float32_u
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
module Iarray = Iarray
22
module IarrayLabels = IarrayLabels
3+
module Float32 = Float32
4+
module Float32_u = Float32_u
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
upstream_compatible.mli
2-
upstream_compatible.ml
1+
stdlib_upstream_compatible.mli
2+
stdlib_upstream_compatible.ml

ocaml/testsuite/tests/mixed-blocks/closure_padding_float32.ml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
(* TEST
22
runtime5;
3-
include stdlib_beta;
3+
include stdlib_stable;
44
ocamlopt_flags="-extension layouts_alpha -extension small_numbers";
55
native;
66
*)
@@ -10,7 +10,7 @@
1010
https://github.com/ocaml-flambda/flambda-backend/pull/2763
1111
*)
1212

13-
module Float32_u = Stdlib_beta.Float32_u
13+
module Float32_u = Stdlib_stable.Float32_u
1414

1515
type t =
1616
| Mutable_str of { mutable x : string }

ocaml/testsuite/tests/mixed-blocks/constructor_args.ml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
(* TEST
2-
flags = "-extension layouts_beta -extension small_numbers";
3-
include stdlib_beta;
2+
flags = "-extension layouts_beta";
43
flambda2;
4+
include stdlib_stable;
55
include stdlib_upstream_compatible;
66
{
77
native;
@@ -13,8 +13,8 @@
1313
(*****************************************)
1414
(* Prelude: Functions on unboxed numbers *)
1515

16-
module Float32_u = Stdlib_beta.Float32_u
17-
module Float32 = Stdlib_beta.Float32
16+
module Float32_u = Stdlib_stable.Float32_u
17+
module Float32 = Stdlib_stable.Float32
1818
module Float_u = Stdlib_upstream_compatible.Float_u
1919
module Int32_u = Stdlib_upstream_compatible.Int32_u
2020
module Int64_u = Stdlib_upstream_compatible.Int64_u

ocaml/testsuite/tests/mixed-blocks/generate_mixed_blocks_code.ml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ let type_to_field_integrity_check type_ ~access1 ~access2 ~message =
247247
| Imm -> "check_int", None
248248
| Float -> "check_float", None
249249
| Float64 -> "check_float", Some "Stdlib_upstream_compatible.Float_u.to_float"
250-
| Float32 -> "check_float32", Some "Stdlib_beta.Float32_u.to_float32"
250+
| Float32 -> "check_float32", Some "Stdlib_stable.Float32_u.to_float32"
251251
| Bits32 -> "check_int32", Some "Stdlib_upstream_compatible.Int32_u.to_int32"
252252
| Bits64 -> "check_int64", Some "Stdlib_upstream_compatible.Int64_u.to_int64"
253253
| Word -> "check_int", Some "Stdlib_upstream_compatible.Nativeint_u.to_int"
@@ -612,8 +612,8 @@ let main n ~bytecode =
612612
List.iter2 values (List.tl values @ [ List.hd values]) ~f
613613
in
614614
line {|(* TEST
615-
flags = "-extension layouts_beta -extension small_numbers";
616-
include stdlib_beta;
615+
flags = "-extension layouts_beta";
616+
include stdlib_stable;
617617
include stdlib_upstream_compatible;|};
618618
if bytecode then (
619619
line {| bytecode;|};
@@ -628,9 +628,9 @@ let main n ~bytecode =
628628
line {|let create_string () = String.make (Random.int 100) 'a'|};
629629
line {|let create_int () = Random.int 0x3FFF_FFFF|};
630630
line {|let create_float () = Random.float Float.max_float|};
631-
line {|let create_float32 () = Stdlib_beta.Float32.of_float (Random.float Float.max_float)|};
631+
line {|let create_float32 () = Stdlib_stable.Float32.of_float (Random.float Float.max_float)|};
632632
line {|let create_float_u () = Stdlib_upstream_compatible.Float_u.of_float (create_float ())|};
633-
line {|let create_float32_u () = Stdlib_beta.Float32_u.of_float32 (create_float32 ())|};
633+
line {|let create_float32_u () = Stdlib_stable.Float32_u.of_float32 (create_float32 ())|};
634634
line {|let create_int32_u () = Stdlib_upstream_compatible.Int32_u.of_int32 (Random.int32 0x7FFF_FFFFl)|};
635635
line {|let create_int64_u () = Stdlib_upstream_compatible.Int64_u.of_int64 (Random.int64 0x7FFF_FFFF_FFFF_FFFFL)|};
636636
line {|let create_nativeint_u () = Stdlib_upstream_compatible.Nativeint_u.of_nativeint (Random.nativeint 0x7FFF_FFFF_FFFF_FFFFn)|};
@@ -648,7 +648,7 @@ let main n ~bytecode =
648648
check_gen ~equal:Float.equal ~to_string:Float.to_string|};
649649
line
650650
{|let check_float32 =
651-
check_gen ~equal:Stdlib_beta.Float32.equal ~to_string:Stdlib_beta.Float32.to_string|};
651+
check_gen ~equal:Stdlib_stable.Float32.equal ~to_string:Stdlib_stable.Float32.to_string|};
652652
line
653653
{|let check_int32 =
654654
check_gen ~equal:Int32.equal ~to_string:Int32.to_string|};

0 commit comments

Comments
 (0)