xref: /llvm-project/llvm/test/CodeGen/Mips/call-site-info-output.ll (revision 9b0e1c2ca25be58ea29b318d3515e6171f25f0ea)
1;; TODO: Add -enable-new-pm
2;; Test mips32:
3; RUN: llc -mtriple=mips-linux-gnu -emit-call-site-info %s -stop-before=finalize-isel -o -| \
4; RUN: llc -mtriple=mips-linux-gnu -emit-call-site-info -x='mir' -run-pass=finalize-isel -o -| FileCheck %s
5; RUN: llc -mtriple=mips-linux-gnu -emit-call-site-info %s -stop-before=finalize-isel -o -| \
6; RUN: llc -mtriple=mips-linux-gnu -emit-call-site-info -x='mir' -passes=finalize-isel -o -| FileCheck %s
7;; Test mips64:
8; RUN: llc -mtriple=mips64-linux-gnu -emit-call-site-info %s -stop-before=finalize-isel -o -| \
9; RUN: llc -mtriple=mips64-linux-gnu -emit-call-site-info -x='mir' -run-pass=finalize-isel -o -| FileCheck %s --check-prefix=CHECK64
10; RUN: llc -mtriple=mips64-linux-gnu -emit-call-site-info %s -stop-before=finalize-isel -o -| \
11; RUN: llc -mtriple=mips64-linux-gnu -emit-call-site-info -x='mir' -passes=finalize-isel -o -| FileCheck %s --check-prefix=CHECK64
12;; Test mipsel:
13; RUN: llc -mtriple=mipsel-linux-gnu -emit-call-site-info %s -stop-before=finalize-isel -o -| \
14; RUN: llc -mtriple=mipsel-linux-gnu -emit-call-site-info -x='mir' -run-pass=finalize-isel -o -| FileCheck %s
15; RUN: llc -mtriple=mipsel-linux-gnu -emit-call-site-info %s -stop-before=finalize-isel -o -| \
16; RUN: llc -mtriple=mipsel-linux-gnu -emit-call-site-info -x='mir' -passes=finalize-isel -o -| FileCheck %s
17;; Test mips64el:
18; RUN: llc -mtriple=mips64el-linux-gnu -emit-call-site-info %s -stop-before=finalize-isel -o -| \
19; RUN: llc -mtriple=mips64el-linux-gnu -emit-call-site-info -x='mir' -run-pass=finalize-isel -o -| FileCheck %s --check-prefix=CHECK64
20; RUN: llc -mtriple=mips64el-linux-gnu -emit-call-site-info %s -stop-before=finalize-isel -o -| \
21; RUN: llc -mtriple=mips64el-linux-gnu -emit-call-site-info -x='mir' -passes=finalize-isel -o -| FileCheck %s --check-prefix=CHECK64
22
23;; Test call site info MIR parser and printer. Parser assertions and machine
24;; verifier will check the rest.
25;; There is no need to verify call instruction location since it will be
26;; checked by the MIR parser.
27;; Verify that we are able to parse output mir and that we are getting valid call site info.
28
29;; Source:
30;; extern int fn1(int,int,int);
31;; int fn2(int a, int b, int c) {
32;;   int local = fn1(a+b, c, 10);
33;;   if (local > 10)
34;;     return local + 10;
35;;   return local;
36;; }
37
38;; Test mips32 and mips32el:
39; CHECK: name: fn2
40; CHECK: callSites:
41; CHECK-NEXT: bb: {{.*}}, offset: {{.*}}, fwdArgRegs:
42; CHECK-NEXT:   arg: 0, reg: '$a0'
43; CHECK-NEXT:   arg: 1, reg: '$a1'
44; CHECK-NEXT:   arg: 2, reg: '$a2'
45
46;; Test mips64 and mips64el:
47; CHECK64: name: fn2
48; CHECK64: callSites:
49; CHECK64-NEXT: bb: {{.*}}, offset: {{.*}}, fwdArgRegs:
50; CHECK64-NEXT:   arg: 0, reg: '$a0_64'
51; CHECK64-NEXT:   arg: 1, reg: '$a1_64'
52; CHECK64-NEXT:   arg: 2, reg: '$a2_64'
53
54; ModuleID = 'test/CodeGen/Mips/call-site-info-output.c'
55source_filename = "test/CodeGen/Mips/call-site-info-output.c"
56target datalayout = "E-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64"
57target triple = "mips-unknown-linux-gnu"
58; Function Attrs: nounwind
59define dso_local i32 @fn2(i32 signext %a, i32 signext %b, i32 signext %c) local_unnamed_addr {
60entry:
61  %add = add nsw i32 %b, %a
62  %call = tail call i32 @fn1(i32 signext %add, i32 signext %c, i32 signext 10)
63  %cmp = icmp sgt i32 %call, 10
64  %add1 = add nsw i32 %call, 10
65  %retval.0 = select i1 %cmp, i32 %add1, i32 %call
66  ret i32 %retval.0
67}
68declare dso_local i32 @fn1(i32 signext, i32 signext, i32 signext) local_unnamed_addr
69
70!llvm.module.flags = !{!0}
71!llvm.ident = !{!1}
72
73!0 = !{i32 1, !"wchar_size", i32 4}
74!1 = !{!"clang version 11.0.0"}
75