xref: /llvm-project/llvm/test/Transforms/Inline/RISCV/inline-target-features.ll (revision 05a7b22a0132bebe99aabee591d3acc99d793ae1)
1*05a7b22aSJianjian Guan; RUN: opt < %s -mtriple=riscv64-unknown-linux-gnu -S -passes=inline | FileCheck %s
2*05a7b22aSJianjian Guan; RUN: opt < %s -mtriple=riscv64-unknown-linux-gnu -S -passes='cgscc(inline)' | FileCheck %s
3*05a7b22aSJianjian Guan; Check that we only inline when we have compatible target attributes.
4*05a7b22aSJianjian Guan
5*05a7b22aSJianjian Guantarget datalayout = "e-m:e-p:64:64-i64:64-i128:128-n64-S128"
6*05a7b22aSJianjian Guantarget triple = "riscv64-unknown-linux-gnu"
7*05a7b22aSJianjian Guan
8*05a7b22aSJianjian Guandefine i32 @foo() #0 {
9*05a7b22aSJianjian Guanentry:
10*05a7b22aSJianjian Guan  %call = call i32 (...) @baz()
11*05a7b22aSJianjian Guan  ret i32 %call
12*05a7b22aSJianjian Guan; CHECK-LABEL: foo
13*05a7b22aSJianjian Guan; CHECK: call i32 (...) @baz()
14*05a7b22aSJianjian Guan}
15*05a7b22aSJianjian Guandeclare i32 @baz(...) #0
16*05a7b22aSJianjian Guan
17*05a7b22aSJianjian Guandefine i32 @bar() #1 {
18*05a7b22aSJianjian Guanentry:
19*05a7b22aSJianjian Guan  %call = call i32 @foo()
20*05a7b22aSJianjian Guan  ret i32 %call
21*05a7b22aSJianjian Guan; CHECK-LABEL: bar
22*05a7b22aSJianjian Guan; CHECK: call i32 (...) @baz()
23*05a7b22aSJianjian Guan}
24*05a7b22aSJianjian Guan
25*05a7b22aSJianjian Guandefine i32 @qux() #0 {
26*05a7b22aSJianjian Guanentry:
27*05a7b22aSJianjian Guan  %call = call i32 @bar()
28*05a7b22aSJianjian Guan  ret i32 %call
29*05a7b22aSJianjian Guan; CHECK-LABEL: qux
30*05a7b22aSJianjian Guan; CHECK: call i32 @bar()
31*05a7b22aSJianjian Guan}
32*05a7b22aSJianjian Guan
33*05a7b22aSJianjian Guanattributes #0 = { "target-cpu"="generic-rv64" "target-features"="+f,+d" }
34*05a7b22aSJianjian Guanattributes #1 = { "target-cpu"="generic-rv64" "target-features"="+f,+d,+m,+v" }
35