xref: /llvm-project/llvm/test/CodeGen/RISCV/rvv/lrint-sdnode.ll (revision afc7cc7b123666a8917b26c7e483d78cbb79ff8d)
198c90a13SRamkumar Ramachandra; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
298c90a13SRamkumar Ramachandra; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+v,+f,+d \
398c90a13SRamkumar Ramachandra; RUN:     -target-abi=ilp32d -verify-machineinstrs | FileCheck %s --check-prefix=RV32
47a760388SRamkumar Ramachandra; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv64 -mattr=+v,+f,+d \
57a760388SRamkumar Ramachandra; RUN:     -target-abi=lp64d -verify-machineinstrs | FileCheck %s --check-prefix=RV64-i32
698c90a13SRamkumar Ramachandra; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+v,+f,+d \
77a760388SRamkumar Ramachandra; RUN:     -target-abi=lp64d -verify-machineinstrs | FileCheck %s --check-prefix=RV64-i64
898c90a13SRamkumar Ramachandra
998c90a13SRamkumar Ramachandradefine <vscale x 1 x iXLen> @lrint_nxv1f32(<vscale x 1 x float> %x) {
1098c90a13SRamkumar Ramachandra; RV32-LABEL: lrint_nxv1f32:
1198c90a13SRamkumar Ramachandra; RV32:       # %bb.0:
1298c90a13SRamkumar Ramachandra; RV32-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma
1398c90a13SRamkumar Ramachandra; RV32-NEXT:    vfcvt.x.f.v v8, v8
1498c90a13SRamkumar Ramachandra; RV32-NEXT:    ret
1598c90a13SRamkumar Ramachandra;
167a760388SRamkumar Ramachandra; RV64-i32-LABEL: lrint_nxv1f32:
177a760388SRamkumar Ramachandra; RV64-i32:       # %bb.0:
187a760388SRamkumar Ramachandra; RV64-i32-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma
197a760388SRamkumar Ramachandra; RV64-i32-NEXT:    vfcvt.x.f.v v8, v8
207a760388SRamkumar Ramachandra; RV64-i32-NEXT:    ret
217a760388SRamkumar Ramachandra;
227a760388SRamkumar Ramachandra; RV64-i64-LABEL: lrint_nxv1f32:
237a760388SRamkumar Ramachandra; RV64-i64:       # %bb.0:
247a760388SRamkumar Ramachandra; RV64-i64-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma
257a760388SRamkumar Ramachandra; RV64-i64-NEXT:    vfwcvt.x.f.v v9, v8
267a760388SRamkumar Ramachandra; RV64-i64-NEXT:    vmv1r.v v8, v9
277a760388SRamkumar Ramachandra; RV64-i64-NEXT:    ret
2898c90a13SRamkumar Ramachandra  %a = call <vscale x 1 x iXLen> @llvm.lrint.nxv1iXLen.nxv1f32(<vscale x 1 x float> %x)
2998c90a13SRamkumar Ramachandra  ret <vscale x 1 x iXLen> %a
3098c90a13SRamkumar Ramachandra}
3198c90a13SRamkumar Ramachandradeclare <vscale x 1 x iXLen> @llvm.lrint.nxv1iXLen.nxv1f32(<vscale x 1 x float>)
3298c90a13SRamkumar Ramachandra
3398c90a13SRamkumar Ramachandradefine <vscale x 2 x iXLen> @lrint_nxv2f32(<vscale x 2 x float> %x) {
3498c90a13SRamkumar Ramachandra; RV32-LABEL: lrint_nxv2f32:
3598c90a13SRamkumar Ramachandra; RV32:       # %bb.0:
3698c90a13SRamkumar Ramachandra; RV32-NEXT:    vsetvli a0, zero, e32, m1, ta, ma
3798c90a13SRamkumar Ramachandra; RV32-NEXT:    vfcvt.x.f.v v8, v8
3898c90a13SRamkumar Ramachandra; RV32-NEXT:    ret
3998c90a13SRamkumar Ramachandra;
407a760388SRamkumar Ramachandra; RV64-i32-LABEL: lrint_nxv2f32:
417a760388SRamkumar Ramachandra; RV64-i32:       # %bb.0:
427a760388SRamkumar Ramachandra; RV64-i32-NEXT:    vsetvli a0, zero, e32, m1, ta, ma
437a760388SRamkumar Ramachandra; RV64-i32-NEXT:    vfcvt.x.f.v v8, v8
447a760388SRamkumar Ramachandra; RV64-i32-NEXT:    ret
457a760388SRamkumar Ramachandra;
467a760388SRamkumar Ramachandra; RV64-i64-LABEL: lrint_nxv2f32:
477a760388SRamkumar Ramachandra; RV64-i64:       # %bb.0:
487a760388SRamkumar Ramachandra; RV64-i64-NEXT:    vsetvli a0, zero, e32, m1, ta, ma
497a760388SRamkumar Ramachandra; RV64-i64-NEXT:    vfwcvt.x.f.v v10, v8
507a760388SRamkumar Ramachandra; RV64-i64-NEXT:    vmv2r.v v8, v10
517a760388SRamkumar Ramachandra; RV64-i64-NEXT:    ret
5298c90a13SRamkumar Ramachandra  %a = call <vscale x 2 x iXLen> @llvm.lrint.nxv2iXLen.nxv2f32(<vscale x 2 x float> %x)
5398c90a13SRamkumar Ramachandra  ret <vscale x 2 x iXLen> %a
5498c90a13SRamkumar Ramachandra}
5598c90a13SRamkumar Ramachandradeclare <vscale x 2 x iXLen> @llvm.lrint.nxv2iXLen.nxv2f32(<vscale x 2 x float>)
5698c90a13SRamkumar Ramachandra
5798c90a13SRamkumar Ramachandradefine <vscale x 4 x iXLen> @lrint_nxv4f32(<vscale x 4 x float> %x) {
5898c90a13SRamkumar Ramachandra; RV32-LABEL: lrint_nxv4f32:
5998c90a13SRamkumar Ramachandra; RV32:       # %bb.0:
6098c90a13SRamkumar Ramachandra; RV32-NEXT:    vsetvli a0, zero, e32, m2, ta, ma
6198c90a13SRamkumar Ramachandra; RV32-NEXT:    vfcvt.x.f.v v8, v8
6298c90a13SRamkumar Ramachandra; RV32-NEXT:    ret
6398c90a13SRamkumar Ramachandra;
647a760388SRamkumar Ramachandra; RV64-i32-LABEL: lrint_nxv4f32:
657a760388SRamkumar Ramachandra; RV64-i32:       # %bb.0:
667a760388SRamkumar Ramachandra; RV64-i32-NEXT:    vsetvli a0, zero, e32, m2, ta, ma
677a760388SRamkumar Ramachandra; RV64-i32-NEXT:    vfcvt.x.f.v v8, v8
687a760388SRamkumar Ramachandra; RV64-i32-NEXT:    ret
697a760388SRamkumar Ramachandra;
707a760388SRamkumar Ramachandra; RV64-i64-LABEL: lrint_nxv4f32:
717a760388SRamkumar Ramachandra; RV64-i64:       # %bb.0:
727a760388SRamkumar Ramachandra; RV64-i64-NEXT:    vsetvli a0, zero, e32, m2, ta, ma
737a760388SRamkumar Ramachandra; RV64-i64-NEXT:    vfwcvt.x.f.v v12, v8
747a760388SRamkumar Ramachandra; RV64-i64-NEXT:    vmv4r.v v8, v12
757a760388SRamkumar Ramachandra; RV64-i64-NEXT:    ret
7698c90a13SRamkumar Ramachandra  %a = call <vscale x 4 x iXLen> @llvm.lrint.nxv4iXLen.nxv4f32(<vscale x 4 x float> %x)
7798c90a13SRamkumar Ramachandra  ret <vscale x 4 x iXLen> %a
7898c90a13SRamkumar Ramachandra}
7998c90a13SRamkumar Ramachandradeclare <vscale x 4 x iXLen> @llvm.lrint.nxv4iXLen.nxv4f32(<vscale x 4 x float>)
8098c90a13SRamkumar Ramachandra
8198c90a13SRamkumar Ramachandradefine <vscale x 8 x iXLen> @lrint_nxv8f32(<vscale x 8 x float> %x) {
8298c90a13SRamkumar Ramachandra; RV32-LABEL: lrint_nxv8f32:
8398c90a13SRamkumar Ramachandra; RV32:       # %bb.0:
8498c90a13SRamkumar Ramachandra; RV32-NEXT:    vsetvli a0, zero, e32, m4, ta, ma
8598c90a13SRamkumar Ramachandra; RV32-NEXT:    vfcvt.x.f.v v8, v8
8698c90a13SRamkumar Ramachandra; RV32-NEXT:    ret
8798c90a13SRamkumar Ramachandra;
887a760388SRamkumar Ramachandra; RV64-i32-LABEL: lrint_nxv8f32:
897a760388SRamkumar Ramachandra; RV64-i32:       # %bb.0:
907a760388SRamkumar Ramachandra; RV64-i32-NEXT:    vsetvli a0, zero, e32, m4, ta, ma
917a760388SRamkumar Ramachandra; RV64-i32-NEXT:    vfcvt.x.f.v v8, v8
927a760388SRamkumar Ramachandra; RV64-i32-NEXT:    ret
937a760388SRamkumar Ramachandra;
947a760388SRamkumar Ramachandra; RV64-i64-LABEL: lrint_nxv8f32:
957a760388SRamkumar Ramachandra; RV64-i64:       # %bb.0:
967a760388SRamkumar Ramachandra; RV64-i64-NEXT:    vsetvli a0, zero, e32, m4, ta, ma
977a760388SRamkumar Ramachandra; RV64-i64-NEXT:    vfwcvt.x.f.v v16, v8
987a760388SRamkumar Ramachandra; RV64-i64-NEXT:    vmv8r.v v8, v16
997a760388SRamkumar Ramachandra; RV64-i64-NEXT:    ret
10098c90a13SRamkumar Ramachandra  %a = call <vscale x 8 x iXLen> @llvm.lrint.nxv8iXLen.nxv8f32(<vscale x 8 x float> %x)
10198c90a13SRamkumar Ramachandra  ret <vscale x 8 x iXLen> %a
10298c90a13SRamkumar Ramachandra}
10398c90a13SRamkumar Ramachandradeclare <vscale x 8 x iXLen> @llvm.lrint.nxv8iXLen.nxv8f32(<vscale x 8 x float>)
10498c90a13SRamkumar Ramachandra
105*afc7cc7bSCraig Topperdefine <vscale x 16 x iXLen> @lrint_nxv16f32(<vscale x 16 x float> %x) {
106*afc7cc7bSCraig Topper; RV32-LABEL: lrint_nxv16f32:
107*afc7cc7bSCraig Topper; RV32:       # %bb.0:
108*afc7cc7bSCraig Topper; RV32-NEXT:    vsetvli a0, zero, e32, m8, ta, ma
109*afc7cc7bSCraig Topper; RV32-NEXT:    vfcvt.x.f.v v8, v8
110*afc7cc7bSCraig Topper; RV32-NEXT:    ret
111*afc7cc7bSCraig Topper;
112*afc7cc7bSCraig Topper; RV64-i32-LABEL: lrint_nxv16f32:
113*afc7cc7bSCraig Topper; RV64-i32:       # %bb.0:
114*afc7cc7bSCraig Topper; RV64-i32-NEXT:    vsetvli a0, zero, e32, m8, ta, ma
115*afc7cc7bSCraig Topper; RV64-i32-NEXT:    vfcvt.x.f.v v8, v8
116*afc7cc7bSCraig Topper; RV64-i32-NEXT:    ret
117*afc7cc7bSCraig Topper;
118*afc7cc7bSCraig Topper; RV64-i64-LABEL: lrint_nxv16f32:
119*afc7cc7bSCraig Topper; RV64-i64:       # %bb.0:
120*afc7cc7bSCraig Topper; RV64-i64-NEXT:    vsetvli a0, zero, e32, m4, ta, ma
121*afc7cc7bSCraig Topper; RV64-i64-NEXT:    vfwcvt.x.f.v v24, v8
122*afc7cc7bSCraig Topper; RV64-i64-NEXT:    vfwcvt.x.f.v v16, v12
123*afc7cc7bSCraig Topper; RV64-i64-NEXT:    vmv8r.v v8, v24
124*afc7cc7bSCraig Topper; RV64-i64-NEXT:    ret
12598c90a13SRamkumar Ramachandra  %a = call <vscale x 16 x iXLen> @llvm.lrint.nxv16iXLen.nxv16f32(<vscale x 16 x float> %x)
12698c90a13SRamkumar Ramachandra  ret <vscale x 16 x iXLen> %a
12798c90a13SRamkumar Ramachandra}
12898c90a13SRamkumar Ramachandradeclare <vscale x 16 x iXLen> @llvm.lrint.nxv16iXLen.nxv16f32(<vscale x 16 x float>)
12998c90a13SRamkumar Ramachandra
13098c90a13SRamkumar Ramachandradefine <vscale x 1 x iXLen> @lrint_nxv1f64(<vscale x 1 x double> %x) {
13198c90a13SRamkumar Ramachandra; RV32-LABEL: lrint_nxv1f64:
13298c90a13SRamkumar Ramachandra; RV32:       # %bb.0:
13398c90a13SRamkumar Ramachandra; RV32-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma
13498c90a13SRamkumar Ramachandra; RV32-NEXT:    vfncvt.x.f.w v9, v8
13598c90a13SRamkumar Ramachandra; RV32-NEXT:    vmv1r.v v8, v9
13698c90a13SRamkumar Ramachandra; RV32-NEXT:    ret
13798c90a13SRamkumar Ramachandra;
1387a760388SRamkumar Ramachandra; RV64-i32-LABEL: lrint_nxv1f64:
1397a760388SRamkumar Ramachandra; RV64-i32:       # %bb.0:
1407a760388SRamkumar Ramachandra; RV64-i32-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma
1417a760388SRamkumar Ramachandra; RV64-i32-NEXT:    vfncvt.x.f.w v9, v8
1427a760388SRamkumar Ramachandra; RV64-i32-NEXT:    vmv1r.v v8, v9
1437a760388SRamkumar Ramachandra; RV64-i32-NEXT:    ret
1447a760388SRamkumar Ramachandra;
1457a760388SRamkumar Ramachandra; RV64-i64-LABEL: lrint_nxv1f64:
1467a760388SRamkumar Ramachandra; RV64-i64:       # %bb.0:
1477a760388SRamkumar Ramachandra; RV64-i64-NEXT:    vsetvli a0, zero, e64, m1, ta, ma
1487a760388SRamkumar Ramachandra; RV64-i64-NEXT:    vfcvt.x.f.v v8, v8
1497a760388SRamkumar Ramachandra; RV64-i64-NEXT:    ret
15098c90a13SRamkumar Ramachandra  %a = call <vscale x 1 x iXLen> @llvm.lrint.nxv1iXLen.nxv1f64(<vscale x 1 x double> %x)
15198c90a13SRamkumar Ramachandra  ret <vscale x 1 x iXLen> %a
15298c90a13SRamkumar Ramachandra}
15398c90a13SRamkumar Ramachandradeclare <vscale x 1 x iXLen> @llvm.lrint.nxv1iXLen.nxv1f64(<vscale x 1 x double>)
15498c90a13SRamkumar Ramachandra
15598c90a13SRamkumar Ramachandradefine <vscale x 2 x iXLen> @lrint_nxv2f64(<vscale x 2 x double> %x) {
15698c90a13SRamkumar Ramachandra; RV32-LABEL: lrint_nxv2f64:
15798c90a13SRamkumar Ramachandra; RV32:       # %bb.0:
15898c90a13SRamkumar Ramachandra; RV32-NEXT:    vsetvli a0, zero, e32, m1, ta, ma
15998c90a13SRamkumar Ramachandra; RV32-NEXT:    vfncvt.x.f.w v10, v8
16098c90a13SRamkumar Ramachandra; RV32-NEXT:    vmv.v.v v8, v10
16198c90a13SRamkumar Ramachandra; RV32-NEXT:    ret
16298c90a13SRamkumar Ramachandra;
1637a760388SRamkumar Ramachandra; RV64-i32-LABEL: lrint_nxv2f64:
1647a760388SRamkumar Ramachandra; RV64-i32:       # %bb.0:
1657a760388SRamkumar Ramachandra; RV64-i32-NEXT:    vsetvli a0, zero, e32, m1, ta, ma
1667a760388SRamkumar Ramachandra; RV64-i32-NEXT:    vfncvt.x.f.w v10, v8
1677a760388SRamkumar Ramachandra; RV64-i32-NEXT:    vmv.v.v v8, v10
1687a760388SRamkumar Ramachandra; RV64-i32-NEXT:    ret
1697a760388SRamkumar Ramachandra;
1707a760388SRamkumar Ramachandra; RV64-i64-LABEL: lrint_nxv2f64:
1717a760388SRamkumar Ramachandra; RV64-i64:       # %bb.0:
1727a760388SRamkumar Ramachandra; RV64-i64-NEXT:    vsetvli a0, zero, e64, m2, ta, ma
1737a760388SRamkumar Ramachandra; RV64-i64-NEXT:    vfcvt.x.f.v v8, v8
1747a760388SRamkumar Ramachandra; RV64-i64-NEXT:    ret
17598c90a13SRamkumar Ramachandra  %a = call <vscale x 2 x iXLen> @llvm.lrint.nxv2iXLen.nxv2f64(<vscale x 2 x double> %x)
17698c90a13SRamkumar Ramachandra  ret <vscale x 2 x iXLen> %a
17798c90a13SRamkumar Ramachandra}
17898c90a13SRamkumar Ramachandradeclare <vscale x 2 x iXLen> @llvm.lrint.nxv2iXLen.nxv2f64(<vscale x 2 x double>)
17998c90a13SRamkumar Ramachandra
18098c90a13SRamkumar Ramachandradefine <vscale x 4 x iXLen> @lrint_nxv4f64(<vscale x 4 x double> %x) {
18198c90a13SRamkumar Ramachandra; RV32-LABEL: lrint_nxv4f64:
18298c90a13SRamkumar Ramachandra; RV32:       # %bb.0:
18398c90a13SRamkumar Ramachandra; RV32-NEXT:    vsetvli a0, zero, e32, m2, ta, ma
18498c90a13SRamkumar Ramachandra; RV32-NEXT:    vfncvt.x.f.w v12, v8
18598c90a13SRamkumar Ramachandra; RV32-NEXT:    vmv.v.v v8, v12
18698c90a13SRamkumar Ramachandra; RV32-NEXT:    ret
18798c90a13SRamkumar Ramachandra;
1887a760388SRamkumar Ramachandra; RV64-i32-LABEL: lrint_nxv4f64:
1897a760388SRamkumar Ramachandra; RV64-i32:       # %bb.0:
1907a760388SRamkumar Ramachandra; RV64-i32-NEXT:    vsetvli a0, zero, e32, m2, ta, ma
1917a760388SRamkumar Ramachandra; RV64-i32-NEXT:    vfncvt.x.f.w v12, v8
1927a760388SRamkumar Ramachandra; RV64-i32-NEXT:    vmv.v.v v8, v12
1937a760388SRamkumar Ramachandra; RV64-i32-NEXT:    ret
1947a760388SRamkumar Ramachandra;
1957a760388SRamkumar Ramachandra; RV64-i64-LABEL: lrint_nxv4f64:
1967a760388SRamkumar Ramachandra; RV64-i64:       # %bb.0:
1977a760388SRamkumar Ramachandra; RV64-i64-NEXT:    vsetvli a0, zero, e64, m4, ta, ma
1987a760388SRamkumar Ramachandra; RV64-i64-NEXT:    vfcvt.x.f.v v8, v8
1997a760388SRamkumar Ramachandra; RV64-i64-NEXT:    ret
20098c90a13SRamkumar Ramachandra  %a = call <vscale x 4 x iXLen> @llvm.lrint.nxv4iXLen.nxv4f64(<vscale x 4 x double> %x)
20198c90a13SRamkumar Ramachandra  ret <vscale x 4 x iXLen> %a
20298c90a13SRamkumar Ramachandra}
20398c90a13SRamkumar Ramachandradeclare <vscale x 4 x iXLen> @llvm.lrint.nxv4iXLen.nxv4f64(<vscale x 4 x double>)
20498c90a13SRamkumar Ramachandra
20598c90a13SRamkumar Ramachandradefine <vscale x 8 x iXLen> @lrint_nxv8f64(<vscale x 8 x double> %x) {
20698c90a13SRamkumar Ramachandra; RV32-LABEL: lrint_nxv8f64:
20798c90a13SRamkumar Ramachandra; RV32:       # %bb.0:
20898c90a13SRamkumar Ramachandra; RV32-NEXT:    vsetvli a0, zero, e32, m4, ta, ma
20998c90a13SRamkumar Ramachandra; RV32-NEXT:    vfncvt.x.f.w v16, v8
21098c90a13SRamkumar Ramachandra; RV32-NEXT:    vmv.v.v v8, v16
21198c90a13SRamkumar Ramachandra; RV32-NEXT:    ret
21298c90a13SRamkumar Ramachandra;
2137a760388SRamkumar Ramachandra; RV64-i32-LABEL: lrint_nxv8f64:
2147a760388SRamkumar Ramachandra; RV64-i32:       # %bb.0:
2157a760388SRamkumar Ramachandra; RV64-i32-NEXT:    vsetvli a0, zero, e32, m4, ta, ma
2167a760388SRamkumar Ramachandra; RV64-i32-NEXT:    vfncvt.x.f.w v16, v8
2177a760388SRamkumar Ramachandra; RV64-i32-NEXT:    vmv.v.v v8, v16
2187a760388SRamkumar Ramachandra; RV64-i32-NEXT:    ret
2197a760388SRamkumar Ramachandra;
2207a760388SRamkumar Ramachandra; RV64-i64-LABEL: lrint_nxv8f64:
2217a760388SRamkumar Ramachandra; RV64-i64:       # %bb.0:
2227a760388SRamkumar Ramachandra; RV64-i64-NEXT:    vsetvli a0, zero, e64, m8, ta, ma
2237a760388SRamkumar Ramachandra; RV64-i64-NEXT:    vfcvt.x.f.v v8, v8
2247a760388SRamkumar Ramachandra; RV64-i64-NEXT:    ret
22598c90a13SRamkumar Ramachandra  %a = call <vscale x 8 x iXLen> @llvm.lrint.nxv8iXLen.nxv8f64(<vscale x 8 x double> %x)
22698c90a13SRamkumar Ramachandra  ret <vscale x 8 x iXLen> %a
22798c90a13SRamkumar Ramachandra}
22898c90a13SRamkumar Ramachandradeclare <vscale x 8 x iXLen> @llvm.lrint.nxv8iXLen.nxv8f64(<vscale x 8 x double>)
229