brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.6 KiB · 3330403 Raw
166 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -mcpu=haswell | FileCheck %s -check-prefix=NOAA3; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -mcpu=haswell -combiner-global-alias-analysis=1 | FileCheck %s -check-prefix=AA4 5declare void @llvm.lifetime.start.p0(i64, ptr nocapture)6declare void @llvm.memcpy.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1)7declare void @llvm.lifetime.end.p0(i64, ptr nocapture)8 9%struct.S = type { [16 x i8] }10 11define dso_local void @_Z4SwapP1SS0_(ptr nocapture %a, ptr nocapture %b) local_unnamed_addr {12; NOAA-LABEL: _Z4SwapP1SS0_:13; NOAA:       # %bb.0: # %entry14; NOAA-NEXT:    vmovups (%rdi), %xmm015; NOAA-NEXT:    vmovaps %xmm0, -{{[0-9]+}}(%rsp)16; NOAA-NEXT:    vmovups (%rsi), %xmm017; NOAA-NEXT:    vmovups %xmm0, (%rdi)18; NOAA-NEXT:    vmovaps -{{[0-9]+}}(%rsp), %xmm019; NOAA-NEXT:    vmovups %xmm0, (%rsi)20; NOAA-NEXT:    retq21;22; AA-LABEL: _Z4SwapP1SS0_:23; AA:       # %bb.0: # %entry24; AA-NEXT:    vmovups (%rdi), %xmm025; AA-NEXT:    vmovups (%rsi), %xmm126; AA-NEXT:    vmovups %xmm1, (%rdi)27; AA-NEXT:    vmovups %xmm0, (%rsi)28; AA-NEXT:    retq29entry:30  %tmp.sroa.0 = alloca [16 x i8], align 131  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %tmp.sroa.0)32  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %tmp.sroa.0, ptr align 1 %a, i64 16, i1 false)33  tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %a, ptr align 1 %b, i64 16, i1 false), !tbaa.struct !234  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %b, ptr nonnull align 1 %tmp.sroa.0, i64 16, i1 false)35  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %tmp.sroa.0)36  ret void37}38 39define dso_local void @onealloc_noreadback(ptr nocapture %a, ptr nocapture %b) local_unnamed_addr {40; NOAA-LABEL: onealloc_noreadback:41; NOAA:       # %bb.0: # %entry42; NOAA-NEXT:    retq43;44; AA-LABEL: onealloc_noreadback:45; AA:       # %bb.0: # %entry46; AA-NEXT:    retq47entry:48  %alloc = alloca [16 x i8], i8 2, align 149  %part2 = getelementptr inbounds [16 x i8], ptr %alloc, i64 1, i64 050  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %alloc)51  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %alloc, ptr align 1 %a, i64 16, i1 false)52  tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %part2, ptr align 1 %b, i64 16, i1 false)53  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %alloc)54  ret void55}56 57 58define dso_local void @twoallocs_trivial(ptr nocapture %a, ptr nocapture %b) local_unnamed_addr {59; NOAA-LABEL: twoallocs_trivial:60; NOAA:       # %bb.0: # %entry61; NOAA-NEXT:    retq62;63; AA-LABEL: twoallocs_trivial:64; AA:       # %bb.0: # %entry65; AA-NEXT:    retq66entry:67  %alloc1 = alloca [16 x i8], align 168  %alloc2 = alloca [16 x i8], align 169  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %alloc1)70  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %alloc2)71  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %alloc1, ptr align 1 %a, i64 16, i1 false)72  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %alloc2, ptr align 1 %b, i64 16, i1 false)73  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %alloc1)74  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %alloc2)75  ret void76}77 78define dso_local void @twoallocs(ptr nocapture %a, ptr nocapture %b) local_unnamed_addr {79; NOAA-LABEL: twoallocs:80; NOAA:       # %bb.0: # %entry81; NOAA-NEXT:    vmovups (%rdi), %xmm082; NOAA-NEXT:    vmovaps %xmm0, -{{[0-9]+}}(%rsp)83; NOAA-NEXT:    vmovups %xmm0, (%rsi)84; NOAA-NEXT:    retq85;86; AA-LABEL: twoallocs:87; AA:       # %bb.0: # %entry88; AA-NEXT:    vmovups (%rdi), %xmm089; AA-NEXT:    vmovaps %xmm0, -{{[0-9]+}}(%rsp)90; AA-NEXT:    vmovups %xmm0, (%rsi)91; AA-NEXT:    retq92entry:93  %alloc1 = alloca [16 x i8], align 194  %alloc2 = alloca [16 x i8], align 195  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %alloc1)96  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %alloc2)97  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %alloc2, ptr align 1 %a, i64 16, i1 false)98  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %alloc1)99  tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %b, ptr align 1 %alloc2, i64 16, i1 false)100  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %alloc2)101  ret void102}103 104define dso_local void @onealloc_readback_1(ptr nocapture %a, ptr nocapture %b) local_unnamed_addr {105; NOAA-LABEL: onealloc_readback_1:106; NOAA:       # %bb.0: # %entry107; NOAA-NEXT:    vmovups (%rdi), %xmm0108; NOAA-NEXT:    vmovaps %xmm0, -{{[0-9]+}}(%rsp)109; NOAA-NEXT:    vmovups (%rsi), %xmm0110; NOAA-NEXT:    vmovaps %xmm0, -{{[0-9]+}}(%rsp)111; NOAA-NEXT:    vmovups %xmm0, (%rdi)112; NOAA-NEXT:    retq113;114; AA-LABEL: onealloc_readback_1:115; AA:       # %bb.0: # %entry116; AA-NEXT:    vmovups (%rsi), %xmm0117; AA-NEXT:    vmovups %xmm0, (%rdi)118; AA-NEXT:    retq119entry:120  %alloc = alloca [16 x i8], i8 2, align 1121  %part1 = getelementptr inbounds [16 x i8], ptr %alloc, i64 1, i64 0122  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %alloc)123  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %part1, ptr align 1 %a, i64 16, i1 false)124  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %alloc, ptr align 1 %b, i64 16, i1 false)125  tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %a, ptr align 1 %alloc, i64 16, i1 false)126  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %alloc)127  ret void128}129 130define dso_local void @onealloc_readback_2(ptr nocapture %a, ptr nocapture %b) local_unnamed_addr {131; NOAA-LABEL: onealloc_readback_2:132; NOAA:       # %bb.0: # %entry133; NOAA-NEXT:    vmovups (%rdi), %xmm0134; NOAA-NEXT:    vmovaps %xmm0, -{{[0-9]+}}(%rsp)135; NOAA-NEXT:    vmovups (%rsi), %xmm0136; NOAA-NEXT:    vmovaps %xmm0, -{{[0-9]+}}(%rsp)137; NOAA-NEXT:    vmovups %xmm0, (%rdi)138; NOAA-NEXT:    retq139;140; AA-LABEL: onealloc_readback_2:141; AA:       # %bb.0: # %entry142; AA-NEXT:    vmovups (%rsi), %xmm0143; AA-NEXT:    vmovups %xmm0, (%rdi)144; AA-NEXT:    retq145entry:146  %alloc = alloca [16 x i8], i8 2, align 1147  %part2 = getelementptr inbounds [16 x i8], ptr %alloc, i64 1, i64 0148  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %alloc)149  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %alloc, ptr align 1 %a, i64 16, i1 false)150  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %part2, ptr align 1 %b, i64 16, i1 false)151  tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %a, ptr align 1 %part2, i64 16, i1 false)152  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %alloc)153  ret void154}155 156 157!llvm.module.flags = !{!0}158!llvm.ident = !{!1}159 160!0 = !{i32 1, !"wchar_size", i32 4}161!1 = !{!"clang version 9.0.0 (trunk 352631) (llvm/trunk 352632)"}162!2 = !{i64 0, i64 16, !3}163!3 = !{!4, !4, i64 0}164!4 = !{!"omnipotent char", !5, i64 0}165!5 = !{!"Simple C++ TBAA"}166