; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py ; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve2p3 < %s | FileCheck %s ; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve,+sme2p3 < %s | FileCheck %s ; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sme2p3 -force-streaming < %s | FileCheck %s ; ; SVCVTB (SCVTFB / UCVTFB) ; define @scvtfb_f16_i8( %zn) { ; CHECK-LABEL: scvtfb_f16_i8: ; CHECK: // %bb.0: ; CHECK-NEXT: scvtf z0.h, z0.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.scvtfb.nxv8f16.nxv16i8( %zn) ret %res } define @scvtfb_f32_i16( %zn) { ; CHECK-LABEL: scvtfb_f32_i16: ; CHECK: // %bb.0: ; CHECK-NEXT: scvtf z0.s, z0.h ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.scvtfb.nxv4f32.nxv8i16( %zn) ret %res } define @scvtfb_f64_i32( %zn) { ; CHECK-LABEL: scvtfb_f64_i32: ; CHECK: // %bb.0: ; CHECK-NEXT: scvtf z0.d, z0.s ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.scvtfb.nxv2f64.nxv4i32( %zn) ret %res } define @ucvtfb_f16_i8( %zn) { ; CHECK-LABEL: ucvtfb_f16_i8: ; CHECK: // %bb.0: ; CHECK-NEXT: ucvtf z0.h, z0.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.ucvtfb.nxv8f16.nxv16i8( %zn) ret %res } define @ucvtfb_f32_i16( %zn) { ; CHECK-LABEL: ucvtfb_f32_i16: ; CHECK: // %bb.0: ; CHECK-NEXT: ucvtf z0.s, z0.h ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.ucvtfb.nxv4f32.nxv8i16( %zn) ret %res } define @ucvtfb_f64_i32( %zn) { ; CHECK-LABEL: ucvtfb_f64_i32: ; CHECK: // %bb.0: ; CHECK-NEXT: ucvtf z0.d, z0.s ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.ucvtfb.nxv2f64.nxv4i32( %zn) ret %res } ; ; SVCVTT (SCVTFLT / UCVTFLT) ; define @scvtflt_f16_i8( %zn) { ; CHECK-LABEL: scvtflt_f16_i8: ; CHECK: // %bb.0: ; CHECK-NEXT: scvtflt z0.h, z0.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.scvtft.nxv8f16.nxv16i8( %zn) ret %res } define @scvtflt_f32_i16( %zn) { ; CHECK-LABEL: scvtflt_f32_i16: ; CHECK: // %bb.0: ; CHECK-NEXT: scvtflt z0.s, z0.h ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.scvtft.nxv4f32.nxv8i16( %zn) ret %res } define @scvtflt_f64_i32( %zn) { ; CHECK-LABEL: scvtflt_f64_i32: ; CHECK: // %bb.0: ; CHECK-NEXT: scvtflt z0.d, z0.s ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.scvtft.nxv2f64.nxv4i32( %zn) ret %res } define @ucvtflt_f16_i8( %zn) { ; CHECK-LABEL: ucvtflt_f16_i8: ; CHECK: // %bb.0: ; CHECK-NEXT: ucvtflt z0.h, z0.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.ucvtft.nxv8f16.nxv16i8( %zn) ret %res } define @ucvtflt_f32_i16( %zn) { ; CHECK-LABEL: ucvtflt_f32_i16: ; CHECK: // %bb.0: ; CHECK-NEXT: ucvtflt z0.s, z0.h ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.ucvtft.nxv4f32.nxv8i16( %zn) ret %res } define @ucvtflt_f64_i32( %zn) { ; CHECK-LABEL: ucvtflt_f64_i32: ; CHECK: // %bb.0: ; CHECK-NEXT: ucvtflt z0.d, z0.s ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.ucvtft.nxv2f64.nxv4i32( %zn) ret %res }