xref: /llvm-project/llvm/test/Transforms/CodeGenPrepare/RISCV/noop-copy-sink.ll (revision 1c8410a67d9d7bbadc2e5f2c8698531b1060c8ac)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2; RUN: opt -S -passes='require<profile-summary>,function(codegenprepare)' -mtriple=riscv64 %s \
3; RUN:   | FileCheck --check-prefixes=CHECK %s
4
5define i16 @sink_trunc1(i64 %a) {
6; CHECK-LABEL: @sink_trunc1(
7; CHECK-NEXT:  fnend:
8; CHECK-NEXT:    [[TMP0:%.*]] = trunc i64 [[A:%.*]] to i16
9; CHECK-NEXT:    ret i16 [[TMP0]]
10;
11  %trunc = trunc i64 %a to i16
12  br label %fnend
13
14fnend:
15  ret i16 %trunc
16}
17
18; The flags on the original trunc should be preserved.
19define i16 @sink_trunc2(i64 %a) {
20; CHECK-LABEL: @sink_trunc2(
21; CHECK-NEXT:  fnend:
22; CHECK-NEXT:    [[TMP0:%.*]] = trunc nuw nsw i64 [[A:%.*]] to i16
23; CHECK-NEXT:    ret i16 [[TMP0]]
24;
25  %trunc = trunc nuw nsw i64 %a to i16
26  br label %fnend
27
28fnend:
29  ret i16 %trunc
30}
31