; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve < %s | FileCheck %s define @fadd_h( %a, %b) { ; CHECK-LABEL: fadd_h: ; CHECK: fadd z0.h, z0.h, z1.h ; CHECK-NEXT: ret %res = fadd %a, %b ret %res } define @fadd_s( %a, %b) { ; CHECK-LABEL: fadd_s: ; CHECK: fadd z0.s, z0.s, z1.s ; CHECK-NEXT: ret %res = fadd %a, %b ret %res } define @fadd_d( %a, %b) { ; CHECK-LABEL: fadd_d: ; CHECK: fadd z0.d, z0.d, z1.d ; CHECK-NEXT: ret %res = fadd %a, %b ret %res } define @fsub_h( %a, %b) { ; CHECK-LABEL: fsub_h: ; CHECK: fsub z0.h, z0.h, z1.h ; CHECK-NEXT: ret %res = fsub %a, %b ret %res } define @fsub_s( %a, %b) { ; CHECK-LABEL: fsub_s: ; CHECK: fsub z0.s, z0.s, z1.s ; CHECK-NEXT: ret %res = fsub %a, %b ret %res } define @fsub_d( %a, %b) { ; CHECK-LABEL: fsub_d: ; CHECK: fsub z0.d, z0.d, z1.d ; CHECK-NEXT: ret %res = fsub %a, %b ret %res } define @fmul_h( %a, %b) { ; CHECK-LABEL: fmul_h: ; CHECK: fmul z0.h, z0.h, z1.h ; CHECK-NEXT: ret %res = fmul %a, %b ret %res } define @fmul_s( %a, %b) { ; CHECK-LABEL: fmul_s: ; CHECK: fmul z0.s, z0.s, z1.s ; CHECK-NEXT: ret %res = fmul %a, %b ret %res } define @fmul_d( %a, %b) { ; CHECK-LABEL: fmul_d: ; CHECK: fmul z0.d, z0.d, z1.d ; CHECK-NEXT: ret %res = fmul %a, %b ret %res } define @frecps_h( %a, %b) { ; CHECK-LABEL: frecps_h: ; CHECK: frecps z0.h, z0.h, z1.h ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.frecps.x.nxv8f16( %a, %b) ret %res } define @frecps_s( %a, %b) { ; CHECK-LABEL: frecps_s: ; CHECK: frecps z0.s, z0.s, z1.s ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.frecps.x.nxv4f32( %a, %b) ret %res } define @frecps_d( %a, %b) { ; CHECK-LABEL: frecps_d: ; CHECK: frecps z0.d, z0.d, z1.d ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.frecps.x.nxv2f64( %a, %b) ret %res } define @frsqrts_h( %a, %b) { ; CHECK-LABEL: frsqrts_h: ; CHECK: frsqrts z0.h, z0.h, z1.h ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.frsqrts.x.nxv8f16( %a, %b) ret %res } define @frsqrts_s( %a, %b) { ; CHECK-LABEL: frsqrts_s: ; CHECK: frsqrts z0.s, z0.s, z1.s ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.frsqrts.x.nxv4f32( %a, %b) ret %res } define @frsqrts_d( %a, %b) { ; CHECK-LABEL: frsqrts_d: ; CHECK: frsqrts z0.d, z0.d, z1.d ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.frsqrts.x.nxv2f64( %a, %b) ret %res } declare @llvm.aarch64.sve.frecps.x.nxv8f16(, ) declare @llvm.aarch64.sve.frecps.x.nxv4f32( , ) declare @llvm.aarch64.sve.frecps.x.nxv2f64(, ) declare @llvm.aarch64.sve.frsqrts.x.nxv8f16(, ) declare @llvm.aarch64.sve.frsqrts.x.nxv4f32(, ) declare @llvm.aarch64.sve.frsqrts.x.nxv2f64(, )