Skip to content

Commit 44c1d2a

Browse files
committed
Remove unused libfuncs. (#7488)
1 parent deb5121 commit 44c1d2a

File tree

17 files changed

+31
-340
lines changed

17 files changed

+31
-340
lines changed

corelib/src/integer.cairo

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1944,7 +1944,6 @@ impl NumericLiterali8 of NumericLiteral<i8>;
19441944
extern const fn i8_try_from_felt252(a: felt252) -> Option<i8> implicits(RangeCheck) nopanic;
19451945
extern const fn i8_to_felt252(a: i8) -> felt252 nopanic;
19461946

1947-
extern fn i8_is_zero(a: i8) -> IsZeroResult<i8> implicits() nopanic;
19481947
extern fn i8_eq(lhs: i8, rhs: i8) -> bool implicits() nopanic;
19491948

19501949
impl I8Serde = crate::serde::into_felt252_based::SerdeImpl<i8>;
@@ -2031,7 +2030,6 @@ impl NumericLiterali16 of NumericLiteral<i16>;
20312030
extern const fn i16_try_from_felt252(a: felt252) -> Option<i16> implicits(RangeCheck) nopanic;
20322031
extern const fn i16_to_felt252(a: i16) -> felt252 nopanic;
20332032

2034-
extern fn i16_is_zero(a: i16) -> IsZeroResult<i16> implicits() nopanic;
20352033
extern fn i16_eq(lhs: i16, rhs: i16) -> bool implicits() nopanic;
20362034

20372035
impl I16Serde = crate::serde::into_felt252_based::SerdeImpl<i16>;
@@ -2119,7 +2117,6 @@ impl NumericLiterali32 of NumericLiteral<i32>;
21192117
extern const fn i32_try_from_felt252(a: felt252) -> Option<i32> implicits(RangeCheck) nopanic;
21202118
extern const fn i32_to_felt252(a: i32) -> felt252 nopanic;
21212119

2122-
extern fn i32_is_zero(a: i32) -> IsZeroResult<i32> implicits() nopanic;
21232120
extern fn i32_eq(lhs: i32, rhs: i32) -> bool implicits() nopanic;
21242121

21252122
impl I32Serde = crate::serde::into_felt252_based::SerdeImpl<i32>;
@@ -2207,7 +2204,6 @@ impl NumericLiterali64 of NumericLiteral<i64>;
22072204
extern const fn i64_try_from_felt252(a: felt252) -> Option<i64> implicits(RangeCheck) nopanic;
22082205
extern const fn i64_to_felt252(a: i64) -> felt252 nopanic;
22092206

2210-
extern fn i64_is_zero(a: i64) -> IsZeroResult<i64> implicits() nopanic;
22112207
extern fn i64_eq(lhs: i64, rhs: i64) -> bool implicits() nopanic;
22122208

22132209
impl I64Serde = crate::serde::into_felt252_based::SerdeImpl<i64>;
@@ -2295,7 +2291,6 @@ impl NumericLiterali128 of NumericLiteral<i128>;
22952291
extern const fn i128_try_from_felt252(a: felt252) -> Option<i128> implicits(RangeCheck) nopanic;
22962292
extern const fn i128_to_felt252(a: i128) -> felt252 nopanic;
22972293

2298-
extern fn i128_is_zero(a: i128) -> IsZeroResult<i128> implicits() nopanic;
22992294
extern fn i128_eq(lhs: i128, rhs: i128) -> bool implicits() nopanic;
23002295

23012296
impl I128Serde = crate::serde::into_felt252_based::SerdeImpl<i128>;

crates/cairo-lang-lowering/src/optimizations/const_folding.rs

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -628,7 +628,7 @@ impl ConstFoldingLibfuncInfo {
628628
core.extern_function_id("felt252_is_zero"),
629629
bounded_int_module.extern_function_id("bounded_int_is_zero")
630630
],
631-
["u8", "u16", "u32", "u64", "u128", "u256", "i8", "i16", "i32", "i64", "i128"]
631+
["u8", "u16", "u32", "u64", "u128", "u256"]
632632
.map(|ty| integer_module.extern_function_id(format!("{ty}_is_zero")))
633633
));
634634
let utypes = ["u8", "u16", "u32", "u64", "u128"];
@@ -667,28 +667,32 @@ impl ConstFoldingLibfuncInfo {
667667
let bounded_int_constrain = bounded_int_module.extern_function_id("bounded_int_constrain");
668668
let type_value_ranges = OrderedHashMap::from_iter(
669669
[
670-
("u8", BigInt::ZERO, u8::MAX.into()),
671-
("u16", BigInt::ZERO, u16::MAX.into()),
672-
("u32", BigInt::ZERO, u32::MAX.into()),
673-
("u64", BigInt::ZERO, u64::MAX.into()),
674-
("u128", BigInt::ZERO, u128::MAX.into()),
675-
("u256", BigInt::ZERO, BigInt::from(1) << 256),
676-
("i8", i8::MIN.into(), i8::MAX.into()),
677-
("i16", i16::MIN.into(), i16::MAX.into()),
678-
("i32", i32::MIN.into(), i32::MAX.into()),
679-
("i64", i64::MIN.into(), i64::MAX.into()),
680-
("i128", i128::MIN.into(), i128::MAX.into()),
670+
("u8", BigInt::ZERO, u8::MAX.into(), false),
671+
("u16", BigInt::ZERO, u16::MAX.into(), false),
672+
("u32", BigInt::ZERO, u32::MAX.into(), false),
673+
("u64", BigInt::ZERO, u64::MAX.into(), false),
674+
("u128", BigInt::ZERO, u128::MAX.into(), false),
675+
("u256", BigInt::ZERO, BigInt::from(1) << 256, false),
676+
("i8", i8::MIN.into(), i8::MAX.into(), true),
677+
("i16", i16::MIN.into(), i16::MAX.into(), true),
678+
("i32", i32::MIN.into(), i32::MAX.into(), true),
679+
("i64", i64::MIN.into(), i64::MAX.into(), true),
680+
("i128", i128::MIN.into(), i128::MAX.into(), true),
681681
]
682-
.map(|(ty, min, max): (&str, BigInt, BigInt)| {
683-
let info = TypeInfo {
684-
min,
685-
max,
686-
is_zero: integer_module
687-
.function_id(format!("{ty}_is_zero"), vec![])
688-
.lowered(db),
689-
};
690-
(corelib::get_core_ty_by_name(db.upcast(), ty.into(), vec![]), info)
691-
}),
682+
.map(
683+
|(ty_name, min, max, as_bounded_int): (&str, BigInt, BigInt, bool)| {
684+
let ty = corelib::get_core_ty_by_name(db.upcast(), ty_name.into(), vec![]);
685+
let is_zero = if as_bounded_int {
686+
bounded_int_module
687+
.function_id("bounded_int_is_zero", vec![GenericArgumentId::Type(ty)])
688+
} else {
689+
integer_module.function_id(format!("{ty_name}_is_zero"), vec![])
690+
}
691+
.lowered(db);
692+
let info = TypeInfo { min, max, is_zero };
693+
(ty, info)
694+
},
695+
),
692696
);
693697
Self {
694698
felt_sub,

crates/cairo-lang-sierra-ap-change/src/core_libfunc_ap_change.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,6 @@ pub fn core_libfunc_ap_change<InfoProvider: InvocationApChangeInfoProvider>(
258258
Sint128Concrete::Const(_) | Sint128Concrete::ToFelt252(_) => {
259259
vec![ApChange::Known(0)]
260260
}
261-
Sint128Concrete::IsZero(_) => vec![ApChange::Known(0), ApChange::Known(0)],
262261
Sint128Concrete::Operation(_) => {
263262
vec![ApChange::Known(3), ApChange::Known(4), ApChange::Known(4)]
264263
}
@@ -466,14 +465,13 @@ fn uint_ap_change<TUintTraits: UintTraits + IntMulTraits + IsZeroTraits>(
466465
}
467466

468467
/// Returns the ap changes for s8/s16/s32/s64 libfuncs.
469-
fn sint_ap_change<TSintTraits: SintTraits + IntMulTraits + IsZeroTraits>(
468+
fn sint_ap_change<TSintTraits: SintTraits + IntMulTraits>(
470469
libfunc: &SintConcrete<TSintTraits>,
471470
) -> Vec<ApChange> {
472471
match libfunc {
473472
SintConcrete::Const(_) | SintConcrete::ToFelt252(_) => vec![ApChange::Known(0)],
474473
SintConcrete::Equal(_) => vec![ApChange::Known(1), ApChange::Known(1)],
475474
SintConcrete::FromFelt252(_) => vec![ApChange::Known(3), ApChange::Known(7)],
476-
SintConcrete::IsZero(_) => vec![ApChange::Known(0), ApChange::Known(0)],
477475
SintConcrete::WideMul(_) => vec![ApChange::Known(0)],
478476
SintConcrete::Operation(_) => {
479477
vec![ApChange::Known(4), ApChange::Known(4), ApChange::Known(4)]

crates/cairo-lang-sierra-gas/src/core_libfunc_cost_base.rs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -880,7 +880,7 @@ fn u512_libfunc_cost(libfunc: &Uint512Concrete) -> Vec<ConstCost> {
880880
}
881881

882882
/// Returns costs for i64/i32/i16/i8 libfuncs.
883-
fn sint_libfunc_cost<TSintTraits: SintTraits + IsZeroTraits + IntMulTraits>(
883+
fn sint_libfunc_cost<TSintTraits: SintTraits + IntMulTraits>(
884884
libfunc: &SintConcrete<TSintTraits>,
885885
) -> Vec<BranchCost> {
886886
match libfunc {
@@ -896,7 +896,6 @@ fn sint_libfunc_cost<TSintTraits: SintTraits + IsZeroTraits + IntMulTraits>(
896896
ConstCost { steps: 10, holes: 0, range_checks: 3, range_checks96: 0 }.into(),
897897
]
898898
}
899-
SintConcrete::IsZero(_) => vec![ConstCost::steps(1).into(), ConstCost::steps(1).into()],
900899
SintConcrete::Operation(_) => vec![
901900
ConstCost { steps: 6, holes: 0, range_checks: 2, range_checks96: 0 }.into(),
902901
ConstCost { steps: 6, holes: 0, range_checks: 1, range_checks96: 0 }.into(),
@@ -922,9 +921,6 @@ fn s128_libfunc_cost(libfunc: &Sint128Concrete) -> Vec<BranchCost> {
922921
ConstCost { steps: 10, holes: 0, range_checks: 3, range_checks96: 0 }.into(),
923922
]
924923
}
925-
Sint128Concrete::IsZero(_) => {
926-
vec![steps(1).into(), steps(1).into()]
927-
}
928924
Sint128Concrete::Equal(_) => {
929925
vec![steps(2).into(), steps(3).into()]
930926
}

crates/cairo-lang-sierra-to-casm/src/invocations/int/signed.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ use cairo_lang_casm::casm_build_extend;
33
use cairo_lang_sierra::extensions::gas::CostTokenType;
44
use cairo_lang_sierra::extensions::int::signed::{SintConcrete, SintTraits};
55
use cairo_lang_sierra::extensions::int::{IntMulTraits, IntOperator};
6-
use cairo_lang_sierra::extensions::is_zero::IsZeroTraits;
76
use cairo_lang_sierra::extensions::utils::Range;
87
use cairo_lang_sierra::program::{BranchInfo, BranchTarget};
98
use num_bigint::BigInt;
@@ -131,7 +130,7 @@ pub fn build_sint_overflowing_operation(
131130

132131
/// Builds instructions for Sierra i8/i16/i32/i64 operations.
133132
pub fn build_sint<
134-
TSintTraits: SintTraits + IntMulTraits + IsZeroTraits,
133+
TSintTraits: SintTraits + IntMulTraits,
135134
const MIN_VALUE: i128,
136135
const MAX_VALUE: i128,
137136
>(
@@ -143,7 +142,6 @@ pub fn build_sint<
143142
SintConcrete::Equal(_) => misc::build_cell_eq(builder),
144143
SintConcrete::ToFelt252(_) => misc::build_identity(builder),
145144
SintConcrete::FromFelt252(_) => build_sint_from_felt252(builder, MIN_VALUE, MAX_VALUE),
146-
SintConcrete::IsZero(_) => misc::build_is_zero(builder),
147145
SintConcrete::WideMul(_) => build_small_wide_mul(builder),
148146
SintConcrete::Operation(libfunc) => {
149147
build_sint_overflowing_operation(builder, MIN_VALUE, MAX_VALUE, libfunc.operator)

crates/cairo-lang-sierra-to-casm/src/invocations/int/signed128.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ pub fn build(
1212
builder: CompiledInvocationBuilder<'_>,
1313
) -> Result<CompiledInvocation, InvocationError> {
1414
match libfunc {
15-
Sint128Concrete::IsZero(_) => misc::build_is_zero(builder),
1615
Sint128Concrete::Const(libfunc) => build_const(libfunc, builder),
1716
Sint128Concrete::FromFelt252(_) => build_sint_from_felt252(builder, i128::MIN, i128::MAX),
1817
Sint128Concrete::ToFelt252(_) => misc::build_identity(builder),

crates/cairo-lang-sierra/src/extensions/modules/int/signed.rs

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ use super::{
88
IntWideMulLibfunc,
99
};
1010
use crate::define_libfunc_hierarchy;
11-
use crate::extensions::is_zero::{IsZeroLibfunc, IsZeroTraits};
1211
use crate::extensions::lib_func::{
1312
BranchSignature, DeferredOutputKind, LibfuncSignature, OutputVarInfo, ParamSignature,
1413
SierraApChange, SignatureSpecializationContext, SpecializationContext,
@@ -35,14 +34,13 @@ pub trait SintTraits: IntTraits {
3534
}
3635

3736
define_libfunc_hierarchy! {
38-
pub enum SintLibfunc<TSintTraits: SintTraits + IntMulTraits + IsZeroTraits> {
37+
pub enum SintLibfunc<TSintTraits: SintTraits + IntMulTraits> {
3938
Const(IntConstLibfunc<TSintTraits>),
4039
Equal(IntEqualLibfunc<TSintTraits>),
4140
ToFelt252(IntToFelt252Libfunc<TSintTraits>),
4241
FromFelt252(IntFromFelt252Libfunc<TSintTraits>),
4342
Operation(SintOperationLibfunc<TSintTraits>),
4443
Diff(SintDiffLibfunc<TSintTraits>),
45-
IsZero(IsZeroLibfunc<TSintTraits>),
4644
WideMul(IntWideMulLibfunc<TSintTraits>),
4745
}, SintConcrete
4846
}
@@ -216,11 +214,6 @@ impl IntMulTraits for Sint8Traits {
216214
const WIDE_MUL_RES_TYPE_ID: GenericTypeId = <Sint16Type as NamedType>::ID;
217215
}
218216

219-
impl IsZeroTraits for Sint8Traits {
220-
const IS_ZERO: &'static str = "i8_is_zero";
221-
const GENERIC_TYPE_ID: GenericTypeId = <Sint8Type as NamedType>::ID;
222-
}
223-
224217
/// Type for i8.
225218
pub type Sint8Type = IntType<Sint8Traits>;
226219
pub type Sint8Libfunc = SintLibfunc<Sint8Traits>;
@@ -251,11 +244,6 @@ impl IntMulTraits for Sint16Traits {
251244
const WIDE_MUL_RES_TYPE_ID: GenericTypeId = <Sint32Type as NamedType>::ID;
252245
}
253246

254-
impl IsZeroTraits for Sint16Traits {
255-
const IS_ZERO: &'static str = "i16_is_zero";
256-
const GENERIC_TYPE_ID: GenericTypeId = <Sint16Type as NamedType>::ID;
257-
}
258-
259247
/// Type for i16.
260248
pub type Sint16Type = IntType<Sint16Traits>;
261249
pub type Sint16Libfunc = SintLibfunc<Sint16Traits>;
@@ -286,11 +274,6 @@ impl IntMulTraits for Sint32Traits {
286274
const WIDE_MUL_RES_TYPE_ID: GenericTypeId = <Sint64Type as NamedType>::ID;
287275
}
288276

289-
impl IsZeroTraits for Sint32Traits {
290-
const IS_ZERO: &'static str = "i32_is_zero";
291-
const GENERIC_TYPE_ID: GenericTypeId = <Sint32Type as NamedType>::ID;
292-
}
293-
294277
/// Type for i32.
295278
pub type Sint32Type = IntType<Sint32Traits>;
296279
pub type Sint32Libfunc = SintLibfunc<Sint32Traits>;
@@ -321,11 +304,6 @@ impl IntMulTraits for Sint64Traits {
321304
const WIDE_MUL_RES_TYPE_ID: GenericTypeId = <Sint128Type as NamedType>::ID;
322305
}
323306

324-
impl IsZeroTraits for Sint64Traits {
325-
const IS_ZERO: &'static str = "i64_is_zero";
326-
const GENERIC_TYPE_ID: GenericTypeId = <Sint64Type as NamedType>::ID;
327-
}
328-
329307
/// Type for i64.
330308
pub type Sint64Type = IntType<Sint64Traits>;
331309
pub type Sint64Libfunc = SintLibfunc<Sint64Traits>;

crates/cairo-lang-sierra/src/extensions/modules/int/signed128.rs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ use super::{
66
};
77
use crate::define_libfunc_hierarchy;
88
use crate::extensions::NamedType;
9-
use crate::extensions::is_zero::{IsZeroLibfunc, IsZeroTraits};
109
use crate::ids::GenericTypeId;
1110

1211
/// Type for i128.
@@ -20,7 +19,6 @@ define_libfunc_hierarchy! {
2019
FromFelt252(IntFromFelt252Libfunc<Sint128Traits>),
2120
Operation(SintOperationLibfunc<Sint128Traits>),
2221
Diff(SintDiffLibfunc<Sint128Traits>),
23-
IsZero(IsZeroLibfunc<Sint128Traits>),
2422
}, Sint128Concrete
2523
}
2624

@@ -43,8 +41,3 @@ impl IntTraits for Sint128Traits {
4341
const TO_FELT252: &'static str = "i128_to_felt252";
4442
const TRY_FROM_FELT252: &'static str = "i128_try_from_felt252";
4543
}
46-
47-
impl IsZeroTraits for Sint128Traits {
48-
const IS_ZERO: &'static str = "i128_is_zero";
49-
const GENERIC_TYPE_ID: GenericTypeId = <Sint128Type as NamedType>::ID;
50-
}

crates/cairo-lang-starknet-classes/src/allowed_libfuncs_lists/all.json

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -97,15 +97,13 @@
9797
"i128_const",
9898
"i128_diff",
9999
"i128_eq",
100-
"i128_is_zero",
101100
"i128_overflowing_add_impl",
102101
"i128_overflowing_sub_impl",
103102
"i128_to_felt252",
104103
"i128_try_from_felt252",
105104
"i16_const",
106105
"i16_diff",
107106
"i16_eq",
108-
"i16_is_zero",
109107
"i16_overflowing_add_impl",
110108
"i16_overflowing_sub_impl",
111109
"i16_to_felt252",
@@ -114,7 +112,6 @@
114112
"i32_const",
115113
"i32_diff",
116114
"i32_eq",
117-
"i32_is_zero",
118115
"i32_overflowing_add_impl",
119116
"i32_overflowing_sub_impl",
120117
"i32_to_felt252",
@@ -123,7 +120,6 @@
123120
"i64_const",
124121
"i64_diff",
125122
"i64_eq",
126-
"i64_is_zero",
127123
"i64_overflowing_add_impl",
128124
"i64_overflowing_sub_impl",
129125
"i64_to_felt252",
@@ -132,7 +128,6 @@
132128
"i8_const",
133129
"i8_diff",
134130
"i8_eq",
135-
"i8_is_zero",
136131
"i8_overflowing_add_impl",
137132
"i8_overflowing_sub_impl",
138133
"i8_to_felt252",

crates/cairo-lang-starknet-classes/src/allowed_libfuncs_lists/audited.json

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -89,15 +89,13 @@
8989
"i128_const",
9090
"i128_diff",
9191
"i128_eq",
92-
"i128_is_zero",
9392
"i128_overflowing_add_impl",
9493
"i128_overflowing_sub_impl",
9594
"i128_to_felt252",
9695
"i128_try_from_felt252",
9796
"i16_const",
9897
"i16_diff",
9998
"i16_eq",
100-
"i16_is_zero",
10199
"i16_overflowing_add_impl",
102100
"i16_overflowing_sub_impl",
103101
"i16_to_felt252",
@@ -106,7 +104,6 @@
106104
"i32_const",
107105
"i32_diff",
108106
"i32_eq",
109-
"i32_is_zero",
110107
"i32_overflowing_add_impl",
111108
"i32_overflowing_sub_impl",
112109
"i32_to_felt252",
@@ -115,7 +112,6 @@
115112
"i64_const",
116113
"i64_diff",
117114
"i64_eq",
118-
"i64_is_zero",
119115
"i64_overflowing_add_impl",
120116
"i64_overflowing_sub_impl",
121117
"i64_to_felt252",
@@ -124,7 +120,6 @@
124120
"i8_const",
125121
"i8_diff",
126122
"i8_eq",
127-
"i8_is_zero",
128123
"i8_overflowing_add_impl",
129124
"i8_overflowing_sub_impl",
130125
"i8_to_felt252",

0 commit comments

Comments
 (0)