104 lines · plain
1; RUN: llc -mtriple=amdgcn-amd-amdhsa -amdgpu-codegenprepare-break-large-phis=0 < %s | FileCheck %s2 3%struct.wombat = type { [4 x i32], [4 x i32], [4 x i32] }4 5define amdgpu_kernel void @wobble(ptr addrspace(1) nocapture readonly %arg) #0 !dbg !4 {6bb:7 %tmp = load i32, ptr addrspace(1) poison, align 48 %tmp1 = load <4 x float>, ptr addrspace(1) poison, align 169 %tmp2 = sext i32 %tmp to i6410 %tmp3 = shufflevector <4 x float> poison, <4 x float> %tmp1, <2 x i32> <i32 3, i32 7>11 %tmp4 = call float @barney() #212 %tmp9 = getelementptr inbounds %struct.wombat, ptr addrspace(1) %arg, i64 %tmp2, i32 2, i64 013 %tmp10 = load i32, ptr addrspace(1) %tmp9, align 414 %tmp11 = sext i32 %tmp10 to i6415 %tmp12 = getelementptr inbounds <2 x float>, ptr addrspace(1) %arg, i64 %tmp1116 %tmp14 = getelementptr inbounds i8, ptr addrspace(1) %arg, i64 017 %tmp16 = getelementptr inbounds <4 x float>, ptr addrspace(1) %tmp14, i64 018 %tmp17 = load <4 x float>, ptr addrspace(1) %tmp16, align 1619 %tmp18 = fsub <4 x float> %tmp17, %tmp1720 %ext = extractelement <4 x float> %tmp18, i32 121 %tmp19 = fadd float %ext, 0.000000e+0022 %tmp20 = fcmp oeq float %tmp19, 0.000000e+0023 br i1 %tmp20, label %bb21, label %bb2524 25bb21: ; preds = %bb26 %tmp22 = fmul <4 x float> %tmp18, %tmp1827 %tmp23 = fadd <4 x float> %tmp22, %tmp2228 %tmp24 = fmul <4 x float> %tmp23, %tmp2329 br label %bb2830 31bb25: ; preds = %bb32 %tmp26 = insertelement <4 x float> poison, float 0.000000e+00, i32 133 %tmp27 = insertelement <4 x float> %tmp26, float poison, i32 234 br label %bb2835 36bb28: ; preds = %bb25, %bb2137 %tmp29 = phi <4 x float> [ %tmp27, %bb25 ], [ %tmp24, %bb21 ]38 store <4 x float> %tmp29, ptr addrspace(5) null, align 1639 %tmp30 = getelementptr inbounds %struct.wombat, ptr addrspace(1) %arg, i64 %tmp2, i32 2, i64 240 %tmp31 = load i32, ptr addrspace(1) %tmp30, align 441 %tmp32 = sext i32 %tmp31 to i6442 %tmp33 = getelementptr inbounds <2 x float>, ptr addrspace(1) %arg, i64 %tmp3243 %tmp35 = load i64, ptr addrspace(1) %tmp33, align 844 %tmp36 = load i32, ptr addrspace(1) poison, align 445 %tmp37 = sext i32 %tmp36 to i6446 %tmp38 = getelementptr inbounds <4 x float>, ptr addrspace(1) null, i64 %tmp3747 %tmp39 = load <4 x float>, ptr addrspace(1) %tmp38, align 1648 %tmp40 = load <4 x float>, ptr addrspace(1) poison, align 1649 %tmp41 = fsub <4 x float> zeroinitializer, %tmp4050 %tmp42 = fsub <4 x float> %tmp39, %tmp4051 %tmp43 = extractelement <4 x float> %tmp40, i32 152 %tmp44 = fsub float %tmp43, 0.053 %tmp45 = fadd float 0.0, 0.054 %tmp46 = fdiv float %tmp44, %tmp4555 %tmp47 = insertelement <4 x float> poison, float %tmp46, i32 056 %tmp48 = shufflevector <4 x float> %tmp47, <4 x float> poison, <4 x i32> zeroinitializer57 %tmp49 = fsub <4 x float> %tmp48, %tmp4058 %tmp50 = extractelement <4 x float> %tmp41, i32 159 %tmp51 = extractelement <4 x float> %tmp42, i32 260 %tmp52 = fmul float 0.0, 0.061 %tmp53 = fadd float %tmp52, 0.062 %tmp54 = fadd float %tmp51, %tmp5363 %tmp55 = extractelement <4 x float> %tmp49, i32 164 %tmp56 = fmul float %tmp55, %tmp5065 %tmp57 = fmul float %tmp54, %tmp5666 %tmp58 = fdiv float %tmp57, 0.000000e+0067 ; Make sure this isn't double emitted68 ; CHECK-NOT: ;DEBUG_VALUE:69 ; CHECK: ;DEBUG_VALUE: foo:var <- [DW_OP_constu 1, DW_OP_swap, DW_OP_xderef]70 ; CHECK-NOT: ;DEBUG_VALUE:71 call void @llvm.dbg.value(metadata <4 x float> %tmp29, metadata !3, metadata !DIExpression(DW_OP_constu, 1, DW_OP_swap, DW_OP_xderef)) #2, !dbg !572 %tmp59 = bitcast i64 %tmp35 to <2 x float>73 %tmp60 = insertelement <2 x float> poison, float %tmp58, i32 074 %tmp61 = shufflevector <2 x float> %tmp60, <2 x float> poison, <2 x i32> zeroinitializer75 %tmp62 = fmul <2 x float> %tmp61, zeroinitializer76 %tmp63 = fsub <2 x float> %tmp62, %tmp5977 %tmp64 = extractelement <2 x float> %tmp63, i64 078 call void @eggs(float %tmp64) #279 store <2 x float> %tmp3, ptr addrspace(1) poison, align 880 store float 0.000000e+00, ptr addrspace(1) poison, align 481 ret void82}83 84declare float @barney() #285declare void @eggs(float) #286declare void @llvm.dbg.value(metadata, metadata, metadata) #187 88attributes #0 = { convergent nounwind "target-cpu"="gfx900" }89attributes #1 = { nounwind readnone speculatable }90attributes #2 = { nounwind }91 92!llvm.dbg.cu = !{!0}93!llvm.module.flags = !{!2}94 95!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug)96!1 = !DIFile(filename: "foo.cl", directory: "/tmp")97!2 = !{i32 2, !"Debug Info Version", i32 3}98!3 = !DILocalVariable(name: "var", arg: 8, scope: !4)99!4 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, type: !12, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: true, unit: !0)100!5 = !DILocation(line: 69, scope: !4)101!12 = !DISubroutineType(types: !13)102!13 = !{null, !14}103!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)104