@@ -541,13 +541,13 @@ func.func @test_simple_f32(%arg0: tensor<1xf32>) -> () {
541541
542542 // CHECK: linalg.generic
543543 // CHECK: [[ROUND:%.+]] = math.roundeven {{%.+}} : f32
544- // CHECK: [[CSTMIN :%.+]] = arith.constant -2.14748365E+9 : f32
544+ // CHECK: [[CSTMINF :%.+]] = arith.constant -2.14748365E+9 : f32
545545 // CHECK: [[CSTMAXP1:%.+]] = arith.constant 2.14748365E+9 : f32
546- // CHECK: [[CSTMAX :%.+]] = arith.constant 2147483647 : i32
547- // CHECK: [[MAX:%.+]] = arith.maximumf [[ROUND]], [[CSTMIN ]] : f32
546+ // CHECK: [[CSTMIN :%.+]] = arith.constant -2147483648 : i32
547+ // CHECK: [[MAX:%.+]] = arith.maximumf [[ROUND]], [[CSTMINF ]] : f32
548548 // CHECK: [[CONV:%.+]] = arith.fptosi [[MAX]] : f32 to i32
549549 // CHECK: [[CMP:%.+]] = arith.cmpf uge, [[ROUND]], [[CSTMAXP1]] : f32
550- // CHECK: arith.select [[CMP]], [[CSTMAX ]], [[CONV]] : i32
550+ // CHECK: arith.select [[CMP]], [[CSTMIN ]], [[CONV]] : i32
551551 %20 = tosa.cast %0 : (tensor <1 xf32 >) -> tensor <1 xi32 >
552552
553553 // CHECK: linalg.generic
@@ -591,7 +591,9 @@ func.func @test_simple_f16(%arg0: tensor<1xf16>) -> () {
591591 // CHECK: [[ROUND:%.+]] = math.roundeven {{%.+}} : f16
592592 // CHECK: [[CSTMIN:%.+]] = arith.constant -1.280000e+02 : f16
593593 // CHECK: [[CSTMAX:%.+]] = arith.constant 1.270000e+02 : f16
594- // CHECK: [[MIN:%.+]] = arith.minimumf [[ROUND]], [[CSTMAX]] : f16
594+ // CHECK: [[OVERFLOW:%.+]] = arith.cmpf ugt, [[ROUND]], [[CSTMAX]] : f16
595+ // CHECK: [[CLAMPMAX:%.+]] = arith.select [[OVERFLOW]], [[CSTMIN]], [[ROUND]] : f16
596+ // CHECK: [[MIN:%.+]] = arith.minimumf [[CLAMPMAX]], [[CSTMAX]] : f16
595597 // CHECK: [[CLAMP:%.+]] = arith.maximumf [[MIN]], [[CSTMIN]] : f16
596598 // CHECK: arith.fptosi [[CLAMP]] : f16 to i8
597599 %1 = " tosa.cast" (%arg0 ) : (tensor <1 xf16 >) -> tensor <1 xi8 >
@@ -604,8 +606,7 @@ func.func @test_simple_f16(%arg0: tensor<1xf16>) -> () {
604606 // CHECK: [[OVERFLOW:%.+]] = arith.cmpf ueq, [[ROUND]], [[POSINF]] : f16
605607 // CHECK: [[UNDERFLOW:%.+]] = arith.cmpf ueq, [[ROUND]], [[NEGINF]] : f16
606608 // CHECK: [[MININT:%.+]] = arith.constant -2147483648 : i32
607- // CHECK: [[MAXINT:%.+]] = arith.constant 2147483647 : i32
608- // CHECK: [[CLAMPPOSINF:%.+]] = arith.select [[OVERFLOW]], [[MAXINT]], [[CONV]] : i32
609+ // CHECK: [[CLAMPPOSINF:%.+]] = arith.select [[OVERFLOW]], [[MININT]], [[CONV]] : i32
609610 // CHECK: arith.select [[UNDERFLOW]], [[MININT]], [[CLAMPPOSINF]] : i32
610611 %2 = " tosa.cast" (%arg0 ) : (tensor <1 xf16 >) -> tensor <1 xi32 >
611612 return
@@ -1980,11 +1981,11 @@ func.func @test_dynamic_fft2d(%arg0: tensor<?x?x?xf32>, %arg1: tensor<?x?x?xf32>
19801981// CHECK: %[[ROUND_EVEN:.*]] = math.roundeven %[[IN]] : f32
19811982// CHECK: %[[FP_INT_MIN:.*]] = arith.constant -9.22337203E+18 : f32
19821983// CHECK: %[[FP_INT_MAX_PLUS_ONE:.*]] = arith.constant 9.22337203E+18 : f32
1983- // CHECK: %[[INT_MAX :.*]] = arith.constant 9223372036854775807 : i64
1984+ // CHECK: %[[INT_MIN :.*]] = arith.constant -9223372036854775808 : i64
19841985// CHECK: %[[MAX:.*]] = arith.maximumf %[[ROUND_EVEN]], %[[FP_INT_MIN]] : f32
19851986// CHECK: %[[FPTOSI:.*]] = arith.fptosi %[[MAX]] : f32 to i64
19861987// CHECK: %[[CMPF:.*]] = arith.cmpf uge, %[[ROUND_EVEN]], %[[FP_INT_MAX_PLUS_ONE]] : f32
1987- // CHECK: %[[SELECT:.*]] = arith.select %[[CMPF]], %[[INT_MAX ]], %[[FPTOSI]] : i64
1988+ // CHECK: %[[SELECT:.*]] = arith.select %[[CMPF]], %[[INT_MIN ]], %[[FPTOSI]] : i64
19881989// CHECK: linalg.yield %[[SELECT]] : i64
19891990// CHECK: } -> tensor<1xi64>
19901991// CHECK: return %[[RESULT]] : tensor<1xi64>
0 commit comments