brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.5 KiB · a050a8d Raw
100 lines · plain
1; RUN: llc -mtriple=amdgcn -mcpu=gfx1010 < %s | FileCheck -check-prefixes=GCN,GFX1010 %s2; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 < %s | FileCheck -check-prefixes=GCN,GFX1010 %s3 4; GCN-LABEL: {{^}}addMul2D:5; GFX1010: v_fmac_f166; GFX1010: v_fmac_f167define hidden <4 x half> @addMul2D(ptr nocapture readonly %arg, ptr addrspace(4) nocapture readonly %arg1, <2 x i32> %arg2, i32 %arg3) local_unnamed_addr #0 {8bb:9  %tmp = extractelement <2 x i32> %arg2, i64 110  %tmp4 = icmp sgt i32 %tmp, 011  br i1 %tmp4, label %bb5, label %bb3612 13bb5:                                              ; preds = %bb14  %tmp6 = extractelement <2 x i32> %arg2, i64 015  %tmp7 = icmp sgt i32 %tmp6, 016  br label %bb817 18bb8:                                              ; preds = %bb32, %bb519  %tmp9 = phi <4 x half> [ zeroinitializer, %bb5 ], [ %tmp33, %bb32 ]20  %tmp10 = phi i32 [ 0, %bb5 ], [ %tmp34, %bb32 ]21  br i1 %tmp7, label %bb11, label %bb3222 23bb11:                                             ; preds = %bb824  %tmp12 = mul nsw i32 %tmp10, %arg325  %tmp13 = mul nsw i32 %tmp10, %tmp626  br label %bb1427 28bb14:                                             ; preds = %bb14, %bb1129  %tmp15 = phi <4 x half> [ %tmp9, %bb11 ], [ %tmp29, %bb14 ]30  %tmp16 = phi i32 [ 0, %bb11 ], [ %tmp30, %bb14 ]31  %tmp17 = add nsw i32 %tmp16, %tmp1232  %tmp18 = sext i32 %tmp17 to i6433  %tmp19 = getelementptr inbounds <4 x i8>, ptr %arg, i64 %tmp1834  %tmp20 = load <4 x i8>, ptr %tmp19, align 435  %tmp21 = tail call <4 x half> @_Z13convert_half4Dv4_h(<4 x i8> %tmp20)36  %tmp22 = add nsw i32 %tmp16, %tmp1337  %tmp23 = sext i32 %tmp22 to i6438  %tmp24 = getelementptr inbounds float, ptr addrspace(4) %arg1, i64 %tmp2339  %tmp25 = load float, ptr addrspace(4) %tmp24, align 440  %tmp26 = fptrunc float %tmp25 to half41  %tmp27 = insertelement <4 x half> poison, half %tmp26, i32 042  %tmp28 = shufflevector <4 x half> %tmp27, <4 x half> poison, <4 x i32> zeroinitializer43  %vec.A.0 = extractelement <4 x half> %tmp21, i32 044  %vec.B.0 = extractelement <4 x half> %tmp28, i32 045  %vec.C.0 = extractelement <4 x half> %tmp15, i32 046  %vec.res.0 = tail call half @llvm.fmuladd.f16(half %vec.A.0, half %vec.B.0, half %vec.C.0)47  %vec.A.1 = extractelement <4 x half> %tmp21, i32 148  %vec.B.1 = extractelement <4 x half> %tmp28, i32 149  %vec.C.1 = extractelement <4 x half> %tmp15, i32 150  %vec.res.1 = tail call half @llvm.fmuladd.f16(half %vec.A.1, half %vec.B.1, half %vec.C.1)51  %vec.A.2 = extractelement <4 x half> %tmp21, i32 252  %vec.B.2 = extractelement <4 x half> %tmp28, i32 253  %vec.C.2 = extractelement <4 x half> %tmp15, i32 254  %vec.res.2 = tail call half @llvm.fmuladd.f16(half %vec.A.2, half %vec.B.2, half %vec.C.2)55  %vec.A.3 = extractelement <4 x half> %tmp21, i32 356  %vec.B.3 = extractelement <4 x half> %tmp28, i32 357  %vec.C.3 = extractelement <4 x half> %tmp15, i32 358  %vec.res.3 = tail call half @llvm.fmuladd.f16(half %vec.A.3, half %vec.B.3, half %vec.C.3)59  %full.res.0 = insertelement <4 x half> poison, half %vec.res.0, i32 060  %full.res.1 = insertelement <4 x half> %full.res.0, half %vec.res.1, i32 161  %full.res.2 = insertelement <4 x half> %full.res.1, half %vec.res.2, i32 262  %tmp29 = insertelement <4 x half> %full.res.2, half %vec.res.3, i32 363  %tmp30 = add nuw nsw i32 %tmp16, 164  %tmp31 = icmp eq i32 %tmp30, %tmp665  br i1 %tmp31, label %bb32, label %bb1466 67bb32:                                             ; preds = %bb14, %bb868  %tmp33 = phi <4 x half> [ %tmp9, %bb8 ], [ %tmp29, %bb14 ]69  %tmp34 = add nuw nsw i32 %tmp10, 170  %tmp35 = icmp eq i32 %tmp34, %tmp71  br i1 %tmp35, label %bb36, label %bb872 73bb36:                                             ; preds = %bb32, %bb74  %tmp37 = phi <4 x half> [ zeroinitializer, %bb ], [ %tmp33, %bb32 ]75  ret <4 x half> %tmp3776}77 78; Function Attrs: norecurse nounwind readnone79define linkonce_odr hidden <4 x half> @_Z13convert_half4Dv4_h(<4 x i8> %arg) local_unnamed_addr #1 {80bb:81  %tmp = extractelement <4 x i8> %arg, i64 082  %tmp1 = uitofp i8 %tmp to half83  %tmp2 = insertelement <4 x half> poison, half %tmp1, i32 084  %tmp3 = extractelement <4 x i8> %arg, i64 185  %tmp4 = uitofp i8 %tmp3 to half86  %tmp5 = insertelement <4 x half> %tmp2, half %tmp4, i32 187  %tmp6 = extractelement <4 x i8> %arg, i64 288  %tmp7 = uitofp i8 %tmp6 to half89  %tmp8 = insertelement <4 x half> %tmp5, half %tmp7, i32 290  %tmp9 = extractelement <4 x i8> %arg, i64 391  %tmp10 = uitofp i8 %tmp9 to half92  %tmp11 = insertelement <4 x half> %tmp8, half %tmp10, i32 393  ret <4 x half> %tmp1194}95 96declare half @llvm.fmuladd.f16(half, half, half)97 98attributes #0 = { convergent nounwind readonly}99attributes #1 = { norecurse nounwind readnone }100