~louis/ubuntu/trusty/clamav/lp799623_fix_logrotate

« back to all changes in this revision

Viewing changes to libclamav/c++/llvm/test/CodeGen/MBlaze/callind.ll

  • Committer: Bazaar Package Importer
  • Author(s): Scott Kitterman
  • Date: 2010-03-12 11:30:04 UTC
  • mfrom: (0.41.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20100312113004-b0fop4bkycszdd0z
Tags: 0.96~rc1+dfsg-0ubuntu1
* New upstream RC - FFE (LP: #537636):
  - Add OfficialDatabaseOnly option to clamav-base.postinst.in
  - Add LocalSocketGroup option to clamav-base.postinst.in
  - Add LocalSocketMode option to clamav-base.postinst.in
  - Add CrossFilesystems option to clamav-base.postinst.in
  - Add ClamukoScannerCount option to clamav-base.postinst.in
  - Add BytecodeSecurity opiton to clamav-base.postinst.in
  - Add DetectionStatsHostID option to clamav-freshclam.postinst.in
  - Add Bytecode option to clamav-freshclam.postinst.in
  - Add MilterSocketGroup option to clamav-milter.postinst.in
  - Add MilterSocketMode option to clamav-milter.postinst.in
  - Add ReportHostname option to clamav-milter.postinst.in
  - Bump libclamav SO version to 6.1.0 in libclamav6.install
  - Drop clamdmon from clamav.examples (no longer shipped by upstream)
  - Drop libclamav.a from libclamav-dev.install (not built by upstream)
  - Update SO version for lintian override for libclamav6
  - Add new Bytecode Testing Tool, usr/bin/clambc, to clamav.install
  - Add build-depends on python and python-setuptools for new test suite
  - Update debian/copyright for the embedded copy of llvm (using the system
    llvm is not currently feasible)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
; Ensure that indirect calls work and that they are lowered to some
 
2
; sort of branch and link instruction.
 
3
;
 
4
; RUN: llc < %s -march=mblaze -mattr=+mul,+fpu,+barrel | FileCheck %s
 
5
 
 
6
declare i32 @printf(i8*, ...)
 
7
@MSG = internal constant [13 x i8] c"Message: %d\0A\00"
 
8
 
 
9
@FUNS = private constant [5 x i32 (i32,i32)*]
 
10
    [ i32 (i32,i32)* @doadd,
 
11
      i32 (i32,i32)* @dosub,
 
12
      i32 (i32,i32)* @domul,
 
13
      i32 (i32,i32)* @dodiv,
 
14
      i32 (i32,i32)* @dorem ]
 
15
 
 
16
define i32 @doadd(i32 %a, i32 %b)
 
17
{
 
18
    ; CHECK:        doadd:
 
19
    %tmp.0 = add i32 %a, %b
 
20
    ret i32 %tmp.0
 
21
    ; CHECK:        rtsd
 
22
}
 
23
 
 
24
define i32 @dosub(i32 %a, i32 %b)
 
25
{
 
26
    ; CHECK:        dosub:
 
27
    %tmp.0 = sub i32 %a, %b
 
28
    ret i32 %tmp.0
 
29
    ; CHECK:        rtsd
 
30
}
 
31
 
 
32
define i32 @domul(i32 %a, i32 %b)
 
33
{
 
34
    ; CHECK:        domul:
 
35
    %tmp.0 = mul i32 %a, %b
 
36
    ret i32 %tmp.0
 
37
    ; CHECK:        rtsd
 
38
}
 
39
 
 
40
define i32 @dodiv(i32 %a, i32 %b)
 
41
{
 
42
    ; CHECK:        dodiv:
 
43
    %tmp.0 = sdiv i32 %a, %b
 
44
    ret i32 %tmp.0
 
45
    ; CHECK:        rtsd
 
46
}
 
47
 
 
48
define i32 @dorem(i32 %a, i32 %b)
 
49
{
 
50
    ; CHECK:        dorem:
 
51
    %tmp.0 = srem i32 %a, %b
 
52
    ret i32 %tmp.0
 
53
    ; CHECK:        rtsd
 
54
}
 
55
 
 
56
define i32 @callind(i32 %a, i32 %b)
 
57
{
 
58
    ; CHECK:        callind:
 
59
entry:
 
60
    br label %loop
 
61
 
 
62
loop:
 
63
    %tmp.0 = phi i32 [ 0, %entry ], [ %tmp.3, %loop ]
 
64
    %dst.0 = getelementptr [5 x i32 (i32,i32)*]* @FUNS, i32 0, i32 %tmp.0
 
65
    %dst.1 = load i32 (i32,i32)** %dst.0
 
66
    %tmp.1 = call i32 %dst.1(i32 %a, i32 %b)
 
67
    ; CHECK-NOT:    brli
 
68
    ; CHECK-NOT:    brlai
 
69
    ; CHECK:        brl
 
70
 
 
71
    call i32 (i8*,...)* @printf( i8* getelementptr([13 x i8]* @MSG,i32 0,i32 0),
 
72
                                 i32 %tmp.1)
 
73
    ; CHECK:        brl
 
74
 
 
75
    %tmp.2 = add i32 %tmp.0, 1
 
76
    %tmp.3 = urem i32 %tmp.2, 5
 
77
 
 
78
    br label %loop
 
79
    ; CHECK:        br
 
80
}