llvm/llvm/test/Transforms/CodeGenPrepare/RISCV/noop-copy-sink.ll

; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -S -passes='require<profile-summary>,function(codegenprepare)' -mtriple=riscv64 %s \
; RUN:   | FileCheck --check-prefixes=CHECK %s

define i16 @sink_trunc1(i64 %a) {
; CHECK-LABEL: @sink_trunc1(
; CHECK-NEXT:  fnend:
; CHECK-NEXT:    [[TMP0:%.*]] = trunc i64 [[A:%.*]] to i16
; CHECK-NEXT:    ret i16 [[TMP0]]
;
  %trunc = trunc i64 %a to i16
  br label %fnend

fnend:
  ret i16 %trunc
}

; The flags on the original trunc should be preserved.
define i16 @sink_trunc2(i64 %a) {
; CHECK-LABEL: @sink_trunc2(
; CHECK-NEXT:  fnend:
; CHECK-NEXT:    [[TMP0:%.*]] = trunc nuw nsw i64 [[A:%.*]] to i16
; CHECK-NEXT:    ret i16 [[TMP0]]
;
  %trunc = trunc nuw nsw i64 %a to i16
  br label %fnend

fnend:
  ret i16 %trunc
}