; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve < %s 2>%t | FileCheck %s ; RUN: FileCheck --check-prefix=WARN --allow-empty %s <%t ; If this check fails please read test/CodeGen/AArch64/README for instructions on how to resolve it. ; WARN-NOT: warning ; ; FABD ; define @fabd_h( %pg, %a, %b) { ; CHECK-LABEL: fabd_h: ; CHECK: fabd z0.h, p0/m, z0.h, z1.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fabd.nxv8f16( %pg, %a, %b) ret %out } define @fabd_s( %pg, %a, %b) { ; CHECK-LABEL: fabd_s: ; CHECK: fabd z0.s, p0/m, z0.s, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fabd.nxv4f32( %pg, %a, %b) ret %out } define @fabd_d( %pg, %a, %b) { ; CHECK-LABEL: fabd_d: ; CHECK: fabd z0.d, p0/m, z0.d, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fabd.nxv2f64( %pg, %a, %b) ret %out } ; ; FABS ; define @fabs_h( %a, %pg, %b) { ; CHECK-LABEL: fabs_h: ; CHECK: fabs z0.h, p0/m, z1.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fabs.nxv8f16( %a, %pg, %b) ret %out } define @fabs_s( %a, %pg, %b) { ; CHECK-LABEL: fabs_s: ; CHECK: fabs z0.s, p0/m, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fabs.nxv4f32( %a, %pg, %b) ret %out } define @fabs_d( %a, %pg, %b) { ; CHECK-LABEL: fabs_d: ; CHECK: fabs z0.d, p0/m, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fabs.nxv2f64( %a, %pg, %b) ret %out } ; ; FADD ; define @fadd_h( %pg, %a, %b) { ; CHECK-LABEL: fadd_h: ; CHECK: fadd z0.h, p0/m, z0.h, z1.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fadd.nxv8f16( %pg, %a, %b) ret %out } define @fadd_s( %pg, %a, %b) { ; CHECK-LABEL: fadd_s: ; CHECK: fadd z0.s, p0/m, z0.s, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fadd.nxv4f32( %pg, %a, %b) ret %out } define @fadd_d( %pg, %a, %b) { ; CHECK-LABEL: fadd_d: ; CHECK: fadd z0.d, p0/m, z0.d, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fadd.nxv2f64( %pg, %a, %b) ret %out } ; ; FCADD ; define @fcadd_h( %pg, %a, %b) { ; CHECK-LABEL: fcadd_h: ; CHECK: fcadd z0.h, p0/m, z0.h, z1.h, #90 ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fcadd.nxv8f16( %pg, %a, %b, i32 90) ret %out } define @fcadd_s( %pg, %a, %b) { ; CHECK-LABEL: fcadd_s: ; CHECK: fcadd z0.s, p0/m, z0.s, z1.s, #270 ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fcadd.nxv4f32( %pg, %a, %b, i32 270) ret %out } define @fcadd_d( %pg, %a, %b) { ; CHECK-LABEL: fcadd_d: ; CHECK: fcadd z0.d, p0/m, z0.d, z1.d, #90 ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fcadd.nxv2f64( %pg, %a, %b, i32 90) ret %out } ; ; FCMLA ; define @fcmla_h( %pg, %a, %b, %c) { ; CHECK-LABEL: fcmla_h: ; CHECK: fcmla z0.h, p0/m, z1.h, z2.h, #90 ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fcmla.nxv8f16( %pg, %a, %b, %c, i32 90) ret %out } define @fcmla_s( %pg, %a, %b, %c) { ; CHECK-LABEL: fcmla_s: ; CHECK: fcmla z0.s, p0/m, z1.s, z2.s, #180 ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fcmla.nxv4f32( %pg, %a, %b, %c, i32 180) ret %out } define @fcmla_d( %pg, %a, %b, %c) { ; CHECK-LABEL: fcmla_d: ; CHECK: fcmla z0.d, p0/m, z1.d, z2.d, #270 ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fcmla.nxv2f64( %pg, %a, %b, %c, i32 270) ret %out } ; ; FCMLA (Indexed) ; define @fcmla_lane_h( %a, %b, %c) { ; CHECK-LABEL: fcmla_lane_h: ; CHECK: fcmla z0.h, z1.h, z2.h[3], #0 ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fcmla.lane.nxv8f16( %a, %b, %c, i32 3, i32 0) ret %out } define @fcmla_lane_s( %a, %b, %c) { ; CHECK-LABEL: fcmla_lane_s: ; CHECK: fcmla z0.s, z1.s, z2.s[1], #90 ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fcmla.lane.nxv4f32( %a, %b, %c, i32 1, i32 90) ret %out } ; ; FDIV ; define @fdiv_h( %pg, %a, %b) { ; CHECK-LABEL: fdiv_h: ; CHECK: fdiv z0.h, p0/m, z0.h, z1.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fdiv.nxv8f16( %pg, %a, %b) ret %out } define @fdiv_s( %pg, %a, %b) { ; CHECK-LABEL: fdiv_s: ; CHECK: fdiv z0.s, p0/m, z0.s, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fdiv.nxv4f32( %pg, %a, %b) ret %out } define @fdiv_d( %pg, %a, %b) { ; CHECK-LABEL: fdiv_d: ; CHECK: fdiv z0.d, p0/m, z0.d, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fdiv.nxv2f64( %pg, %a, %b) ret %out } ; ; FDIVR ; define @fdivr_h( %pg, %a, %b) { ; CHECK-LABEL: fdivr_h: ; CHECK: fdivr z0.h, p0/m, z0.h, z1.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fdivr.nxv8f16( %pg, %a, %b) ret %out } define @fdivr_s( %pg, %a, %b) { ; CHECK-LABEL: fdivr_s: ; CHECK: fdivr z0.s, p0/m, z0.s, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fdivr.nxv4f32( %pg, %a, %b) ret %out } define @fdivr_d( %pg, %a, %b) { ; CHECK-LABEL: fdivr_d: ; CHECK: fdivr z0.d, p0/m, z0.d, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fdivr.nxv2f64( %pg, %a, %b) ret %out } ; ; FEXPA ; define @fexpa_h( %a) { ; CHECK-LABEL: fexpa_h: ; CHECK: fexpa z0.h, z0.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fexpa.x.nxv8f16( %a) ret %out } define @fexpa_s( %a) { ; CHECK-LABEL: fexpa_s: ; CHECK: fexpa z0.s, z0.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fexpa.x.nxv4f32( %a) ret %out } define @fexpa_d( %pg, %a) { ; CHECK-LABEL: fexpa_d: ; CHECK: fexpa z0.d, z0.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fexpa.x.nxv2f64( %a) ret %out } ; ; FMAD ; define @fmad_h( %pg, %a, %b, %c) { ; CHECK-LABEL: fmad_h: ; CHECK: fmad z0.h, p0/m, z1.h, z2.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fmad.nxv8f16( %pg, %a, %b, %c) ret %out } define @fmad_s( %pg, %a, %b, %c) { ; CHECK-LABEL: fmad_s: ; CHECK: fmad z0.s, p0/m, z1.s, z2.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fmad.nxv4f32( %pg, %a, %b, %c) ret %out } define @fmad_d( %pg, %a, %b, %c) { ; CHECK-LABEL: fmad_d: ; CHECK: fmad z0.d, p0/m, z1.d, z2.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fmad.nxv2f64( %pg, %a, %b, %c) ret %out } ; ; FMAX ; define @fmax_h( %pg, %a, %b) { ; CHECK-LABEL: fmax_h: ; CHECK: fmax z0.h, p0/m, z0.h, z1.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fmax.nxv8f16( %pg, %a, %b) ret %out } define @fmax_s( %pg, %a, %b) { ; CHECK-LABEL: fmax_s: ; CHECK: fmax z0.s, p0/m, z0.s, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fmax.nxv4f32( %pg, %a, %b) ret %out } define @fmax_d( %pg, %a, %b) { ; CHECK-LABEL: fmax_d: ; CHECK: fmax z0.d, p0/m, z0.d, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fmax.nxv2f64( %pg, %a, %b) ret %out } ; ; FMAXNM ; define @fmaxnm_h( %pg, %a, %b) { ; CHECK-LABEL: fmaxnm_h: ; CHECK: fmaxnm z0.h, p0/m, z0.h, z1.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fmaxnm.nxv8f16( %pg, %a, %b) ret %out } define @fmaxnm_s( %pg, %a, %b) { ; CHECK-LABEL: fmaxnm_s: ; CHECK: fmaxnm z0.s, p0/m, z0.s, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fmaxnm.nxv4f32( %pg, %a, %b) ret %out } define @fmaxnm_d( %pg, %a, %b) { ; CHECK-LABEL: fmaxnm_d: ; CHECK: fmaxnm z0.d, p0/m, z0.d, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fmaxnm.nxv2f64( %pg, %a, %b) ret %out } ; ; FMIN ; define @fmin_h( %pg, %a, %b) { ; CHECK-LABEL: fmin_h: ; CHECK: fmin z0.h, p0/m, z0.h, z1.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fmin.nxv8f16( %pg, %a, %b) ret %out } define @fmin_s( %pg, %a, %b) { ; CHECK-LABEL: fmin_s: ; CHECK: fmin z0.s, p0/m, z0.s, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fmin.nxv4f32( %pg, %a, %b) ret %out } define @fmin_d( %pg, %a, %b) { ; CHECK-LABEL: fmin_d: ; CHECK: fmin z0.d, p0/m, z0.d, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fmin.nxv2f64( %pg, %a, %b) ret %out } ; ; FMINNM ; define @fminnm_h( %pg, %a, %b) { ; CHECK-LABEL: fminnm_h: ; CHECK: fminnm z0.h, p0/m, z0.h, z1.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fminnm.nxv8f16( %pg, %a, %b) ret %out } define @fminnm_s( %pg, %a, %b) { ; CHECK-LABEL: fminnm_s: ; CHECK: fminnm z0.s, p0/m, z0.s, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fminnm.nxv4f32( %pg, %a, %b) ret %out } define @fminnm_d( %pg, %a, %b) { ; CHECK-LABEL: fminnm_d: ; CHECK: fminnm z0.d, p0/m, z0.d, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fminnm.nxv2f64( %pg, %a, %b) ret %out } ; ; FMLA ; define @fmla_h( %pg, %a, %b, %c) { ; CHECK-LABEL: fmla_h: ; CHECK: fmla z0.h, p0/m, z1.h, z2.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fmla.nxv8f16( %pg, %a, %b, %c) ret %out } define @fmla_s( %pg, %a, %b, %c) { ; CHECK-LABEL: fmla_s: ; CHECK: fmla z0.s, p0/m, z1.s, z2.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fmla.nxv4f32( %pg, %a, %b, %c) ret %out } define @fmla_d( %pg, %a, %b, %c) { ; CHECK-LABEL: fmla_d: ; CHECK: fmla z0.d, p0/m, z1.d, z2.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fmla.nxv2f64( %pg, %a, %b, %c) ret %out } ; ; FMLA (Indexed) ; define @fmla_lane_h( %a, %b, %c) { ; CHECK-LABEL: fmla_lane_h: ; CHECK: fmla z0.h, z1.h, z2.h[3] ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fmla.lane.nxv8f16( %a, %b, %c, i32 3) ret %out } define @fmla_lane_s( %a, %b, %c) { ; CHECK-LABEL: fmla_lane_s: ; CHECK: fmla z0.s, z1.s, z2.s[2] ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fmla.lane.nxv4f32( %a, %b, %c, i32 2) ret %out } define @fmla_lane_d( %a, %b, %c) { ; CHECK-LABEL: fmla_lane_d: ; CHECK: fmla z0.d, z1.d, z2.d[1] ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fmla.lane.nxv2f64( %a, %b, %c, i32 1) ret %out } ; ; FMLS ; define @fmls_h( %pg, %a, %b, %c) { ; CHECK-LABEL: fmls_h: ; CHECK: fmls z0.h, p0/m, z1.h, z2.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fmls.nxv8f16( %pg, %a, %b, %c) ret %out } define @fmls_s( %pg, %a, %b, %c) { ; CHECK-LABEL: fmls_s: ; CHECK: fmls z0.s, p0/m, z1.s, z2.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fmls.nxv4f32( %pg, %a, %b, %c) ret %out } define @fmls_d( %pg, %a, %b, %c) { ; CHECK-LABEL: fmls_d: ; CHECK: fmls z0.d, p0/m, z1.d, z2.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fmls.nxv2f64( %pg, %a, %b, %c) ret %out } ; ; FMLS (Indexed) ; define @fmls_lane_h( %a, %b, %c) { ; CHECK-LABEL: fmls_lane_h: ; CHECK: fmls z0.h, z1.h, z2.h[3] ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fmls.lane.nxv8f16( %a, %b, %c, i32 3) ret %out } define @fmls_lane_s( %a, %b, %c) { ; CHECK-LABEL: fmls_lane_s: ; CHECK: fmls z0.s, z1.s, z2.s[2] ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fmls.lane.nxv4f32( %a, %b, %c, i32 2) ret %out } define @fmls_lane_d( %a, %b, %c) { ; CHECK-LABEL: fmls_lane_d: ; CHECK: fmls z0.d, z1.d, z2.d[1] ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fmls.lane.nxv2f64( %a, %b, %c, i32 1) ret %out } ; ; FMSB ; define @fmsb_h( %pg, %a, %b, %c) { ; CHECK-LABEL: fmsb_h: ; CHECK: fmsb z0.h, p0/m, z1.h, z2.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fmsb.nxv8f16( %pg, %a, %b, %c) ret %out } define @fmsb_s( %pg, %a, %b, %c) { ; CHECK-LABEL: fmsb_s: ; CHECK: fmsb z0.s, p0/m, z1.s, z2.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fmsb.nxv4f32( %pg, %a, %b, %c) ret %out } define @fmsb_d( %pg, %a, %b, %c) { ; CHECK-LABEL: fmsb_d: ; CHECK: fmsb z0.d, p0/m, z1.d, z2.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fmsb.nxv2f64( %pg, %a, %b, %c) ret %out } ; ; FMUL ; define @fmul_h( %pg, %a, %b) { ; CHECK-LABEL: fmul_h: ; CHECK: fmul z0.h, p0/m, z0.h, z1.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fmul.nxv8f16( %pg, %a, %b) ret %out } define @fmul_s( %pg, %a, %b) { ; CHECK-LABEL: fmul_s: ; CHECK: fmul z0.s, p0/m, z0.s, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fmul.nxv4f32( %pg, %a, %b) ret %out } define @fmul_d( %pg, %a, %b) { ; CHECK-LABEL: fmul_d: ; CHECK: fmul z0.d, p0/m, z0.d, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fmul.nxv2f64( %pg, %a, %b) ret %out } ; ; FMUL (Indexed) ; define @fmul_lane_h( %a, %b) { ; CHECK-LABEL: fmul_lane_h: ; CHECK: fmul z0.h, z0.h, z1.h[3] ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fmul.lane.nxv8f16( %a, %b, i32 3) ret %out } define @fmul_lane_s( %a, %b) { ; CHECK-LABEL: fmul_lane_s: ; CHECK: fmul z0.s, z0.s, z1.s[2] ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fmul.lane.nxv4f32( %a, %b, i32 2) ret %out } define @fmul_lane_d( %a, %b) { ; CHECK-LABEL: fmul_lane_d: ; CHECK: fmul z0.d, z0.d, z1.d[1] ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fmul.lane.nxv2f64( %a, %b, i32 1) ret %out } ; ; FMULX ; define @fmulx_h( %pg, %a, %b) { ; CHECK-LABEL: fmulx_h: ; CHECK: fmulx z0.h, p0/m, z0.h, z1.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fmulx.nxv8f16( %pg, %a, %b) ret %out } define @fmulx_s( %pg, %a, %b) { ; CHECK-LABEL: fmulx_s: ; CHECK: fmulx z0.s, p0/m, z0.s, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fmulx.nxv4f32( %pg, %a, %b) ret %out } define @fmulx_d( %pg, %a, %b) { ; CHECK-LABEL: fmulx_d: ; CHECK: fmulx z0.d, p0/m, z0.d, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fmulx.nxv2f64( %pg, %a, %b) ret %out } ; ; FNEG ; define @fneg_h( %a, %pg, %b) { ; CHECK-LABEL: fneg_h: ; CHECK: fneg z0.h, p0/m, z1.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fneg.nxv8f16( %a, %pg, %b) ret %out } define @fneg_s( %a, %pg, %b) { ; CHECK-LABEL: fneg_s: ; CHECK: fneg z0.s, p0/m, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fneg.nxv4f32( %a, %pg, %b) ret %out } define @fneg_d( %a, %pg, %b) { ; CHECK-LABEL: fneg_d: ; CHECK: fneg z0.d, p0/m, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fneg.nxv2f64( %a, %pg, %b) ret %out } ; ; FNMAD ; define @fnmad_h( %pg, %a, %b, %c) { ; CHECK-LABEL: fnmad_h: ; CHECK: fnmad z0.h, p0/m, z1.h, z2.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fnmad.nxv8f16( %pg, %a, %b, %c) ret %out } define @fnmad_s( %pg, %a, %b, %c) { ; CHECK-LABEL: fnmad_s: ; CHECK: fnmad z0.s, p0/m, z1.s, z2.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fnmad.nxv4f32( %pg, %a, %b, %c) ret %out } define @fnmad_d( %pg, %a, %b, %c) { ; CHECK-LABEL: fnmad_d: ; CHECK: fnmad z0.d, p0/m, z1.d, z2.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fnmad.nxv2f64( %pg, %a, %b, %c) ret %out } ; ; FNMLA ; define @fnmla_h( %pg, %a, %b, %c) { ; CHECK-LABEL: fnmla_h: ; CHECK: fnmla z0.h, p0/m, z1.h, z2.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fnmla.nxv8f16( %pg, %a, %b, %c) ret %out } define @fnmla_s( %pg, %a, %b, %c) { ; CHECK-LABEL: fnmla_s: ; CHECK: fnmla z0.s, p0/m, z1.s, z2.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fnmla.nxv4f32( %pg, %a, %b, %c) ret %out } define @fnmla_d( %pg, %a, %b, %c) { ; CHECK-LABEL: fnmla_d: ; CHECK: fnmla z0.d, p0/m, z1.d, z2.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fnmla.nxv2f64( %pg, %a, %b, %c) ret %out } ; ; FNMLS ; define @fnmls_h( %pg, %a, %b, %c) { ; CHECK-LABEL: fnmls_h: ; CHECK: fnmls z0.h, p0/m, z1.h, z2.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fnmls.nxv8f16( %pg, %a, %b, %c) ret %out } define @fnmls_s( %pg, %a, %b, %c) { ; CHECK-LABEL: fnmls_s: ; CHECK: fnmls z0.s, p0/m, z1.s, z2.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fnmls.nxv4f32( %pg, %a, %b, %c) ret %out } define @fnmls_d( %pg, %a, %b, %c) { ; CHECK-LABEL: fnmls_d: ; CHECK: fnmls z0.d, p0/m, z1.d, z2.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fnmls.nxv2f64( %pg, %a, %b, %c) ret %out } ; ; FNMSB ; define @fnmsb_h( %pg, %a, %b, %c) { ; CHECK-LABEL: fnmsb_h: ; CHECK: fnmsb z0.h, p0/m, z1.h, z2.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fnmsb.nxv8f16( %pg, %a, %b, %c) ret %out } define @fnmsb_s( %pg, %a, %b, %c) { ; CHECK-LABEL: fnmsb_s: ; CHECK: fnmsb z0.s, p0/m, z1.s, z2.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fnmsb.nxv4f32( %pg, %a, %b, %c) ret %out } define @fnmsb_d( %pg, %a, %b, %c) { ; CHECK-LABEL: fnmsb_d: ; CHECK: fnmsb z0.d, p0/m, z1.d, z2.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fnmsb.nxv2f64( %pg, %a, %b, %c) ret %out } ; ; FRECPE ; define @frecpe_h( %a) { ; CHECK-LABEL: frecpe_h: ; CHECK: frecpe z0.h, z0.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frecpe.x.nxv8f16( %a) ret %out } define @frecpe_s( %a) { ; CHECK-LABEL: frecpe_s: ; CHECK: frecpe z0.s, z0.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frecpe.x.nxv4f32( %a) ret %out } define @frecpe_d( %pg, %a) { ; CHECK-LABEL: frecpe_d: ; CHECK: frecpe z0.d, z0.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frecpe.x.nxv2f64( %a) ret %out } ; ; FRECPX ; define @frecpx_h( %a, %pg, %b) { ; CHECK-LABEL: frecpx_h: ; CHECK: frecpx z0.h, p0/m, z1.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frecpx.nxv8f16( %a, %pg, %b) ret %out } define @frecpx_s( %a, %pg, %b) { ; CHECK-LABEL: frecpx_s: ; CHECK: frecpx z0.s, p0/m, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frecpx.nxv4f32( %a, %pg, %b) ret %out } define @frecpx_d( %a, %pg, %b) { ; CHECK-LABEL: frecpx_d: ; CHECK: frecpx z0.d, p0/m, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frecpx.nxv2f64( %a, %pg, %b) ret %out } ; ; FRINTA ; define @frinta_h( %a, %pg, %b) { ; CHECK-LABEL: frinta_h: ; CHECK: frinta z0.h, p0/m, z1.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frinta.nxv8f16( %a, %pg, %b) ret %out } define @frinta_s( %a, %pg, %b) { ; CHECK-LABEL: frinta_s: ; CHECK: frinta z0.s, p0/m, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frinta.nxv4f32( %a, %pg, %b) ret %out } define @frinta_d( %a, %pg, %b) { ; CHECK-LABEL: frinta_d: ; CHECK: frinta z0.d, p0/m, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frinta.nxv2f64( %a, %pg, %b) ret %out } ; ; FRINTI ; define @frinti_h( %a, %pg, %b) { ; CHECK-LABEL: frinti_h: ; CHECK: frinti z0.h, p0/m, z1.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frinti.nxv8f16( %a, %pg, %b) ret %out } define @frinti_s( %a, %pg, %b) { ; CHECK-LABEL: frinti_s: ; CHECK: frinti z0.s, p0/m, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frinti.nxv4f32( %a, %pg, %b) ret %out } define @frinti_d( %a, %pg, %b) { ; CHECK-LABEL: frinti_d: ; CHECK: frinti z0.d, p0/m, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frinti.nxv2f64( %a, %pg, %b) ret %out } ; ; FRINTM ; define @frintm_h( %a, %pg, %b) { ; CHECK-LABEL: frintm_h: ; CHECK: frintm z0.h, p0/m, z1.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frintm.nxv8f16( %a, %pg, %b) ret %out } define @frintm_s( %a, %pg, %b) { ; CHECK-LABEL: frintm_s: ; CHECK: frintm z0.s, p0/m, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frintm.nxv4f32( %a, %pg, %b) ret %out } define @frintm_d( %a, %pg, %b) { ; CHECK-LABEL: frintm_d: ; CHECK: frintm z0.d, p0/m, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frintm.nxv2f64( %a, %pg, %b) ret %out } ; ; FRINTN ; define @frintn_h( %a, %pg, %b) { ; CHECK-LABEL: frintn_h: ; CHECK: frintn z0.h, p0/m, z1.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frintn.nxv8f16( %a, %pg, %b) ret %out } define @frintn_s( %a, %pg, %b) { ; CHECK-LABEL: frintn_s: ; CHECK: frintn z0.s, p0/m, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frintn.nxv4f32( %a, %pg, %b) ret %out } define @frintn_d( %a, %pg, %b) { ; CHECK-LABEL: frintn_d: ; CHECK: frintn z0.d, p0/m, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frintn.nxv2f64( %a, %pg, %b) ret %out } ; ; FRINTP ; define @frintp_h( %a, %pg, %b) { ; CHECK-LABEL: frintp_h: ; CHECK: frintp z0.h, p0/m, z1.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frintp.nxv8f16( %a, %pg, %b) ret %out } define @frintp_s( %a, %pg, %b) { ; CHECK-LABEL: frintp_s: ; CHECK: frintp z0.s, p0/m, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frintp.nxv4f32( %a, %pg, %b) ret %out } define @frintp_d( %a, %pg, %b) { ; CHECK-LABEL: frintp_d: ; CHECK: frintp z0.d, p0/m, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frintp.nxv2f64( %a, %pg, %b) ret %out } ; ; FRINTX ; define @frintx_h( %a, %pg, %b) { ; CHECK-LABEL: frintx_h: ; CHECK: frintx z0.h, p0/m, z1.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frintx.nxv8f16( %a, %pg, %b) ret %out } define @frintx_s( %a, %pg, %b) { ; CHECK-LABEL: frintx_s: ; CHECK: frintx z0.s, p0/m, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frintx.nxv4f32( %a, %pg, %b) ret %out } define @frintx_d( %a, %pg, %b) { ; CHECK-LABEL: frintx_d: ; CHECK: frintx z0.d, p0/m, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frintx.nxv2f64( %a, %pg, %b) ret %out } ; ; FRINTZ ; define @frintz_h( %a, %pg, %b) { ; CHECK-LABEL: frintz_h: ; CHECK: frintz z0.h, p0/m, z1.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frintz.nxv8f16( %a, %pg, %b) ret %out } define @frintz_s( %a, %pg, %b) { ; CHECK-LABEL: frintz_s: ; CHECK: frintz z0.s, p0/m, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frintz.nxv4f32( %a, %pg, %b) ret %out } define @frintz_d( %a, %pg, %b) { ; CHECK-LABEL: frintz_d: ; CHECK: frintz z0.d, p0/m, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frintz.nxv2f64( %a, %pg, %b) ret %out } ; ; FRSQRTE ; define @frsqrte_h( %a) { ; CHECK-LABEL: frsqrte_h: ; CHECK: frsqrte z0.h, z0.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frsqrte.x.nxv8f16( %a) ret %out } define @frsqrte_s( %a) { ; CHECK-LABEL: frsqrte_s: ; CHECK: frsqrte z0.s, z0.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frsqrte.x.nxv4f32( %a) ret %out } define @frsqrte_d( %pg, %a) { ; CHECK-LABEL: frsqrte_d: ; CHECK: frsqrte z0.d, z0.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frsqrte.x.nxv2f64( %a) ret %out } ; ; FSCALE ; define @fscale_h( %pg, %a, %b) { ; CHECK-LABEL: fscale_h: ; CHECK: fscale z0.h, p0/m, z0.h, z1.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fscale.nxv8f16( %pg, %a, %b) ret %out } define @fscale_s( %pg, %a, %b) { ; CHECK-LABEL: fscale_s: ; CHECK: fscale z0.s, p0/m, z0.s, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fscale.nxv4f32( %pg, %a, %b) ret %out } define @fscale_d( %pg, %a, %b) { ; CHECK-LABEL: fscale_d: ; CHECK: fscale z0.d, p0/m, z0.d, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fscale.nxv2f64( %pg, %a, %b) ret %out } ; ; FSQRT ; define @fsqrt_h( %a, %pg, %b) { ; CHECK-LABEL: fsqrt_h: ; CHECK: fsqrt z0.h, p0/m, z1.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fsqrt.nxv8f16( %a, %pg, %b) ret %out } define @fsqrt_s( %a, %pg, %b) { ; CHECK-LABEL: fsqrt_s: ; CHECK: fsqrt z0.s, p0/m, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fsqrt.nxv4f32( %a, %pg, %b) ret %out } define @fsqrt_d( %a, %pg, %b) { ; CHECK-LABEL: fsqrt_d: ; CHECK: fsqrt z0.d, p0/m, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fsqrt.nxv2f64( %a, %pg, %b) ret %out } ; ; FSUB ; define @fsub_h( %pg, %a, %b) { ; CHECK-LABEL: fsub_h: ; CHECK: fsub z0.h, p0/m, z0.h, z1.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fsub.nxv8f16( %pg, %a, %b) ret %out } define @fsub_s( %pg, %a, %b) { ; CHECK-LABEL: fsub_s: ; CHECK: fsub z0.s, p0/m, z0.s, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fsub.nxv4f32( %pg, %a, %b) ret %out } define @fsub_d( %pg, %a, %b) { ; CHECK-LABEL: fsub_d: ; CHECK: fsub z0.d, p0/m, z0.d, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fsub.nxv2f64( %pg, %a, %b) ret %out } ; ; FSUBR ; define @fsubr_h( %pg, %a, %b) { ; CHECK-LABEL: fsubr_h: ; CHECK: fsubr z0.h, p0/m, z0.h, z1.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fsubr.nxv8f16( %pg, %a, %b) ret %out } define @fsubr_s( %pg, %a, %b) { ; CHECK-LABEL: fsubr_s: ; CHECK: fsubr z0.s, p0/m, z0.s, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fsubr.nxv4f32( %pg, %a, %b) ret %out } define @fsubr_d( %pg, %a, %b) { ; CHECK-LABEL: fsubr_d: ; CHECK: fsubr z0.d, p0/m, z0.d, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fsubr.nxv2f64( %pg, %a, %b) ret %out } ; ; FTMAD ; define @ftmad_h( %a, %b) { ; CHECK-LABEL: ftmad_h: ; CHECK: ftmad z0.h, z0.h, z1.h, #0 ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.ftmad.x.nxv8f16( %a, %b, i32 0) ret %out } define @ftmad_s( %a, %b) { ; CHECK-LABEL: ftmad_s: ; CHECK: ftmad z0.s, z0.s, z1.s, #0 ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.ftmad.x.nxv4f32( %a, %b, i32 0) ret %out } define @ftmad_d( %a, %b) { ; CHECK-LABEL: ftmad_d: ; CHECK: ftmad z0.d, z0.d, z1.d, #7 ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.ftmad.x.nxv2f64( %a, %b, i32 7) ret %out } ; ; FTSMUL ; define @ftsmul_h( %a, %b) { ; CHECK-LABEL: ftsmul_h: ; CHECK: ftsmul z0.h, z0.h, z1.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.ftsmul.x.nxv8f16( %a, %b) ret %out } define @ftsmul_s( %a, %b) { ; CHECK-LABEL: ftsmul_s: ; CHECK: ftsmul z0.s, z0.s, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.ftsmul.x.nxv4f32( %a, %b) ret %out } define @ftsmul_d( %a, %b) { ; CHECK-LABEL: ftsmul_d: ; CHECK: ftsmul z0.d, z0.d, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.ftsmul.x.nxv2f64( %a, %b) ret %out } ; ; FTSSEL ; define @ftssel_h( %a, %b) { ; CHECK-LABEL: ftssel_h: ; CHECK: ftssel z0.h, z0.h, z1.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.ftssel.x.nxv8f16( %a, %b) ret %out } define @ftssel_s( %a, %b) { ; CHECK-LABEL: ftssel_s: ; CHECK: ftssel z0.s, z0.s, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.ftssel.x.nxv4f32( %a, %b) ret %out } define @ftssel_d( %a, %b) { ; CHECK-LABEL: ftssel_d: ; CHECK: ftssel z0.d, z0.d, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.ftssel.x.nxv2f64( %a, %b) ret %out } declare @llvm.aarch64.sve.fabd.nxv8f16(, , ) declare @llvm.aarch64.sve.fabd.nxv4f32(, , ) declare @llvm.aarch64.sve.fabd.nxv2f64(, , ) declare @llvm.aarch64.sve.fabs.nxv8f16(, , ) declare @llvm.aarch64.sve.fabs.nxv4f32(, , ) declare @llvm.aarch64.sve.fabs.nxv2f64(, , ) declare @llvm.aarch64.sve.fadd.nxv8f16(, , ) declare @llvm.aarch64.sve.fadd.nxv4f32(, , ) declare @llvm.aarch64.sve.fadd.nxv2f64(, , ) declare @llvm.aarch64.sve.fcadd.nxv8f16(, , , i32) declare @llvm.aarch64.sve.fcadd.nxv4f32(, , , i32) declare @llvm.aarch64.sve.fcadd.nxv2f64(, , , i32) declare @llvm.aarch64.sve.fcmla.nxv8f16(, , , , i32) declare @llvm.aarch64.sve.fcmla.nxv4f32(, , , , i32) declare @llvm.aarch64.sve.fcmla.nxv2f64(, , , , i32) declare @llvm.aarch64.sve.fcmla.lane.nxv8f16(, , , i32, i32) declare @llvm.aarch64.sve.fcmla.lane.nxv4f32(, , , i32, i32) declare @llvm.aarch64.sve.fdiv.nxv8f16(, , ) declare @llvm.aarch64.sve.fdiv.nxv4f32(, , ) declare @llvm.aarch64.sve.fdiv.nxv2f64(, , ) declare @llvm.aarch64.sve.fdivr.nxv8f16(, , ) declare @llvm.aarch64.sve.fdivr.nxv4f32(, , ) declare @llvm.aarch64.sve.fdivr.nxv2f64(, , ) declare @llvm.aarch64.sve.fexpa.x.nxv8f16() declare @llvm.aarch64.sve.fexpa.x.nxv4f32() declare @llvm.aarch64.sve.fexpa.x.nxv2f64() declare @llvm.aarch64.sve.fmad.nxv8f16(, , , ) declare @llvm.aarch64.sve.fmad.nxv4f32(, , , ) declare @llvm.aarch64.sve.fmad.nxv2f64(, , , ) declare @llvm.aarch64.sve.fmax.nxv8f16(, , ) declare @llvm.aarch64.sve.fmax.nxv4f32(, , ) declare @llvm.aarch64.sve.fmax.nxv2f64(, , ) declare @llvm.aarch64.sve.fmaxnm.nxv8f16(, , ) declare @llvm.aarch64.sve.fmaxnm.nxv4f32(, , ) declare @llvm.aarch64.sve.fmaxnm.nxv2f64(, , ) declare @llvm.aarch64.sve.fmin.nxv8f16(, , ) declare @llvm.aarch64.sve.fmin.nxv4f32(, , ) declare @llvm.aarch64.sve.fmin.nxv2f64(, , ) declare @llvm.aarch64.sve.fminnm.nxv8f16(, , ) declare @llvm.aarch64.sve.fminnm.nxv4f32(, , ) declare @llvm.aarch64.sve.fminnm.nxv2f64(, , ) declare @llvm.aarch64.sve.fmla.nxv8f16(, , , ) declare @llvm.aarch64.sve.fmla.nxv4f32(, , , ) declare @llvm.aarch64.sve.fmla.nxv2f64(, , , ) declare @llvm.aarch64.sve.fmla.lane.nxv8f16(, , , i32) declare @llvm.aarch64.sve.fmla.lane.nxv4f32(, , , i32) declare @llvm.aarch64.sve.fmla.lane.nxv2f64(, , , i32) declare @llvm.aarch64.sve.fmls.nxv8f16(, , , ) declare @llvm.aarch64.sve.fmls.nxv4f32(, , , ) declare @llvm.aarch64.sve.fmls.nxv2f64(, , , ) declare @llvm.aarch64.sve.fmls.lane.nxv8f16(, , , i32) declare @llvm.aarch64.sve.fmls.lane.nxv4f32(, , , i32) declare @llvm.aarch64.sve.fmls.lane.nxv2f64(, , , i32) declare @llvm.aarch64.sve.fmsb.nxv8f16(, , , ) declare @llvm.aarch64.sve.fmsb.nxv4f32(, , , ) declare @llvm.aarch64.sve.fmsb.nxv2f64(, , , ) declare @llvm.aarch64.sve.fmul.nxv8f16(, , ) declare @llvm.aarch64.sve.fmul.nxv4f32(, , ) declare @llvm.aarch64.sve.fmul.nxv2f64(, , ) declare @llvm.aarch64.sve.fmul.lane.nxv8f16(, , i32) declare @llvm.aarch64.sve.fmul.lane.nxv4f32(, , i32) declare @llvm.aarch64.sve.fmul.lane.nxv2f64(, , i32) declare @llvm.aarch64.sve.fmulx.nxv8f16(, , ) declare @llvm.aarch64.sve.fmulx.nxv4f32(, , ) declare @llvm.aarch64.sve.fmulx.nxv2f64(, , ) declare @llvm.aarch64.sve.fneg.nxv8f16(, , ) declare @llvm.aarch64.sve.fneg.nxv4f32(, , ) declare @llvm.aarch64.sve.fneg.nxv2f64(, , ) declare @llvm.aarch64.sve.fnmad.nxv8f16(, , , ) declare @llvm.aarch64.sve.fnmad.nxv4f32(, , , ) declare @llvm.aarch64.sve.fnmad.nxv2f64(, , , ) declare @llvm.aarch64.sve.fnmla.nxv8f16(, , , ) declare @llvm.aarch64.sve.fnmla.nxv4f32(, , , ) declare @llvm.aarch64.sve.fnmla.nxv2f64(, , , ) declare @llvm.aarch64.sve.fnmls.nxv8f16(, , , ) declare @llvm.aarch64.sve.fnmls.nxv4f32(, , , ) declare @llvm.aarch64.sve.fnmls.nxv2f64(, , , ) declare @llvm.aarch64.sve.fnmsb.nxv8f16(, , , ) declare @llvm.aarch64.sve.fnmsb.nxv4f32(, , , ) declare @llvm.aarch64.sve.fnmsb.nxv2f64(, , , ) declare @llvm.aarch64.sve.frecpe.x.nxv8f16() declare @llvm.aarch64.sve.frecpe.x.nxv4f32() declare @llvm.aarch64.sve.frecpe.x.nxv2f64() declare @llvm.aarch64.sve.frecpx.nxv8f16(, , ) declare @llvm.aarch64.sve.frecpx.nxv4f32(, , ) declare @llvm.aarch64.sve.frecpx.nxv2f64(, , ) declare @llvm.aarch64.sve.frinta.nxv8f16(, , ) declare @llvm.aarch64.sve.frinta.nxv4f32(, , ) declare @llvm.aarch64.sve.frinta.nxv2f64(, , ) declare @llvm.aarch64.sve.frinti.nxv8f16(, , ) declare @llvm.aarch64.sve.frinti.nxv4f32(, , ) declare @llvm.aarch64.sve.frinti.nxv2f64(, , ) declare @llvm.aarch64.sve.frintm.nxv8f16(, , ) declare @llvm.aarch64.sve.frintm.nxv4f32(, , ) declare @llvm.aarch64.sve.frintm.nxv2f64(, , ) declare @llvm.aarch64.sve.frintn.nxv8f16(, , ) declare @llvm.aarch64.sve.frintn.nxv4f32(, , ) declare @llvm.aarch64.sve.frintn.nxv2f64(, , ) declare @llvm.aarch64.sve.frintp.nxv8f16(, , ) declare @llvm.aarch64.sve.frintp.nxv4f32(, , ) declare @llvm.aarch64.sve.frintp.nxv2f64(, , ) declare @llvm.aarch64.sve.frintx.nxv8f16(, , ) declare @llvm.aarch64.sve.frintx.nxv4f32(, , ) declare @llvm.aarch64.sve.frintx.nxv2f64(, , ) declare @llvm.aarch64.sve.frintz.nxv8f16(, , ) declare @llvm.aarch64.sve.frintz.nxv4f32(, , ) declare @llvm.aarch64.sve.frintz.nxv2f64(, , ) declare @llvm.aarch64.sve.frsqrte.x.nxv8f16() declare @llvm.aarch64.sve.frsqrte.x.nxv4f32() declare @llvm.aarch64.sve.frsqrte.x.nxv2f64() declare @llvm.aarch64.sve.fscale.nxv8f16(, , ) declare @llvm.aarch64.sve.fscale.nxv4f32(, , ) declare @llvm.aarch64.sve.fscale.nxv2f64(, , ) declare @llvm.aarch64.sve.fsqrt.nxv8f16(, , ) declare @llvm.aarch64.sve.fsqrt.nxv4f32(, , ) declare @llvm.aarch64.sve.fsqrt.nxv2f64(, , ) declare @llvm.aarch64.sve.fsub.nxv8f16(, , ) declare @llvm.aarch64.sve.fsub.nxv4f32(, , ) declare @llvm.aarch64.sve.fsub.nxv2f64(, , ) declare @llvm.aarch64.sve.fsubr.nxv8f16(, , ) declare @llvm.aarch64.sve.fsubr.nxv4f32(, , ) declare @llvm.aarch64.sve.fsubr.nxv2f64(, , ) declare @llvm.aarch64.sve.ftmad.x.nxv8f16(, , i32) declare @llvm.aarch64.sve.ftmad.x.nxv4f32(, , i32) declare @llvm.aarch64.sve.ftmad.x.nxv2f64(, , i32) declare @llvm.aarch64.sve.ftsmul.x.nxv8f16(, ) declare @llvm.aarch64.sve.ftsmul.x.nxv4f32(, ) declare @llvm.aarch64.sve.ftsmul.x.nxv2f64(, ) declare @llvm.aarch64.sve.ftssel.x.nxv8f16(, ) declare @llvm.aarch64.sve.ftssel.x.nxv4f32(, ) declare @llvm.aarch64.sve.ftssel.x.nxv2f64(, )