126 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 42; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+xsfvfexpa64e \3; RUN: -verify-machineinstrs | FileCheck %s --check-prefixes=CHECK4; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+xsfvfexpa64e \5; RUN: -verify-machineinstrs | FileCheck %s --check-prefixes=CHECK6 7define <vscale x 1 x double> @test_intrinsic_sf_vfexpa_v_nxv1f64(<vscale x 1 x double> %0, iXLen %1) {8; CHECK-LABEL: test_intrinsic_sf_vfexpa_v_nxv1f64:9; CHECK: # %bb.0: # %entry10; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma11; CHECK-NEXT: sf.vfexpa.v v8, v812; CHECK-NEXT: ret13entry:14 %f = call <vscale x 1 x double> @llvm.riscv.sf.vfexpa.nxv1f64(15 <vscale x 1 x double> poison,16 <vscale x 1 x double> %0,17 iXLen %1)18 ret <vscale x 1 x double> %f19}20 21define <vscale x 2 x double> @test_intrinsic_sf_vfexpa_v_nxv2f64(<vscale x 2 x double> %0, iXLen %1) {22; CHECK-LABEL: test_intrinsic_sf_vfexpa_v_nxv2f64:23; CHECK: # %bb.0: # %entry24; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma25; CHECK-NEXT: sf.vfexpa.v v8, v826; CHECK-NEXT: ret27entry:28 %f = call <vscale x 2 x double> @llvm.riscv.sf.vfexpa.nxv2f64(29 <vscale x 2 x double> poison,30 <vscale x 2 x double> %0,31 iXLen %1)32 ret <vscale x 2 x double> %f33}34 35define <vscale x 4 x double> @test_intrinsic_sf_vfexpa_v_nxv4f64(<vscale x 4 x double> %0, iXLen %1) {36; CHECK-LABEL: test_intrinsic_sf_vfexpa_v_nxv4f64:37; CHECK: # %bb.0: # %entry38; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma39; CHECK-NEXT: sf.vfexpa.v v8, v840; CHECK-NEXT: ret41entry:42 %f = call <vscale x 4 x double> @llvm.riscv.sf.vfexpa.nxv4f64(43 <vscale x 4 x double> poison,44 <vscale x 4 x double> %0,45 iXLen %1)46 ret <vscale x 4 x double> %f47}48 49define <vscale x 8 x double> @test_intrinsic_sf_vfexpa_v_nxv8f64(<vscale x 8 x double> %0, iXLen %1) {50; CHECK-LABEL: test_intrinsic_sf_vfexpa_v_nxv8f64:51; CHECK: # %bb.0: # %entry52; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma53; CHECK-NEXT: sf.vfexpa.v v8, v854; CHECK-NEXT: ret55entry:56 %f = call <vscale x 8 x double> @llvm.riscv.sf.vfexpa.nxv8f64(57 <vscale x 8 x double> poison,58 <vscale x 8 x double> %0,59 iXLen %1)60 ret <vscale x 8 x double> %f61}62 63define <vscale x 1 x double> @test_intrinsic_sf_vfexpa_v_mask_nxv1f64(<vscale x 1 x double> %0, <vscale x 1 x double> %1, <vscale x 1 x i1> %m, iXLen %vl) {64; CHECK-LABEL: test_intrinsic_sf_vfexpa_v_mask_nxv1f64:65; CHECK: # %bb.0: # %entry66; CHECK-NEXT: vsetvli zero, a0, e64, m1, tu, mu67; CHECK-NEXT: sf.vfexpa.v v8, v9, v0.t68; CHECK-NEXT: ret69entry:70 %f = call <vscale x 1 x double> @llvm.riscv.sf.vfexpa.mask.nxv1f64(71 <vscale x 1 x double> %0,72 <vscale x 1 x double> %1,73 <vscale x 1 x i1> %m,74 iXLen %vl,75 iXLen 0)76 ret <vscale x 1 x double> %f77}78 79define <vscale x 2 x double> @test_intrinsic_sf_vfexpa_v_mask_nxv2f64(<vscale x 2 x double> %0, <vscale x 2 x double> %1, <vscale x 2 x i1> %m, iXLen %vl) {80; CHECK-LABEL: test_intrinsic_sf_vfexpa_v_mask_nxv2f64:81; CHECK: # %bb.0: # %entry82; CHECK-NEXT: vsetvli zero, a0, e64, m2, tu, mu83; CHECK-NEXT: sf.vfexpa.v v8, v10, v0.t84; CHECK-NEXT: ret85entry:86 %f = call <vscale x 2 x double> @llvm.riscv.sf.vfexpa.mask.nxv2f64(87 <vscale x 2 x double> %0,88 <vscale x 2 x double> %1,89 <vscale x 2 x i1> %m,90 iXLen %vl,91 iXLen 0)92 ret <vscale x 2 x double> %f93}94 95define <vscale x 4 x double> @test_intrinsic_sf_vfexpa_v_mask_nxv4f64(<vscale x 4 x double> %0, <vscale x 4 x double> %1, <vscale x 4 x i1> %m, iXLen %vl) {96; CHECK-LABEL: test_intrinsic_sf_vfexpa_v_mask_nxv4f64:97; CHECK: # %bb.0: # %entry98; CHECK-NEXT: vsetvli zero, a0, e64, m4, tu, mu99; CHECK-NEXT: sf.vfexpa.v v8, v12, v0.t100; CHECK-NEXT: ret101entry:102 %f = call <vscale x 4 x double> @llvm.riscv.sf.vfexpa.mask.nxv4f64(103 <vscale x 4 x double> %0,104 <vscale x 4 x double> %1,105 <vscale x 4 x i1> %m,106 iXLen %vl,107 iXLen 0)108 ret <vscale x 4 x double> %f109}110 111define <vscale x 8 x double> @test_intrinsic_sf_vfexpa_v_mask_nxv8f64(<vscale x 8 x double> %0, <vscale x 8 x double> %1, <vscale x 8 x i1> %m, iXLen %vl) {112; CHECK-LABEL: test_intrinsic_sf_vfexpa_v_mask_nxv8f64:113; CHECK: # %bb.0: # %entry114; CHECK-NEXT: vsetvli zero, a0, e64, m8, tu, mu115; CHECK-NEXT: sf.vfexpa.v v8, v16, v0.t116; CHECK-NEXT: ret117entry:118 %f = call <vscale x 8 x double> @llvm.riscv.sf.vfexpa.mask.nxv8f64(119 <vscale x 8 x double> %0,120 <vscale x 8 x double> %1,121 <vscale x 8 x i1> %m,122 iXLen %vl,123 iXLen 0)124 ret <vscale x 8 x double> %f125}126