xref: /llvm-project/llvm/test/Transforms/SampleProfile/merge-function-attributes.ll (revision 8f4e5474de74169c6c2f7dddbb84c93d3e3ccb07)
1*8f4e5474SKazu Hirata; REQUIRES: x86_64-linux
249d66d9fSKazu Hirata; RUN: opt < %s -passes=sample-profile -sample-profile-file=%S/Inputs/merge-function-attributes.afdo -S | FileCheck %s
349d66d9fSKazu Hirata
449d66d9fSKazu Hiratatarget datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
549d66d9fSKazu Hiratatarget triple = "x86_64-grtev4-linux-gnu"
649d66d9fSKazu Hirata
749d66d9fSKazu Hirata; Verify that yyy is inlined into xxx with the function attibutes properly merged.
849d66d9fSKazu Hirata; CHECK:      define <8 x double> @xxx(){{.*}} #[[ATTRNO:[0-9]+]]
949d66d9fSKazu Hirata; CHECK-NEXT: call <8 x double> @llvm.x86.avx512.mask.rndscale.pd.512
1049d66d9fSKazu Hiratadefine <8 x double> @xxx() #0 !dbg !5 {
1149d66d9fSKazu Hirata  %x = call <8 x double> @yyy(), !dbg !7
1249d66d9fSKazu Hirata  ret <8 x double> %x
1349d66d9fSKazu Hirata}
1449d66d9fSKazu Hirata
1549d66d9fSKazu Hiratadefine available_externally <8 x double> @yyy() #1 !dbg !8 {
1649d66d9fSKazu Hirata  %y = call <8 x double> @llvm.x86.avx512.mask.rndscale.pd.512(<8 x double> zeroinitializer, i32 9, <8 x double> zeroinitializer, i8 -1, i32 4)
1749d66d9fSKazu Hirata  ret <8 x double> %y
1849d66d9fSKazu Hirata}
1949d66d9fSKazu Hirata
2049d66d9fSKazu Hirata; Function Attrs: nounwind readnone
2149d66d9fSKazu Hiratadeclare <8 x double> @llvm.x86.avx512.mask.rndscale.pd.512(<8 x double>, i32 immarg, <8 x double>, i8, i32 immarg) #2
2249d66d9fSKazu Hirata
2349d66d9fSKazu Hirata; CHECK: attributes #[[ATTRNO]] = { "min-legal-vector-width"="512"
2449d66d9fSKazu Hirataattributes #0 = { "min-legal-vector-width"="128" "prefer-vector-width"="128" "target-features"="+avx512vl" "use-sample-profile" }
2549d66d9fSKazu Hirataattributes #1 = { "min-legal-vector-width"="512" "use-sample-profile" }
2649d66d9fSKazu Hirataattributes #2 = { nounwind readnone }
2749d66d9fSKazu Hirata
2849d66d9fSKazu Hirata!llvm.dbg.cu = !{!0, !3}
2949d66d9fSKazu Hirata!llvm.module.flags = !{!4}
3049d66d9fSKazu Hirata
3149d66d9fSKazu Hirata!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus_14, file: !1, producer: "clang", isOptimized: true, runtimeVersion: 0, emissionKind: NoDebug, enums: !2, splitDebugInlining: false, debugInfoForProfiling: true, nameTableKind: None)
3249d66d9fSKazu Hirata!1 = !DIFile(filename: "test.cc", directory: "/proc/self/cwd")
3349d66d9fSKazu Hirata!2 = !{}
3449d66d9fSKazu Hirata!3 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus_14, file: !1, producer: "clang", isOptimized: true, runtimeVersion: 0, emissionKind: NoDebug, splitDebugInlining: false, debugInfoForProfiling: true, nameTableKind: None)
3549d66d9fSKazu Hirata!4 = !{i32 2, !"Debug Info Version", i32 3}
3649d66d9fSKazu Hirata!5 = distinct !DISubprogram(name: "xxx", linkageName: "xxx", scope: !1, file: !1, line: 11, type: !6, scopeLine: 14, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
3749d66d9fSKazu Hirata!6 = !DISubroutineType(types: !2)
3849d66d9fSKazu Hirata!7 = !DILocation(line: 78, column: 10, scope: !5)
3949d66d9fSKazu Hirata!8 = distinct !DISubprogram(name: "yyy", linkageName: "yyy", scope: !1, file: !1, line: 270, type: !6, scopeLine: 273, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !3, retainedNodes: !2)
40