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