Skip to content

Commit 4e958a5

Browse files
committed
Add a new compare_bytes intrinsic instead of calling memcmp directly
1 parent 88a79c6 commit 4e958a5

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

src/intrinsics/mod.rs

+13
Original file line numberDiff line numberDiff line change
@@ -1155,6 +1155,19 @@ fn codegen_regular_intrinsic_call<'tcx>(
11551155
ret.write_cvalue(fx, CValue::by_val(is_eq_value, ret.layout()));
11561156
}
11571157

1158+
sym::compare_bytes => {
1159+
intrinsic_args!(fx, args => (lhs_ptr, rhs_ptr, bytes_val); intrinsic);
1160+
let lhs_ptr = lhs_ptr.load_scalar(fx);
1161+
let rhs_ptr = rhs_ptr.load_scalar(fx);
1162+
let bytes_val = bytes_val.load_scalar(fx);
1163+
1164+
let params = vec![AbiParam::new(fx.pointer_type); 3];
1165+
let returns = vec![AbiParam::new(types::I32)];
1166+
let args = &[lhs_ptr, rhs_ptr, bytes_val];
1167+
let cmp = fx.lib_call("memcmp", params, returns, args)[0];
1168+
ret.write_cvalue(fx, CValue::by_val(cmp, ret.layout()));
1169+
}
1170+
11581171
sym::const_allocate => {
11591172
intrinsic_args!(fx, args => (_size, _align); intrinsic);
11601173

0 commit comments

Comments
 (0)