@@ -272,22 +272,26 @@ let transform_primitive env (prim : L.primitive) args loc =
272
272
Misc. fatal_errorf " Pmakeblock with wrong or non-scannable block tag %d" tag
273
273
| Pmakefloatblock (_mut , _mode ), args when List. length args < 1 ->
274
274
Misc. fatal_errorf " Pmakefloatblock must have at least one argument"
275
- | Pfloatcomp CFnlt , args ->
276
- Primitive (L. Pnot , [L. Lprim (Pfloatcomp CFlt , args, loc)], loc)
277
- | Pfloatcomp CFngt , args ->
278
- Primitive (L. Pnot , [L. Lprim (Pfloatcomp CFgt , args, loc)], loc)
279
- | Pfloatcomp CFnle , args ->
280
- Primitive (L. Pnot , [L. Lprim (Pfloatcomp CFle , args, loc)], loc)
281
- | Pfloatcomp CFnge , args ->
282
- Primitive (L. Pnot , [L. Lprim (Pfloatcomp CFge , args, loc)], loc)
283
- | Punboxed_float_comp CFnlt , args ->
284
- Primitive (L. Pnot , [L. Lprim (Punboxed_float_comp CFlt , args, loc)], loc)
285
- | Punboxed_float_comp CFngt , args ->
286
- Primitive (L. Pnot , [L. Lprim (Punboxed_float_comp CFgt , args, loc)], loc)
287
- | Punboxed_float_comp CFnle , args ->
288
- Primitive (L. Pnot , [L. Lprim (Punboxed_float_comp CFle , args, loc)], loc)
289
- | Punboxed_float_comp CFnge , args ->
290
- Primitive (L. Pnot , [L. Lprim (Punboxed_float_comp CFge , args, loc)], loc)
275
+ | Pfloatcomp (bf , CFnlt), args ->
276
+ Primitive (L. Pnot , [L. Lprim (Pfloatcomp (bf, CFlt ), args, loc)], loc)
277
+ | Pfloatcomp (bf , CFngt), args ->
278
+ Primitive (L. Pnot , [L. Lprim (Pfloatcomp (bf, CFgt ), args, loc)], loc)
279
+ | Pfloatcomp (bf , CFnle), args ->
280
+ Primitive (L. Pnot , [L. Lprim (Pfloatcomp (bf, CFle ), args, loc)], loc)
281
+ | Pfloatcomp (bf , CFnge), args ->
282
+ Primitive (L. Pnot , [L. Lprim (Pfloatcomp (bf, CFge ), args, loc)], loc)
283
+ | Punboxed_float_comp (bf , CFnlt), args ->
284
+ Primitive
285
+ (L. Pnot , [L. Lprim (Punboxed_float_comp (bf, CFlt ), args, loc)], loc)
286
+ | Punboxed_float_comp (bf , CFngt), args ->
287
+ Primitive
288
+ (L. Pnot , [L. Lprim (Punboxed_float_comp (bf, CFgt ), args, loc)], loc)
289
+ | Punboxed_float_comp (bf , CFnle), args ->
290
+ Primitive
291
+ (L. Pnot , [L. Lprim (Punboxed_float_comp (bf, CFle ), args, loc)], loc)
292
+ | Punboxed_float_comp (bf , CFnge), args ->
293
+ Primitive
294
+ (L. Pnot , [L. Lprim (Punboxed_float_comp (bf, CFge ), args, loc)], loc)
291
295
| Pbigarrayref (_unsafe , num_dimensions , kind , layout ), args -> (
292
296
match
293
297
P.Bigarray_kind. from_lambda kind, P.Bigarray_layout. from_lambda layout
@@ -605,14 +609,23 @@ let primitive_can_raise (prim : Lambda.primitive) =
605
609
| Psetfield_computed _ | Pfloatfield _ | Psetfloatfield _ | Pduprecord _
606
610
| Pmakeufloatblock _ | Pufloatfield _ | Psetufloatfield _ | Psequand | Psequor
607
611
| Pnot | Pnegint | Paddint | Psubint | Pmulint | Pandint | Porint | Pxorint
608
- | Plslint | Plsrint | Pasrint | Pintcomp _ | Pcompare_ints | Pcompare_floats
609
- | Pcompare_bints _ | Poffsetint _ | Poffsetref _ | Pintoffloat | Pfloatofint _
610
- | Pnegfloat _ | Pabsfloat _ | Paddfloat _ | Psubfloat _ | Pmulfloat _
611
- | Pdivfloat _ | Pfloatcomp _ | Punboxed_float_comp _ | Pstringlength
612
- | Pstringrefu | Pbyteslength | Pbytesrefu | Pbytessetu | Pmakearray _
613
- | Pduparray _ | Parraylength _ | Parrayrefu _ | Parraysetu _ | Pisint _
614
- | Pisout | Pbintofint _ | Pintofbint _ | Pcvtbint _ | Pnegbint _ | Paddbint _
615
- | Psubbint _ | Pmulbint _
612
+ | Plslint | Plsrint | Pasrint | Pintcomp _ | Pcompare_ints
613
+ | Pcompare_floats Pfloat64
614
+ | Pcompare_bints _ | Poffsetint _ | Poffsetref _
615
+ | Pintoffloat Pfloat64
616
+ | Pfloatofint (Pfloat64 , _)
617
+ | Pnegfloat (Pfloat64 , _)
618
+ | Pabsfloat (Pfloat64 , _)
619
+ | Paddfloat (Pfloat64 , _)
620
+ | Psubfloat (Pfloat64 , _)
621
+ | Pmulfloat (Pfloat64 , _)
622
+ | Pdivfloat (Pfloat64 , _)
623
+ | Pfloatcomp (Pfloat64 , _)
624
+ | Punboxed_float_comp (Pfloat64 , _)
625
+ | Pstringlength | Pstringrefu | Pbyteslength | Pbytesrefu | Pbytessetu
626
+ | Pmakearray _ | Pduparray _ | Parraylength _ | Parrayrefu _ | Parraysetu _
627
+ | Pisint _ | Pisout | Pbintofint _ | Pintofbint _ | Pcvtbint _ | Pnegbint _
628
+ | Paddbint _ | Psubbint _ | Pmulbint _
616
629
| Pdivbint { is_safe = Unsafe ; _ }
617
630
| Pmodbint { is_safe = Unsafe ; _ }
618
631
| Pandbint _ | Porbint _ | Pxorbint _ | Plslbint _ | Plsrbint _ | Pasrbint _
@@ -654,7 +667,9 @@ let primitive_can_raise (prim : Lambda.primitive) =
654
667
| Pbigstring_set_64 true
655
668
| Pbigstring_set_128 { unsafe = true ; _ }
656
669
| Pctconst _ | Pbswap16 | Pbbswap _ | Pint_as_pointer _ | Popaque _
657
- | Pprobe_is_enabled _ | Pobj_dup | Pobj_magic _ | Pbox_float _ | Punbox_float
670
+ | Pprobe_is_enabled _ | Pobj_dup | Pobj_magic _
671
+ | Pbox_float (Pfloat64 , _)
672
+ | Punbox_float Pfloat64
658
673
| Punbox_int _ | Pbox_int _ | Pmake_unboxed_product _
659
674
| Punboxed_product_field _ | Pget_header _ ->
660
675
false
@@ -848,7 +863,9 @@ let rec cps acc env ccenv (lam : L.lambda) (k : cps_continuation)
848
863
match layout with
849
864
| Ptop | Pbottom ->
850
865
Misc. fatal_error " Cannot bind layout [Ptop] or [Pbottom]"
851
- | Pvalue _ | Punboxed_int _ | Punboxed_float | Punboxed_vector _ ->
866
+ | Pvalue _ | Punboxed_int _
867
+ | Punboxed_float Pfloat64
868
+ | Punboxed_vector _ ->
852
869
( env,
853
870
[ ( id,
854
871
Flambda_kind. With_subkind
@@ -971,8 +988,9 @@ let rec cps acc env ccenv (lam : L.lambda) (k : cps_continuation)
971
988
let id = Ident. create_local name in
972
989
let result_layout = L. primitive_result_layout prim in
973
990
(match result_layout with
974
- | Pvalue _ | Punboxed_float | Punboxed_int _ | Punboxed_vector _
975
- | Punboxed_product _ ->
991
+ | Pvalue _
992
+ | Punboxed_float Pfloat64
993
+ | Punboxed_int _ | Punboxed_vector _ | Punboxed_product _ ->
976
994
()
977
995
| Ptop | Pbottom ->
978
996
Misc. fatal_errorf " Invalid result layout %a for primitive %a"
0 commit comments