@@ -266,6 +266,9 @@ def random_size_constraint(deps: object, r: int, d: int) -> int:
266266 tensor_constraints .extend (
267267 [
268268 cp .Dtype .In (lambda deps : [torch .float32 , torch .int32 ]),
269+ # Avoid NaN/Inf values that expose clamp NaN handling bugs
270+ cp .Value .Ge (lambda deps , dtype , struct : - (2 ** 4 )),
271+ cp .Value .Le (lambda deps , dtype , struct : 2 ** 4 ),
269272 ]
270273 )
271274 case "rsqrt.default" :
@@ -456,6 +459,7 @@ def apply_scalar_contraints(op_name: str) -> list[ScalarDtype]:
456459 | "mul.Scalar"
457460 | "div.Scalar"
458461 | "constant_pad_nd.default"
462+ | "clamp.default"
459463 ):
460464 return [ScalarDtype .int ]
461465 case "full.default" :
@@ -483,7 +487,32 @@ def facto_testcase_gen( # noqa: C901
483487 cp .Size .Le (lambda deps , r , d : 2 ** 2 ),
484488 ]
485489 )
486- if in_spec .name == "max_val" : # hardtanh
490+ # Special handling for clamp.default to ensure min < max with sufficient gap (at least 2) and never None
491+ if op_name == "clamp.default" :
492+ if in_spec .name == "min" :
493+ # min must always be provided (not None) and bounded, leave room for max
494+ spec .inspec [index ].constraints .extend (
495+ [
496+ cp .Optional .Eq (lambda deps : False ), # Never None
497+ cp .Value .Ge (lambda deps , dtype : - (2 ** 4 )),
498+ cp .Value .Le (
499+ lambda deps , dtype : 2 ** 4 - 2
500+ ), # Leave room for max (at least 2 units)
501+ ]
502+ )
503+ elif in_spec .name == "max" :
504+ # max must always be provided (not None), be >= min + 2 (sufficient gap), and bounded
505+ spec .inspec [index ].deps = [0 , 1 ] # deps on input tensor and min
506+ spec .inspec [index ].constraints .extend (
507+ [
508+ cp .Optional .Eq (lambda deps : False ), # Never None
509+ cp .Value .Ge (
510+ lambda deps , dtype : deps [1 ] + 2
511+ ), # max >= min + 2 (sufficient gap)
512+ cp .Value .Le (lambda deps , dtype : 2 ** 4 ),
513+ ]
514+ )
515+ elif in_spec .name == "max_val" : # hardtanh
487516 spec .inspec [index ].deps = [0 , 1 ]
488517 spec .inspec [index ].constraints .extend (
489518 [cp .Value .Ge (lambda deps , _ : deps [1 ])]
0 commit comments