Skip to content

Commit 5d15d91

Browse files
fix ci
1 parent 45d53ce commit 5d15d91

File tree

1 file changed

+210
-54
lines changed

1 file changed

+210
-54
lines changed

src/shims/intrinsics.rs

Lines changed: 210 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -615,60 +615,216 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx
615615
"atomic_umax_relaxed" =>
616616
this.atomic_op_min_max(args, dest, AtomicOp::Max, AtomicRwOp::Relaxed)?,
617617

618-
"atomic_or" => this.atomic_op(args, dest, BinOp::BitOr, false, AtomicRwOp::SeqCst)?,
619-
"atomic_or_acq" =>
620-
this.atomic_op(args, dest, BinOp::BitOr, false, AtomicRwOp::Acquire)?,
621-
"atomic_or_rel" =>
622-
this.atomic_op(args, dest, BinOp::BitOr, false, AtomicRwOp::Release)?,
623-
"atomic_or_acqrel" =>
624-
this.atomic_op(args, dest, BinOp::BitOr, false, AtomicRwOp::AcqRel)?,
625-
"atomic_or_relaxed" =>
626-
this.atomic_op(args, dest, BinOp::BitOr, false, AtomicRwOp::Relaxed)?,
627-
"atomic_xor" => this.atomic_op(args, dest, BinOp::BitXor, false, AtomicRwOp::SeqCst)?,
628-
"atomic_xor_acq" =>
629-
this.atomic_op(args, dest, BinOp::BitXor, false, AtomicRwOp::Acquire)?,
630-
"atomic_xor_rel" =>
631-
this.atomic_op(args, dest, BinOp::BitXor, false, AtomicRwOp::Release)?,
632-
"atomic_xor_acqrel" =>
633-
this.atomic_op(args, dest, BinOp::BitXor, false, AtomicRwOp::AcqRel)?,
634-
"atomic_xor_relaxed" =>
635-
this.atomic_op(args, dest, BinOp::BitXor, false, AtomicRwOp::Relaxed)?,
636-
"atomic_and" => this.atomic_op(args, dest, BinOp::BitAnd, false, AtomicRwOp::SeqCst)?,
637-
"atomic_and_acq" =>
638-
this.atomic_op(args, dest, BinOp::BitAnd, false, AtomicRwOp::Acquire)?,
639-
"atomic_and_rel" =>
640-
this.atomic_op(args, dest, BinOp::BitAnd, false, AtomicRwOp::Release)?,
641-
"atomic_and_acqrel" =>
642-
this.atomic_op(args, dest, BinOp::BitAnd, false, AtomicRwOp::AcqRel)?,
643-
"atomic_and_relaxed" =>
644-
this.atomic_op(args, dest, BinOp::BitAnd, false, AtomicRwOp::Relaxed)?,
645-
"atomic_nand" => this.atomic_op(args, dest, BinOp::BitAnd, true, AtomicRwOp::SeqCst)?,
646-
"atomic_nand_acq" =>
647-
this.atomic_op(args, dest, BinOp::BitAnd, true, AtomicRwOp::Acquire)?,
648-
"atomic_nand_rel" =>
649-
this.atomic_op(args, dest, BinOp::BitAnd, true, AtomicRwOp::Release)?,
650-
"atomic_nand_acqrel" =>
651-
this.atomic_op(args, dest, BinOp::BitAnd, true, AtomicRwOp::AcqRel)?,
652-
"atomic_nand_relaxed" =>
653-
this.atomic_op(args, dest, BinOp::BitAnd, true, AtomicRwOp::Relaxed)?,
654-
"atomic_xadd" => this.atomic_op(args, dest, BinOp::Add, false, AtomicRwOp::SeqCst)?,
655-
"atomic_xadd_acq" =>
656-
this.atomic_op(args, dest, BinOp::Add, false, AtomicRwOp::Acquire)?,
657-
"atomic_xadd_rel" =>
658-
this.atomic_op(args, dest, BinOp::Add, false, AtomicRwOp::Release)?,
659-
"atomic_xadd_acqrel" =>
660-
this.atomic_op(args, dest, BinOp::Add, false, AtomicRwOp::AcqRel)?,
661-
"atomic_xadd_relaxed" =>
662-
this.atomic_op(args, dest, BinOp::Add, false, AtomicRwOp::Relaxed)?,
663-
"atomic_xsub" => this.atomic_op(args, dest, BinOp::Sub, false, AtomicRwOp::SeqCst)?,
664-
"atomic_xsub_acq" =>
665-
this.atomic_op(args, dest, BinOp::Sub, false, AtomicRwOp::Acquire)?,
666-
"atomic_xsub_rel" =>
667-
this.atomic_op(args, dest, BinOp::Sub, false, AtomicRwOp::Release)?,
668-
"atomic_xsub_acqrel" =>
669-
this.atomic_op(args, dest, BinOp::Sub, false, AtomicRwOp::AcqRel)?,
670-
"atomic_xsub_relaxed" =>
671-
this.atomic_op(args, dest, BinOp::Sub, false, AtomicRwOp::Relaxed)?,
618+
"atomic_or" => this.atomic_op_min_max(
619+
args,
620+
dest,
621+
AtomicOp::MirOp(BinOp::BitOr),
622+
false,
623+
AtomicRwOp::SeqCst,
624+
)?,
625+
"atomic_or_acq" => this.atomic_op_min_max(
626+
args,
627+
dest,
628+
AtomicOp::MirOp(BinOp::BitOr),
629+
false,
630+
AtomicRwOp::Acquire,
631+
)?,
632+
"atomic_or_rel" => this.atomic_op_min_max(
633+
args,
634+
dest,
635+
AtomicOp::MirOp(BinOp::BitOr),
636+
false,
637+
AtomicRwOp::Release,
638+
)?,
639+
"atomic_or_acqrel" => this.atomic_op_min_max(
640+
args,
641+
dest,
642+
AtomicOp::MirOp(BinOp::BitOr),
643+
false,
644+
AtomicRwOp::AcqRel,
645+
)?,
646+
"atomic_or_relaxed" => this.atomic_op_min_max(
647+
args,
648+
dest,
649+
AtomicOp::MirOp(BinOp::BitOr),
650+
false,
651+
AtomicRwOp::Relaxed,
652+
)?,
653+
"atomic_xor" => this.atomic_op_min_max(
654+
args,
655+
dest,
656+
AtomicOp::MirOp(BinOp::BitXor),
657+
false,
658+
AtomicRwOp::SeqCst,
659+
)?,
660+
"atomic_xor_acq" => this.atomic_op_min_max(
661+
args,
662+
dest,
663+
AtomicOp::MirOp(BinOp::BitXor),
664+
false,
665+
AtomicRwOp::Acquire,
666+
)?,
667+
"atomic_xor_rel" => this.atomic_op_min_max(
668+
args,
669+
dest,
670+
AtomicOp::MirOp(BinOp::BitXor),
671+
false,
672+
AtomicRwOp::Release,
673+
)?,
674+
"atomic_xor_acqrel" => this.atomic_op_min_max(
675+
args,
676+
dest,
677+
AtomicOp::MirOp(BinOp::BitXor),
678+
false,
679+
AtomicRwOp::AcqRel,
680+
)?,
681+
"atomic_xor_relaxed" => this.atomic_op_min_max(
682+
args,
683+
dest,
684+
AtomicOp::MirOp(BinOp::BitXor),
685+
false,
686+
AtomicRwOp::Relaxed,
687+
)?,
688+
"atomic_and" => this.atomic_op_min_max(
689+
args,
690+
dest,
691+
AtomicOp::MirOp(BinOp::BitAnd),
692+
false,
693+
AtomicRwOp::SeqCst,
694+
)?,
695+
"atomic_and_acq" => this.atomic_op_min_max(
696+
args,
697+
dest,
698+
AtomicOp::MirOp(BinOp::BitAnd),
699+
false,
700+
AtomicRwOp::Acquire,
701+
)?,
702+
"atomic_and_rel" => this.atomic_op_min_max(
703+
args,
704+
dest,
705+
AtomicOp::MirOp(BinOp::BitAnd),
706+
false,
707+
AtomicRwOp::Release,
708+
)?,
709+
"atomic_and_acqrel" => this.atomic_op_min_max(
710+
args,
711+
dest,
712+
AtomicOp::MirOp(BinOp::BitAnd),
713+
false,
714+
AtomicRwOp::AcqRel,
715+
)?,
716+
"atomic_and_relaxed" => this.atomic_op_min_max(
717+
args,
718+
dest,
719+
AtomicOp::MirOp(BinOp::BitAnd),
720+
false,
721+
AtomicRwOp::Relaxed,
722+
)?,
723+
"atomic_nand" => this.atomic_op_min_max(
724+
args,
725+
dest,
726+
AtomicOp::MirOp(BinOp::BitAnd),
727+
true,
728+
AtomicRwOp::SeqCst,
729+
)?,
730+
"atomic_nand_acq" => this.atomic_op_min_max(
731+
args,
732+
dest,
733+
AtomicOp::MirOp(BinOp::BitAnd),
734+
true,
735+
AtomicRwOp::Acquire,
736+
)?,
737+
"atomic_nand_rel" => this.atomic_op_min_max(
738+
args,
739+
dest,
740+
AtomicOp::MirOp(BinOp::BitAnd),
741+
true,
742+
AtomicRwOp::Release,
743+
)?,
744+
"atomic_nand_acqrel" => this.atomic_op_min_max(
745+
args,
746+
dest,
747+
AtomicOp::MirOp(BinOp::BitAnd),
748+
true,
749+
AtomicRwOp::AcqRel,
750+
)?,
751+
"atomic_nand_relaxed" => this.atomic_op_min_max(
752+
args,
753+
dest,
754+
AtomicOp::MirOp(BinOp::BitAnd),
755+
true,
756+
AtomicRwOp::Relaxed,
757+
)?,
758+
"atomic_xadd" => this.atomic_op_min_max(
759+
args,
760+
dest,
761+
AtomicOp::MirOp(BinOp::Add),
762+
false,
763+
AtomicRwOp::SeqCst,
764+
)?,
765+
"atomic_xadd_acq" => this.atomic_op_min_max(
766+
args,
767+
dest,
768+
AtomicOp::MirOp(BinOp::Add),
769+
false,
770+
AtomicRwOp::Acquire,
771+
)?,
772+
"atomic_xadd_rel" => this.atomic_op_min_max(
773+
args,
774+
dest,
775+
AtomicOp::MirOp(BinOp::Add),
776+
false,
777+
AtomicRwOp::Release,
778+
)?,
779+
"atomic_xadd_acqrel" => this.atomic_op_min_max(
780+
args,
781+
dest,
782+
AtomicOp::MirOp(BinOp::Add),
783+
false,
784+
AtomicRwOp::AcqRel,
785+
)?,
786+
"atomic_xadd_relaxed" => this.atomic_op_min_max(
787+
args,
788+
dest,
789+
AtomicOp::MirOp(BinOp::Add),
790+
false,
791+
AtomicRwOp::Relaxed,
792+
)?,
793+
"atomic_xsub" => this.atomic_op_min_max(
794+
args,
795+
dest,
796+
AtomicOp::MirOp(BinOp::Sub),
797+
false,
798+
AtomicRwOp::SeqCst,
799+
)?,
800+
"atomic_xsub_acq" => this.atomic_op_min_max(
801+
args,
802+
dest,
803+
AtomicOp::MirOp(BinOp::Sub),
804+
false,
805+
AtomicRwOp::Acquire,
806+
)?,
807+
"atomic_xsub_rel" => this.atomic_op_min_max(
808+
args,
809+
dest,
810+
AtomicOp::MirOp(BinOp::Sub),
811+
false,
812+
AtomicRwOp::Release,
813+
)?,
814+
"atomic_xsub_acqrel" => this.atomic_op_min_max(
815+
args,
816+
dest,
817+
AtomicOp::MirOp(BinOp::Sub),
818+
false,
819+
AtomicRwOp::AcqRel,
820+
)?,
821+
"atomic_xsub_relaxed" => this.atomic_op_min_max(
822+
args,
823+
dest,
824+
AtomicOp::MirOp(BinOp::Sub),
825+
false,
826+
AtomicRwOp::Relaxed,
827+
)?,
672828

673829
// Query type information
674830
"assert_zero_valid" | "assert_uninit_valid" => {

0 commit comments

Comments
 (0)