Skip to content

Commit 8963759

Browse files
authored
Remove cranelift_entity::{Signed, Unsigned} (#11400)
Use `*::cast_{un,}signed` in the Rust standard library stabilized in 1.87.
1 parent 10e3710 commit 8963759

File tree

18 files changed

+55
-171
lines changed

18 files changed

+55
-171
lines changed

cranelift/codegen/src/ir/immediates.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ use core::fmt::{self, Display, Formatter};
1010
use core::ops::{Add, BitAnd, BitOr, BitXor, Div, Mul, Neg, Not, Sub};
1111
use core::str::FromStr;
1212
use core::{i32, u32};
13-
use cranelift_entity::{Signed, Unsigned};
1413
#[cfg(feature = "enable-serde")]
1514
use serde_derive::{Deserialize, Serialize};
1615

@@ -124,8 +123,8 @@ impl Imm64 {
124123

125124
let bit_width = u64::from(bit_width);
126125
let delta = 64 - bit_width;
127-
let zero_extended = (self.0.unsigned() << delta) >> delta;
128-
Imm64(zero_extended.signed())
126+
let zero_extended = (self.0.cast_unsigned() << delta) >> delta;
127+
Imm64(zero_extended.cast_signed())
129128
}
130129
}
131130

cranelift/codegen/src/isa/x64/inst/emit.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2075,7 +2075,7 @@ fn emit_maybe_shrink(inst: &AsmInst, sink: &mut impl asm::CodeSink) {
20752075
m32,
20762076
sink,
20772077
|dst, amode, s| leal_rm::<R>::new(dst, amode).encode(s),
2078-
|dst, simm32, s| addl_mi::<R>::new(dst, simm32.unsigned()).encode(s),
2078+
|dst, simm32, s| addl_mi::<R>::new(dst, simm32.cast_unsigned()).encode(s),
20792079
|dst, reg, s| addl_rm::<R>::new(dst, reg).encode(s),
20802080
),
20812081
Inst::leaq_rm(leaq_rm { r64, m64 }) => emit_lea(

cranelift/codegen/src/isa/x64/inst/mod.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ use crate::{machinst::*, trace};
1313
use alloc::boxed::Box;
1414
use core::slice;
1515
use cranelift_assembler_x64 as asm;
16-
use cranelift_entity::{Signed, Unsigned};
1716
use smallvec::{SmallVec, smallvec};
1817
use std::fmt::{self, Write};
1918
use std::string::{String, ToString};
@@ -166,7 +165,7 @@ impl Inst {
166165
// If `simm64` is zero-extended use `movl` which zeros the
167166
// upper bits.
168167
Ok(imm32) => asm::inst::movl_oi::new(dst, imm32).into(),
169-
_ => match i32::try_from(simm64.signed()) {
168+
_ => match i32::try_from(simm64.cast_signed()) {
170169
// If `simm64` is sign-extended use `movq` which sign the
171170
// upper bits.
172171
Ok(simm32) => asm::inst::movq_mi_sxl::new(dst, simm32).into(),
@@ -235,7 +234,7 @@ impl Inst {
235234
/// Compares `src1` against `src2`
236235
pub(crate) fn cmp_mi_sxb(size: OperandSize, src1: Gpr, src2: i8) -> Inst {
237236
let inst = match size {
238-
OperandSize::Size8 => asm::inst::cmpb_mi::new(src1, src2.unsigned()).into(),
237+
OperandSize::Size8 => asm::inst::cmpb_mi::new(src1, src2.cast_unsigned()).into(),
239238
OperandSize::Size16 => asm::inst::cmpw_mi_sxb::new(src1, src2).into(),
240239
OperandSize::Size32 => asm::inst::cmpl_mi_sxb::new(src1, src2).into(),
241240
OperandSize::Size64 => asm::inst::cmpq_mi_sxb::new(src1, src2).into(),

cranelift/codegen/src/isa/x64/lower/isle.rs

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ use crate::machinst::{
2424
};
2525
use alloc::vec::Vec;
2626
use cranelift_assembler_x64 as asm;
27-
use cranelift_entity::{Signed, Unsigned};
2827
use regalloc2::PReg;
2928
use std::boxed::Box;
3029

@@ -173,7 +172,7 @@ impl Context for IsleContext<'_, '_, MInst, X64Backend> {
173172
if let Some(imm) = self.i64_from_iconst(val) {
174173
if let Ok(imm) = i32::try_from(imm) {
175174
return RegMemImm::Imm {
176-
simm32: imm.unsigned(),
175+
simm32: imm.cast_unsigned(),
177176
};
178177
}
179178
}
@@ -185,7 +184,7 @@ impl Context for IsleContext<'_, '_, MInst, X64Backend> {
185184
if let Some(imm) = self.i64_from_iconst(val) {
186185
if let Ok(imm) = i32::try_from(imm) {
187186
return XmmMemImm::unwrap_new(RegMemImm::Imm {
188-
simm32: imm.unsigned(),
187+
simm32: imm.cast_unsigned(),
189188
});
190189
}
191190
}
@@ -344,7 +343,7 @@ impl Context for IsleContext<'_, '_, MInst, X64Backend> {
344343
fn simm32_from_value(&mut self, val: Value) -> Option<GprMemImm> {
345344
let imm = self.i64_from_iconst(val)?;
346345
Some(GprMemImm::unwrap_new(RegMemImm::Imm {
347-
simm32: i32::try_from(imm).ok()?.unsigned(),
346+
simm32: i32::try_from(imm).ok()?.cast_unsigned(),
348347
}))
349348
}
350349

@@ -975,35 +974,41 @@ impl Context for IsleContext<'_, '_, MInst, X64Backend> {
975974

976975
fn is_imm8(&mut self, src: &GprMemImm) -> Option<u8> {
977976
match src.clone().to_reg_mem_imm() {
978-
RegMemImm::Imm { simm32 } => Some(i8::try_from(simm32.signed()).ok()?.unsigned()),
977+
RegMemImm::Imm { simm32 } => {
978+
Some(i8::try_from(simm32.cast_signed()).ok()?.cast_unsigned())
979+
}
979980
_ => None,
980981
}
981982
}
982983

983984
fn is_imm8_xmm(&mut self, src: &XmmMemImm) -> Option<u8> {
984985
match src.clone().to_reg_mem_imm() {
985-
RegMemImm::Imm { simm32 } => Some(i8::try_from(simm32.signed()).ok()?.unsigned()),
986+
RegMemImm::Imm { simm32 } => {
987+
Some(i8::try_from(simm32.cast_signed()).ok()?.cast_unsigned())
988+
}
986989
_ => None,
987990
}
988991
}
989992

990993
fn is_simm8(&mut self, src: &GprMemImm) -> Option<i8> {
991994
match src.clone().to_reg_mem_imm() {
992-
RegMemImm::Imm { simm32 } => Some(i8::try_from(simm32.signed()).ok()?),
995+
RegMemImm::Imm { simm32 } => Some(i8::try_from(simm32.cast_signed()).ok()?),
993996
_ => None,
994997
}
995998
}
996999

9971000
fn is_imm16(&mut self, src: &GprMemImm) -> Option<u16> {
9981001
match src.clone().to_reg_mem_imm() {
999-
RegMemImm::Imm { simm32 } => Some(i16::try_from(simm32.signed()).ok()?.unsigned()),
1002+
RegMemImm::Imm { simm32 } => {
1003+
Some(i16::try_from(simm32.cast_signed()).ok()?.cast_unsigned())
1004+
}
10001005
_ => None,
10011006
}
10021007
}
10031008

10041009
fn is_simm16(&mut self, src: &GprMemImm) -> Option<i16> {
10051010
match src.clone().to_reg_mem_imm() {
1006-
RegMemImm::Imm { simm32 } => Some(i16::try_from(simm32.signed()).ok()?),
1011+
RegMemImm::Imm { simm32 } => Some(i16::try_from(simm32.cast_signed()).ok()?),
10071012
_ => None,
10081013
}
10091014
}

cranelift/entity/src/lib.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -277,9 +277,7 @@ mod list;
277277
mod map;
278278
mod primary;
279279
mod set;
280-
mod signed;
281280
mod sparse;
282-
mod unsigned;
283281

284282
pub use self::boxed_slice::BoxedSlice;
285283
pub use self::iter::{Iter, IterMut};
@@ -288,9 +286,7 @@ pub use self::list::{EntityList, ListPool};
288286
pub use self::map::SecondaryMap;
289287
pub use self::primary::PrimaryMap;
290288
pub use self::set::{EntitySet, SetIter};
291-
pub use self::signed::Signed;
292289
pub use self::sparse::{SparseMap, SparseMapValue, SparseSet};
293-
pub use self::unsigned::Unsigned;
294290

295291
/// A collection of tests to ensure that use of the different `entity_impl!` forms will generate
296292
/// `EntityRef` implementations that behave the same way.

cranelift/entity/src/signed.rs

Lines changed: 0 additions & 40 deletions
This file was deleted.

cranelift/entity/src/unsigned.rs

Lines changed: 0 additions & 71 deletions
This file was deleted.

crates/cranelift/src/bounds_checks.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ use cranelift_codegen::{
3131
ir::{Expr, Fact},
3232
};
3333
use cranelift_frontend::FunctionBuilder;
34-
use wasmtime_environ::Unsigned;
3534

3635
/// The kind of bounds check to perform when accessing a Wasm linear memory or
3736
/// GC heap.
@@ -961,7 +960,7 @@ fn statically_in_bounds(
961960
_ => return None,
962961
};
963962
let ty = func.dfg.value_type(index);
964-
let index = imm.zero_extend_from_width(ty.bits()).bits().unsigned();
963+
let index = imm.zero_extend_from_width(ty.bits()).bits().cast_unsigned();
965964
let final_addr = index.checked_add(offset_and_size)?;
966965
Some(final_addr <= heap.memory.minimum_byte_size().unwrap_or(u64::MAX))
967966
})

crates/cranelift/src/obj.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ use object::write::{Object, SectionId, StandardSegment, Symbol, SymbolId, Symbol
2424
use object::{Architecture, SectionFlags, SectionKind, SymbolFlags, SymbolKind, SymbolScope};
2525
use std::ops::Range;
2626
use wasmtime_environ::obj;
27-
use wasmtime_environ::{Compiler, TripleExt, Unsigned};
27+
use wasmtime_environ::{Compiler, TripleExt};
2828

2929
const TEXT_SECTION_NAME: &[u8] = b".text";
3030

@@ -546,7 +546,7 @@ impl<'a> UnwindInfoBuilder<'a> {
546546
// unwinders just use this constant for a relative addition with the
547547
// address of the FDE, which means that the sign doesn't actually
548548
// matter.
549-
let fde = unwind_info.to_fde(Address::Constant(actual_offset.unsigned()));
549+
let fde = unwind_info.to_fde(Address::Constant(actual_offset.cast_unsigned()));
550550
table.add_fde(cie_id, fde);
551551
}
552552
let endian = match compiler.triple().endianness().unwrap() {

crates/cranelift/src/translate/code_translator.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,8 @@ use std::collections::{HashMap, hash_map};
9393
use std::vec::Vec;
9494
use wasmparser::{FuncValidator, MemArg, Operator, WasmModuleResources};
9595
use wasmtime_environ::{
96-
DataIndex, ElemIndex, FuncIndex, GlobalIndex, MemoryIndex, Signed, TableIndex, TypeConvert,
97-
TypeIndex, Unsigned, WasmRefType, WasmResult, WasmValType, wasm_unsupported,
96+
DataIndex, ElemIndex, FuncIndex, GlobalIndex, MemoryIndex, TableIndex, TypeConvert, TypeIndex,
97+
WasmRefType, WasmResult, WasmValType, wasm_unsupported,
9898
};
9999

100100
/// Given a `Reachability<T>`, unwrap the inner `T` or, when unreachable, set
@@ -911,7 +911,7 @@ pub fn translate_operator(
911911
}
912912
/****************************** Nullary Operators ************************************/
913913
Operator::I32Const { value } => {
914-
stack.push1(builder.ins().iconst(I32, i64::from(value.unsigned())));
914+
stack.push1(builder.ins().iconst(I32, i64::from(value.cast_unsigned())));
915915
}
916916
Operator::I64Const { value } => stack.push1(builder.ins().iconst(I64, *value)),
917917
Operator::F32Const { value } => {
@@ -3301,7 +3301,7 @@ fn prepare_addr(
33013301
Err(_) => {
33023302
let offset = builder
33033303
.ins()
3304-
.iconst(heap.index_type(), memarg.offset.signed());
3304+
.iconst(heap.index_type(), memarg.offset.cast_signed());
33053305
let adjusted_index = environ.uadd_overflow_trap(
33063306
builder,
33073307
index,
@@ -3370,7 +3370,7 @@ fn align_atomic_addr(
33703370
let effective_addr = if memarg.offset == 0 {
33713371
addr
33723372
} else {
3373-
builder.ins().iadd_imm(addr, memarg.offset.signed())
3373+
builder.ins().iadd_imm(addr, memarg.offset.cast_signed())
33743374
};
33753375
debug_assert!(loaded_bytes.is_power_of_two());
33763376
let misalignment = builder

0 commit comments

Comments
 (0)