; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6 ; RUN: llc -mtriple=riscv32 -mattr=+zdinx -verify-machineinstrs < %s \ ; RUN: | FileCheck -check-prefixes=CHECK32ZDINX %s ; RUN: llc -mtriple=riscv32 -mattr=+experimental-p -verify-machineinstrs < %s \ ; RUN: | FileCheck -check-prefixes=CHECK32P %s declare void @foo() define i64 @mv_to_fmv(i64 %a, i64 %b) nounwind { ; CHECK32ZDINX-LABEL: mv_to_fmv: ; CHECK32ZDINX: # %bb.0: ; CHECK32ZDINX-NEXT: addi sp, sp, -16 ; CHECK32ZDINX-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; CHECK32ZDINX-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; CHECK32ZDINX-NEXT: sw s1, 4(sp) # 4-byte Folded Spill ; CHECK32ZDINX-NEXT: add a1, a1, a3 ; CHECK32ZDINX-NEXT: add s0, a0, a2 ; CHECK32ZDINX-NEXT: sltu s1, s0, a0 ; CHECK32ZDINX-NEXT: add s1, a1, s1 ; CHECK32ZDINX-NEXT: call foo ; CHECK32ZDINX-NEXT: fmv.d a0, s0 ; CHECK32ZDINX-NEXT: lw ra, 12(sp) # 4-byte Folded Reload ; CHECK32ZDINX-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; CHECK32ZDINX-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; CHECK32ZDINX-NEXT: addi sp, sp, 16 ; CHECK32ZDINX-NEXT: ret ; ; CHECK32P-LABEL: mv_to_fmv: ; CHECK32P: # %bb.0: ; CHECK32P-NEXT: addi sp, sp, -16 ; CHECK32P-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; CHECK32P-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; CHECK32P-NEXT: sw s1, 4(sp) # 4-byte Folded Spill ; CHECK32P-NEXT: addd s0, a0, a2 ; CHECK32P-NEXT: call foo ; CHECK32P-NEXT: padd.dw a0, s0, zero ; CHECK32P-NEXT: lw ra, 12(sp) # 4-byte Folded Reload ; CHECK32P-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; CHECK32P-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; CHECK32P-NEXT: addi sp, sp, 16 ; CHECK32P-NEXT: ret %1 = add i64 %a, %b call void @foo() ret i64 %1 }