1095: Update to cranelift 0.52 r=nlewycky a=nlewycky

# Description
Update to cranelift 0.52.

To use our wasmer branch of cranelift, we point to its path on git. Per @syrusakbary , we don't want to push updated wasmer-clif crates until we're ready to release the matching wasmer that will use them.

# Review

- [x] Add a short description of the the change to the CHANGELOG.md file


Co-authored-by: Nick Lewycky <nick@wasmer.io>
Co-authored-by: Mark McCaskey <mark@wasmer.io>
This commit is contained in:
bors[bot]
2019-12-21 01:45:45 +00:00
committed by GitHub
9 changed files with 993 additions and 922 deletions

View File

@ -11,7 +11,7 @@ readme = "README.md"
[dependencies]
wasmer-runtime-core = { path = "../runtime-core", version = "0.12.0" }
wasmparser = "0.39.1"
wasmparser = "0.45.0"
smallvec = "0.6"
goblin = "0.0.24"
libc = "0.2.60"

View File

@ -1745,7 +1745,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
}
// Operate on locals.
Operator::GetLocal { local_index } => {
Operator::LocalGet { local_index } => {
let pointer_value = locals[local_index as usize];
let v = builder.build_load(pointer_value, &state.var_name());
tbaa_label(
@ -1757,14 +1757,14 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
);
state.push1(v);
}
Operator::SetLocal { local_index } => {
Operator::LocalSet { local_index } => {
let pointer_value = locals[local_index as usize];
let (v, i) = state.pop1_extra()?;
let v = apply_pending_canonicalization(builder, intrinsics, v, i);
let store = builder.build_store(pointer_value, v);
tbaa_label(&self.module, intrinsics, "local", store, Some(local_index));
}
Operator::TeeLocal { local_index } => {
Operator::LocalTee { local_index } => {
let pointer_value = locals[local_index as usize];
let (v, i) = state.peek1_extra()?;
let v = apply_pending_canonicalization(builder, intrinsics, v, i);
@ -1772,7 +1772,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
tbaa_label(&self.module, intrinsics, "local", store, Some(local_index));
}
Operator::GetGlobal { global_index } => {
Operator::GlobalGet { global_index } => {
let index = GlobalIndex::new(global_index as usize);
let global_cache = ctx.global_cache(index, intrinsics, self.module.clone());
match global_cache {
@ -1792,7 +1792,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
}
}
}
Operator::SetGlobal { global_index } => {
Operator::GlobalSet { global_index } => {
let (value, info) = state.pop1_extra()?;
let value = apply_pending_canonicalization(builder, intrinsics, value, info);
let index = GlobalIndex::new(global_index as usize);
@ -4444,21 +4444,21 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
let res = builder.build_int_truncate(v, intrinsics.i32_ty, &state.var_name());
state.push1(res);
}
Operator::I64ExtendSI32 => {
Operator::I64ExtendI32S => {
let (v, i) = state.pop1_extra()?;
let v = apply_pending_canonicalization(builder, intrinsics, v, i);
let v = v.into_int_value();
let res = builder.build_int_s_extend(v, intrinsics.i64_ty, &state.var_name());
state.push1(res);
}
Operator::I64ExtendUI32 => {
Operator::I64ExtendI32U => {
let (v, i) = state.pop1_extra()?;
let v = apply_pending_canonicalization(builder, intrinsics, v, i);
let v = v.into_int_value();
let res = builder.build_int_z_extend(v, intrinsics.i64_ty, &state.var_name());
state.push1_extra(res, ExtraInfo::arithmetic_f64());
}
Operator::I32x4TruncSF32x4Sat => {
Operator::I32x4TruncSatF32x4S => {
let (v, i) = state.pop1_extra()?;
let v = apply_pending_canonicalization(builder, intrinsics, v, i);
let v = v.into_int_value();
@ -4476,7 +4476,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
);
state.push1(res);
}
Operator::I32x4TruncUF32x4Sat => {
Operator::I32x4TruncSatF32x4U => {
let (v, i) = state.pop1_extra()?;
let v = apply_pending_canonicalization(builder, intrinsics, v, i);
let v = v.into_int_value();
@ -4494,7 +4494,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
);
state.push1(res);
}
Operator::I64x2TruncSF64x2Sat => {
Operator::I64x2TruncSatF64x2S => {
let (v, i) = state.pop1_extra()?;
let v = apply_pending_canonicalization(builder, intrinsics, v, i);
let v = v.into_int_value();
@ -4512,7 +4512,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
);
state.push1(res);
}
Operator::I64x2TruncUF64x2Sat => {
Operator::I64x2TruncSatF64x2U => {
let (v, i) = state.pop1_extra()?;
let v = apply_pending_canonicalization(builder, intrinsics, v, i);
let v = v.into_int_value();
@ -4530,7 +4530,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
);
state.push1(res);
}
Operator::I32TruncSF32 => {
Operator::I32TruncF32S => {
let v1 = state.pop1()?.into_float_value();
trap_if_not_representable_as_int(
builder, intrinsics, context, &function, 0xcf000000, // -2147483600.0
@ -4541,7 +4541,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
builder.build_float_to_signed_int(v1, intrinsics.i32_ty, &state.var_name());
state.push1(res);
}
Operator::I32TruncSF64 => {
Operator::I32TruncF64S => {
let v1 = state.pop1()?.into_float_value();
trap_if_not_representable_as_int(
builder,
@ -4556,7 +4556,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
builder.build_float_to_signed_int(v1, intrinsics.i32_ty, &state.var_name());
state.push1(res);
}
Operator::I32TruncSSatF32 => {
Operator::I32TruncSatF32S => {
let (v, i) = state.pop1_extra()?;
let v = apply_pending_canonicalization(builder, intrinsics, v, i);
let v = v.into_float_value();
@ -4572,7 +4572,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
);
state.push1(res);
}
Operator::I32TruncSSatF64 => {
Operator::I32TruncSatF64S => {
let (v, i) = state.pop1_extra()?;
let v = apply_pending_canonicalization(builder, intrinsics, v, i);
let v = v.into_float_value();
@ -4588,7 +4588,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
);
state.push1(res);
}
Operator::I64TruncSF32 => {
Operator::I64TruncF32S => {
let v1 = state.pop1()?.into_float_value();
trap_if_not_representable_as_int(
builder, intrinsics, context, &function,
@ -4600,7 +4600,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
builder.build_float_to_signed_int(v1, intrinsics.i64_ty, &state.var_name());
state.push1(res);
}
Operator::I64TruncSF64 => {
Operator::I64TruncF64S => {
let v1 = state.pop1()?.into_float_value();
trap_if_not_representable_as_int(
builder,
@ -4615,7 +4615,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
builder.build_float_to_signed_int(v1, intrinsics.i64_ty, &state.var_name());
state.push1(res);
}
Operator::I64TruncSSatF32 => {
Operator::I64TruncSatF32S => {
let (v, i) = state.pop1_extra()?;
let v = apply_pending_canonicalization(builder, intrinsics, v, i);
let v = v.into_float_value();
@ -4631,7 +4631,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
);
state.push1(res);
}
Operator::I64TruncSSatF64 => {
Operator::I64TruncSatF64S => {
let (v, i) = state.pop1_extra()?;
let v = apply_pending_canonicalization(builder, intrinsics, v, i);
let v = v.into_float_value();
@ -4647,7 +4647,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
);
state.push1(res);
}
Operator::I32TruncUF32 => {
Operator::I32TruncF32U => {
let v1 = state.pop1()?.into_float_value();
trap_if_not_representable_as_int(
builder, intrinsics, context, &function, 0xbf7fffff, // -0.99999994
@ -4658,7 +4658,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
builder.build_float_to_unsigned_int(v1, intrinsics.i32_ty, &state.var_name());
state.push1(res);
}
Operator::I32TruncUF64 => {
Operator::I32TruncF64U => {
let v1 = state.pop1()?.into_float_value();
trap_if_not_representable_as_int(
builder,
@ -4673,7 +4673,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
builder.build_float_to_unsigned_int(v1, intrinsics.i32_ty, &state.var_name());
state.push1(res);
}
Operator::I32TruncUSatF32 => {
Operator::I32TruncSatF32U => {
let (v, i) = state.pop1_extra()?;
let v = apply_pending_canonicalization(builder, intrinsics, v, i);
let v = v.into_float_value();
@ -4689,7 +4689,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
);
state.push1(res);
}
Operator::I32TruncUSatF64 => {
Operator::I32TruncSatF64U => {
let (v, i) = state.pop1_extra()?;
let v = apply_pending_canonicalization(builder, intrinsics, v, i);
let v = v.into_float_value();
@ -4705,7 +4705,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
);
state.push1(res);
}
Operator::I64TruncUF32 => {
Operator::I64TruncF32U => {
let v1 = state.pop1()?.into_float_value();
trap_if_not_representable_as_int(
builder, intrinsics, context, &function, 0xbf7fffff, // -0.99999994
@ -4716,7 +4716,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
builder.build_float_to_unsigned_int(v1, intrinsics.i64_ty, &state.var_name());
state.push1(res);
}
Operator::I64TruncUF64 => {
Operator::I64TruncF64U => {
let v1 = state.pop1()?.into_float_value();
trap_if_not_representable_as_int(
builder,
@ -4731,7 +4731,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
builder.build_float_to_unsigned_int(v1, intrinsics.i64_ty, &state.var_name());
state.push1(res);
}
Operator::I64TruncUSatF32 => {
Operator::I64TruncSatF32U => {
let (v, i) = state.pop1_extra()?;
let v = apply_pending_canonicalization(builder, intrinsics, v, i);
let v = v.into_float_value();
@ -4747,7 +4747,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
);
state.push1(res);
}
Operator::I64TruncUSatF64 => {
Operator::I64TruncSatF64U => {
let (v, i) = state.pop1_extra()?;
let v = apply_pending_canonicalization(builder, intrinsics, v, i);
let v = v.into_float_value();
@ -4775,7 +4775,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
let res = builder.build_float_ext(v, intrinsics.f64_ty, &state.var_name());
state.push1_extra(res, ExtraInfo::pending_f64_nan());
}
Operator::F32ConvertSI32 | Operator::F32ConvertSI64 => {
Operator::F32ConvertI32S | Operator::F32ConvertI64S => {
let (v, i) = state.pop1_extra()?;
let v = apply_pending_canonicalization(builder, intrinsics, v, i);
let v = v.into_int_value();
@ -4783,7 +4783,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
builder.build_signed_int_to_float(v, intrinsics.f32_ty, &state.var_name());
state.push1(res);
}
Operator::F64ConvertSI32 | Operator::F64ConvertSI64 => {
Operator::F64ConvertI32S | Operator::F64ConvertI64S => {
let (v, i) = state.pop1_extra()?;
let v = apply_pending_canonicalization(builder, intrinsics, v, i);
let v = v.into_int_value();
@ -4791,7 +4791,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
builder.build_signed_int_to_float(v, intrinsics.f64_ty, &state.var_name());
state.push1(res);
}
Operator::F32ConvertUI32 | Operator::F32ConvertUI64 => {
Operator::F32ConvertI32U | Operator::F32ConvertI64U => {
let (v, i) = state.pop1_extra()?;
let v = apply_pending_canonicalization(builder, intrinsics, v, i);
let v = v.into_int_value();
@ -4799,7 +4799,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
builder.build_unsigned_int_to_float(v, intrinsics.f32_ty, &state.var_name());
state.push1(res);
}
Operator::F64ConvertUI32 | Operator::F64ConvertUI64 => {
Operator::F64ConvertI32U | Operator::F64ConvertI64U => {
let (v, i) = state.pop1_extra()?;
let v = apply_pending_canonicalization(builder, intrinsics, v, i);
let v = v.into_int_value();
@ -4807,7 +4807,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
builder.build_unsigned_int_to_float(v, intrinsics.f64_ty, &state.var_name());
state.push1(res);
}
Operator::F32x4ConvertSI32x4 => {
Operator::F32x4ConvertI32x4S => {
let v = state.pop1()?;
let v = builder
.build_bitcast(v, intrinsics.i32x4_ty, "")
@ -4817,7 +4817,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
let res = builder.build_bitcast(res, intrinsics.i128_ty, "");
state.push1(res);
}
Operator::F32x4ConvertUI32x4 => {
Operator::F32x4ConvertI32x4U => {
let v = state.pop1()?;
let v = builder
.build_bitcast(v, intrinsics.i32x4_ty, "")
@ -4827,7 +4827,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
let res = builder.build_bitcast(res, intrinsics.i128_ty, "");
state.push1(res);
}
Operator::F64x2ConvertSI64x2 => {
Operator::F64x2ConvertI64x2S => {
let v = state.pop1()?;
let v = builder
.build_bitcast(v, intrinsics.i64x2_ty, "")
@ -4837,7 +4837,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
let res = builder.build_bitcast(res, intrinsics.i128_ty, "");
state.push1(res);
}
Operator::F64x2ConvertUI64x2 => {
Operator::F64x2ConvertI64x2U => {
let v = state.pop1()?;
let v = builder
.build_bitcast(v, intrinsics.i64x2_ty, "")
@ -5891,7 +5891,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
let res = builder.build_bitcast(res, intrinsics.i128_ty, "");
state.push1(res);
}
Operator::I8x16LoadSplat { ref memarg } => {
Operator::V8x16LoadSplat { ref memarg } => {
let effective_address = resolve_memory_ptr(
builder,
intrinsics,
@ -5926,7 +5926,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
let res = builder.build_bitcast(res, intrinsics.i128_ty, "");
state.push1(res);
}
Operator::I16x8LoadSplat { ref memarg } => {
Operator::V16x8LoadSplat { ref memarg } => {
let effective_address = resolve_memory_ptr(
builder,
intrinsics,
@ -5961,7 +5961,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
let res = builder.build_bitcast(res, intrinsics.i128_ty, "");
state.push1(res);
}
Operator::I32x4LoadSplat { ref memarg } => {
Operator::V32x4LoadSplat { ref memarg } => {
let effective_address = resolve_memory_ptr(
builder,
intrinsics,
@ -5996,7 +5996,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
let res = builder.build_bitcast(res, intrinsics.i128_ty, "");
state.push1(res);
}
Operator::I64x2LoadSplat { ref memarg } => {
Operator::V64x2LoadSplat { ref memarg } => {
let effective_address = resolve_memory_ptr(
builder,
intrinsics,
@ -6031,7 +6031,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
let res = builder.build_bitcast(res, intrinsics.i128_ty, "");
state.push1(res);
}
Operator::Fence { flags: _ } => {
Operator::AtomicFence { flags: _ } => {
// Fence is a nop.
//
// Fence was added to preserve information about fences from
@ -6415,7 +6415,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
.unwrap();
tbaa_label(&self.module, intrinsics, "memory", store, Some(0));
}
Operator::I32AtomicRmw8UAdd { ref memarg } => {
Operator::I32AtomicRmw8AddU { ref memarg } => {
let value = state.pop1()?.into_int_value();
let effective_address = resolve_memory_ptr(
builder,
@ -6457,7 +6457,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
let old = builder.build_int_z_extend(old, intrinsics.i32_ty, &state.var_name());
state.push1_extra(old, ExtraInfo::arithmetic_f32());
}
Operator::I32AtomicRmw16UAdd { ref memarg } => {
Operator::I32AtomicRmw16AddU { ref memarg } => {
let value = state.pop1()?.into_int_value();
let effective_address = resolve_memory_ptr(
builder,
@ -6538,7 +6538,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
);
state.push1(old);
}
Operator::I64AtomicRmw8UAdd { ref memarg } => {
Operator::I64AtomicRmw8AddU { ref memarg } => {
let value = state.pop1()?.into_int_value();
let effective_address = resolve_memory_ptr(
builder,
@ -6580,7 +6580,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
let old = builder.build_int_z_extend(old, intrinsics.i64_ty, &state.var_name());
state.push1_extra(old, ExtraInfo::arithmetic_f64());
}
Operator::I64AtomicRmw16UAdd { ref memarg } => {
Operator::I64AtomicRmw16AddU { ref memarg } => {
let value = state.pop1()?.into_int_value();
let effective_address = resolve_memory_ptr(
builder,
@ -6622,7 +6622,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
let old = builder.build_int_z_extend(old, intrinsics.i64_ty, &state.var_name());
state.push1_extra(old, ExtraInfo::arithmetic_f64());
}
Operator::I64AtomicRmw32UAdd { ref memarg } => {
Operator::I64AtomicRmw32AddU { ref memarg } => {
let value = state.pop1()?.into_int_value();
let effective_address = resolve_memory_ptr(
builder,
@ -6703,7 +6703,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
);
state.push1(old);
}
Operator::I32AtomicRmw8USub { ref memarg } => {
Operator::I32AtomicRmw8SubU { ref memarg } => {
let value = state.pop1()?.into_int_value();
let effective_address = resolve_memory_ptr(
builder,
@ -6745,7 +6745,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
let old = builder.build_int_z_extend(old, intrinsics.i32_ty, &state.var_name());
state.push1_extra(old, ExtraInfo::arithmetic_f32());
}
Operator::I32AtomicRmw16USub { ref memarg } => {
Operator::I32AtomicRmw16SubU { ref memarg } => {
let value = state.pop1()?.into_int_value();
let effective_address = resolve_memory_ptr(
builder,
@ -6826,7 +6826,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
);
state.push1(old);
}
Operator::I64AtomicRmw8USub { ref memarg } => {
Operator::I64AtomicRmw8SubU { ref memarg } => {
let value = state.pop1()?.into_int_value();
let effective_address = resolve_memory_ptr(
builder,
@ -6868,7 +6868,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
let old = builder.build_int_z_extend(old, intrinsics.i64_ty, &state.var_name());
state.push1_extra(old, ExtraInfo::arithmetic_f32());
}
Operator::I64AtomicRmw16USub { ref memarg } => {
Operator::I64AtomicRmw16SubU { ref memarg } => {
let value = state.pop1()?.into_int_value();
let effective_address = resolve_memory_ptr(
builder,
@ -6910,7 +6910,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
let old = builder.build_int_z_extend(old, intrinsics.i64_ty, &state.var_name());
state.push1_extra(old, ExtraInfo::arithmetic_f64());
}
Operator::I64AtomicRmw32USub { ref memarg } => {
Operator::I64AtomicRmw32SubU { ref memarg } => {
let value = state.pop1()?.into_int_value();
let effective_address = resolve_memory_ptr(
builder,
@ -6991,7 +6991,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
);
state.push1(old);
}
Operator::I32AtomicRmw8UAnd { ref memarg } => {
Operator::I32AtomicRmw8AndU { ref memarg } => {
let value = state.pop1()?.into_int_value();
let effective_address = resolve_memory_ptr(
builder,
@ -7033,7 +7033,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
let old = builder.build_int_z_extend(old, intrinsics.i32_ty, &state.var_name());
state.push1_extra(old, ExtraInfo::arithmetic_f32());
}
Operator::I32AtomicRmw16UAnd { ref memarg } => {
Operator::I32AtomicRmw16AndU { ref memarg } => {
let value = state.pop1()?.into_int_value();
let effective_address = resolve_memory_ptr(
builder,
@ -7114,7 +7114,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
);
state.push1(old);
}
Operator::I64AtomicRmw8UAnd { ref memarg } => {
Operator::I64AtomicRmw8AndU { ref memarg } => {
let value = state.pop1()?.into_int_value();
let effective_address = resolve_memory_ptr(
builder,
@ -7156,7 +7156,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
let old = builder.build_int_z_extend(old, intrinsics.i64_ty, &state.var_name());
state.push1_extra(old, ExtraInfo::arithmetic_f64());
}
Operator::I64AtomicRmw16UAnd { ref memarg } => {
Operator::I64AtomicRmw16AndU { ref memarg } => {
let value = state.pop1()?.into_int_value();
let effective_address = resolve_memory_ptr(
builder,
@ -7198,7 +7198,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
let old = builder.build_int_z_extend(old, intrinsics.i64_ty, &state.var_name());
state.push1_extra(old, ExtraInfo::arithmetic_f64());
}
Operator::I64AtomicRmw32UAnd { ref memarg } => {
Operator::I64AtomicRmw32AndU { ref memarg } => {
let value = state.pop1()?.into_int_value();
let effective_address = resolve_memory_ptr(
builder,
@ -7279,7 +7279,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
);
state.push1(old);
}
Operator::I32AtomicRmw8UOr { ref memarg } => {
Operator::I32AtomicRmw8OrU { ref memarg } => {
let value = state.pop1()?.into_int_value();
let effective_address = resolve_memory_ptr(
builder,
@ -7321,7 +7321,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
let old = builder.build_int_z_extend(old, intrinsics.i32_ty, &state.var_name());
state.push1_extra(old, ExtraInfo::arithmetic_f32());
}
Operator::I32AtomicRmw16UOr { ref memarg } => {
Operator::I32AtomicRmw16OrU { ref memarg } => {
let value = state.pop1()?.into_int_value();
let effective_address = resolve_memory_ptr(
builder,
@ -7403,7 +7403,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
let old = builder.build_int_z_extend(old, intrinsics.i32_ty, &state.var_name());
state.push1_extra(old, ExtraInfo::arithmetic_f32());
}
Operator::I64AtomicRmw8UOr { ref memarg } => {
Operator::I64AtomicRmw8OrU { ref memarg } => {
let value = state.pop1()?.into_int_value();
let effective_address = resolve_memory_ptr(
builder,
@ -7445,7 +7445,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
let old = builder.build_int_z_extend(old, intrinsics.i64_ty, &state.var_name());
state.push1_extra(old, ExtraInfo::arithmetic_f64());
}
Operator::I64AtomicRmw16UOr { ref memarg } => {
Operator::I64AtomicRmw16OrU { ref memarg } => {
let value = state.pop1()?.into_int_value();
let effective_address = resolve_memory_ptr(
builder,
@ -7487,7 +7487,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
let old = builder.build_int_z_extend(old, intrinsics.i64_ty, &state.var_name());
state.push1_extra(old, ExtraInfo::arithmetic_f64());
}
Operator::I64AtomicRmw32UOr { ref memarg } => {
Operator::I64AtomicRmw32OrU { ref memarg } => {
let value = state.pop1()?.into_int_value();
let effective_address = resolve_memory_ptr(
builder,
@ -7568,7 +7568,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
);
state.push1(old);
}
Operator::I32AtomicRmw8UXor { ref memarg } => {
Operator::I32AtomicRmw8XorU { ref memarg } => {
let value = state.pop1()?.into_int_value();
let effective_address = resolve_memory_ptr(
builder,
@ -7610,7 +7610,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
let old = builder.build_int_z_extend(old, intrinsics.i32_ty, &state.var_name());
state.push1_extra(old, ExtraInfo::arithmetic_f32());
}
Operator::I32AtomicRmw16UXor { ref memarg } => {
Operator::I32AtomicRmw16XorU { ref memarg } => {
let value = state.pop1()?.into_int_value();
let effective_address = resolve_memory_ptr(
builder,
@ -7691,7 +7691,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
);
state.push1(old);
}
Operator::I64AtomicRmw8UXor { ref memarg } => {
Operator::I64AtomicRmw8XorU { ref memarg } => {
let value = state.pop1()?.into_int_value();
let effective_address = resolve_memory_ptr(
builder,
@ -7733,7 +7733,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
let old = builder.build_int_z_extend(old, intrinsics.i64_ty, &state.var_name());
state.push1_extra(old, ExtraInfo::arithmetic_f64());
}
Operator::I64AtomicRmw16UXor { ref memarg } => {
Operator::I64AtomicRmw16XorU { ref memarg } => {
let value = state.pop1()?.into_int_value();
let effective_address = resolve_memory_ptr(
builder,
@ -7775,7 +7775,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
let old = builder.build_int_z_extend(old, intrinsics.i64_ty, &state.var_name());
state.push1_extra(old, ExtraInfo::arithmetic_f64());
}
Operator::I64AtomicRmw32UXor { ref memarg } => {
Operator::I64AtomicRmw32XorU { ref memarg } => {
let value = state.pop1()?.into_int_value();
let effective_address = resolve_memory_ptr(
builder,
@ -7856,7 +7856,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
);
state.push1(old);
}
Operator::I32AtomicRmw8UXchg { ref memarg } => {
Operator::I32AtomicRmw8XchgU { ref memarg } => {
let value = state.pop1()?.into_int_value();
let effective_address = resolve_memory_ptr(
builder,
@ -7898,7 +7898,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
let old = builder.build_int_z_extend(old, intrinsics.i32_ty, &state.var_name());
state.push1_extra(old, ExtraInfo::arithmetic_f32());
}
Operator::I32AtomicRmw16UXchg { ref memarg } => {
Operator::I32AtomicRmw16XchgU { ref memarg } => {
let value = state.pop1()?.into_int_value();
let effective_address = resolve_memory_ptr(
builder,
@ -7979,7 +7979,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
);
state.push1(old);
}
Operator::I64AtomicRmw8UXchg { ref memarg } => {
Operator::I64AtomicRmw8XchgU { ref memarg } => {
let value = state.pop1()?.into_int_value();
let effective_address = resolve_memory_ptr(
builder,
@ -8021,7 +8021,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
let old = builder.build_int_z_extend(old, intrinsics.i64_ty, &state.var_name());
state.push1_extra(old, ExtraInfo::arithmetic_f64());
}
Operator::I64AtomicRmw16UXchg { ref memarg } => {
Operator::I64AtomicRmw16XchgU { ref memarg } => {
let value = state.pop1()?.into_int_value();
let effective_address = resolve_memory_ptr(
builder,
@ -8063,7 +8063,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
let old = builder.build_int_z_extend(old, intrinsics.i64_ty, &state.var_name());
state.push1_extra(old, ExtraInfo::arithmetic_f64());
}
Operator::I64AtomicRmw32UXchg { ref memarg } => {
Operator::I64AtomicRmw32XchgU { ref memarg } => {
let value = state.pop1()?.into_int_value();
let effective_address = resolve_memory_ptr(
builder,
@ -8144,7 +8144,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
);
state.push1(old);
}
Operator::I32AtomicRmw8UCmpxchg { ref memarg } => {
Operator::I32AtomicRmw8CmpxchgU { ref memarg } => {
let ((cmp, cmp_info), (new, new_info)) = state.pop2_extra()?;
let cmp = apply_pending_canonicalization(builder, intrinsics, cmp, cmp_info);
let new = apply_pending_canonicalization(builder, intrinsics, new, new_info);
@ -8196,7 +8196,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
let old = builder.build_int_z_extend(old, intrinsics.i32_ty, &state.var_name());
state.push1_extra(old, ExtraInfo::arithmetic_f32());
}
Operator::I32AtomicRmw16UCmpxchg { ref memarg } => {
Operator::I32AtomicRmw16CmpxchgU { ref memarg } => {
let ((cmp, cmp_info), (new, new_info)) = state.pop2_extra()?;
let cmp = apply_pending_canonicalization(builder, intrinsics, cmp, cmp_info);
let new = apply_pending_canonicalization(builder, intrinsics, new, new_info);
@ -8292,7 +8292,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
let old = builder.build_extract_value(old, 0, "").unwrap();
state.push1(old);
}
Operator::I64AtomicRmw8UCmpxchg { ref memarg } => {
Operator::I64AtomicRmw8CmpxchgU { ref memarg } => {
let ((cmp, cmp_info), (new, new_info)) = state.pop2_extra()?;
let cmp = apply_pending_canonicalization(builder, intrinsics, cmp, cmp_info);
let new = apply_pending_canonicalization(builder, intrinsics, new, new_info);
@ -8344,7 +8344,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
let old = builder.build_int_z_extend(old, intrinsics.i64_ty, &state.var_name());
state.push1_extra(old, ExtraInfo::arithmetic_f64());
}
Operator::I64AtomicRmw16UCmpxchg { ref memarg } => {
Operator::I64AtomicRmw16CmpxchgU { ref memarg } => {
let ((cmp, cmp_info), (new, new_info)) = state.pop2_extra()?;
let cmp = apply_pending_canonicalization(builder, intrinsics, cmp, cmp_info);
let new = apply_pending_canonicalization(builder, intrinsics, new, new_info);
@ -8396,7 +8396,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
let old = builder.build_int_z_extend(old, intrinsics.i64_ty, &state.var_name());
state.push1_extra(old, ExtraInfo::arithmetic_f64());
}
Operator::I64AtomicRmw32UCmpxchg { ref memarg } => {
Operator::I64AtomicRmw32CmpxchgU { ref memarg } => {
let ((cmp, cmp_info), (new, new_info)) = state.pop2_extra()?;
let cmp = apply_pending_canonicalization(builder, intrinsics, cmp, cmp_info);
let new = apply_pending_canonicalization(builder, intrinsics, new, new_info);