@@ -690,3 +690,127 @@ entry:
690
690
ret i32 %sel
691
691
}
692
692
693
+ define i32 @select_cc_example_eq1 (i32 %a , i32 %b , i32 %x , i32 %y ) {
694
+ ; RV32I-LABEL: select_cc_example_eq1:
695
+ ; RV32I: # %bb.0: # %entry
696
+ ; RV32I-NEXT: beq a1, a0, .LBB21_2
697
+ ; RV32I-NEXT: # %bb.1: # %entry
698
+ ; RV32I-NEXT: li a2, 11
699
+ ; RV32I-NEXT: .LBB21_2: # %entry
700
+ ; RV32I-NEXT: mv a0, a2
701
+ ; RV32I-NEXT: ret
702
+ ;
703
+ ; RV32IXQCICS-LABEL: select_cc_example_eq1:
704
+ ; RV32IXQCICS: # %bb.0: # %entry
705
+ ; RV32IXQCICS-NEXT: qc.selectieq a0, a1, a2, 11
706
+ ; RV32IXQCICS-NEXT: ret
707
+ ;
708
+ ; RV32IXQCICM-LABEL: select_cc_example_eq1:
709
+ ; RV32IXQCICM: # %bb.0: # %entry
710
+ ; RV32IXQCICM-NEXT: qc.selectieq a0, a1, a2, 11
711
+ ; RV32IXQCICM-NEXT: ret
712
+ ;
713
+ ; RV32IXQCI-LABEL: select_cc_example_eq1:
714
+ ; RV32IXQCI: # %bb.0: # %entry
715
+ ; RV32IXQCI-NEXT: qc.line a2, a1, a0, 11
716
+ ; RV32IXQCI-NEXT: mv a0, a2
717
+ ; RV32IXQCI-NEXT: ret
718
+ entry:
719
+ %cmp = icmp eq i32 %b , %a
720
+ %sel = select i1 %cmp , i32 %x , i32 11
721
+ ret i32 %sel
722
+ }
723
+
724
+ define i32 @select_cc_example_ne1 (i32 %a , i32 %b , i32 %x , i32 %y ) {
725
+ ; RV32I-LABEL: select_cc_example_ne1:
726
+ ; RV32I: # %bb.0: # %entry
727
+ ; RV32I-NEXT: bne a1, a0, .LBB22_2
728
+ ; RV32I-NEXT: # %bb.1: # %entry
729
+ ; RV32I-NEXT: li a2, 11
730
+ ; RV32I-NEXT: .LBB22_2: # %entry
731
+ ; RV32I-NEXT: mv a0, a2
732
+ ; RV32I-NEXT: ret
733
+ ;
734
+ ; RV32IXQCICS-LABEL: select_cc_example_ne1:
735
+ ; RV32IXQCICS: # %bb.0: # %entry
736
+ ; RV32IXQCICS-NEXT: qc.selectine a0, a1, a2, 11
737
+ ; RV32IXQCICS-NEXT: ret
738
+ ;
739
+ ; RV32IXQCICM-LABEL: select_cc_example_ne1:
740
+ ; RV32IXQCICM: # %bb.0: # %entry
741
+ ; RV32IXQCICM-NEXT: qc.selectine a0, a1, a2, 11
742
+ ; RV32IXQCICM-NEXT: ret
743
+ ;
744
+ ; RV32IXQCI-LABEL: select_cc_example_ne1:
745
+ ; RV32IXQCI: # %bb.0: # %entry
746
+ ; RV32IXQCI-NEXT: qc.lieq a2, a1, a0, 11
747
+ ; RV32IXQCI-NEXT: mv a0, a2
748
+ ; RV32IXQCI-NEXT: ret
749
+ entry:
750
+ %cmp = icmp ne i32 %b , %a
751
+ %sel = select i1 %cmp , i32 %x , i32 11
752
+ ret i32 %sel
753
+ }
754
+
755
+
756
+ define i32 @select_cc_example_eq2 (i32 %a , i32 %b , i32 %x , i32 %y ) {
757
+ ; RV32I-LABEL: select_cc_example_eq2:
758
+ ; RV32I: # %bb.0: # %entry
759
+ ; RV32I-NEXT: beq a1, a0, .LBB23_2
760
+ ; RV32I-NEXT: # %bb.1: # %entry
761
+ ; RV32I-NEXT: li a0, 11
762
+ ; RV32I-NEXT: ret
763
+ ; RV32I-NEXT: .LBB23_2:
764
+ ; RV32I-NEXT: li a0, 15
765
+ ; RV32I-NEXT: ret
766
+ ;
767
+ ; RV32IXQCICS-LABEL: select_cc_example_eq2:
768
+ ; RV32IXQCICS: # %bb.0: # %entry
769
+ ; RV32IXQCICS-NEXT: qc.selectiieq a0, a1, 15, 11
770
+ ; RV32IXQCICS-NEXT: ret
771
+ ;
772
+ ; RV32IXQCICM-LABEL: select_cc_example_eq2:
773
+ ; RV32IXQCICM: # %bb.0: # %entry
774
+ ; RV32IXQCICM-NEXT: qc.selectiieq a0, a1, 15, 11
775
+ ; RV32IXQCICM-NEXT: ret
776
+ ;
777
+ ; RV32IXQCI-LABEL: select_cc_example_eq2:
778
+ ; RV32IXQCI: # %bb.0: # %entry
779
+ ; RV32IXQCI-NEXT: qc.selectiieq a0, a1, 15, 11
780
+ ; RV32IXQCI-NEXT: ret
781
+ entry:
782
+ %cmp = icmp eq i32 %b , %a
783
+ %sel = select i1 %cmp , i32 15 , i32 11
784
+ ret i32 %sel
785
+ }
786
+
787
+ define i32 @select_cc_example_ne2 (i32 %a , i32 %b , i32 %x , i32 %y ) {
788
+ ; RV32I-LABEL: select_cc_example_ne2:
789
+ ; RV32I: # %bb.0: # %entry
790
+ ; RV32I-NEXT: bne a1, a0, .LBB24_2
791
+ ; RV32I-NEXT: # %bb.1: # %entry
792
+ ; RV32I-NEXT: li a0, 11
793
+ ; RV32I-NEXT: ret
794
+ ; RV32I-NEXT: .LBB24_2:
795
+ ; RV32I-NEXT: li a0, 15
796
+ ; RV32I-NEXT: ret
797
+ ;
798
+ ; RV32IXQCICS-LABEL: select_cc_example_ne2:
799
+ ; RV32IXQCICS: # %bb.0: # %entry
800
+ ; RV32IXQCICS-NEXT: qc.selectiine a0, a1, 15, 11
801
+ ; RV32IXQCICS-NEXT: ret
802
+ ;
803
+ ; RV32IXQCICM-LABEL: select_cc_example_ne2:
804
+ ; RV32IXQCICM: # %bb.0: # %entry
805
+ ; RV32IXQCICM-NEXT: qc.selectiine a0, a1, 15, 11
806
+ ; RV32IXQCICM-NEXT: ret
807
+ ;
808
+ ; RV32IXQCI-LABEL: select_cc_example_ne2:
809
+ ; RV32IXQCI: # %bb.0: # %entry
810
+ ; RV32IXQCI-NEXT: qc.selectiine a0, a1, 15, 11
811
+ ; RV32IXQCI-NEXT: ret
812
+ entry:
813
+ %cmp = icmp ne i32 %b , %a
814
+ %sel = select i1 %cmp , i32 15 , i32 11
815
+ ret i32 %sel
816
+ }
0 commit comments