[docs] Add LICENSE.txt to the root of the mono-repo
[llvm-project.git] / llvm / test / CodeGen / RISCV / machineoutliner.mir
blobe629a626e3d13bb7b753dab8dfad2f3c1065756c
1 # RUN: llc -march=riscv32 -x mir -run-pass=machine-outliner -simplify-mir -verify-machineinstrs < %s \
2 # RUN: | FileCheck -check-prefix=RV32I-MO %s
3 # RUN: llc -march=riscv64 -x mir -run-pass=machine-outliner -simplify-mir -verify-machineinstrs < %s \
4 # RUN: | FileCheck -check-prefix=RV64I-MO %s
6 --- |
7   define i32 @outline_0(i32 %a, i32 %b) { ret i32 0 }
9   define i32 @outline_1(i32 %a, i32 %b) { ret i32 0 }
11   define i32 @outline_2(i32 %a, i32 %b) { ret i32 0 }
13   ; Should not outline linkonce_odr functions which could be deduplicated by the
14   ; linker.
15   define linkonce_odr i32 @dont_outline_0(i32 %a, i32 %b) { ret i32 0 }
17   ; Should not outline functions with named linker sections
18   define i32 @dont_outline_1(i32 %a, i32 %b) section "named" { ret i32 0 }
20   ; Cannot outline if the X5 (t0) register is not free
21   define i32 @dont_outline_2(i32 %a, i32 %b) { ret i32 0 }
23 ...
24 ---
25 name:            outline_0
26 tracksRegLiveness: true
27 body:             |
28   bb.0:
29     liveins: $x10, $x11
30     ; RV32I-MO-LABEL: name: outline_0
31     ; RV32I-MO: $x5 = PseudoCALLReg {{.*}} @OUTLINED_FUNCTION_0
32     ;
33     ; RV64I-MO-LABEL: name: outline_0
34     ; RV64I-MO: $x5 = PseudoCALLReg {{.*}} @OUTLINED_FUNCTION_0
35     $x11 = ORI $x11, 1023
36     $x12 = ADDI $x10, 17
37     $x11 = AND $x12, $x11
38     $x10 = SUB $x10, $x11
39     PseudoRET implicit $x10
41 ...
42 ---
43 name:            outline_1
44 tracksRegLiveness: true
45 body:             |
46   bb.0:
47     liveins: $x10, $x11
48     ; RV32I-MO-LABEL: name: outline_1
49     ; RV32I-MO: $x5 = PseudoCALLReg {{.*}} @OUTLINED_FUNCTION_0
50     ;
51     ; RV64I-MO-LABEL: name: outline_1
52     ; RV64I-MO: $x5 = PseudoCALLReg {{.*}} @OUTLINED_FUNCTION_0
53     $x11 = ORI $x11, 1023
54     $x12 = ADDI $x10, 17
55     $x11 = AND $x12, $x11
56     $x10 = SUB $x10, $x11
57     PseudoRET implicit $x10
59 ...
60 ---
61 name:            outline_2
62 tracksRegLiveness: true
63 body:             |
64   bb.0:
65     liveins: $x10, $x11
66     ; RV32I-MO-LABEL: name: outline_2
67     ; RV32I-MO: $x5 = PseudoCALLReg {{.*}} @OUTLINED_FUNCTION_0
68     ;
69     ; RV64I-MO-LABEL: name: outline_2
70     ; RV64I-MO: $x5 = PseudoCALLReg {{.*}} @OUTLINED_FUNCTION_0
71     $x11 = ORI $x11, 1023
72     $x12 = ADDI $x10, 17
73     $x11 = AND $x12, $x11
74     $x10 = SUB $x10, $x11
75     PseudoRET implicit $x10
77 ...
78 ---
79 name:            dont_outline_0
80 tracksRegLiveness: true
81 body:             |
82   bb.0:
83     liveins: $x10, $x11
84     ; RV32I-MO-LABEL: name: dont_outline_0
85     ; RV32I-MO-NOT: $x5 = PseudoCALLReg {{.*}} @OUTLINED_FUNCTION_0
86     ;
87     ; RV64I-MO-LABEL: name: dont_outline_0
88     ; RV64I-MO-NOT: $x5 = PseudoCALLReg {{.*}} @OUTLINED_FUNCTION_0
89     $x11 = ORI $x11, 1023
90     $x12 = ADDI $x10, 17
91     $x11 = AND $x12, $x11
92     $x10 = SUB $x10, $x11
93     PseudoRET implicit $x10
95 ...
96 ---
97 name:            dont_outline_1
98 tracksRegLiveness: true
99 body:             |
100   bb.0:
101     liveins: $x10, $x11
102     ; RV32I-MO-LABEL: name: dont_outline_1
103     ; RV32I-MO-NOT: $x5 = PseudoCALLReg {{.*}} @OUTLINED_FUNCTION_0
104     ;
105     ; RV64I-MO-LABEL: name: dont_outline_1
106     ; RV64I-MO-NOT: $x5 = PseudoCALLReg {{.*}} @OUTLINED_FUNCTION_0
107     $x11 = ORI $x11, 1023
108     $x12 = ADDI $x10, 17
109     $x11 = AND $x12, $x11
110     $x10 = SUB $x10, $x11
111     PseudoRET implicit $x10
115 name:            dont_outline_2
116 tracksRegLiveness: true
117 body:             |
118   bb.0:
119     liveins: $x10, $x11, $x5
120     ; RV32I-MO-LABEL: name: dont_outline_2
121     ; RV32I-MO-NOT: $x5 = PseudoCALLReg {{.*}} @OUTLINED_FUNCTION_0
122     ;
123     ; RV64I-MO-LABEL: name: dont_outline_2
124     ; RV64I-MO-NOT: $x5 = PseudoCALLReg {{.*}} @OUTLINED_FUNCTION_0
125     $x11 = ORI $x11, 1023
126     $x12 = ADDI $x10, 17
127     $x11 = AND $x12, $x11
128     $x10 = SUB $x10, $x11
129     $x10 = ADD $x10, $x5
130     PseudoRET implicit $x10