diff --git a/src/intrinsics/llvm_x86.rs b/src/intrinsics/llvm_x86.rs index e62de6b6147..8422d5a4668 100644 --- a/src/intrinsics/llvm_x86.rs +++ b/src/intrinsics/llvm_x86.rs @@ -74,8 +74,12 @@ pub(crate) fn codegen_x86_llvm_intrinsic_call<'tcx>( }; let x = codegen_operand(fx, x); let y = codegen_operand(fx, y); - let kind = crate::constant::mir_operand_get_const_val(fx, kind) - .expect("llvm.x86.sse2.cmp.* kind not const"); + let kind = match kind { + Operand::Constant(const_) => { + crate::constant::eval_mir_constant(fx, const_).unwrap().0 + } + Operand::Copy(_) | Operand::Move(_) => unreachable!("{kind:?}"), + }; let flt_cc = match kind .try_to_bits(Size::from_bytes(1)) diff --git a/src/intrinsics/simd.rs b/src/intrinsics/simd.rs index 9863e40b5b7..b90d4f4bce4 100644 --- a/src/intrinsics/simd.rs +++ b/src/intrinsics/simd.rs @@ -168,8 +168,12 @@ pub(super) fn codegen_simd_intrinsic_call<'tcx>( let indexes = { use rustc_middle::mir::interpret::*; - let idx_const = crate::constant::mir_operand_get_const_val(fx, idx) - .expect("simd_shuffle idx not const"); + let idx_const = match idx { + Operand::Constant(const_) => { + crate::constant::eval_mir_constant(fx, const_).unwrap().0 + } + Operand::Copy(_) | Operand::Move(_) => unreachable!("{idx:?}"), + }; let idx_bytes = match idx_const { ConstValue::ByRef { alloc, offset } => {