xref: /llvm-project/llvm/test/CodeGen/RISCV/copyprop.ll (revision ff9af4c43ad71eeba2cabe99609cfaa0fd54c1d0)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc < %s -O3 -mtriple=riscv64 -riscv-enable-copy-propagation=false | FileCheck %s --check-prefix=NOPROP
3; RUN: llc < %s -O3 -mtriple=riscv64 -riscv-enable-copy-propagation=true | FileCheck %s --check-prefix=PROP
4
5define void @copyprop_after_mbp(i32 %v, ptr %a, ptr %b, ptr %c, ptr %d) {
6; NOPROP-LABEL: copyprop_after_mbp:
7; NOPROP:       # %bb.0:
8; NOPROP-NEXT:    sext.w a0, a0
9; NOPROP-NEXT:    li a5, 10
10; NOPROP-NEXT:    bne a0, a5, .LBB0_2
11; NOPROP-NEXT:  # %bb.1: # %bb.0
12; NOPROP-NEXT:    li a0, 15
13; NOPROP-NEXT:    sw a0, 0(a2)
14; NOPROP-NEXT:    li a0, 1
15; NOPROP-NEXT:    sw a0, 0(a1)
16; NOPROP-NEXT:    li a0, 12
17; NOPROP-NEXT:    sw a0, 0(a4)
18; NOPROP-NEXT:    ret
19; NOPROP-NEXT:  .LBB0_2: # %bb.1
20; NOPROP-NEXT:    li a0, 0
21; NOPROP-NEXT:    li a2, 25
22; NOPROP-NEXT:    sw a2, 0(a3)
23; NOPROP-NEXT:    sw a0, 0(a1)
24; NOPROP-NEXT:    li a0, 12
25; NOPROP-NEXT:    sw a0, 0(a4)
26; NOPROP-NEXT:    ret
27;
28; PROP-LABEL: copyprop_after_mbp:
29; PROP:       # %bb.0:
30; PROP-NEXT:    sext.w a0, a0
31; PROP-NEXT:    li a5, 10
32; PROP-NEXT:    bne a0, a5, .LBB0_2
33; PROP-NEXT:  # %bb.1: # %bb.0
34; PROP-NEXT:    li a0, 15
35; PROP-NEXT:    sw a0, 0(a2)
36; PROP-NEXT:    li a0, 1
37; PROP-NEXT:    sw a0, 0(a1)
38; PROP-NEXT:    li a0, 12
39; PROP-NEXT:    sw a0, 0(a4)
40; PROP-NEXT:    ret
41; PROP-NEXT:  .LBB0_2: # %bb.1
42; PROP-NEXT:    li a2, 25
43; PROP-NEXT:    sw a2, 0(a3)
44; PROP-NEXT:    sw zero, 0(a1)
45; PROP-NEXT:    li a0, 12
46; PROP-NEXT:    sw a0, 0(a4)
47; PROP-NEXT:    ret
48  %1 = icmp eq i32 %v, 10
49  br i1 %1, label %bb.0, label %bb.1
50
51bb.0:
52  store i32 15, ptr %b, align 4
53  br label %bb.2
54
55bb.1:
56  store i32 25, ptr %c, align 4
57  br label %bb.2
58
59bb.2:
60  %2 = phi i32 [ 1, %bb.0 ], [ 0, %bb.1 ]
61  store i32 %2, ptr %a, align 4
62  store i32 12, ptr %d, align 4
63  ret void
64}
65