File: call-site-info-output.ll

package info (click to toggle)
llvm-toolchain-14 1%3A14.0.6-12
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 1,496,180 kB
  • sloc: cpp: 5,593,972; ansic: 986,872; asm: 585,869; python: 184,223; objc: 72,530; lisp: 31,119; f90: 27,793; javascript: 9,780; pascal: 9,762; sh: 9,482; perl: 7,468; ml: 5,432; awk: 3,523; makefile: 2,538; xml: 953; cs: 573; fortran: 567
file content (65 lines) | stat: -rw-r--r-- 2,708 bytes parent folder | download | duplicates (14)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
;; Test mips32:
; RUN: llc -mtriple=mips-linux-gnu -emit-call-site-info %s -stop-before=finalize-isel -o -| \
; RUN: llc -mtriple=mips-linux-gnu -emit-call-site-info -x='mir' -run-pass=finalize-isel -o -| FileCheck %s
;; Test mips64:
; RUN: llc -mtriple=mips64-linux-gnu -emit-call-site-info %s -stop-before=finalize-isel -o -| \
; RUN: llc -mtriple=mips64-linux-gnu -emit-call-site-info -x='mir' -run-pass=finalize-isel -o -| FileCheck %s --check-prefix=CHECK64
;; Test mipsel:
; RUN: llc -mtriple=mipsel-linux-gnu -emit-call-site-info %s -stop-before=finalize-isel -o -| \
; RUN: llc -mtriple=mipsel-linux-gnu -emit-call-site-info -x='mir' -run-pass=finalize-isel -o -| FileCheck %s
;; Test mips64el:
; RUN: llc -mtriple=mips64el-linux-gnu -emit-call-site-info %s -stop-before=finalize-isel -o -| \
; RUN: llc -mtriple=mips64el-linux-gnu -emit-call-site-info -x='mir' -run-pass=finalize-isel -o -| FileCheck %s --check-prefix=CHECK64

;; Test call site info MIR parser and printer. Parser assertions and machine
;; verifier will check the rest.
;; There is no need to verify call instruction location since it will be
;; checked by the MIR parser.
;; Verify that we are able to parse output mir and that we are getting valid call site info.

;; Source:
;; extern int fn1(int,int,int);
;; int fn2(int a, int b, int c) {
;;   int local = fn1(a+b, c, 10);
;;   if (local > 10)
;;     return local + 10;
;;   return local;
;; }

;; Test mips32 and mips32el:
; CHECK: name: fn2
; CHECK: callSites:
; CHECK-NEXT: bb: {{.*}}, offset: {{.*}}, fwdArgRegs:
; CHECK-NEXT:   arg: 0, reg: '$a0'
; CHECK-NEXT:   arg: 1, reg: '$a1'
; CHECK-NEXT:   arg: 2, reg: '$a2'

;; Test mips64 and mips64el:
; CHECK64: name: fn2
; CHECK64: callSites:
; CHECK64-NEXT: bb: {{.*}}, offset: {{.*}}, fwdArgRegs:
; CHECK64-NEXT:   arg: 0, reg: '$a0_64'
; CHECK64-NEXT:   arg: 1, reg: '$a1_64'
; CHECK64-NEXT:   arg: 2, reg: '$a2_64'

; ModuleID = 'test/CodeGen/Mips/call-site-info-output.c'
source_filename = "test/CodeGen/Mips/call-site-info-output.c"
target datalayout = "E-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64"
target triple = "mips-unknown-linux-gnu"
; Function Attrs: nounwind
define dso_local i32 @fn2(i32 signext %a, i32 signext %b, i32 signext %c) local_unnamed_addr {
entry:
  %add = add nsw i32 %b, %a
  %call = tail call i32 @fn1(i32 signext %add, i32 signext %c, i32 signext 10)
  %cmp = icmp sgt i32 %call, 10
  %add1 = add nsw i32 %call, 10
  %retval.0 = select i1 %cmp, i32 %add1, i32 %call
  ret i32 %retval.0
}
declare dso_local i32 @fn1(i32 signext, i32 signext, i32 signext) local_unnamed_addr

!llvm.module.flags = !{!0}
!llvm.ident = !{!1}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{!"clang version 11.0.0"}