14183522eSCraig Topper; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2a0a76feeSShao-Ce SUN; RUN: llc -mtriple=riscv32 -mattr=+zfh -verify-machineinstrs \ 34183522eSCraig Topper; RUN: -target-abi ilp32f < %s \ 44183522eSCraig Topper; RUN: | FileCheck -check-prefix=RV32IZFH %s 5a0a76feeSShao-Ce SUN; RUN: llc -mtriple=riscv64 -mattr=+zfh -verify-machineinstrs \ 64183522eSCraig Topper; RUN: -target-abi lp64f < %s \ 74183522eSCraig Topper; RUN: | FileCheck -check-prefix=RV64IZFH %s 8773b0aaaSQihan Cai; RUN: llc -mtriple=riscv32 -mattr=+zhinx -verify-machineinstrs \ 9773b0aaaSQihan Cai; RUN: -target-abi ilp32 < %s \ 10773b0aaaSQihan Cai; RUN: | FileCheck -check-prefix=RV32IZHINX %s 11773b0aaaSQihan Cai; RUN: llc -mtriple=riscv64 -mattr=+zhinx -verify-machineinstrs \ 12773b0aaaSQihan Cai; RUN: -target-abi lp64 < %s \ 13773b0aaaSQihan Cai; RUN: | FileCheck -check-prefix=RV64IZHINX %s 147b50c183SMonk Chiang; RUN: llc -mtriple=riscv32 -mattr=+zfhmin -verify-machineinstrs \ 157b50c183SMonk Chiang; RUN: -target-abi ilp32f < %s \ 167b50c183SMonk Chiang; RUN: | FileCheck -check-prefix=RV32IZFHMIN %s 177b50c183SMonk Chiang; RUN: llc -mtriple=riscv64 -mattr=+zfhmin -verify-machineinstrs \ 187b50c183SMonk Chiang; RUN: -target-abi lp64f < %s \ 197b50c183SMonk Chiang; RUN: | FileCheck -check-prefix=RV64IZFHMIN %s 20773b0aaaSQihan Cai; RUN: llc -mtriple=riscv32 -mattr=+zhinxmin -verify-machineinstrs \ 21773b0aaaSQihan Cai; RUN: -target-abi ilp32 < %s \ 22773b0aaaSQihan Cai; RUN: | FileCheck -check-prefix=RV32IZHINXMIN %s 23773b0aaaSQihan Cai; RUN: llc -mtriple=riscv64 -mattr=+zhinxmin -verify-machineinstrs \ 24773b0aaaSQihan Cai; RUN: -target-abi lp64 < %s \ 25773b0aaaSQihan Cai; RUN: | FileCheck -check-prefix=RV64IZHINXMIN %s 264183522eSCraig Topper 274183522eSCraig Topperdefine half @frem_f16(half %a, half %b) nounwind { 284183522eSCraig Topper; RV32IZFH-LABEL: frem_f16: 294183522eSCraig Topper; RV32IZFH: # %bb.0: 304183522eSCraig Topper; RV32IZFH-NEXT: addi sp, sp, -16 314183522eSCraig Topper; RV32IZFH-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 324183522eSCraig Topper; RV32IZFH-NEXT: fcvt.s.h fa0, fa0 334183522eSCraig Topper; RV32IZFH-NEXT: fcvt.s.h fa1, fa1 34*eabaee0cSFangrui Song; RV32IZFH-NEXT: call fmodf 354183522eSCraig Topper; RV32IZFH-NEXT: fcvt.h.s fa0, fa0 364183522eSCraig Topper; RV32IZFH-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 374183522eSCraig Topper; RV32IZFH-NEXT: addi sp, sp, 16 384183522eSCraig Topper; RV32IZFH-NEXT: ret 394183522eSCraig Topper; 404183522eSCraig Topper; RV64IZFH-LABEL: frem_f16: 414183522eSCraig Topper; RV64IZFH: # %bb.0: 424183522eSCraig Topper; RV64IZFH-NEXT: addi sp, sp, -16 434183522eSCraig Topper; RV64IZFH-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 444183522eSCraig Topper; RV64IZFH-NEXT: fcvt.s.h fa0, fa0 454183522eSCraig Topper; RV64IZFH-NEXT: fcvt.s.h fa1, fa1 46*eabaee0cSFangrui Song; RV64IZFH-NEXT: call fmodf 474183522eSCraig Topper; RV64IZFH-NEXT: fcvt.h.s fa0, fa0 484183522eSCraig Topper; RV64IZFH-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 494183522eSCraig Topper; RV64IZFH-NEXT: addi sp, sp, 16 504183522eSCraig Topper; RV64IZFH-NEXT: ret 517b50c183SMonk Chiang; 52773b0aaaSQihan Cai; RV32IZHINX-LABEL: frem_f16: 53773b0aaaSQihan Cai; RV32IZHINX: # %bb.0: 54773b0aaaSQihan Cai; RV32IZHINX-NEXT: addi sp, sp, -16 55773b0aaaSQihan Cai; RV32IZHINX-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 56773b0aaaSQihan Cai; RV32IZHINX-NEXT: fcvt.s.h a0, a0 57773b0aaaSQihan Cai; RV32IZHINX-NEXT: fcvt.s.h a1, a1 58*eabaee0cSFangrui Song; RV32IZHINX-NEXT: call fmodf 59773b0aaaSQihan Cai; RV32IZHINX-NEXT: fcvt.h.s a0, a0 60773b0aaaSQihan Cai; RV32IZHINX-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 61773b0aaaSQihan Cai; RV32IZHINX-NEXT: addi sp, sp, 16 62773b0aaaSQihan Cai; RV32IZHINX-NEXT: ret 63773b0aaaSQihan Cai; 64773b0aaaSQihan Cai; RV64IZHINX-LABEL: frem_f16: 65773b0aaaSQihan Cai; RV64IZHINX: # %bb.0: 66773b0aaaSQihan Cai; RV64IZHINX-NEXT: addi sp, sp, -16 67773b0aaaSQihan Cai; RV64IZHINX-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 68773b0aaaSQihan Cai; RV64IZHINX-NEXT: fcvt.s.h a0, a0 69773b0aaaSQihan Cai; RV64IZHINX-NEXT: fcvt.s.h a1, a1 70*eabaee0cSFangrui Song; RV64IZHINX-NEXT: call fmodf 71773b0aaaSQihan Cai; RV64IZHINX-NEXT: fcvt.h.s a0, a0 72773b0aaaSQihan Cai; RV64IZHINX-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 73773b0aaaSQihan Cai; RV64IZHINX-NEXT: addi sp, sp, 16 74773b0aaaSQihan Cai; RV64IZHINX-NEXT: ret 75773b0aaaSQihan Cai; 767b50c183SMonk Chiang; RV32IZFHMIN-LABEL: frem_f16: 777b50c183SMonk Chiang; RV32IZFHMIN: # %bb.0: 787b50c183SMonk Chiang; RV32IZFHMIN-NEXT: addi sp, sp, -16 797b50c183SMonk Chiang; RV32IZFHMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 807b50c183SMonk Chiang; RV32IZFHMIN-NEXT: fcvt.s.h fa0, fa0 817b50c183SMonk Chiang; RV32IZFHMIN-NEXT: fcvt.s.h fa1, fa1 82*eabaee0cSFangrui Song; RV32IZFHMIN-NEXT: call fmodf 837b50c183SMonk Chiang; RV32IZFHMIN-NEXT: fcvt.h.s fa0, fa0 847b50c183SMonk Chiang; RV32IZFHMIN-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 857b50c183SMonk Chiang; RV32IZFHMIN-NEXT: addi sp, sp, 16 867b50c183SMonk Chiang; RV32IZFHMIN-NEXT: ret 877b50c183SMonk Chiang; 887b50c183SMonk Chiang; RV64IZFHMIN-LABEL: frem_f16: 897b50c183SMonk Chiang; RV64IZFHMIN: # %bb.0: 907b50c183SMonk Chiang; RV64IZFHMIN-NEXT: addi sp, sp, -16 917b50c183SMonk Chiang; RV64IZFHMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 927b50c183SMonk Chiang; RV64IZFHMIN-NEXT: fcvt.s.h fa0, fa0 937b50c183SMonk Chiang; RV64IZFHMIN-NEXT: fcvt.s.h fa1, fa1 94*eabaee0cSFangrui Song; RV64IZFHMIN-NEXT: call fmodf 957b50c183SMonk Chiang; RV64IZFHMIN-NEXT: fcvt.h.s fa0, fa0 967b50c183SMonk Chiang; RV64IZFHMIN-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 977b50c183SMonk Chiang; RV64IZFHMIN-NEXT: addi sp, sp, 16 987b50c183SMonk Chiang; RV64IZFHMIN-NEXT: ret 99773b0aaaSQihan Cai; 100773b0aaaSQihan Cai; RV32IZHINXMIN-LABEL: frem_f16: 101773b0aaaSQihan Cai; RV32IZHINXMIN: # %bb.0: 102773b0aaaSQihan Cai; RV32IZHINXMIN-NEXT: addi sp, sp, -16 103773b0aaaSQihan Cai; RV32IZHINXMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 104773b0aaaSQihan Cai; RV32IZHINXMIN-NEXT: fcvt.s.h a0, a0 105773b0aaaSQihan Cai; RV32IZHINXMIN-NEXT: fcvt.s.h a1, a1 106*eabaee0cSFangrui Song; RV32IZHINXMIN-NEXT: call fmodf 107773b0aaaSQihan Cai; RV32IZHINXMIN-NEXT: fcvt.h.s a0, a0 108773b0aaaSQihan Cai; RV32IZHINXMIN-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 109773b0aaaSQihan Cai; RV32IZHINXMIN-NEXT: addi sp, sp, 16 110773b0aaaSQihan Cai; RV32IZHINXMIN-NEXT: ret 111773b0aaaSQihan Cai; 112773b0aaaSQihan Cai; RV64IZHINXMIN-LABEL: frem_f16: 113773b0aaaSQihan Cai; RV64IZHINXMIN: # %bb.0: 114773b0aaaSQihan Cai; RV64IZHINXMIN-NEXT: addi sp, sp, -16 115773b0aaaSQihan Cai; RV64IZHINXMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 116773b0aaaSQihan Cai; RV64IZHINXMIN-NEXT: fcvt.s.h a0, a0 117773b0aaaSQihan Cai; RV64IZHINXMIN-NEXT: fcvt.s.h a1, a1 118*eabaee0cSFangrui Song; RV64IZHINXMIN-NEXT: call fmodf 119773b0aaaSQihan Cai; RV64IZHINXMIN-NEXT: fcvt.h.s a0, a0 120773b0aaaSQihan Cai; RV64IZHINXMIN-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 121773b0aaaSQihan Cai; RV64IZHINXMIN-NEXT: addi sp, sp, 16 122773b0aaaSQihan Cai; RV64IZHINXMIN-NEXT: ret 1234183522eSCraig Topper %1 = frem half %a, %b 1244183522eSCraig Topper ret half %1 1254183522eSCraig Topper} 126