xref: /llvm-project/llvm/test/CodeGen/RISCV/copyprop.ll (revision ff9af4c43ad71eeba2cabe99609cfaa0fd54c1d0)
15fdab3c8Swangpc; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
25fdab3c8Swangpc; RUN: llc < %s -O3 -mtriple=riscv64 -riscv-enable-copy-propagation=false | FileCheck %s --check-prefix=NOPROP
35fdab3c8Swangpc; RUN: llc < %s -O3 -mtriple=riscv64 -riscv-enable-copy-propagation=true | FileCheck %s --check-prefix=PROP
45fdab3c8Swangpc
5*ff9af4c4SNikita Popovdefine void @copyprop_after_mbp(i32 %v, ptr %a, ptr %b, ptr %c, ptr %d) {
65fdab3c8Swangpc; NOPROP-LABEL: copyprop_after_mbp:
75fdab3c8Swangpc; NOPROP:       # %bb.0:
85fdab3c8Swangpc; NOPROP-NEXT:    sext.w a0, a0
95fdab3c8Swangpc; NOPROP-NEXT:    li a5, 10
105fdab3c8Swangpc; NOPROP-NEXT:    bne a0, a5, .LBB0_2
115fdab3c8Swangpc; NOPROP-NEXT:  # %bb.1: # %bb.0
125fdab3c8Swangpc; NOPROP-NEXT:    li a0, 15
135fdab3c8Swangpc; NOPROP-NEXT:    sw a0, 0(a2)
145fdab3c8Swangpc; NOPROP-NEXT:    li a0, 1
155fdab3c8Swangpc; NOPROP-NEXT:    sw a0, 0(a1)
165fdab3c8Swangpc; NOPROP-NEXT:    li a0, 12
175fdab3c8Swangpc; NOPROP-NEXT:    sw a0, 0(a4)
185fdab3c8Swangpc; NOPROP-NEXT:    ret
195fdab3c8Swangpc; NOPROP-NEXT:  .LBB0_2: # %bb.1
205fdab3c8Swangpc; NOPROP-NEXT:    li a0, 0
215fdab3c8Swangpc; NOPROP-NEXT:    li a2, 25
225fdab3c8Swangpc; NOPROP-NEXT:    sw a2, 0(a3)
235fdab3c8Swangpc; NOPROP-NEXT:    sw a0, 0(a1)
245fdab3c8Swangpc; NOPROP-NEXT:    li a0, 12
255fdab3c8Swangpc; NOPROP-NEXT:    sw a0, 0(a4)
265fdab3c8Swangpc; NOPROP-NEXT:    ret
275fdab3c8Swangpc;
285fdab3c8Swangpc; PROP-LABEL: copyprop_after_mbp:
295fdab3c8Swangpc; PROP:       # %bb.0:
305fdab3c8Swangpc; PROP-NEXT:    sext.w a0, a0
315fdab3c8Swangpc; PROP-NEXT:    li a5, 10
325fdab3c8Swangpc; PROP-NEXT:    bne a0, a5, .LBB0_2
335fdab3c8Swangpc; PROP-NEXT:  # %bb.1: # %bb.0
345fdab3c8Swangpc; PROP-NEXT:    li a0, 15
355fdab3c8Swangpc; PROP-NEXT:    sw a0, 0(a2)
365fdab3c8Swangpc; PROP-NEXT:    li a0, 1
375fdab3c8Swangpc; PROP-NEXT:    sw a0, 0(a1)
385fdab3c8Swangpc; PROP-NEXT:    li a0, 12
395fdab3c8Swangpc; PROP-NEXT:    sw a0, 0(a4)
405fdab3c8Swangpc; PROP-NEXT:    ret
415fdab3c8Swangpc; PROP-NEXT:  .LBB0_2: # %bb.1
425fdab3c8Swangpc; PROP-NEXT:    li a2, 25
435fdab3c8Swangpc; PROP-NEXT:    sw a2, 0(a3)
445fdab3c8Swangpc; PROP-NEXT:    sw zero, 0(a1)
455fdab3c8Swangpc; PROP-NEXT:    li a0, 12
465fdab3c8Swangpc; PROP-NEXT:    sw a0, 0(a4)
475fdab3c8Swangpc; PROP-NEXT:    ret
485fdab3c8Swangpc  %1 = icmp eq i32 %v, 10
495fdab3c8Swangpc  br i1 %1, label %bb.0, label %bb.1
505fdab3c8Swangpc
515fdab3c8Swangpcbb.0:
52*ff9af4c4SNikita Popov  store i32 15, ptr %b, align 4
535fdab3c8Swangpc  br label %bb.2
545fdab3c8Swangpc
555fdab3c8Swangpcbb.1:
56*ff9af4c4SNikita Popov  store i32 25, ptr %c, align 4
575fdab3c8Swangpc  br label %bb.2
585fdab3c8Swangpc
595fdab3c8Swangpcbb.2:
605fdab3c8Swangpc  %2 = phi i32 [ 1, %bb.0 ], [ 0, %bb.1 ]
61*ff9af4c4SNikita Popov  store i32 %2, ptr %a, align 4
62*ff9af4c4SNikita Popov  store i32 12, ptr %d, align 4
635fdab3c8Swangpc  ret void
645fdab3c8Swangpc}
65