xref: /llvm-project/llvm/test/CodeGen/RISCV/half-frem.ll (revision eabaee0c59110d0e11b33a69db54ccda526b35fd)
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