1976df42eSYeting Kuo; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2 2976df42eSYeting Kuo; RUN: llc -mtriple=riscv32 -mattr=+f,+zcmp -target-abi ilp32f -verify-machineinstrs < %s | FileCheck %s --check-prefix=RV32 3976df42eSYeting Kuo; RUN: llc -mtriple=riscv64 -mattr=+f,+zcmp -target-abi lp64f -verify-machineinstrs < %s | FileCheck %s --check-prefix=RV64 4976df42eSYeting Kuo 5976df42eSYeting Kuodeclare void @callee() 6976df42eSYeting Kuo 7976df42eSYeting Kuo; Test the file could be compiled successfully. 8976df42eSYeting Kuodefine float @foo(float %arg) { 9976df42eSYeting Kuo; RV32-LABEL: foo: 10976df42eSYeting Kuo; RV32: # %bb.0: # %entry 11976df42eSYeting Kuo; RV32-NEXT: cm.push {ra}, -32 12976df42eSYeting Kuo; RV32-NEXT: .cfi_def_cfa_offset 32 13976df42eSYeting Kuo; RV32-NEXT: .cfi_offset ra, -4 14*97982a8cSdlav-sc; RV32-NEXT: fsw fs0, 12(sp) # 4-byte Folded Spill 157c70e50bSYeting Kuo; RV32-NEXT: .cfi_offset fs0, -20 16976df42eSYeting Kuo; RV32-NEXT: fmv.s fs0, fa0 17eabaee0cSFangrui Song; RV32-NEXT: call callee 18976df42eSYeting Kuo; RV32-NEXT: fmv.s fa0, fs0 19976df42eSYeting Kuo; RV32-NEXT: flw fs0, 12(sp) # 4-byte Folded Reload 20*97982a8cSdlav-sc; RV32-NEXT: .cfi_restore fs0 21976df42eSYeting Kuo; RV32-NEXT: cm.popret {ra}, 32 22976df42eSYeting Kuo; 23976df42eSYeting Kuo; RV64-LABEL: foo: 24976df42eSYeting Kuo; RV64: # %bb.0: # %entry 25976df42eSYeting Kuo; RV64-NEXT: cm.push {ra}, -32 26976df42eSYeting Kuo; RV64-NEXT: .cfi_def_cfa_offset 32 27976df42eSYeting Kuo; RV64-NEXT: .cfi_offset ra, -8 28*97982a8cSdlav-sc; RV64-NEXT: fsw fs0, 12(sp) # 4-byte Folded Spill 297c70e50bSYeting Kuo; RV64-NEXT: .cfi_offset fs0, -20 30976df42eSYeting Kuo; RV64-NEXT: fmv.s fs0, fa0 31eabaee0cSFangrui Song; RV64-NEXT: call callee 32976df42eSYeting Kuo; RV64-NEXT: fmv.s fa0, fs0 33976df42eSYeting Kuo; RV64-NEXT: flw fs0, 12(sp) # 4-byte Folded Reload 34*97982a8cSdlav-sc; RV64-NEXT: .cfi_restore fs0 35976df42eSYeting Kuo; RV64-NEXT: cm.popret {ra}, 32 36976df42eSYeting Kuoentry: 37976df42eSYeting Kuo call void @callee() 38976df42eSYeting Kuo ret float %arg 39976df42eSYeting Kuo} 407c70e50bSYeting Kuo 417c70e50bSYeting Kuodefine void @foo2(i32 %x, float %y) { 427c70e50bSYeting Kuo; RV32-LABEL: foo2: 437c70e50bSYeting Kuo; RV32: # %bb.0: # %entry 447c70e50bSYeting Kuo; RV32-NEXT: cm.push {ra, s0}, -32 457c70e50bSYeting Kuo; RV32-NEXT: .cfi_def_cfa_offset 32 467c70e50bSYeting Kuo; RV32-NEXT: .cfi_offset ra, -8 477c70e50bSYeting Kuo; RV32-NEXT: .cfi_offset s0, -4 48*97982a8cSdlav-sc; RV32-NEXT: fsw fs0, 12(sp) # 4-byte Folded Spill 497c70e50bSYeting Kuo; RV32-NEXT: .cfi_offset fs0, -20 507c70e50bSYeting Kuo; RV32-NEXT: fmv.s fs0, fa0 517c70e50bSYeting Kuo; RV32-NEXT: mv s0, a0 52eabaee0cSFangrui Song; RV32-NEXT: call bar 537c70e50bSYeting Kuo; RV32-NEXT: mv a0, s0 547c70e50bSYeting Kuo; RV32-NEXT: fmv.s fa0, fs0 557c70e50bSYeting Kuo; RV32-NEXT: flw fs0, 12(sp) # 4-byte Folded Reload 56*97982a8cSdlav-sc; RV32-NEXT: .cfi_restore fs0 577c70e50bSYeting Kuo; RV32-NEXT: cm.pop {ra, s0}, 32 58*97982a8cSdlav-sc; RV32-NEXT: .cfi_restore ra 59*97982a8cSdlav-sc; RV32-NEXT: .cfi_restore s0 60*97982a8cSdlav-sc; RV32-NEXT: .cfi_def_cfa_offset 0 61eabaee0cSFangrui Song; RV32-NEXT: tail func 627c70e50bSYeting Kuo; 637c70e50bSYeting Kuo; RV64-LABEL: foo2: 647c70e50bSYeting Kuo; RV64: # %bb.0: # %entry 657c70e50bSYeting Kuo; RV64-NEXT: cm.push {ra, s0}, -32 667c70e50bSYeting Kuo; RV64-NEXT: .cfi_def_cfa_offset 32 677c70e50bSYeting Kuo; RV64-NEXT: .cfi_offset ra, -16 687c70e50bSYeting Kuo; RV64-NEXT: .cfi_offset s0, -8 69*97982a8cSdlav-sc; RV64-NEXT: fsw fs0, 12(sp) # 4-byte Folded Spill 707c70e50bSYeting Kuo; RV64-NEXT: .cfi_offset fs0, -20 717c70e50bSYeting Kuo; RV64-NEXT: fmv.s fs0, fa0 727c70e50bSYeting Kuo; RV64-NEXT: mv s0, a0 73eabaee0cSFangrui Song; RV64-NEXT: call bar 747c70e50bSYeting Kuo; RV64-NEXT: mv a0, s0 757c70e50bSYeting Kuo; RV64-NEXT: fmv.s fa0, fs0 767c70e50bSYeting Kuo; RV64-NEXT: flw fs0, 12(sp) # 4-byte Folded Reload 77*97982a8cSdlav-sc; RV64-NEXT: .cfi_restore fs0 787c70e50bSYeting Kuo; RV64-NEXT: cm.pop {ra, s0}, 32 79*97982a8cSdlav-sc; RV64-NEXT: .cfi_restore ra 80*97982a8cSdlav-sc; RV64-NEXT: .cfi_restore s0 81*97982a8cSdlav-sc; RV64-NEXT: .cfi_def_cfa_offset 0 82eabaee0cSFangrui Song; RV64-NEXT: tail func 837c70e50bSYeting Kuoentry: 847c70e50bSYeting Kuo tail call void @bar() 857c70e50bSYeting Kuo tail call void @func(i32 %x, float %y) 867c70e50bSYeting Kuo ret void 877c70e50bSYeting Kuo} 887c70e50bSYeting Kuo 897c70e50bSYeting Kuodeclare void @bar() 907c70e50bSYeting Kuodeclare void @func(i32, float) 91