brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.9 KiB · 4680b39 Raw
109 lines · cpp
1// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --check-globals all --include-generated-funcs --global-value-regex ".*" --version 52// RUN: %clang_cc1 -triple aarch64-linux-gnu -emit-llvm %s -o - | FileCheck %s3 4namespace Name {5int __attribute((target_version("default"))) foo() { return 0; }6}7 8namespace Name {9int __attribute((target_version("sve"))) foo() { return 1; }10}11 12int bar() { return Name::foo(); }13 14namespace OtherName {15int __attribute((target_version("sve"))) foo() { return 2; }16}17 18int baz() { return OtherName::foo(); }19 20namespace Foo {21int bar();22__attribute((target_version("default"))) int bar() { return 0; }23__attribute((target_version("mops"))) int bar() { return 1; }24}25 26//.27// CHECK: @__aarch64_cpu_features = external dso_local global { i64 }28// CHECK: @_ZN4Name3fooEv = weak_odr ifunc i32 (), ptr @_ZN4Name3fooEv.resolver29// CHECK: @_ZN3Foo3barEv = weak_odr ifunc i32 (), ptr @_ZN3Foo3barEv.resolver30//.31// CHECK-LABEL: define dso_local noundef i32 @_ZN4Name3fooEv.default(32// CHECK-SAME: ) #[[ATTR0:[0-9]+]] {33// CHECK-NEXT:  [[ENTRY:.*:]]34// CHECK-NEXT:    ret i32 035//36//37// CHECK-LABEL: define dso_local noundef i32 @_ZN4Name3fooEv._Msve(38// CHECK-SAME: ) #[[ATTR1:[0-9]+]] {39// CHECK-NEXT:  [[ENTRY:.*:]]40// CHECK-NEXT:    ret i32 141//42//43// CHECK-LABEL: define dso_local noundef i32 @_Z3barv(44// CHECK-SAME: ) #[[ATTR2:[0-9]+]] {45// CHECK-NEXT:  [[ENTRY:.*:]]46// CHECK-NEXT:    [[CALL:%.*]] = call noundef i32 @_ZN4Name3fooEv()47// CHECK-NEXT:    ret i32 [[CALL]]48//49//50// CHECK-LABEL: define dso_local noundef i32 @_ZN9OtherName3fooEv._Msve(51// CHECK-SAME: ) #[[ATTR1]] {52// CHECK-NEXT:  [[ENTRY:.*:]]53// CHECK-NEXT:    ret i32 254//55//56// CHECK-LABEL: define dso_local noundef i32 @_Z3bazv(57// CHECK-SAME: ) #[[ATTR2]] {58// CHECK-NEXT:  [[ENTRY:.*:]]59// CHECK-NEXT:    [[CALL:%.*]] = call noundef i32 @_ZN9OtherName3fooEv()60// CHECK-NEXT:    ret i32 [[CALL]]61//62//63// CHECK-LABEL: define dso_local noundef i32 @_ZN3Foo3barEv.default(64// CHECK-SAME: ) #[[ATTR0]] {65// CHECK-NEXT:  [[ENTRY:.*:]]66// CHECK-NEXT:    ret i32 067//68//69// CHECK-LABEL: define dso_local noundef i32 @_ZN3Foo3barEv._Mmops(70// CHECK-SAME: ) #[[ATTR4:[0-9]+]] {71// CHECK-NEXT:  [[ENTRY:.*:]]72// CHECK-NEXT:    ret i32 173//74//75// CHECK-LABEL: define weak_odr ptr @_ZN4Name3fooEv.resolver(76// CHECK-SAME: ) #[[ATTR_RESOLVER:[0-9]+]] comdat {77// CHECK-NEXT:  [[RESOLVER_ENTRY:.*:]]78// CHECK-NEXT:    call void @__init_cpu_features_resolver()79// CHECK-NEXT:    [[TMP0:%.*]] = load i64, ptr @__aarch64_cpu_features, align 880// CHECK-NEXT:    [[TMP1:%.*]] = and i64 [[TMP0]], 107380761681// CHECK-NEXT:    [[TMP2:%.*]] = icmp eq i64 [[TMP1]], 107380761682// CHECK-NEXT:    [[TMP3:%.*]] = and i1 true, [[TMP2]]83// CHECK-NEXT:    br i1 [[TMP3]], label %[[RESOLVER_RETURN:.*]], label %[[RESOLVER_ELSE:.*]]84// CHECK:       [[RESOLVER_RETURN]]:85// CHECK-NEXT:    ret ptr @_ZN4Name3fooEv._Msve86// CHECK:       [[RESOLVER_ELSE]]:87// CHECK-NEXT:    ret ptr @_ZN4Name3fooEv.default88//89//90// CHECK-LABEL: define weak_odr ptr @_ZN3Foo3barEv.resolver(91// CHECK-SAME: ) #[[ATTR_RESOLVER]] comdat {92// CHECK-NEXT:  [[RESOLVER_ENTRY:.*:]]93// CHECK-NEXT:    call void @__init_cpu_features_resolver()94// CHECK-NEXT:    [[TMP0:%.*]] = load i64, ptr @__aarch64_cpu_features, align 895// CHECK-NEXT:    [[TMP1:%.*]] = and i64 [[TMP0]], 57646075230342348896// CHECK-NEXT:    [[TMP2:%.*]] = icmp eq i64 [[TMP1]], 57646075230342348897// CHECK-NEXT:    [[TMP3:%.*]] = and i1 true, [[TMP2]]98// CHECK-NEXT:    br i1 [[TMP3]], label %[[RESOLVER_RETURN:.*]], label %[[RESOLVER_ELSE:.*]]99// CHECK:       [[RESOLVER_RETURN]]:100// CHECK-NEXT:    ret ptr @_ZN3Foo3barEv._Mmops101// CHECK:       [[RESOLVER_ELSE]]:102// CHECK-NEXT:    ret ptr @_ZN3Foo3barEv.default103//104// CHECK: attributes #[[ATTR_RESOLVER]] = { disable_sanitizer_instrumentation }105//.106// CHECK: [[META0:![0-9]+]] = !{i32 1, !"wchar_size", i32 4}107// CHECK: [[META1:![0-9]+]] = !{!"{{.*}}clang version {{.*}}"}108//.109