brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.8 KiB · 7cf7736 Raw
98 lines · plain
1; RUN: llc -verify-machineinstrs < %s -relocation-model=pic | FileCheck %s2target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32:64"3target triple = "powerpc64-unknown-freebsd10.0"4 5@a = common global i32 0, align 46 7define void @test1(i32 %c) nounwind {8entry:9  br label %for.body10 11for.body:                                         ; preds = %for.body, %entry12  %i.01 = phi i32 [ 0, %entry ], [ %inc, %for.body ]13  %0 = load volatile i32, ptr @a, align 414  %add = add nsw i32 %0, %c15  store volatile i32 %add, ptr @a, align 416  %inc = add nsw i32 %i.01, 117  %exitcond = icmp eq i32 %inc, 204818  br i1 %exitcond, label %for.end, label %for.body19 20for.end:                                          ; preds = %for.body21  ret void22; CHECK: @test123; CHECK-NOT: or 3, 3, 324; CHECK: mtctr25; CHECK-NOT: addi {[0-9]+}26; CHECK-NOT: cmplwi27; CHECK: bdnz28}29 30define void @test2(i32 %c, i32 %d) nounwind {31entry:32  %cmp1 = icmp sgt i32 %d, 033  br i1 %cmp1, label %for.body, label %for.end34 35for.body:                                         ; preds = %entry, %for.body36  %i.02 = phi i32 [ %inc, %for.body ], [ 0, %entry ]37  %0 = load volatile i32, ptr @a, align 438  %add = add nsw i32 %0, %c39  store volatile i32 %add, ptr @a, align 440  %inc = add nsw i32 %i.02, 141  %exitcond = icmp eq i32 %inc, %d42  br i1 %exitcond, label %for.end, label %for.body43 44for.end:                                          ; preds = %for.body, %entry45  ret void46; CHECK: @test247; CHECK: mtctr48; CHECK-NOT: addi {[0-9]+}49; CHECK-NOT: cmplwi50; CHECK: bdnz51}52 53define void @test3(i32 %c, i32 %d) nounwind {54entry:55  %cmp1 = icmp sgt i32 %d, 056  br i1 %cmp1, label %for.body, label %for.end57 58for.body:                                         ; preds = %entry, %for.body59  %i.02 = phi i32 [ %inc, %for.body ], [ 0, %entry ]60  %mul = mul nsw i32 %i.02, %c61  %0 = load volatile i32, ptr @a, align 462  %add = add nsw i32 %0, %mul63  store volatile i32 %add, ptr @a, align 464  %inc = add nsw i32 %i.02, 165  %exitcond = icmp eq i32 %inc, %d66  br i1 %exitcond, label %for.end, label %for.body67 68for.end:                                          ; preds = %for.body, %entry69  ret void70; CHECK: @test371; CHECK: mtctr72; CHECK-NOT: addi {[0-9]+}73; CHECK-NOT: cmplwi74; CHECK: bdnz75}76 77@tls_var = external thread_local global i878 79define i32 @test4(i32 %inp) {80entry:81  br label %for.body82 83for.body:                                         ; preds = %for.body, %entry84  %phi = phi i32 [ %dec, %for.body ], [ %inp, %entry ]85  %load = ptrtoint ptr @tls_var to i3286  %val = add i32 %load, %phi87  %dec = add i32 %phi, -188  %cmp = icmp sgt i32 %phi, 189  br i1 %cmp, label %for.body, label %return90 91return:                                           ; preds = %for.body92  ret i32 %val93; CHECK-LABEL: @test494; CHECK: mtctr95; CHECK: bdnz96; CHECK: __tls_get_addr97}98