; 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 ; ; FACGE ; define @facge_h( %pg, %a, %b) { ; CHECK-LABEL: facge_h: ; CHECK: facge p0.h, p0/z, z0.h, z1.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.facge.nxv8f16( %pg, %a, %b) ret %out } define @facge_s( %pg, %a, %b) { ; CHECK-LABEL: facge_s: ; CHECK: facge p0.s, p0/z, z0.s, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.facge.nxv4f32( %pg, %a, %b) ret %out } define @facge_d( %pg, %a, %b) { ; CHECK-LABEL: facge_d: ; CHECK: facge p0.d, p0/z, z0.d, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.facge.nxv2f64( %pg, %a, %b) ret %out } ; ; FACGT ; define @facgt_h( %pg, %a, %b) { ; CHECK-LABEL: facgt_h: ; CHECK: facgt p0.h, p0/z, z0.h, z1.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.facgt.nxv8f16( %pg, %a, %b) ret %out } define @facgt_s( %pg, %a, %b) { ; CHECK-LABEL: facgt_s: ; CHECK: facgt p0.s, p0/z, z0.s, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.facgt.nxv4f32( %pg, %a, %b) ret %out } define @facgt_d( %pg, %a, %b) { ; CHECK-LABEL: facgt_d: ; CHECK: facgt p0.d, p0/z, z0.d, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.facgt.nxv2f64( %pg, %a, %b) ret %out } ; ; FCMEQ ; define @fcmeq_h( %pg, %a, %b) { ; CHECK-LABEL: fcmeq_h: ; CHECK: fcmeq p0.h, p0/z, z0.h, z1.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fcmpeq.nxv8f16( %pg, %a, %b) ret %out } define @fcmeq_s( %pg, %a, %b) { ; CHECK-LABEL: fcmeq_s: ; CHECK: fcmeq p0.s, p0/z, z0.s, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fcmpeq.nxv4f32( %pg, %a, %b) ret %out } define @fcmeq_d( %pg, %a, %b) { ; CHECK-LABEL: fcmeq_d: ; CHECK: fcmeq p0.d, p0/z, z0.d, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fcmpeq.nxv2f64( %pg, %a, %b) ret %out } ; ; FCMGE ; define @fcmge_h( %pg, %a, %b) { ; CHECK-LABEL: fcmge_h: ; CHECK: fcmge p0.h, p0/z, z0.h, z1.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fcmpge.nxv8f16( %pg, %a, %b) ret %out } define @fcmge_s( %pg, %a, %b) { ; CHECK-LABEL: fcmge_s: ; CHECK: fcmge p0.s, p0/z, z0.s, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fcmpge.nxv4f32( %pg, %a, %b) ret %out } define @fcmge_d( %pg, %a, %b) { ; CHECK-LABEL: fcmge_d: ; CHECK: fcmge p0.d, p0/z, z0.d, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fcmpge.nxv2f64( %pg, %a, %b) ret %out } ; ; FCMGT ; define @fcmgt_h( %pg, %a, %b) { ; CHECK-LABEL: fcmgt_h: ; CHECK: fcmgt p0.h, p0/z, z0.h, z1.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fcmpgt.nxv8f16( %pg, %a, %b) ret %out } define @fcmgt_s( %pg, %a, %b) { ; CHECK-LABEL: fcmgt_s: ; CHECK: fcmgt p0.s, p0/z, z0.s, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fcmpgt.nxv4f32( %pg, %a, %b) ret %out } define @fcmgt_d( %pg, %a, %b) { ; CHECK-LABEL: fcmgt_d: ; CHECK: fcmgt p0.d, p0/z, z0.d, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fcmpgt.nxv2f64( %pg, %a, %b) ret %out } ; ; FCMNE ; define @fcmne_h( %pg, %a, %b) { ; CHECK-LABEL: fcmne_h: ; CHECK: fcmne p0.h, p0/z, z0.h, z1.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fcmpne.nxv8f16( %pg, %a, %b) ret %out } define @fcmne_s( %pg, %a, %b) { ; CHECK-LABEL: fcmne_s: ; CHECK: fcmne p0.s, p0/z, z0.s, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fcmpne.nxv4f32( %pg, %a, %b) ret %out } define @fcmne_d( %pg, %a, %b) { ; CHECK-LABEL: fcmne_d: ; CHECK: fcmne p0.d, p0/z, z0.d, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fcmpne.nxv2f64( %pg, %a, %b) ret %out } ; ; FCMPUO ; define @fcmuo_h( %pg, %a, %b) { ; CHECK-LABEL: fcmuo_h: ; CHECK: fcmuo p0.h, p0/z, z0.h, z1.h ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fcmpuo.nxv8f16( %pg, %a, %b) ret %out } define @fcmuo_s( %pg, %a, %b) { ; CHECK-LABEL: fcmuo_s: ; CHECK: fcmuo p0.s, p0/z, z0.s, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fcmpuo.nxv4f32( %pg, %a, %b) ret %out } define @fcmuo_d( %pg, %a, %b) { ; CHECK-LABEL: fcmuo_d: ; CHECK: fcmuo p0.d, p0/z, z0.d, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.fcmpuo.nxv2f64( %pg, %a, %b) ret %out } declare @llvm.aarch64.sve.facge.nxv8f16(, , ) declare @llvm.aarch64.sve.facge.nxv4f32(, , ) declare @llvm.aarch64.sve.facge.nxv2f64(, , ) declare @llvm.aarch64.sve.facgt.nxv8f16(, , ) declare @llvm.aarch64.sve.facgt.nxv4f32(, , ) declare @llvm.aarch64.sve.facgt.nxv2f64(, , ) declare @llvm.aarch64.sve.fcmpeq.nxv8f16(, , ) declare @llvm.aarch64.sve.fcmpeq.nxv4f32(, , ) declare @llvm.aarch64.sve.fcmpeq.nxv2f64(, , ) declare @llvm.aarch64.sve.fcmpge.nxv8f16(, , ) declare @llvm.aarch64.sve.fcmpge.nxv4f32(, , ) declare @llvm.aarch64.sve.fcmpge.nxv2f64(, , ) declare @llvm.aarch64.sve.fcmpgt.nxv8f16(, , ) declare @llvm.aarch64.sve.fcmpgt.nxv4f32(, , ) declare @llvm.aarch64.sve.fcmpgt.nxv2f64(, , ) declare @llvm.aarch64.sve.fcmpne.nxv8f16(, , ) declare @llvm.aarch64.sve.fcmpne.nxv4f32(, , ) declare @llvm.aarch64.sve.fcmpne.nxv2f64(, , ) declare @llvm.aarch64.sve.fcmpuo.nxv8f16(, , ) declare @llvm.aarch64.sve.fcmpuo.nxv4f32(, , ) declare @llvm.aarch64.sve.fcmpuo.nxv2f64(, , )