; RUN: llc -march=hexagon < %s -verify-machineinstrs | FileCheck %s ; Test that code is generated for the vector sint_to_fp node. ; The floor builtin is still scalarized. ; CHECK: call floorf ; CHECK: vmem target triple = "hexagon" define dllexport void @f0() #0 { b0: br label %b1 b1: ; preds = %b1, %b0 %v0 = phi i32 [ 0, %b0 ], [ %v17, %b1 ] %v1 = mul nsw i32 %v0, 2 %v2 = add nsw i32 undef, %v1 %v3 = insertelement <64 x i32> undef, i32 %v2, i32 0 %v4 = shufflevector <64 x i32> %v3, <64 x i32> undef, <64 x i32> zeroinitializer %v5 = add nsw <64 x i32> %v4, %v6 = sitofp <64 x i32> %v5 to <64 x float> %v7 = fmul <64 x float> %v6, %v8 = fsub <64 x float> %v7, zeroinitializer %v9 = call <64 x float> @llvm.floor.v64f32(<64 x float> %v8) %v10 = fsub <64 x float> zeroinitializer, %v9 %v11 = fptrunc <64 x float> %v10 to <64 x half> %v12 = call <64 x half> @llvm.fmuladd.v64f16(<64 x half> %v11, <64 x half> zeroinitializer, <64 x half> zeroinitializer) %v13 = fsub <64 x half> %v12, zeroinitializer %v14 = call <64 x half> @llvm.fmuladd.v64f16(<64 x half> zeroinitializer, <64 x half> %v13, <64 x half> zeroinitializer) %v15 = shufflevector <64 x half> %v14, <64 x half> undef, <128 x i32> %v16 = shufflevector <128 x half> %v15, <128 x half> undef, <64 x i32> call void @llvm.masked.store.v64f16.p0(<64 x half> %v16, ptr undef, i32 64, <64 x i1> ) %v17 = add nsw i32 %v0, 1 br label %b1 } ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare <64 x float> @llvm.floor.v64f32(<64 x float>) #1 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare <64 x half> @llvm.fmuladd.v64f16(<64 x half>, <64 x half>, <64 x half>) #1 ; Function Attrs: argmemonly nofree nosync nounwind willreturn writeonly declare void @llvm.masked.store.v64f16.p0(<64 x half>, ptr, i32 immarg, <64 x i1>) #2 attributes #0 = { "target-features"="+hvxv69,+hvx-length128b,+hvx-qfloat" } attributes #1 = { nofree nosync nounwind readnone speculatable willreturn } attributes #2 = { argmemonly nofree nosync nounwind willreturn writeonly }