; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6 ; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve2p2 < %s | FileCheck %s ; ; FRINT32X ; define @frint32x_m_s( %a, %pg, %b) { ; CHECK-LABEL: frint32x_m_s: ; CHECK: // %bb.0: ; CHECK-NEXT: frint32x z0.s, p0/m, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frint32x.nxv4f32( %a, %pg, %b) ret %out } define @frint32x_m_d( %a, %pg, %b) { ; CHECK-LABEL: frint32x_m_d: ; CHECK: // %bb.0: ; CHECK-NEXT: frint32x z0.d, p0/m, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frint32x.nxv2f64( %a, %pg, %b) ret %out } define @frint32x_x_s( %pg, %b) { ; CHECK-LABEL: frint32x_x_s: ; CHECK: // %bb.0: ; CHECK-NEXT: frint32x z0.s, p0/z, z0.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frint32x.nxv4f32( poison, %pg, %b) ret %out } define @frint32x_x_d( %pg, %b) { ; CHECK-LABEL: frint32x_x_d: ; CHECK: // %bb.0: ; CHECK-NEXT: frint32x z0.d, p0/z, z0.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frint32x.nxv2f64( poison, %pg, %b) ret %out } define @frint32x_z_s( %a, %pg, %b) { ; CHECK-LABEL: frint32x_z_s: ; CHECK: // %bb.0: ; CHECK-NEXT: frint32x z0.s, p0/z, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frint32x.nxv4f32( zeroinitializer, %pg, %b) ret %out } define @frint32x_z_d( %a, %pg, %b) { ; CHECK-LABEL: frint32x_z_d: ; CHECK: // %bb.0: ; CHECK-NEXT: frint32x z0.d, p0/z, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frint32x.nxv2f64( zeroinitializer, %pg, %b) ret %out } ; ; FRINT32Z ; define @frint32z_m_s( %a, %pg, %b) { ; CHECK-LABEL: frint32z_m_s: ; CHECK: // %bb.0: ; CHECK-NEXT: frint32z z0.s, p0/m, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frint32z.nxv4f32( %a, %pg, %b) ret %out } define @frint32z_m_d( %a, %pg, %b) { ; CHECK-LABEL: frint32z_m_d: ; CHECK: // %bb.0: ; CHECK-NEXT: frint32z z0.d, p0/m, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frint32z.nxv2f64( %a, %pg, %b) ret %out } define @frint32z_x_s( %pg, %b) { ; CHECK-LABEL: frint32z_x_s: ; CHECK: // %bb.0: ; CHECK-NEXT: frint32z z0.s, p0/z, z0.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frint32z.nxv4f32( poison, %pg, %b) ret %out } define @frint32z_x_d( %pg, %b) { ; CHECK-LABEL: frint32z_x_d: ; CHECK: // %bb.0: ; CHECK-NEXT: frint32z z0.d, p0/z, z0.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frint32z.nxv2f64( poison, %pg, %b) ret %out } define @frint32z_z_s( %a, %pg, %b) { ; CHECK-LABEL: frint32z_z_s: ; CHECK: // %bb.0: ; CHECK-NEXT: frint32z z0.s, p0/z, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frint32z.nxv4f32( zeroinitializer, %pg, %b) ret %out } define @frint32z_z_d( %a, %pg, %b) { ; CHECK-LABEL: frint32z_z_d: ; CHECK: // %bb.0: ; CHECK-NEXT: frint32z z0.d, p0/z, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frint32z.nxv2f64( zeroinitializer, %pg, %b) ret %out } ; ; FRINT64X ; define @frint64x_m_s( %a, %pg, %b) { ; CHECK-LABEL: frint64x_m_s: ; CHECK: // %bb.0: ; CHECK-NEXT: frint64x z0.s, p0/m, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frint64x.nxv4f32( %a, %pg, %b) ret %out } define @frint64x_m_d( %a, %pg, %b) { ; CHECK-LABEL: frint64x_m_d: ; CHECK: // %bb.0: ; CHECK-NEXT: frint64x z0.d, p0/m, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frint64x.nxv2f64( %a, %pg, %b) ret %out } define @frint64x_x_s( %pg, %b) { ; CHECK-LABEL: frint64x_x_s: ; CHECK: // %bb.0: ; CHECK-NEXT: frint64x z0.s, p0/z, z0.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frint64x.nxv4f32( poison, %pg, %b) ret %out } define @frint64x_x_d( %pg, %b) { ; CHECK-LABEL: frint64x_x_d: ; CHECK: // %bb.0: ; CHECK-NEXT: frint64x z0.d, p0/z, z0.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frint64x.nxv2f64( poison, %pg, %b) ret %out } define @frint64x_z_s( %a, %pg, %b) { ; CHECK-LABEL: frint64x_z_s: ; CHECK: // %bb.0: ; CHECK-NEXT: frint64x z0.s, p0/z, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frint64x.nxv4f32( zeroinitializer, %pg, %b) ret %out } define @frint64x_z_d( %a, %pg, %b) { ; CHECK-LABEL: frint64x_z_d: ; CHECK: // %bb.0: ; CHECK-NEXT: frint64x z0.d, p0/z, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frint64x.nxv2f64( zeroinitializer, %pg, %b) ret %out } ; ; FRINT64Z ; define @frint64z_m_s( %a, %pg, %b) { ; CHECK-LABEL: frint64z_m_s: ; CHECK: // %bb.0: ; CHECK-NEXT: frint64z z0.s, p0/m, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frint64z.nxv4f32( %a, %pg, %b) ret %out } define @frint64z_m_d( %a, %pg, %b) { ; CHECK-LABEL: frint64z_m_d: ; CHECK: // %bb.0: ; CHECK-NEXT: frint64z z0.d, p0/m, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frint64z.nxv2f64( %a, %pg, %b) ret %out } define @frint64z_x_s( %pg, %b) { ; CHECK-LABEL: frint64z_x_s: ; CHECK: // %bb.0: ; CHECK-NEXT: frint64z z0.s, p0/z, z0.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frint64z.nxv4f32( poison, %pg, %b) ret %out } define @frint64z_x_d( %pg, %b) { ; CHECK-LABEL: frint64z_x_d: ; CHECK: // %bb.0: ; CHECK-NEXT: frint64z z0.d, p0/z, z0.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frint64z.nxv2f64( poison, %pg, %b) ret %out } define @frint64z_z_s( %a, %pg, %b) { ; CHECK-LABEL: frint64z_z_s: ; CHECK: // %bb.0: ; CHECK-NEXT: frint64z z0.s, p0/z, z1.s ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frint64z.nxv4f32( zeroinitializer, %pg, %b) ret %out } define @frint64z_z_d( %a, %pg, %b) { ; CHECK-LABEL: frint64z_z_d: ; CHECK: // %bb.0: ; CHECK-NEXT: frint64z z0.d, p0/z, z1.d ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.frint64z.nxv2f64( zeroinitializer, %pg, %b) ret %out }