Skip to content

Commit ff22071

Browse files
authored
[RISCV] Add a conditional-cmv-fusion RUN line to select-binop-identity.ll. NFC (#155950)
Trying to clear out some test file changes from our downstream.
1 parent d254526 commit ff22071

File tree

1 file changed

+142
-0
lines changed

1 file changed

+142
-0
lines changed

llvm/test/CodeGen/RISCV/select-binop-identity.ll

Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
; RUN: | FileCheck -check-prefixes=RV32,ZICOND,ZICOND32 %s
1212
; RUN: llc -mtriple=riscv64 -mattr=+zicond -verify-machineinstrs < %s \
1313
; RUN: | FileCheck -check-prefixes=ZICOND,ZICOND64 %s
14+
; RUN: llc -mtriple=riscv64 -mattr=+c,+conditional-cmv-fusion \
15+
; RUN: -verify-machineinstrs < %s | FileCheck -check-prefixes=CMV-FUSION %s
1416

1517
; InstCombine canonicalizes (c ? x | y : x) to (x | (c ? y : 0)) similar for
1618
; other binary operations using their identity value as the constant.
@@ -55,6 +57,16 @@ define signext i32 @and_select_all_ones_i32(i1 zeroext %c, i32 signext %x, i32 s
5557
; ZICOND-NEXT: and a1, a2, a1
5658
; ZICOND-NEXT: or a0, a1, a0
5759
; ZICOND-NEXT: ret
60+
;
61+
; CMV-FUSION-LABEL: and_select_all_ones_i32:
62+
; CMV-FUSION: # %bb.0:
63+
; CMV-FUSION-NEXT: and a1, a1, a2
64+
; CMV-FUSION-NEXT: bnez a0, .LBB0_2
65+
; CMV-FUSION-NEXT: # %bb.1:
66+
; CMV-FUSION-NEXT: mv a1, a2
67+
; CMV-FUSION-NEXT: .LBB0_2:
68+
; CMV-FUSION-NEXT: mv a0, a1
69+
; CMV-FUSION-NEXT: ret
5870
%a = select i1 %c, i32 %x, i32 -1
5971
%b = and i32 %a, %y
6072
ret i32 %b
@@ -104,6 +116,16 @@ define signext i32 @and_select_all_ones_i32_cmp(i32 signext %x, i32 signext %y,
104116
; ZICOND-NEXT: czero.eqz a1, a1, a2
105117
; ZICOND-NEXT: or a0, a0, a1
106118
; ZICOND-NEXT: ret
119+
;
120+
; CMV-FUSION-LABEL: and_select_all_ones_i32_cmp:
121+
; CMV-FUSION: # %bb.0:
122+
; CMV-FUSION-NEXT: and a0, a0, a1
123+
; CMV-FUSION-NEXT: li a3, 4
124+
; CMV-FUSION-NEXT: beq a2, a3, .LBB1_2
125+
; CMV-FUSION-NEXT: # %bb.1:
126+
; CMV-FUSION-NEXT: mv a0, a1
127+
; CMV-FUSION-NEXT: .LBB1_2:
128+
; CMV-FUSION-NEXT: ret
107129
%c = icmp eq i32 %z, 4
108130
%a = select i1 %c, i32 %x, i32 -1
109131
%b = and i32 %a, %y
@@ -152,6 +174,16 @@ define signext i32 @and_select_all_ones_i32_cmp2(i32 signext %x, i32 signext %y,
152174
; ZICOND-NEXT: czero.nez a1, a1, a2
153175
; ZICOND-NEXT: or a0, a0, a1
154176
; ZICOND-NEXT: ret
177+
;
178+
; CMV-FUSION-LABEL: and_select_all_ones_i32_cmp2:
179+
; CMV-FUSION: # %bb.0:
180+
; CMV-FUSION-NEXT: and a0, a0, a1
181+
; CMV-FUSION-NEXT: li a3, 4
182+
; CMV-FUSION-NEXT: blt a2, a3, .LBB2_2
183+
; CMV-FUSION-NEXT: # %bb.1:
184+
; CMV-FUSION-NEXT: mv a0, a1
185+
; CMV-FUSION-NEXT: .LBB2_2:
186+
; CMV-FUSION-NEXT: ret
155187
%c = icmp slt i32 %z, 4
156188
%a = select i1 %c, i32 %x, i32 -1
157189
%b = and i32 %a, %y
@@ -197,6 +229,16 @@ define i64 @and_select_all_ones_i64(i1 zeroext %c, i64 %x, i64 %y) {
197229
; ZICOND64-NEXT: and a1, a2, a1
198230
; ZICOND64-NEXT: or a0, a1, a0
199231
; ZICOND64-NEXT: ret
232+
;
233+
; CMV-FUSION-LABEL: and_select_all_ones_i64:
234+
; CMV-FUSION: # %bb.0:
235+
; CMV-FUSION-NEXT: and a1, a1, a2
236+
; CMV-FUSION-NEXT: beqz a0, .LBB3_2
237+
; CMV-FUSION-NEXT: # %bb.1:
238+
; CMV-FUSION-NEXT: mv a1, a2
239+
; CMV-FUSION-NEXT: .LBB3_2:
240+
; CMV-FUSION-NEXT: mv a0, a1
241+
; CMV-FUSION-NEXT: ret
200242
%a = select i1 %c, i64 -1, i64 %x
201243
%b = and i64 %y, %a
202244
ret i64 %b
@@ -249,6 +291,16 @@ define i64 @and_select_all_ones_i64_cmp(i64 %x, i64 %y, i64 %z) {
249291
; ZICOND64-NEXT: czero.eqz a1, a1, a2
250292
; ZICOND64-NEXT: or a0, a0, a1
251293
; ZICOND64-NEXT: ret
294+
;
295+
; CMV-FUSION-LABEL: and_select_all_ones_i64_cmp:
296+
; CMV-FUSION: # %bb.0:
297+
; CMV-FUSION-NEXT: and a0, a0, a1
298+
; CMV-FUSION-NEXT: li a3, 4
299+
; CMV-FUSION-NEXT: beq a2, a3, .LBB4_2
300+
; CMV-FUSION-NEXT: # %bb.1:
301+
; CMV-FUSION-NEXT: mv a0, a1
302+
; CMV-FUSION-NEXT: .LBB4_2:
303+
; CMV-FUSION-NEXT: ret
252304
%c = icmp eq i64 %z, 4
253305
%a = select i1 %c, i64 %x, i64 -1
254306
%b = and i64 %a, %y
@@ -319,6 +371,16 @@ define i64 @and_select_all_ones_i64_cmp2(i64 %x, i64 %y, i64 %z) {
319371
; ZICOND64-NEXT: czero.nez a1, a1, a2
320372
; ZICOND64-NEXT: or a0, a0, a1
321373
; ZICOND64-NEXT: ret
374+
;
375+
; CMV-FUSION-LABEL: and_select_all_ones_i64_cmp2:
376+
; CMV-FUSION: # %bb.0:
377+
; CMV-FUSION-NEXT: and a0, a0, a1
378+
; CMV-FUSION-NEXT: li a3, 4
379+
; CMV-FUSION-NEXT: blt a2, a3, .LBB5_2
380+
; CMV-FUSION-NEXT: # %bb.1:
381+
; CMV-FUSION-NEXT: mv a0, a1
382+
; CMV-FUSION-NEXT: .LBB5_2:
383+
; CMV-FUSION-NEXT: ret
322384
%c = icmp slt i64 %z, 4
323385
%a = select i1 %c, i64 %x, i64 -1
324386
%b = and i64 %a, %y
@@ -360,6 +422,16 @@ define signext i32 @or_select_all_zeros_i32(i1 zeroext %c, i32 signext %x, i32 s
360422
; ZICOND-NEXT: czero.eqz a0, a1, a0
361423
; ZICOND-NEXT: or a0, a2, a0
362424
; ZICOND-NEXT: ret
425+
;
426+
; CMV-FUSION-LABEL: or_select_all_zeros_i32:
427+
; CMV-FUSION: # %bb.0:
428+
; CMV-FUSION-NEXT: or a1, a1, a2
429+
; CMV-FUSION-NEXT: bnez a0, .LBB6_2
430+
; CMV-FUSION-NEXT: # %bb.1:
431+
; CMV-FUSION-NEXT: mv a1, a2
432+
; CMV-FUSION-NEXT: .LBB6_2:
433+
; CMV-FUSION-NEXT: mv a0, a1
434+
; CMV-FUSION-NEXT: ret
363435
%a = select i1 %c, i32 %x, i32 0
364436
%b = or i32 %y, %a
365437
ret i32 %b
@@ -410,6 +482,16 @@ define i64 @or_select_all_zeros_i64(i1 zeroext %c, i64 %x, i64 %y) {
410482
; ZICOND64-NEXT: czero.nez a0, a1, a0
411483
; ZICOND64-NEXT: or a0, a0, a2
412484
; ZICOND64-NEXT: ret
485+
;
486+
; CMV-FUSION-LABEL: or_select_all_zeros_i64:
487+
; CMV-FUSION: # %bb.0:
488+
; CMV-FUSION-NEXT: or a1, a1, a2
489+
; CMV-FUSION-NEXT: beqz a0, .LBB7_2
490+
; CMV-FUSION-NEXT: # %bb.1:
491+
; CMV-FUSION-NEXT: mv a1, a2
492+
; CMV-FUSION-NEXT: .LBB7_2:
493+
; CMV-FUSION-NEXT: mv a0, a1
494+
; CMV-FUSION-NEXT: ret
413495
%a = select i1 %c, i64 0, i64 %x
414496
%b = or i64 %a, %y
415497
ret i64 %b
@@ -450,6 +532,16 @@ define signext i32 @xor_select_all_zeros_i32(i1 zeroext %c, i32 signext %x, i32
450532
; ZICOND-NEXT: czero.nez a0, a1, a0
451533
; ZICOND-NEXT: xor a0, a2, a0
452534
; ZICOND-NEXT: ret
535+
;
536+
; CMV-FUSION-LABEL: xor_select_all_zeros_i32:
537+
; CMV-FUSION: # %bb.0:
538+
; CMV-FUSION-NEXT: xor a1, a1, a2
539+
; CMV-FUSION-NEXT: beqz a0, .LBB8_2
540+
; CMV-FUSION-NEXT: # %bb.1:
541+
; CMV-FUSION-NEXT: mv a1, a2
542+
; CMV-FUSION-NEXT: .LBB8_2:
543+
; CMV-FUSION-NEXT: mv a0, a1
544+
; CMV-FUSION-NEXT: ret
453545
%a = select i1 %c, i32 0, i32 %x
454546
%b = xor i32 %y, %a
455547
ret i32 %b
@@ -500,6 +592,16 @@ define i64 @xor_select_all_zeros_i64(i1 zeroext %c, i64 %x, i64 %y) {
500592
; ZICOND64-NEXT: czero.eqz a0, a1, a0
501593
; ZICOND64-NEXT: xor a0, a0, a2
502594
; ZICOND64-NEXT: ret
595+
;
596+
; CMV-FUSION-LABEL: xor_select_all_zeros_i64:
597+
; CMV-FUSION: # %bb.0:
598+
; CMV-FUSION-NEXT: xor a1, a1, a2
599+
; CMV-FUSION-NEXT: bnez a0, .LBB9_2
600+
; CMV-FUSION-NEXT: # %bb.1:
601+
; CMV-FUSION-NEXT: mv a1, a2
602+
; CMV-FUSION-NEXT: .LBB9_2:
603+
; CMV-FUSION-NEXT: mv a0, a1
604+
; CMV-FUSION-NEXT: ret
503605
%a = select i1 %c, i64 %x, i64 0
504606
%b = xor i64 %a, %y
505607
ret i64 %b
@@ -546,6 +648,16 @@ define signext i32 @add_select_all_zeros_i32(i1 zeroext %c, i32 signext %x, i32
546648
; ZICOND64-NEXT: czero.nez a0, a1, a0
547649
; ZICOND64-NEXT: addw a0, a2, a0
548650
; ZICOND64-NEXT: ret
651+
;
652+
; CMV-FUSION-LABEL: add_select_all_zeros_i32:
653+
; CMV-FUSION: # %bb.0:
654+
; CMV-FUSION-NEXT: addw a1, a1, a2
655+
; CMV-FUSION-NEXT: beqz a0, .LBB10_2
656+
; CMV-FUSION-NEXT: # %bb.1:
657+
; CMV-FUSION-NEXT: mv a1, a2
658+
; CMV-FUSION-NEXT: .LBB10_2:
659+
; CMV-FUSION-NEXT: mv a0, a1
660+
; CMV-FUSION-NEXT: ret
549661
%a = select i1 %c, i32 0, i32 %x
550662
%b = add i32 %y, %a
551663
ret i32 %b
@@ -600,6 +712,16 @@ define i64 @add_select_all_zeros_i64(i1 zeroext %c, i64 %x, i64 %y) {
600712
; ZICOND64-NEXT: czero.eqz a0, a1, a0
601713
; ZICOND64-NEXT: add a0, a0, a2
602714
; ZICOND64-NEXT: ret
715+
;
716+
; CMV-FUSION-LABEL: add_select_all_zeros_i64:
717+
; CMV-FUSION: # %bb.0:
718+
; CMV-FUSION-NEXT: add a1, a1, a2
719+
; CMV-FUSION-NEXT: bnez a0, .LBB11_2
720+
; CMV-FUSION-NEXT: # %bb.1:
721+
; CMV-FUSION-NEXT: mv a1, a2
722+
; CMV-FUSION-NEXT: .LBB11_2:
723+
; CMV-FUSION-NEXT: mv a0, a1
724+
; CMV-FUSION-NEXT: ret
603725
%a = select i1 %c, i64 %x, i64 0
604726
%b = add i64 %a, %y
605727
ret i64 %b
@@ -646,6 +768,16 @@ define signext i32 @sub_select_all_zeros_i32(i1 zeroext %c, i32 signext %x, i32
646768
; ZICOND64-NEXT: czero.nez a0, a1, a0
647769
; ZICOND64-NEXT: subw a0, a2, a0
648770
; ZICOND64-NEXT: ret
771+
;
772+
; CMV-FUSION-LABEL: sub_select_all_zeros_i32:
773+
; CMV-FUSION: # %bb.0:
774+
; CMV-FUSION-NEXT: subw a1, a2, a1
775+
; CMV-FUSION-NEXT: beqz a0, .LBB12_2
776+
; CMV-FUSION-NEXT: # %bb.1:
777+
; CMV-FUSION-NEXT: mv a1, a2
778+
; CMV-FUSION-NEXT: .LBB12_2:
779+
; CMV-FUSION-NEXT: mv a0, a1
780+
; CMV-FUSION-NEXT: ret
649781
%a = select i1 %c, i32 0, i32 %x
650782
%b = sub i32 %y, %a
651783
ret i32 %b
@@ -700,6 +832,16 @@ define i64 @sub_select_all_zeros_i64(i1 zeroext %c, i64 %x, i64 %y) {
700832
; ZICOND64-NEXT: czero.eqz a0, a1, a0
701833
; ZICOND64-NEXT: sub a0, a2, a0
702834
; ZICOND64-NEXT: ret
835+
;
836+
; CMV-FUSION-LABEL: sub_select_all_zeros_i64:
837+
; CMV-FUSION: # %bb.0:
838+
; CMV-FUSION-NEXT: sub a1, a2, a1
839+
; CMV-FUSION-NEXT: bnez a0, .LBB13_2
840+
; CMV-FUSION-NEXT: # %bb.1:
841+
; CMV-FUSION-NEXT: mv a1, a2
842+
; CMV-FUSION-NEXT: .LBB13_2:
843+
; CMV-FUSION-NEXT: mv a0, a1
844+
; CMV-FUSION-NEXT: ret
703845
%a = select i1 %c, i64 %x, i64 0
704846
%b = sub i64 %y, %a
705847
ret i64 %b

0 commit comments

Comments
 (0)