brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.2 KiB · de08734 Raw
132 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function caller --check-globals all --version 42; RUN: opt --passes=globalopt -o - -S < %s | FileCheck %s --implicit-check-not=trivial\.ifunc --implicit-check-not=dead_ifunc3 4target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"5target triple = "aarch64-unknown-linux-gnu"6 7@trivial.ifunc = internal ifunc void (), ptr @trivial.resolver8;.9; CHECK: @unknown_condition = external local_unnamed_addr global i110; CHECK: @alias_decl = weak_odr alias void (), ptr @aliased_decl.ifunc11; CHECK: @alias_def = weak_odr alias void (), ptr @aliased_def._Msimd12; CHECK: @external_ifunc.ifunc = dso_local ifunc void (), ptr @external_ifunc.resolver13; CHECK: @complex.ifunc = internal ifunc void (), ptr @complex.resolver14; CHECK: @sideeffects.ifunc = internal ifunc void (), ptr @sideeffects.resolver15; CHECK: @interposable_ifunc.ifunc = internal ifunc void (), ptr @interposable_ifunc.resolver16; CHECK: @interposable_resolver.ifunc = weak ifunc void (), ptr @interposable_resolver.resolver17; CHECK: @aliased_decl.ifunc = weak_odr ifunc void (), ptr @aliased_decl.resolver18; CHECK: @aliased_def.ifunc = weak_odr ifunc void (), ptr @aliased_def.resolver19;.20define ptr @trivial.resolver() {21  ret ptr @trivial._Msimd22}23define void @trivial._Msimd() {24  ret void25}26define void @trivial.default() {27  ret void28}29 30 31@dead_ifunc.ifunc = internal ifunc void (), ptr @trivial.resolver32 33@external_ifunc.ifunc = dso_local ifunc void (), ptr @external_ifunc.resolver34define ptr @external_ifunc.resolver() {35  ret ptr @external_ifunc._Msimd36}37define void @external_ifunc._Msimd() {38  ret void39}40define void @external_ifunc.default() {41  ret void42}43 44@unknown_condition = external global i145@complex.ifunc = internal ifunc void (), ptr @complex.resolver46define ptr @complex.resolver() {47entry:48  %v = load i1, ptr @unknown_condition49  br i1 %v, label %fast, label %slow50fast:51  ret ptr @complex._Msimd52slow:53  ret ptr @complex._Msimd54}55define void @complex._Msimd() {56  ret void57}58define void @complex.default() {59  ret void60}61 62@sideeffects.ifunc = internal ifunc void (), ptr @sideeffects.resolver63define ptr @sideeffects.resolver() {64  store i1 0, ptr @unknown_condition65  ret ptr @sideeffects.default66}67define void @sideeffects._Msimd() {68  ret void69}70define void @sideeffects.default() {71  ret void72}73 74@interposable_ifunc.ifunc = internal ifunc void (), ptr @interposable_ifunc.resolver75define weak ptr @interposable_ifunc.resolver() {76  ret ptr @interposable_ifunc.resolver77}78define void @interposable_ifunc._Msimd() {79  ret void80}81define void @interposable_ifunc.default() {82  ret void83}84 85@interposable_resolver.ifunc = weak ifunc void (), ptr @interposable_resolver.resolver86define ptr @interposable_resolver.resolver() {87  ret ptr @interposable_resolver.resolver88}89define void @interposable_resolver._Msimd() {90  ret void91}92define void @interposable_resolver.default() {93  ret void94}95 96@alias_decl = weak_odr alias void (), ptr @aliased_decl.ifunc97@aliased_decl.ifunc = weak_odr ifunc void (), ptr @aliased_decl.resolver98declare void @aliased_decl._Msimd()99define ptr @aliased_decl.resolver() {100  ret ptr @aliased_decl._Msimd101}102 103@alias_def = weak_odr alias void (), ptr @aliased_def.ifunc104@aliased_def.ifunc = weak_odr ifunc void (), ptr @aliased_def.resolver105define void @aliased_def._Msimd() { ret void }106define ptr @aliased_def.resolver() {107  ret ptr @aliased_def._Msimd108}109 110define void @caller() {111; CHECK-LABEL: define void @caller() local_unnamed_addr {112; CHECK-NEXT:    call void @trivial._Msimd()113; CHECK-NEXT:    call void @external_ifunc._Msimd()114; CHECK-NEXT:    call void @complex.ifunc()115; CHECK-NEXT:    call void @sideeffects.ifunc()116; CHECK-NEXT:    call void @interposable_ifunc.ifunc()117; CHECK-NEXT:    call void @interposable_resolver.ifunc()118; CHECK-NEXT:    call void @aliased_decl.ifunc()119; CHECK-NEXT:    call void @aliased_def._Msimd()120; CHECK-NEXT:    ret void121;122  call void @trivial.ifunc()123  call void @external_ifunc.ifunc()124  call void @complex.ifunc()125  call void @sideeffects.ifunc()126  call void @interposable_ifunc.ifunc()127  call void @interposable_resolver.ifunc()128  call void @aliased_decl.ifunc()129  call void @aliased_def.ifunc()130  ret void131}132