; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5 ; RUN: opt -S -passes=instcombine < %s | FileCheck %s target triple = "aarch64-unknown-linux-gnu" define @test_fcvt_bf16_f32_poison( %a, %b) { ; CHECK-LABEL: define @test_fcvt_bf16_f32_poison( ; CHECK-SAME: [[A:%.*]], [[B:%.*]]) { ; CHECK-NEXT: [[OUT:%.*]] = call @llvm.aarch64.sve.fcvt.bf16f32.v2( poison, splat (i1 true), [[B]]) ; CHECK-NEXT: ret [[OUT]] ; %pg = tail call @llvm.aarch64.sve.ptrue.nxv4i1(i32 31) %out = call @llvm.aarch64.sve.fcvt.bf16f32.v2( poison, %pg, %b) ret %out } define @test_fcvt_bf16_f32( %a, %b) { ; CHECK-LABEL: define @test_fcvt_bf16_f32( ; CHECK-SAME: [[A:%.*]], [[B:%.*]]) { ; CHECK-NEXT: [[OUT:%.*]] = call @llvm.aarch64.sve.fcvt.bf16f32.v2( undef, splat (i1 true), [[B]]) ; CHECK-NEXT: ret [[OUT]] ; %pg = tail call @llvm.aarch64.sve.ptrue.nxv4i1(i32 31) %out = call @llvm.aarch64.sve.fcvt.bf16f32.v2( %a, %pg, %b) ret %out } define @test_fcvt_f16_f32( %a, %b) { ; CHECK-LABEL: define @test_fcvt_f16_f32( ; CHECK-SAME: [[A:%.*]], [[B:%.*]]) { ; CHECK-NEXT: [[OUT:%.*]] = call @llvm.aarch64.sve.fcvt.f16f32( undef, splat (i1 true), [[B]]) ; CHECK-NEXT: ret [[OUT]] ; %pg = tail call @llvm.aarch64.sve.ptrue.nxv4i1(i32 31) %out = call @llvm.aarch64.sve.fcvt.f16f32( %a, %pg, %b) ret %out } define @test_fcvt_f16_f64( %a, %b) { ; CHECK-LABEL: define @test_fcvt_f16_f64( ; CHECK-SAME: [[A:%.*]], [[B:%.*]]) { ; CHECK-NEXT: [[OUT:%.*]] = call @llvm.aarch64.sve.fcvt.f16f64( undef, splat (i1 true), [[B]]) ; CHECK-NEXT: ret [[OUT]] ; %pg = tail call @llvm.aarch64.sve.ptrue.nxv2i1(i32 31) %out = call @llvm.aarch64.sve.fcvt.f16f64( %a, %pg, %b) ret %out } define @test_fcvt_f32_f16( %a, %b) { ; CHECK-LABEL: define @test_fcvt_f32_f16( ; CHECK-SAME: [[A:%.*]], [[B:%.*]]) { ; CHECK-NEXT: [[OUT:%.*]] = call @llvm.aarch64.sve.fcvt.f32f16( undef, splat (i1 true), [[B]]) ; CHECK-NEXT: ret [[OUT]] ; %pg = tail call @llvm.aarch64.sve.ptrue.nxv4i1(i32 31) %out = call @llvm.aarch64.sve.fcvt.f32f16( %a, %pg, %b) ret %out } define @test_fcvt_f32_f64( %a, %b) { ; CHECK-LABEL: define @test_fcvt_f32_f64( ; CHECK-SAME: [[A:%.*]], [[B:%.*]]) { ; CHECK-NEXT: [[OUT:%.*]] = call @llvm.aarch64.sve.fcvt.f32f64( undef, splat (i1 true), [[B]]) ; CHECK-NEXT: ret [[OUT]] ; %pg = tail call @llvm.aarch64.sve.ptrue.nxv2i1(i32 31) %out = call @llvm.aarch64.sve.fcvt.f32f64( %a, %pg, %b) ret %out } define @test_fcvt_f64_f16( %a, %b) { ; CHECK-LABEL: define @test_fcvt_f64_f16( ; CHECK-SAME: [[A:%.*]], [[B:%.*]]) { ; CHECK-NEXT: [[OUT:%.*]] = call @llvm.aarch64.sve.fcvt.f64f16( undef, splat (i1 true), [[B]]) ; CHECK-NEXT: ret [[OUT]] ; %pg = tail call @llvm.aarch64.sve.ptrue.nxv2i1(i32 31) %out = call @llvm.aarch64.sve.fcvt.f64f16( %a, %pg, %b) ret %out } define @test_fcvt_f64_f32( %a, %b) { ; CHECK-LABEL: define @test_fcvt_f64_f32( ; CHECK-SAME: [[A:%.*]], [[B:%.*]]) { ; CHECK-NEXT: [[OUT:%.*]] = call @llvm.aarch64.sve.fcvt.f64f32( undef, splat (i1 true), [[B]]) ; CHECK-NEXT: ret [[OUT]] ; %pg = tail call @llvm.aarch64.sve.ptrue.nxv2i1(i32 31) %out = call @llvm.aarch64.sve.fcvt.f64f32( %a, %pg, %b) ret %out } define @test_fcvtlt_f32_f16( %a, %b) { ; CHECK-LABEL: define @test_fcvtlt_f32_f16( ; CHECK-SAME: [[A:%.*]], [[B:%.*]]) { ; CHECK-NEXT: [[OUT:%.*]] = call @llvm.aarch64.sve.fcvtlt.f32f16( undef, splat (i1 true), [[B]]) ; CHECK-NEXT: ret [[OUT]] ; %pg = tail call @llvm.aarch64.sve.ptrue.nxv4i1(i32 31) %out = call @llvm.aarch64.sve.fcvtlt.f32f16( %a, %pg, %b) ret %out } define @test_fcvtlt_f64_f32( %a, %b) { ; CHECK-LABEL: define @test_fcvtlt_f64_f32( ; CHECK-SAME: [[A:%.*]], [[B:%.*]]) { ; CHECK-NEXT: [[OUT:%.*]] = call @llvm.aarch64.sve.fcvtlt.f64f32( undef, splat (i1 true), [[B]]) ; CHECK-NEXT: ret [[OUT]] ; %pg = tail call @llvm.aarch64.sve.ptrue.nxv2i1(i32 31) %out = call @llvm.aarch64.sve.fcvtlt.f64f32( %a, %pg, %b) ret %out } define @test_fcvtnt_bf16_f32( %a, %b) { ; CHECK-LABEL: define @test_fcvtnt_bf16_f32( ; CHECK-SAME: [[A:%.*]], [[B:%.*]]) { ; CHECK-NEXT: [[OUT:%.*]] = call @llvm.aarch64.sve.fcvtnt.bf16f32.v2( [[A]], splat (i1 true), [[B]]) ; CHECK-NEXT: ret [[OUT]] ; %pg = tail call @llvm.aarch64.sve.ptrue.nxv4i1(i32 31) %out = call @llvm.aarch64.sve.fcvtnt.bf16f32.v2( %a, %pg, %b) ret %out } define @test_fcvtnt_f16_f32( %a, %b) { ; CHECK-LABEL: define @test_fcvtnt_f16_f32( ; CHECK-SAME: [[A:%.*]], [[B:%.*]]) { ; CHECK-NEXT: [[OUT:%.*]] = call @llvm.aarch64.sve.fcvtnt.f16f32( [[A]], splat (i1 true), [[B]]) ; CHECK-NEXT: ret [[OUT]] ; %pg = tail call @llvm.aarch64.sve.ptrue.nxv4i1(i32 31) %out = call @llvm.aarch64.sve.fcvtnt.f16f32( %a, %pg, %b) ret %out } define @test_fcvtnt_f32_f64( %a, %b) { ; CHECK-LABEL: define @test_fcvtnt_f32_f64( ; CHECK-SAME: [[A:%.*]], [[B:%.*]]) { ; CHECK-NEXT: [[OUT:%.*]] = call @llvm.aarch64.sve.fcvtnt.f32f64( [[A]], splat (i1 true), [[B]]) ; CHECK-NEXT: ret [[OUT]] ; %pg = tail call @llvm.aarch64.sve.ptrue.nxv2i1(i32 31) %out = call @llvm.aarch64.sve.fcvtnt.f32f64( %a, %pg, %b) ret %out } define @test_fcvtx_f32_f64( %a, %b) { ; CHECK-LABEL: define @test_fcvtx_f32_f64( ; CHECK-SAME: [[A:%.*]], [[B:%.*]]) { ; CHECK-NEXT: [[OUT:%.*]] = call @llvm.aarch64.sve.fcvtx.f32f64( undef, splat (i1 true), [[B]]) ; CHECK-NEXT: ret [[OUT]] ; %pg = tail call @llvm.aarch64.sve.ptrue.nxv2i1(i32 31) %out = call @llvm.aarch64.sve.fcvtx.f32f64( %a, %pg, %b) ret %out } define @test_fcvtxnt_f32_f64( %a, %b) { ; CHECK-LABEL: define @test_fcvtxnt_f32_f64( ; CHECK-SAME: [[A:%.*]], [[B:%.*]]) { ; CHECK-NEXT: [[OUT:%.*]] = call @llvm.aarch64.sve.fcvtxnt.f32f64( [[A]], splat (i1 true), [[B]]) ; CHECK-NEXT: ret [[OUT]] ; %pg = tail call @llvm.aarch64.sve.ptrue.nxv2i1(i32 31) %out = call @llvm.aarch64.sve.fcvtxnt.f32f64( %a, %pg, %b) ret %out } define @test_fcvtzs( %a, %b) { ; CHECK-LABEL: define @test_fcvtzs( ; CHECK-SAME: [[A:%.*]], [[B:%.*]]) { ; CHECK-NEXT: [[OUT:%.*]] = call @llvm.aarch64.sve.fcvtzs.nxv8i16.nxv8f16( undef, splat (i1 true), [[B]]) ; CHECK-NEXT: ret [[OUT]] ; %pg = tail call @llvm.aarch64.sve.ptrue.nxv8i1(i32 31) %out = call @llvm.aarch64.sve.fcvtzs.nxv4i16.nxv4f16( %a, %pg, %b) ret %out } define @test_fcvtzs_i32_f16( %a, %b) { ; CHECK-LABEL: define @test_fcvtzs_i32_f16( ; CHECK-SAME: [[A:%.*]], [[B:%.*]]) { ; CHECK-NEXT: [[OUT:%.*]] = call @llvm.aarch64.sve.fcvtzs.i32f16( undef, splat (i1 true), [[B]]) ; CHECK-NEXT: ret [[OUT]] ; %pg = tail call @llvm.aarch64.sve.ptrue.nxv4i1(i32 31) %out = call @llvm.aarch64.sve.fcvtzs.i32f16( %a, %pg, %b) ret %out } define @test_fcvtzs_i32_f64( %a, %b) { ; CHECK-LABEL: define @test_fcvtzs_i32_f64( ; CHECK-SAME: [[A:%.*]], [[B:%.*]]) { ; CHECK-NEXT: [[OUT:%.*]] = call @llvm.aarch64.sve.fcvtzs.i32f64( undef, splat (i1 true), [[B]]) ; CHECK-NEXT: ret [[OUT]] ; %pg = tail call @llvm.aarch64.sve.ptrue.nxv2i1(i32 31) %out = call @llvm.aarch64.sve.fcvtzs.i32f64( %a, %pg, %b) ret %out } define @test_fcvtzs_i64_f16( %a, %b) { ; CHECK-LABEL: define @test_fcvtzs_i64_f16( ; CHECK-SAME: [[A:%.*]], [[B:%.*]]) { ; CHECK-NEXT: [[OUT:%.*]] = call @llvm.aarch64.sve.fcvtzs.i64f16( undef, splat (i1 true), [[B]]) ; CHECK-NEXT: ret [[OUT]] ; %pg = tail call @llvm.aarch64.sve.ptrue.nxv2i1(i32 31) %out = call @llvm.aarch64.sve.fcvtzs.i64f16( %a, %pg, %b) ret %out } define @test_fcvtzs_i64_f32( %a, %b) { ; CHECK-LABEL: define @test_fcvtzs_i64_f32( ; CHECK-SAME: [[A:%.*]], [[B:%.*]]) { ; CHECK-NEXT: [[OUT:%.*]] = call @llvm.aarch64.sve.fcvtzs.i64f32( undef, splat (i1 true), [[B]]) ; CHECK-NEXT: ret [[OUT]] ; %pg = tail call @llvm.aarch64.sve.ptrue.nxv2i1(i32 31) %out = call @llvm.aarch64.sve.fcvtzs.i64f32( %a, %pg, %b) ret %out } define @test_fcvtzu( %a, %b) { ; CHECK-LABEL: define @test_fcvtzu( ; CHECK-SAME: [[A:%.*]], [[B:%.*]]) { ; CHECK-NEXT: [[OUT:%.*]] = call @llvm.aarch64.sve.fcvtzu.nxv8i16.nxv8f16( undef, splat (i1 true), [[B]]) ; CHECK-NEXT: ret [[OUT]] ; %pg = tail call @llvm.aarch64.sve.ptrue.nxv8i1(i32 31) %out = call @llvm.aarch64.sve.fcvtzu.nxv4i32.nxv4f32( %a, %pg, %b) ret %out } define @test_fcvtzu_i32_f16( %a, %b) { ; CHECK-LABEL: define @test_fcvtzu_i32_f16( ; CHECK-SAME: [[A:%.*]], [[B:%.*]]) { ; CHECK-NEXT: [[OUT:%.*]] = call @llvm.aarch64.sve.fcvtzu.i32f16( undef, splat (i1 true), [[B]]) ; CHECK-NEXT: ret [[OUT]] ; %pg = tail call @llvm.aarch64.sve.ptrue.nxv4i1(i32 31) %out = call @llvm.aarch64.sve.fcvtzu.i32f16( %a, %pg, %b) ret %out } define @test_fcvtzu_i32_f64( %a, %b) { ; CHECK-LABEL: define @test_fcvtzu_i32_f64( ; CHECK-SAME: [[A:%.*]], [[B:%.*]]) { ; CHECK-NEXT: [[OUT:%.*]] = call @llvm.aarch64.sve.fcvtzu.i32f64( undef, splat (i1 true), [[B]]) ; CHECK-NEXT: ret [[OUT]] ; %pg = tail call @llvm.aarch64.sve.ptrue.nxv2i1(i32 31) %out = call @llvm.aarch64.sve.fcvtzu.i32f64( %a, %pg, %b) ret %out } define @test_fcvtzu_i64_f16( %a, %b) { ; CHECK-LABEL: define @test_fcvtzu_i64_f16( ; CHECK-SAME: [[A:%.*]], [[B:%.*]]) { ; CHECK-NEXT: [[OUT:%.*]] = call @llvm.aarch64.sve.fcvtzu.i64f16( undef, splat (i1 true), [[B]]) ; CHECK-NEXT: ret [[OUT]] ; %pg = tail call @llvm.aarch64.sve.ptrue.nxv2i1(i32 31) %out = call @llvm.aarch64.sve.fcvtzu.i64f16( %a, %pg, %b) ret %out } define @test_fcvtzu_i64_f32( %a, %b) { ; CHECK-LABEL: define @test_fcvtzu_i64_f32( ; CHECK-SAME: [[A:%.*]], [[B:%.*]]) { ; CHECK-NEXT: [[OUT:%.*]] = call @llvm.aarch64.sve.fcvtzu.i64f32( undef, splat (i1 true), [[B]]) ; CHECK-NEXT: ret [[OUT]] ; %pg = tail call @llvm.aarch64.sve.ptrue.nxv2i1(i32 31) %out = call @llvm.aarch64.sve.fcvtzu.i64f32( %a, %pg, %b) ret %out } define @test_revd_i8( %a) { ; CHECK-LABEL: define @test_revd_i8( ; CHECK-SAME: [[A:%.*]]) { ; CHECK-NEXT: [[RES:%.*]] = tail call @llvm.aarch64.sve.revd.nxv16i8( undef, splat (i1 true), [[A]]) ; CHECK-NEXT: ret [[RES]] ; %res = tail call @llvm.aarch64.sve.revd.nxv16i8( zeroinitializer, splat (i1 true), %a) ret %res } define @test_revd_i16( %a) { ; CHECK-LABEL: define @test_revd_i16( ; CHECK-SAME: [[A:%.*]]) { ; CHECK-NEXT: [[RES:%.*]] = call @llvm.aarch64.sve.revd.nxv8i16( undef, splat (i1 true), [[A]]) ; CHECK-NEXT: ret [[RES]] ; %res = call @llvm.aarch64.sve.revd.nxv8i16( zeroinitializer, splat (i1 true), %a) ret %res } define @test_revd_i32( %a) { ; CHECK-LABEL: define @test_revd_i32( ; CHECK-SAME: [[A:%.*]]) { ; CHECK-NEXT: [[RES:%.*]] = call @llvm.aarch64.sve.revd.nxv4i32( undef, splat (i1 true), [[A]]) ; CHECK-NEXT: ret [[RES]] ; %res = call @llvm.aarch64.sve.revd.nxv4i32( zeroinitializer, splat (i1 true), %a) ret %res } define @test_revd_i64( %a) { ; CHECK-LABEL: define @test_revd_i64( ; CHECK-SAME: [[A:%.*]]) { ; CHECK-NEXT: [[RES:%.*]] = call @llvm.aarch64.sve.revd.nxv2i64( undef, splat (i1 true), [[A]]) ; CHECK-NEXT: ret [[RES]] ; %res = call @llvm.aarch64.sve.revd.nxv2i64( zeroinitializer, splat (i1 true), %a) ret %res } define @test_revb_i16( %a) { ; CHECK-LABEL: define @test_revb_i16( ; CHECK-SAME: [[A:%.*]]) { ; CHECK-NEXT: [[RES:%.*]] = call @llvm.aarch64.sve.revb.nxv8i16( undef, splat (i1 true), [[A]]) ; CHECK-NEXT: ret [[RES]] ; %res = call @llvm.aarch64.sve.revb.nxv8i16( zeroinitializer, splat (i1 true), %a) ret %res } define @test_revb_i32( %a) { ; CHECK-LABEL: define @test_revb_i32( ; CHECK-SAME: [[A:%.*]]) { ; CHECK-NEXT: [[RES:%.*]] = call @llvm.aarch64.sve.revb.nxv4i32( undef, splat (i1 true), [[A]]) ; CHECK-NEXT: ret [[RES]] ; %res = call @llvm.aarch64.sve.revb.nxv4i32( zeroinitializer, splat (i1 true), %a) ret %res } define @test_revb_i64( %a) { ; CHECK-LABEL: define @test_revb_i64( ; CHECK-SAME: [[A:%.*]]) { ; CHECK-NEXT: [[RES:%.*]] = call @llvm.aarch64.sve.revb.nxv2i64( undef, splat (i1 true), [[A]]) ; CHECK-NEXT: ret [[RES]] ; %res = call @llvm.aarch64.sve.revb.nxv2i64( zeroinitializer, splat (i1 true), %a) ret %res } define @test_revh_i32( %a) { ; CHECK-LABEL: define @test_revh_i32( ; CHECK-SAME: [[A:%.*]]) { ; CHECK-NEXT: [[RES:%.*]] = call @llvm.aarch64.sve.revh.nxv4i32( undef, splat (i1 true), [[A]]) ; CHECK-NEXT: ret [[RES]] ; %res = call @llvm.aarch64.sve.revh.nxv4i32( zeroinitializer, splat (i1 true), %a) ret %res } define @test_revh_i64( %a) { ; CHECK-LABEL: define @test_revh_i64( ; CHECK-SAME: [[A:%.*]]) { ; CHECK-NEXT: [[RES:%.*]] = call @llvm.aarch64.sve.revh.nxv2i64( undef, splat (i1 true), [[A]]) ; CHECK-NEXT: ret [[RES]] ; %res = call @llvm.aarch64.sve.revh.nxv2i64( zeroinitializer, splat (i1 true), %a) ret %res } define @test_revw_i64( %a) { ; CHECK-LABEL: define @test_revw_i64( ; CHECK-SAME: [[A:%.*]]) { ; CHECK-NEXT: [[RES:%.*]] = call @llvm.aarch64.sve.revw.nxv2i64( undef, splat (i1 true), [[A]]) ; CHECK-NEXT: ret [[RES]] ; %res = call @llvm.aarch64.sve.revw.nxv2i64( zeroinitializer, splat (i1 true), %a) ret %res } define @test_scvtf( %a, %b) { ; CHECK-LABEL: define @test_scvtf( ; CHECK-SAME: [[A:%.*]], [[B:%.*]]) { ; CHECK-NEXT: [[OUT:%.*]] = call @llvm.aarch64.sve.scvtf.nxv8f16.nxv8i16( undef, splat (i1 true), [[B]]) ; CHECK-NEXT: ret [[OUT]] ; %pg = tail call @llvm.aarch64.sve.ptrue.nxv8i1(i32 31) %out = call @llvm.aarch64.sve.scvtf.nxv8f16.nxv8i16( %a, %pg, %b) ret %out } define @test_scvtf_f16_i32( %a, %b) { ; CHECK-LABEL: define @test_scvtf_f16_i32( ; CHECK-SAME: [[A:%.*]], [[B:%.*]]) { ; CHECK-NEXT: [[OUT:%.*]] = call @llvm.aarch64.sve.scvtf.f16i32( undef, splat (i1 true), [[B]]) ; CHECK-NEXT: ret [[OUT]] ; %pg = tail call @llvm.aarch64.sve.ptrue.nxv4i1(i32 31) %out = call @llvm.aarch64.sve.scvtf.f16i32( %a, %pg, %b) ret %out } define @test_scvtf_f16_i64( %a, %b) { ; CHECK-LABEL: define @test_scvtf_f16_i64( ; CHECK-SAME: [[A:%.*]], [[B:%.*]]) { ; CHECK-NEXT: [[OUT:%.*]] = call @llvm.aarch64.sve.scvtf.f16i64( undef, splat (i1 true), [[B]]) ; CHECK-NEXT: ret [[OUT]] ; %pg = tail call @llvm.aarch64.sve.ptrue.nxv2i1(i32 31) %out = call @llvm.aarch64.sve.scvtf.f16i64( %a, %pg, %b) ret %out } define @test_scvtf_f32_i64( %a, %b) { ; CHECK-LABEL: define @test_scvtf_f32_i64( ; CHECK-SAME: [[A:%.*]], [[B:%.*]]) { ; CHECK-NEXT: [[OUT:%.*]] = call @llvm.aarch64.sve.scvtf.f32i64( undef, splat (i1 true), [[B]]) ; CHECK-NEXT: ret [[OUT]] ; %pg = tail call @llvm.aarch64.sve.ptrue.nxv2i1(i32 31) %out = call @llvm.aarch64.sve.scvtf.f32i64( %a, %pg, %b) ret %out } define @test_scvtf_f64_i32( %a, %b) { ; CHECK-LABEL: define @test_scvtf_f64_i32( ; CHECK-SAME: [[A:%.*]], [[B:%.*]]) { ; CHECK-NEXT: [[OUT:%.*]] = call @llvm.aarch64.sve.scvtf.f64i32( undef, splat (i1 true), [[B]]) ; CHECK-NEXT: ret [[OUT]] ; %pg = tail call @llvm.aarch64.sve.ptrue.nxv2i1(i32 31) %out = call @llvm.aarch64.sve.scvtf.f64i32( %a, %pg, %b) ret %out } define @test_ucvtf( %a, %b) { ; CHECK-LABEL: define @test_ucvtf( ; CHECK-SAME: [[A:%.*]], [[B:%.*]]) { ; CHECK-NEXT: [[OUT:%.*]] = call @llvm.aarch64.sve.ucvtf.nxv8f16.nxv8i16( undef, splat (i1 true), [[B]]) ; CHECK-NEXT: ret [[OUT]] ; %pg = tail call @llvm.aarch64.sve.ptrue.nxv8i1(i32 31) %out = call @llvm.aarch64.sve.ucvtf.nxv8f16.nxv8i16( %a, %pg, %b) ret %out } define @test_ucvtf_f16_i32( %a, %b) { ; CHECK-LABEL: define @test_ucvtf_f16_i32( ; CHECK-SAME: [[A:%.*]], [[B:%.*]]) { ; CHECK-NEXT: [[OUT:%.*]] = call @llvm.aarch64.sve.ucvtf.f16i32( undef, splat (i1 true), [[B]]) ; CHECK-NEXT: ret [[OUT]] ; %pg = tail call @llvm.aarch64.sve.ptrue.nxv4i1(i32 31) %out = call @llvm.aarch64.sve.ucvtf.f16i32( %a, %pg, %b) ret %out } define @test_ucvtf_f16_i64( %a, %b) { ; CHECK-LABEL: define @test_ucvtf_f16_i64( ; CHECK-SAME: [[A:%.*]], [[B:%.*]]) { ; CHECK-NEXT: [[OUT:%.*]] = call @llvm.aarch64.sve.ucvtf.f16i64( undef, splat (i1 true), [[B]]) ; CHECK-NEXT: ret [[OUT]] ; %pg = tail call @llvm.aarch64.sve.ptrue.nxv2i1(i32 31) %out = call @llvm.aarch64.sve.ucvtf.f16i64( %a, %pg, %b) ret %out } define @test_ucvtf_f32_i64( %a, %b) { ; CHECK-LABEL: define @test_ucvtf_f32_i64( ; CHECK-SAME: [[A:%.*]], [[B:%.*]]) { ; CHECK-NEXT: [[OUT:%.*]] = call @llvm.aarch64.sve.ucvtf.f32i64( undef, splat (i1 true), [[B]]) ; CHECK-NEXT: ret [[OUT]] ; %pg = tail call @llvm.aarch64.sve.ptrue.nxv2i1(i32 31) %out = call @llvm.aarch64.sve.ucvtf.f32i64( %a, %pg, %b) ret %out } define @test_ucvtf_f64_i32( %a, %b) { ; CHECK-LABEL: define @test_ucvtf_f64_i32( ; CHECK-SAME: [[A:%.*]], [[B:%.*]]) { ; CHECK-NEXT: [[OUT:%.*]] = call @llvm.aarch64.sve.ucvtf.f64i32( undef, splat (i1 true), [[B]]) ; CHECK-NEXT: ret [[OUT]] ; %pg = tail call @llvm.aarch64.sve.ptrue.nxv2i1(i32 31) %out = call @llvm.aarch64.sve.ucvtf.f64i32( %a, %pg, %b) ret %out }