@@ -536,10 +536,9 @@ define i64 @gccbug(i64 %x0, i64 %x1) {
536
536
; GISEL-LABEL: gccbug:
537
537
; GISEL: ; %bb.0:
538
538
; GISEL-NEXT: mov w8, #2
539
- ; GISEL-NEXT: mov w9, #4
540
539
; GISEL-NEXT: cmp x0, #2
541
- ; GISEL-NEXT: ccmp x0, x9 , #4, ne
542
- ; GISEL-NEXT: ccmp x1, xzr , #0, eq
540
+ ; GISEL-NEXT: ccmp x0, #4 , #4, ne
541
+ ; GISEL-NEXT: ccmp x1, #0 , #0, eq
543
542
; GISEL-NEXT: csinc x0, x8, xzr, eq
544
543
; GISEL-NEXT: ret
545
544
%cmp0 = icmp eq i64 %x1 , 0
@@ -554,25 +553,14 @@ define i64 @gccbug(i64 %x0, i64 %x1) {
554
553
}
555
554
556
555
define i32 @select_ororand (i32 %w0 , i32 %w1 , i32 %w2 , i32 %w3 ) {
557
- ; SDISEL-LABEL: select_ororand:
558
- ; SDISEL: ; %bb.0:
559
- ; SDISEL-NEXT: cmp w3, #4
560
- ; SDISEL-NEXT: ccmp w2, #2, #0, gt
561
- ; SDISEL-NEXT: ccmp w1, #13, #2, ge
562
- ; SDISEL-NEXT: ccmp w0, #0, #4, ls
563
- ; SDISEL-NEXT: csel w0, w3, wzr, eq
564
- ; SDISEL-NEXT: ret
565
- ;
566
- ; GISEL-LABEL: select_ororand:
567
- ; GISEL: ; %bb.0:
568
- ; GISEL-NEXT: mov w8, #13
569
- ; GISEL-NEXT: mov w9, #2
570
- ; GISEL-NEXT: cmp w3, #4
571
- ; GISEL-NEXT: ccmp w2, w9, #0, gt
572
- ; GISEL-NEXT: ccmp w1, w8, #2, ge
573
- ; GISEL-NEXT: ccmp w0, wzr, #4, ls
574
- ; GISEL-NEXT: csel w0, w3, wzr, eq
575
- ; GISEL-NEXT: ret
556
+ ; CHECK-LABEL: select_ororand:
557
+ ; CHECK: ; %bb.0:
558
+ ; CHECK-NEXT: cmp w3, #4
559
+ ; CHECK-NEXT: ccmp w2, #2, #0, gt
560
+ ; CHECK-NEXT: ccmp w1, #13, #2, ge
561
+ ; CHECK-NEXT: ccmp w0, #0, #4, ls
562
+ ; CHECK-NEXT: csel w0, w3, wzr, eq
563
+ ; CHECK-NEXT: ret
576
564
%c0 = icmp eq i32 %w0 , 0
577
565
%c1 = icmp ugt i32 %w1 , 13
578
566
%c2 = icmp slt i32 %w2 , 2
@@ -585,21 +573,13 @@ define i32 @select_ororand(i32 %w0, i32 %w1, i32 %w2, i32 %w3) {
585
573
}
586
574
587
575
define i32 @select_andor (i32 %v1 , i32 %v2 , i32 %v3 ) {
588
- ; SDISEL-LABEL: select_andor:
589
- ; SDISEL: ; %bb.0:
590
- ; SDISEL-NEXT: cmp w1, w2
591
- ; SDISEL-NEXT: ccmp w0, #0, #4, lt
592
- ; SDISEL-NEXT: ccmp w0, w1, #0, eq
593
- ; SDISEL-NEXT: csel w0, w0, w1, eq
594
- ; SDISEL-NEXT: ret
595
- ;
596
- ; GISEL-LABEL: select_andor:
597
- ; GISEL: ; %bb.0:
598
- ; GISEL-NEXT: cmp w1, w2
599
- ; GISEL-NEXT: ccmp w0, wzr, #4, lt
600
- ; GISEL-NEXT: ccmp w0, w1, #0, eq
601
- ; GISEL-NEXT: csel w0, w0, w1, eq
602
- ; GISEL-NEXT: ret
576
+ ; CHECK-LABEL: select_andor:
577
+ ; CHECK: ; %bb.0:
578
+ ; CHECK-NEXT: cmp w1, w2
579
+ ; CHECK-NEXT: ccmp w0, #0, #4, lt
580
+ ; CHECK-NEXT: ccmp w0, w1, #0, eq
581
+ ; CHECK-NEXT: csel w0, w0, w1, eq
582
+ ; CHECK-NEXT: ret
603
583
%c0 = icmp eq i32 %v1 , %v2
604
584
%c1 = icmp sge i32 %v2 , %v3
605
585
%c2 = icmp eq i32 %v1 , 0
@@ -1001,24 +981,14 @@ define i32 @f128_select_and_olt_oge(fp128 %v0, fp128 %v1, fp128 %v2, fp128 %v3,
1001
981
; This testcase resembles the core problem of http://llvm.org/PR39550
1002
982
; (an OR operation is 2 levels deep but needs to be implemented first)
1003
983
define i32 @deep_or (i32 %a0 , i32 %a1 , i32 %a2 , i32 %a3 , i32 %x , i32 %y ) {
1004
- ; SDISEL-LABEL: deep_or:
1005
- ; SDISEL: ; %bb.0:
1006
- ; SDISEL-NEXT: cmp w2, #20
1007
- ; SDISEL-NEXT: ccmp w2, #15, #4, ne
1008
- ; SDISEL-NEXT: ccmp w1, #0, #4, eq
1009
- ; SDISEL-NEXT: ccmp w0, #0, #4, ne
1010
- ; SDISEL-NEXT: csel w0, w4, w5, ne
1011
- ; SDISEL-NEXT: ret
1012
- ;
1013
- ; GISEL-LABEL: deep_or:
1014
- ; GISEL: ; %bb.0:
1015
- ; GISEL-NEXT: mov w8, #15
1016
- ; GISEL-NEXT: cmp w2, #20
1017
- ; GISEL-NEXT: ccmp w2, w8, #4, ne
1018
- ; GISEL-NEXT: ccmp w1, wzr, #4, eq
1019
- ; GISEL-NEXT: ccmp w0, wzr, #4, ne
1020
- ; GISEL-NEXT: csel w0, w4, w5, ne
1021
- ; GISEL-NEXT: ret
984
+ ; CHECK-LABEL: deep_or:
985
+ ; CHECK: ; %bb.0:
986
+ ; CHECK-NEXT: cmp w2, #20
987
+ ; CHECK-NEXT: ccmp w2, #15, #4, ne
988
+ ; CHECK-NEXT: ccmp w1, #0, #4, eq
989
+ ; CHECK-NEXT: ccmp w0, #0, #4, ne
990
+ ; CHECK-NEXT: csel w0, w4, w5, ne
991
+ ; CHECK-NEXT: ret
1022
992
%c0 = icmp ne i32 %a0 , 0
1023
993
%c1 = icmp ne i32 %a1 , 0
1024
994
%c2 = icmp eq i32 %a2 , 15
@@ -1033,24 +1003,14 @@ define i32 @deep_or(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %x, i32 %y) {
1033
1003
1034
1004
; Variation of deep_or, we still need to implement the OR first though.
1035
1005
define i32 @deep_or1 (i32 %a0 , i32 %a1 , i32 %a2 , i32 %a3 , i32 %x , i32 %y ) {
1036
- ; SDISEL-LABEL: deep_or1:
1037
- ; SDISEL: ; %bb.0:
1038
- ; SDISEL-NEXT: cmp w2, #20
1039
- ; SDISEL-NEXT: ccmp w2, #15, #4, ne
1040
- ; SDISEL-NEXT: ccmp w0, #0, #4, eq
1041
- ; SDISEL-NEXT: ccmp w1, #0, #4, ne
1042
- ; SDISEL-NEXT: csel w0, w4, w5, ne
1043
- ; SDISEL-NEXT: ret
1044
- ;
1045
- ; GISEL-LABEL: deep_or1:
1046
- ; GISEL: ; %bb.0:
1047
- ; GISEL-NEXT: mov w8, #15
1048
- ; GISEL-NEXT: cmp w2, #20
1049
- ; GISEL-NEXT: ccmp w2, w8, #4, ne
1050
- ; GISEL-NEXT: ccmp w0, wzr, #4, eq
1051
- ; GISEL-NEXT: ccmp w1, wzr, #4, ne
1052
- ; GISEL-NEXT: csel w0, w4, w5, ne
1053
- ; GISEL-NEXT: ret
1006
+ ; CHECK-LABEL: deep_or1:
1007
+ ; CHECK: ; %bb.0:
1008
+ ; CHECK-NEXT: cmp w2, #20
1009
+ ; CHECK-NEXT: ccmp w2, #15, #4, ne
1010
+ ; CHECK-NEXT: ccmp w0, #0, #4, eq
1011
+ ; CHECK-NEXT: ccmp w1, #0, #4, ne
1012
+ ; CHECK-NEXT: csel w0, w4, w5, ne
1013
+ ; CHECK-NEXT: ret
1054
1014
%c0 = icmp ne i32 %a0 , 0
1055
1015
%c1 = icmp ne i32 %a1 , 0
1056
1016
%c2 = icmp eq i32 %a2 , 15
@@ -1065,24 +1025,14 @@ define i32 @deep_or1(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %x, i32 %y) {
1065
1025
1066
1026
; Variation of deep_or, we still need to implement the OR first though.
1067
1027
define i32 @deep_or2 (i32 %a0 , i32 %a1 , i32 %a2 , i32 %a3 , i32 %x , i32 %y ) {
1068
- ; SDISEL-LABEL: deep_or2:
1069
- ; SDISEL: ; %bb.0:
1070
- ; SDISEL-NEXT: cmp w2, #20
1071
- ; SDISEL-NEXT: ccmp w2, #15, #4, ne
1072
- ; SDISEL-NEXT: ccmp w1, #0, #4, eq
1073
- ; SDISEL-NEXT: ccmp w0, #0, #4, ne
1074
- ; SDISEL-NEXT: csel w0, w4, w5, ne
1075
- ; SDISEL-NEXT: ret
1076
- ;
1077
- ; GISEL-LABEL: deep_or2:
1078
- ; GISEL: ; %bb.0:
1079
- ; GISEL-NEXT: mov w8, #15
1080
- ; GISEL-NEXT: cmp w2, #20
1081
- ; GISEL-NEXT: ccmp w2, w8, #4, ne
1082
- ; GISEL-NEXT: ccmp w1, wzr, #4, eq
1083
- ; GISEL-NEXT: ccmp w0, wzr, #4, ne
1084
- ; GISEL-NEXT: csel w0, w4, w5, ne
1085
- ; GISEL-NEXT: ret
1028
+ ; CHECK-LABEL: deep_or2:
1029
+ ; CHECK: ; %bb.0:
1030
+ ; CHECK-NEXT: cmp w2, #20
1031
+ ; CHECK-NEXT: ccmp w2, #15, #4, ne
1032
+ ; CHECK-NEXT: ccmp w1, #0, #4, eq
1033
+ ; CHECK-NEXT: ccmp w0, #0, #4, ne
1034
+ ; CHECK-NEXT: csel w0, w4, w5, ne
1035
+ ; CHECK-NEXT: ret
1086
1036
%c0 = icmp ne i32 %a0 , 0
1087
1037
%c1 = icmp ne i32 %a1 , 0
1088
1038
%c2 = icmp eq i32 %a2 , 15
0 commit comments