@@ -637,44 +637,62 @@ define <4 x i32> @compare_sext_uge_v4i32 (<4 x i32> %x, <4 x i32> %y) {
637637}
638638
639639; CHECK-LABEL: compare_eq_v2i64:
640+ ; NO-SIMD128-NOT: i64x2
640641; SIMD128-NEXT: .functype compare_eq_v2i64 (v128, v128) -> (v128){{$}}
642+ ; SIMD128-NEXT: i64x2.eq $push[[R:[0-9]+]]=, $0, $1{{$}}
643+ ; SIMD128-NEXT: return $pop[[R]]{{$}}
641644define <2 x i1 > @compare_eq_v2i64 (<2 x i64 > %x , <2 x i64 > %y ) {
642645 %res = icmp eq <2 x i64 > %x , %y
643646 ret <2 x i1 > %res
644647}
645648
646649; CHECK-LABEL: compare_sext_eq_v2i64:
650+ ; NO-SIMD128-NOT: i64x2
647651; SIMD128-NEXT: .functype compare_sext_eq_v2i64 (v128, v128) -> (v128){{$}}
652+ ; SIMD128-NEXT: i64x2.eq $push[[R:[0-9]+]]=, $0, $1{{$}}
653+ ; SIMD128-NEXT: return $pop[[R]]{{$}}
648654define <2 x i64 > @compare_sext_eq_v2i64 (<2 x i64 > %x , <2 x i64 > %y ) {
649655 %cmp = icmp eq <2 x i64 > %x , %y
650656 %res = sext <2 x i1 > %cmp to <2 x i64 >
651657 ret <2 x i64 > %res
652658}
653659
654660; CHECK-LABEL: compare_ne_v2i64:
661+ ; NO-SIMD128-NOT: i64x2
655662; SIMD128-NEXT: .functype compare_ne_v2i64 (v128, v128) -> (v128){{$}}
663+ ; SIMD128-NEXT: i64x2.ne $push[[R:[0-9]+]]=, $0, $1{{$}}
664+ ; SIMD128-NEXT: return $pop[[R]]{{$}}
656665define <2 x i1 > @compare_ne_v2i64 (<2 x i64 > %x , <2 x i64 > %y ) {
657666 %res = icmp ne <2 x i64 > %x , %y
658667 ret <2 x i1 > %res
659668}
660669
661670; CHECK-LABEL: compare_sext_ne_v2i64:
671+ ; NO-SIMD128-NOT: i64x2
662672; SIMD128-NEXT: .functype compare_sext_ne_v2i64 (v128, v128) -> (v128){{$}}
673+ ; SIMD128-NEXT: i64x2.ne $push[[R:[0-9]+]]=, $0, $1{{$}}
674+ ; SIMD128-NEXT: return $pop[[R]]{{$}}
663675define <2 x i64 > @compare_sext_ne_v2i64 (<2 x i64 > %x , <2 x i64 > %y ) {
664676 %cmp = icmp ne <2 x i64 > %x , %y
665677 %res = sext <2 x i1 > %cmp to <2 x i64 >
666678 ret <2 x i64 > %res
667679}
668680
669681; CHECK-LABEL: compare_slt_v2i64:
682+ ; NO-SIMD128-NOT: i64x2
670683; SIMD128-NEXT: .functype compare_slt_v2i64 (v128, v128) -> (v128){{$}}
684+ ; SIMD128-NEXT: i64x2.lt_s $push[[R:[0-9]+]]=, $0, $1{{$}}
685+ ; SIMD128-NEXT: return $pop[[R]]{{$}}
671686define <2 x i1 > @compare_slt_v2i64 (<2 x i64 > %x , <2 x i64 > %y ) {
672687 %res = icmp slt <2 x i64 > %x , %y
673688 ret <2 x i1 > %res
674689}
675690
676691; CHECK-LABEL: compare_sext_slt_v2i64:
692+ ; NO-SIMD128-NOT: i64x2
677693; SIMD128-NEXT: .functype compare_sext_slt_v2i64 (v128, v128) -> (v128){{$}}
694+ ; SIMD128-NEXT: i64x2.lt_s $push[[R:[0-9]+]]=, $0, $1{{$}}
695+ ; SIMD128-NEXT: return $pop[[R]]{{$}}
678696define <2 x i64 > @compare_sext_slt_v2i64 (<2 x i64 > %x , <2 x i64 > %y ) {
679697 %cmp = icmp slt <2 x i64 > %x , %y
680698 %res = sext <2 x i1 > %cmp to <2 x i64 >
@@ -683,28 +701,36 @@ define <2 x i64> @compare_sext_slt_v2i64 (<2 x i64> %x, <2 x i64> %y) {
683701
684702; CHECK-LABEL: compare_ult_v2i64:
685703; SIMD128-NEXT: .functype compare_ult_v2i64 (v128, v128) -> (v128){{$}}
704+ ; SIMD128: i64.lt_u
686705define <2 x i1 > @compare_ult_v2i64 (<2 x i64 > %x , <2 x i64 > %y ) {
687706 %res = icmp ult <2 x i64 > %x , %y
688707 ret <2 x i1 > %res
689708}
690709
691710; CHECK-LABEL: compare_sext_ult_v2i64:
692711; SIMD128-NEXT: .functype compare_sext_ult_v2i64 (v128, v128) -> (v128){{$}}
712+ ; SIMD128: i64.lt_u
693713define <2 x i64 > @compare_sext_ult_v2i64 (<2 x i64 > %x , <2 x i64 > %y ) {
694714 %cmp = icmp ult <2 x i64 > %x , %y
695715 %res = sext <2 x i1 > %cmp to <2 x i64 >
696716 ret <2 x i64 > %res
697717}
698718
699719; CHECK-LABEL: compare_sle_v2i64:
720+ ; NO-SIMD128-NOT: i64x2
700721; SIMD128-NEXT: .functype compare_sle_v2i64 (v128, v128) -> (v128){{$}}
722+ ; SIMD128-NEXT: i64x2.le_s $push[[R:[0-9]+]]=, $0, $1{{$}}
723+ ; SIMD128-NEXT: return $pop[[R]]{{$}}
701724define <2 x i1 > @compare_sle_v2i64 (<2 x i64 > %x , <2 x i64 > %y ) {
702725 %res = icmp sle <2 x i64 > %x , %y
703726 ret <2 x i1 > %res
704727}
705728
706729; CHECK-LABEL: compare_sext_sle_v2i64:
730+ ; NO-SIMD128-NOT: i64x2
707731; SIMD128-NEXT: .functype compare_sext_sle_v2i64 (v128, v128) -> (v128){{$}}
732+ ; SIMD128-NEXT: i64x2.le_s $push[[R:[0-9]+]]=, $0, $1{{$}}
733+ ; SIMD128-NEXT: return $pop[[R]]{{$}}
708734define <2 x i64 > @compare_sext_sle_v2i64 (<2 x i64 > %x , <2 x i64 > %y ) {
709735 %cmp = icmp sle <2 x i64 > %x , %y
710736 %res = sext <2 x i1 > %cmp to <2 x i64 >
@@ -713,28 +739,36 @@ define <2 x i64> @compare_sext_sle_v2i64 (<2 x i64> %x, <2 x i64> %y) {
713739
714740; CHECK-LABEL: compare_ule_v2i64:
715741; SIMD128-NEXT: .functype compare_ule_v2i64 (v128, v128) -> (v128){{$}}
742+ ; SIMD128: i64.le_u
716743define <2 x i1 > @compare_ule_v2i64 (<2 x i64 > %x , <2 x i64 > %y ) {
717744 %res = icmp ule <2 x i64 > %x , %y
718745 ret <2 x i1 > %res
719746}
720747
721748; CHECK-LABEL: compare_sext_ule_v2i64:
722749; SIMD128-NEXT: .functype compare_sext_ule_v2i64 (v128, v128) -> (v128){{$}}
750+ ; SIMD128: i64.le_u
723751define <2 x i64 > @compare_sext_ule_v2i64 (<2 x i64 > %x , <2 x i64 > %y ) {
724752 %cmp = icmp ule <2 x i64 > %x , %y
725753 %res = sext <2 x i1 > %cmp to <2 x i64 >
726754 ret <2 x i64 > %res
727755}
728756
729757; CHECK-LABEL: compare_sgt_v2i64:
758+ ; NO-SIMD128-NOT: i64x2
730759; SIMD128-NEXT: .functype compare_sgt_v2i64 (v128, v128) -> (v128){{$}}
760+ ; SIMD128-NEXT: i64x2.gt_s $push[[R:[0-9]+]]=, $0, $1{{$}}
761+ ; SIMD128-NEXT: return $pop[[R]]{{$}}
731762define <2 x i1 > @compare_sgt_v2i64 (<2 x i64 > %x , <2 x i64 > %y ) {
732763 %res = icmp sgt <2 x i64 > %x , %y
733764 ret <2 x i1 > %res
734765}
735766
736767; CHECK-LABEL: compare_sext_sgt_v2i64:
768+ ; NO-SIMD128-NOT: i64x2
737769; SIMD128-NEXT: .functype compare_sext_sgt_v2i64 (v128, v128) -> (v128){{$}}
770+ ; SIMD128-NEXT: i64x2.gt_s $push[[R:[0-9]+]]=, $0, $1{{$}}
771+ ; SIMD128-NEXT: return $pop[[R]]{{$}}
738772define <2 x i64 > @compare_sext_sgt_v2i64 (<2 x i64 > %x , <2 x i64 > %y ) {
739773 %cmp = icmp sgt <2 x i64 > %x , %y
740774 %res = sext <2 x i1 > %cmp to <2 x i64 >
@@ -743,28 +777,36 @@ define <2 x i64> @compare_sext_sgt_v2i64 (<2 x i64> %x, <2 x i64> %y) {
743777
744778; CHECK-LABEL: compare_ugt_v2i64:
745779; SIMD128-NEXT: .functype compare_ugt_v2i64 (v128, v128) -> (v128){{$}}
780+ ; SIMD128: i64.gt_u
746781define <2 x i1 > @compare_ugt_v2i64 (<2 x i64 > %x , <2 x i64 > %y ) {
747782 %res = icmp ugt <2 x i64 > %x , %y
748783 ret <2 x i1 > %res
749784}
750785
751786; CHECK-LABEL: compare_sext_ugt_v2i64:
752787; SIMD128-NEXT: .functype compare_sext_ugt_v2i64 (v128, v128) -> (v128){{$}}
788+ ; SIMD128: i64.gt_u
753789define <2 x i64 > @compare_sext_ugt_v2i64 (<2 x i64 > %x , <2 x i64 > %y ) {
754790 %cmp = icmp ugt <2 x i64 > %x , %y
755791 %res = sext <2 x i1 > %cmp to <2 x i64 >
756792 ret <2 x i64 > %res
757793}
758794
759795; CHECK-LABEL: compare_sge_v2i64:
796+ ; NO-SIMD128-NOT: i64x2
760797; SIMD128-NEXT: .functype compare_sge_v2i64 (v128, v128) -> (v128){{$}}
798+ ; SIMD128-NEXT: i64x2.ge_s $push[[R:[0-9]+]]=, $0, $1{{$}}
799+ ; SIMD128-NEXT: return $pop[[R]]{{$}}
761800define <2 x i1 > @compare_sge_v2i64 (<2 x i64 > %x , <2 x i64 > %y ) {
762801 %res = icmp sge <2 x i64 > %x , %y
763802 ret <2 x i1 > %res
764803}
765804
766805; CHECK-LABEL: compare_sext_sge_v2i64:
806+ ; NO-SIMD128-NOT: i64x2
767807; SIMD128-NEXT: .functype compare_sext_sge_v2i64 (v128, v128) -> (v128){{$}}
808+ ; SIMD128-NEXT: i64x2.ge_s $push[[R:[0-9]+]]=, $0, $1{{$}}
809+ ; SIMD128-NEXT: return $pop[[R]]{{$}}
768810define <2 x i64 > @compare_sext_sge_v2i64 (<2 x i64 > %x , <2 x i64 > %y ) {
769811 %cmp = icmp sge <2 x i64 > %x , %y
770812 %res = sext <2 x i1 > %cmp to <2 x i64 >
@@ -773,13 +815,15 @@ define <2 x i64> @compare_sext_sge_v2i64 (<2 x i64> %x, <2 x i64> %y) {
773815
774816; CHECK-LABEL: compare_uge_v2i64:
775817; SIMD128-NEXT: .functype compare_uge_v2i64 (v128, v128) -> (v128){{$}}
818+ ; SIMD128: i64.ge_u
776819define <2 x i1 > @compare_uge_v2i64 (<2 x i64 > %x , <2 x i64 > %y ) {
777820 %res = icmp uge <2 x i64 > %x , %y
778821 ret <2 x i1 > %res
779822}
780823
781824; CHECK-LABEL: compare_sext_uge_v2i64:
782825; SIMD128-NEXT: .functype compare_sext_uge_v2i64 (v128, v128) -> (v128){{$}}
826+ ; SIMD128: i64.ge_u
783827define <2 x i64 > @compare_sext_uge_v2i64 (<2 x i64 > %x , <2 x i64 > %y ) {
784828 %cmp = icmp uge <2 x i64 > %x , %y
785829 %res = sext <2 x i1 > %cmp to <2 x i64 >
0 commit comments