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