xref: /llvm-project/llvm/test/CodeGen/RISCV/calling-conv-vector-float.ll (revision 2967e5f8007d873a3e9d97870d2461d0827a3976)
1b115c038SFraser Cormack; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
23fe81410SJianjian Guan; RUN: llc -mtriple=riscv64 -mattr=+f -target-abi=lp64 -verify-machineinstrs < %s \
3b115c038SFraser Cormack; RUN:   | FileCheck -check-prefix=RV64 %s
4b115c038SFraser Cormack; RUN: llc -mtriple=riscv64 -mattr=+f -target-abi=lp64f -verify-machineinstrs < %s \
5b115c038SFraser Cormack; RUN:   | FileCheck -check-prefix=RV64LP64F %s
6b115c038SFraser Cormack
7b115c038SFraser Cormackdefine <2 x float> @callee_v2f32(<2 x float> %x, <2 x float> %y) {
8b115c038SFraser Cormack; RV64-LABEL: callee_v2f32:
9b115c038SFraser Cormack; RV64:       # %bb.0:
107b0c4184SCraig Topper; RV64-NEXT:    fmv.w.x fa5, a2
117b0c4184SCraig Topper; RV64-NEXT:    fmv.w.x fa4, a0
127b0c4184SCraig Topper; RV64-NEXT:    fmv.w.x fa3, a3
137b0c4184SCraig Topper; RV64-NEXT:    fmv.w.x fa2, a1
147b0c4184SCraig Topper; RV64-NEXT:    fadd.s fa3, fa2, fa3
157b0c4184SCraig Topper; RV64-NEXT:    fadd.s fa5, fa4, fa5
167b0c4184SCraig Topper; RV64-NEXT:    fmv.x.w a0, fa5
177b0c4184SCraig Topper; RV64-NEXT:    fmv.x.w a1, fa3
18b115c038SFraser Cormack; RV64-NEXT:    ret
19b115c038SFraser Cormack;
20b115c038SFraser Cormack; RV64LP64F-LABEL: callee_v2f32:
21b115c038SFraser Cormack; RV64LP64F:       # %bb.0:
22b115c038SFraser Cormack; RV64LP64F-NEXT:    fadd.s fa0, fa0, fa2
23b115c038SFraser Cormack; RV64LP64F-NEXT:    fadd.s fa1, fa1, fa3
24b115c038SFraser Cormack; RV64LP64F-NEXT:    ret
25b115c038SFraser Cormack  %z = fadd <2 x float> %x, %y
26b115c038SFraser Cormack  ret <2 x float> %z
27b115c038SFraser Cormack}
28b115c038SFraser Cormack
29b115c038SFraser Cormackdefine <4 x float> @callee_v4f32(<4 x float> %x, <4 x float> %y) {
30b115c038SFraser Cormack; RV64-LABEL: callee_v4f32:
31b115c038SFraser Cormack; RV64:       # %bb.0:
327b0c4184SCraig Topper; RV64-NEXT:    fmv.w.x fa5, a4
337b0c4184SCraig Topper; RV64-NEXT:    fmv.w.x fa4, a7
347b0c4184SCraig Topper; RV64-NEXT:    fmv.w.x fa3, a3
357b0c4184SCraig Topper; RV64-NEXT:    fmv.w.x fa2, a6
367b0c4184SCraig Topper; RV64-NEXT:    fmv.w.x fa1, a2
377b0c4184SCraig Topper; RV64-NEXT:    fmv.w.x fa0, a5
387b0c4184SCraig Topper; RV64-NEXT:    fmv.w.x ft0, a1
397b0c4184SCraig Topper; RV64-NEXT:    flw ft1, 0(sp)
407b0c4184SCraig Topper; RV64-NEXT:    fadd.s fa0, ft0, fa0
417b0c4184SCraig Topper; RV64-NEXT:    fadd.s fa2, fa1, fa2
427b0c4184SCraig Topper; RV64-NEXT:    fadd.s fa4, fa3, fa4
437b0c4184SCraig Topper; RV64-NEXT:    fadd.s fa5, fa5, ft1
447b0c4184SCraig Topper; RV64-NEXT:    fsw fa0, 0(a0)
45*2967e5f8SAlex Bradbury; RV64-NEXT:    fsw fa2, 4(a0)
46*2967e5f8SAlex Bradbury; RV64-NEXT:    fsw fa4, 8(a0)
47*2967e5f8SAlex Bradbury; RV64-NEXT:    fsw fa5, 12(a0)
48b115c038SFraser Cormack; RV64-NEXT:    ret
49b115c038SFraser Cormack;
50b115c038SFraser Cormack; RV64LP64F-LABEL: callee_v4f32:
51b115c038SFraser Cormack; RV64LP64F:       # %bb.0:
527b0c4184SCraig Topper; RV64LP64F-NEXT:    fadd.s fa4, fa0, fa4
537b0c4184SCraig Topper; RV64LP64F-NEXT:    fadd.s fa5, fa1, fa5
547b0c4184SCraig Topper; RV64LP64F-NEXT:    fadd.s fa2, fa2, fa6
557b0c4184SCraig Topper; RV64LP64F-NEXT:    fadd.s fa3, fa3, fa7
567b0c4184SCraig Topper; RV64LP64F-NEXT:    fsw fa4, 0(a0)
57*2967e5f8SAlex Bradbury; RV64LP64F-NEXT:    fsw fa5, 4(a0)
58*2967e5f8SAlex Bradbury; RV64LP64F-NEXT:    fsw fa2, 8(a0)
59*2967e5f8SAlex Bradbury; RV64LP64F-NEXT:    fsw fa3, 12(a0)
60b115c038SFraser Cormack; RV64LP64F-NEXT:    ret
61b115c038SFraser Cormack  %z = fadd <4 x float> %x, %y
62b115c038SFraser Cormack  ret <4 x float> %z
63b115c038SFraser Cormack}
64