[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / llvm / test / tools / llvm-reduce / reduce-flags.ll
blob4745f98db46b1544e600a94ce33e2e50953d9d0d
1 ; RUN: llvm-reduce --abort-on-invalid-reduction --delta-passes=instruction-flags --test FileCheck --test-arg --check-prefixes=INTERESTING,CHECK --test-arg %s --test-arg --input-file %s -o %t
2 ; RUN: FileCheck -check-prefixes=RESULT,CHECK %s < %t
4 ; CHECK-LABEL: @add_nuw_nsw_none(
5 ; INTERESTING: = add
6 ; RESULT: add i32
7 define i32 @add_nuw_nsw_none(i32 %a, i32 %b) {
8   %op = add nuw nsw i32 %a, %b
9   ret i32 %op
12 ; CHECK-LABEL: @add_nuw_nsw_keep_nuw(
13 ; INTERESTING: nuw
14 ; RESULT: add nuw i32
15 define i32 @add_nuw_nsw_keep_nuw(i32 %a, i32 %b) {
16   %op = add nuw nsw i32 %a, %b
17   ret i32 %op
20 ; CHECK-LABEL: @add_nuw_nsw_keep_nsw(
21 ; INTERESTING: nuw
22 ; RESULT: add nuw i32
23 define i32 @add_nuw_nsw_keep_nsw(i32 %a, i32 %b) {
24   %op = add nuw nsw i32 %a, %b
25   ret i32 %op
28 ; CHECK-LABEL: @add_nuw_keep_nuw(
29 ; INTERESTING: nuw
30 ; RESULT: add nuw i32
31 define i32 @add_nuw_keep_nuw(i32 %a, i32 %b) {
32   %op = add nuw i32 %a, %b
33   ret i32 %op
36 ; CHECK-LABEL: @add_nsw_keep_nsw(
37 ; INTERESTING: nsw
38 ; RESULT: add nsw i32
39 define i32 @add_nsw_keep_nsw(i32 %a, i32 %b) {
40   %op = add nsw i32 %a, %b
41   ret i32 %op
44 ; CHECK-LABEL: @ashr_exact_drop(
45 ; INTERESTING: = ashr
46 ; RESULT: ashr i32
47 define i32 @ashr_exact_drop(i32 %a, i32 %b) {
48   %op = ashr exact i32 %a, %b
49   ret i32 %op
52 ; CHECK-LABEL: @ashr_exact_keep(
53 ; INTERESTING: exact
54 ; RESULT: ashr exact i32
55 define i32 @ashr_exact_keep(i32 %a, i32 %b) {
56   %op = ashr exact i32 %a, %b
57   ret i32 %op
60 ; CHECK-LABEL: @getelementptr_inbounds_drop(
61 ; INTERESTING: getelementptr
62 ; RESULT: getelementptr i32, ptr %a, i64 %b
63 define ptr @getelementptr_inbounds_drop(ptr %a, i64 %b) {
64   %op = getelementptr inbounds i32, ptr %a, i64 %b
65   ret ptr %op
68 ; CHECK-LABEL: @getelementptr_inbounds_keep(
69 ; INTERESTING: inbounds
70 ; RESULT: getelementptr inbounds i32, ptr %a, i64 %b
71 define ptr @getelementptr_inbounds_keep(ptr %a, i64 %b) {
72   %op = getelementptr inbounds i32, ptr %a, i64 %b
73   ret ptr %op
76 ; CHECK-LABEL: @fadd_reassoc_none(
77 ; INTERESTING: = fadd
78 ; RESULT: fadd float
79 define float @fadd_reassoc_none(float %a, float %b) {
80   %op = fadd reassoc float %a, %b
81   ret float %op
84 ; CHECK-LABEL: @fadd_reassoc_keep(
85 ; INTERESTING: fadd reassoc
86 ; RESULT: fadd reassoc float
87 define float @fadd_reassoc_keep(float %a, float %b) {
88   %op = fadd reassoc float %a, %b
89   ret float %op
92 ; CHECK-LABEL: @fadd_nnan_none(
93 ; INTERESTING: = fadd
94 ; RESULT: fadd float
95 define float @fadd_nnan_none(float %a, float %b) {
96   %op = fadd nnan float %a, %b
97   ret float %op
100 ; CHECK-LABEL: @fadd_nnan_keep(
101 ; INTERESTING: fadd nnan
102 ; RESULT: fadd nnan float
103 define float @fadd_nnan_keep(float %a, float %b) {
104   %op = fadd nnan float %a, %b
105   ret float %op
108 ; CHECK-LABEL: @fadd_ninf_none(
109 ; INTERESTING: = fadd
110 ; RESULT: fadd float
111 define float @fadd_ninf_none(float %a, float %b) {
112   %op = fadd ninf float %a, %b
113   ret float %op
116 ; CHECK-LABEL: @fadd_ninf_keep(
117 ; INTERESTING: fadd ninf
118 ; RESULT: fadd ninf float
119 define float @fadd_ninf_keep(float %a, float %b) {
120   %op = fadd ninf float %a, %b
121   ret float %op
124 ; CHECK-LABEL: @fadd_nsz_none(
125 ; INTERESTING: = fadd
126 ; RESULT: fadd float
127 define float @fadd_nsz_none(float %a, float %b) {
128   %op = fadd nsz float %a, %b
129   ret float %op
132 ; CHECK-LABEL: @fadd_nsz_keep(
133 ; INTERESTING: fadd nsz
134 ; RESULT: fadd nsz float
135 define float @fadd_nsz_keep(float %a, float %b) {
136   %op = fadd nsz float %a, %b
137   ret float %op
140 ; CHECK-LABEL: @fadd_arcp_none(
141 ; INTERESTING: = fadd
142 ; RESULT: fadd float
143 define float @fadd_arcp_none(float %a, float %b) {
144   %op = fadd arcp float %a, %b
145   ret float %op
148 ; CHECK-LABEL: @fadd_arcp_keep(
149 ; INTERESTING: fadd arcp
150 ; RESULT: fadd arcp float
151 define float @fadd_arcp_keep(float %a, float %b) {
152   %op = fadd arcp float %a, %b
153   ret float %op
156 ; CHECK-LABEL: @fadd_contract_none(
157 ; INTERESTING: = fadd
158 ; RESULT: fadd float
159 define float @fadd_contract_none(float %a, float %b) {
160   %op = fadd contract float %a, %b
161   ret float %op
164 ; CHECK-LABEL: @fadd_contract_keep(
165 ; INTERESTING: fadd contract
166 ; RESULT: fadd contract float
167 define float @fadd_contract_keep(float %a, float %b) {
168   %op = fadd contract float %a, %b
169   ret float %op
172 ; CHECK-LABEL: @fadd_afn_none(
173 ; INTERESTING: = fadd
174 ; RESULT: fadd float
175 define float @fadd_afn_none(float %a, float %b) {
176   %op = fadd afn float %a, %b
177   ret float %op
180 ; CHECK-LABEL: @fadd_afn_keep(
181 ; INTERESTING: fadd afn
182 ; RESULT: fadd afn float
183 define float @fadd_afn_keep(float %a, float %b) {
184   %op = fadd afn float %a, %b
185   ret float %op
188 ; CHECK-LABEL: @fadd_fast_none(
189 ; INTERESTING: = fadd
190 ; RESULT: fadd float
191 define float @fadd_fast_none(float %a, float %b) {
192   %op = fadd fast float %a, %b
193   ret float %op
196 ; CHECK-LABEL: @fadd_nnan_ninf_keep_nnan(
197 ; INTERESTING: nnan
198 ; RESULT: fadd nnan float
199 define float @fadd_nnan_ninf_keep_nnan(float %a, float %b) {
200   %op = fadd nnan ninf float %a, %b
201   ret float %op