1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-20 19:42:54 +02:00
llvm-mirror/test/Bitcode
Sanjay Patel fd69991264 [IR] redefine 'UnsafeAlgebra' / 'reassoc' fast-math-flags and add 'trans' fast-math-flag
As discussed on llvm-dev:
http://lists.llvm.org/pipermail/llvm-dev/2016-November/107104.html
and again more recently:
http://lists.llvm.org/pipermail/llvm-dev/2017-October/118118.html

...this is a step in cleaning up our fast-math-flags implementation in IR to better match
the capabilities of both clang's user-visible flags and the backend's flags for SDNode.

As proposed in the above threads, we're replacing the 'UnsafeAlgebra' bit (which had the 
'umbrella' meaning that all flags are set) with a new bit that only applies to algebraic 
reassociation - 'AllowReassoc'.

We're also adding a bit to allow approximations for library functions called 'ApproxFunc' 
(this was initially proposed as 'libm' or similar).

...and we're out of bits. 7 bits ought to be enough for anyone, right? :) FWIW, I did 
look at getting this out of SubclassOptionalData via SubclassData (spacious 16-bits), 
but that's apparently already used for other purposes. Also, I don't think we can just 
add a field to FPMathOperator because Operator is not intended to be instantiated. 
We'll defer movement of FMF to another day.

We keep the 'fast' keyword. I thought about removing that, but seeing IR like this:
%f.fast = fadd reassoc nnan ninf nsz arcp contract afn float %op1, %op2
...made me think we want to keep the shortcut synonym.

Finally, this change is binary incompatible with existing IR as seen in the 
compatibility tests. This statement:
"Newer releases can ignore features from older releases, but they cannot miscompile 
them. For example, if nsw is ever replaced with something else, dropping it would be 
a valid way to upgrade the IR." 
( http://llvm.org/docs/DeveloperPolicy.html#ir-backwards-compatibility )
...provides the flexibility we want to make this change without requiring a new IR 
version. Ie, we're not loosening the FP strictness of existing IR. At worst, we will 
fail to optimize some previously 'fast' code because it's no longer recognized as 
'fast'. This should get fixed as we audit/squash all of the uses of 'isFast()'.

Note: an inter-dependent clang commit to use the new API name should closely follow 
commit.

Differential Revision: https://reviews.llvm.org/D39304

llvm-svn: 317488
2017-11-06 16:27:15 +00:00
..
Inputs Do not want to use BFI to get profile count for sample pgo 2017-08-03 17:11:41 +00:00
2006-12-11-Cast-ConstExpr.ll
2009-06-11-FirstClassAggregateConstant.ll
aggregateInstructions.3.2.ll
aggregateInstructions.3.2.ll.bc
anon-functions.ll
arm32_neon_vcnt_upgrade.ll
atomic-no-syncscope.ll Enhance synchscope representation 2017-07-11 22:23:00 +00:00
atomic-no-syncscope.ll.bc Enhance synchscope representation 2017-07-11 22:23:00 +00:00
atomic.ll Enhance synchscope representation 2017-07-11 22:23:00 +00:00
attributes-3.3.ll
attributes-3.3.ll.bc
attributes.ll Add speculatable function attribute 2017-04-28 20:25:27 +00:00
auto_upgrade_intrinsics.bc
avr-calling-conventions.ll
avr-calling-conventions.ll.bc
binaryFloatInstructions.3.2.ll
binaryFloatInstructions.3.2.ll.bc
binaryIntInstructions.3.2.ll
binaryIntInstructions.3.2.ll.bc
bitcode-wrapper-header-armv7m.ll
bitcode-wrapper-header-x86_64.ll
bitwiseInstructions.3.2.ll
bitwiseInstructions.3.2.ll.bc
blockaddress.ll
calling-conventions.3.2.ll
calling-conventions.3.2.ll.bc
case-ranges-3.3.ll
case-ranges-3.3.ll.bc
cmpxchg-upgrade.ll
cmpxchg-upgrade.ll.bc
cmpxchg.3.6.ll
cmpxchg.3.6.ll.bc
compatibility-3.6.ll [IR] redefine 'UnsafeAlgebra' / 'reassoc' fast-math-flags and add 'trans' fast-math-flag 2017-11-06 16:27:15 +00:00
compatibility-3.6.ll.bc
compatibility-3.7.ll [IR] redefine 'UnsafeAlgebra' / 'reassoc' fast-math-flags and add 'trans' fast-math-flag 2017-11-06 16:27:15 +00:00
compatibility-3.7.ll.bc
compatibility-3.8.ll [IR] redefine 'UnsafeAlgebra' / 'reassoc' fast-math-flags and add 'trans' fast-math-flag 2017-11-06 16:27:15 +00:00
compatibility-3.8.ll.bc
compatibility-3.9.ll [IR] redefine 'UnsafeAlgebra' / 'reassoc' fast-math-flags and add 'trans' fast-math-flag 2017-11-06 16:27:15 +00:00
compatibility-3.9.ll.bc
compatibility-4.0.ll [IR] redefine 'UnsafeAlgebra' / 'reassoc' fast-math-flags and add 'trans' fast-math-flag 2017-11-06 16:27:15 +00:00
compatibility-4.0.ll.bc [Bitcode] Add compatibility test for the 4.0 release 2017-03-17 17:53:26 +00:00
compatibility-5.0.ll [IR] redefine 'UnsafeAlgebra' / 'reassoc' fast-math-flags and add 'trans' fast-math-flag 2017-11-06 16:27:15 +00:00
compatibility-5.0.ll.bc [Bitcode] Add a compatibility test for 5.0.0 bitcode 2017-09-13 21:40:59 +00:00
compatibility.ll [IR] redefine 'UnsafeAlgebra' / 'reassoc' fast-math-flags and add 'trans' fast-math-flag 2017-11-06 16:27:15 +00:00
constantsTest.3.2.ll
constantsTest.3.2.ll.bc
conversionInstructions.3.2.ll
conversionInstructions.3.2.ll.bc
debug-loc-again.ll
dicompileunit-gnu-pubnames.ll IR: Represent -ggnu-pubnames with a flag on the DICompileUnit. 2017-09-12 21:50:41 +00:00
DICompileUnit-no-DWOId.ll
DICompileUnit-no-DWOId.ll.bc
DIExpression-4.0.ll Fix a bug in a historic bitcode testcase. NFC. 2017-09-21 23:14:52 +00:00
DIExpression-4.0.ll.bc Fix a bug in a historic bitcode testcase. NFC. 2017-09-21 23:14:52 +00:00
DIExpression-aggresult.ll Parse and print DIExpressions inline to ease IR and MIR testing 2017-08-23 20:31:27 +00:00
DIExpression-aggresult.ll.bc PR32382: Fix emitting complex DWARF expressions. 2017-04-18 01:21:53 +00:00
DIExpression-deref.ll Fix a bug in a historic bitcode testcase. 2017-09-21 23:14:55 +00:00
DIExpression-deref.ll.bc Fix a bug in a historic bitcode testcase. 2017-09-21 23:14:55 +00:00
DIExpression-minus-upgrade.ll Align definition of DW_OP_plus with DWARF spec [3/3] 2017-06-14 13:14:38 +00:00
DIExpression-minus-upgrade.ll.bc Align definition of DW_OP_plus with DWARF spec [3/3] 2017-06-14 13:14:38 +00:00
diglobalvariable-3.8.ll Parse and print DIExpressions inline to ease IR and MIR testing 2017-08-23 20:31:27 +00:00
diglobalvariable-3.8.ll.bc
DIGlobalVariableExpression2.ll Canonicalize the representation of empty an expression in DIGlobalVariableExpression 2017-08-30 18:06:51 +00:00
DIGlobalVariableExpression2.ll.bc
DIGlobalVariableExpression.ll Canonicalize the representation of empty an expression in DIGlobalVariableExpression 2017-08-30 18:06:51 +00:00
DIGlobalVariableExpression.ll.bc
dilocalvariable-3.9.ll
dilocalvariable-3.9.ll.bc
DILocalVariable-explicit-tags.ll
DILocalVariable-explicit-tags.ll.bc
DINamespace.ll Remove line and file from DINamespace. 2017-04-28 22:25:46 +00:00
DINamespace.ll.bc
DISubprogram-distinct-definitions.ll
DISubprogram-distinct-definitions.ll.bc
dityperefs-3.8.ll
dityperefs-3.8.ll.bc
drop-debug-info.3.5.ll
drop-debug-info.3.5.ll.bc
dso_location.ll Represent runtime preemption in the IR. 2017-10-26 15:00:26 +00:00
extractelement.ll
fcmp-fast.ll
flags.ll
function-encoding-rel-operands.ll
function-local-metadata.3.5.ll
function-local-metadata.3.5.ll.bc
global-variables.3.2.ll
global-variables.3.2.ll.bc
globalvariable-attributes.ll [IR] Allow attributes with global variables 2017-05-11 12:28:08 +00:00
highLevelStructure.3.2.ll
highLevelStructure.3.2.ll.bc
identification.ll
inalloca.ll
invalid-weak-external.ll Object: Downgrade invalid weak externals from an assert fail to an llvm::Error when creating an irsymtab. 2017-09-07 01:33:52 +00:00
invalid.ll
invalid.ll.bc
invalid.test
linkage-types-3.2.ll
linkage-types-3.2.ll.bc
local-linkage-default-visibility.3.4.ll
local-linkage-default-visibility.3.4.ll.bc
mdnodes-distinct-in-post-order.ll
mdnodes-distinct-nodes-break-cycles.ll
mdnodes-distinct-nodes-first.ll
mdnodes-in-post-order.ll
mdstring-high-bits.ll
memInstructions.3.2.ll Enhance synchscope representation 2017-07-11 22:23:00 +00:00
memInstructions.3.2.ll.bc
metadata-2.ll
metadata-function-blocks.ll
metadata-only-empty-string.ll
metadata-strings.ll
metadata.3.5.ll
metadata.3.5.ll.bc
metadata.ll
miscInstructions.3.2.ll
miscInstructions.3.2.ll.bc
module_hash.ll Bitcode: Include any strings added to the string table in the module hash. 2017-07-06 17:56:01 +00:00
module-hash-strtab.ll Bitcode: Include any strings added to the string table in the module hash. 2017-07-06 17:56:01 +00:00
multi-module.ll
null-type.ll
null-type.ll.bc
old-aliases.ll
old-aliases.ll.bc
operand-bundles-bc-analyzer.ll
operand-bundles.ll
padding.test
pr18704.ll
pr18704.ll.bc
PR23310.test
ptest-new.ll
ptest-old.ll [X86] Replace 'REQUIRES: x86' in tests with 'REQUIRES: x86-registered-target' which seems to be the correct way to make them run on an x86 build. 2017-06-04 08:21:58 +00:00
select.ll
shuffle.ll
source-filename.test
ssse3_palignr.ll
standardCIntrinsic.3.2.ll
standardCIntrinsic.3.2.ll.bc
summary_version.ll [ThinLTO] Add FunctionAttrs to ThinLTO index 2017-08-04 16:00:58 +00:00
tailcall.ll
terminatorInstructions.3.2.ll
terminatorInstructions.3.2.ll.bc
thinlto-alias2.ll [ThinLTO] Add FunctionAttrs to ThinLTO index 2017-08-04 16:00:58 +00:00
thinlto-alias.ll [ThinLTO] Add FunctionAttrs to ThinLTO index 2017-08-04 16:00:58 +00:00
thinlto-asm-noimport.ll ModuleSummaryAnalysis: Correctly handle refs from function inline asm to module inline asm. 2017-09-01 16:24:02 +00:00
thinlto-empty-summary-section.ll
thinlto-function-summary-callgraph-pgo.ll [ThinLTO] Add FunctionAttrs to ThinLTO index 2017-08-04 16:00:58 +00:00
thinlto-function-summary-callgraph-profile-summary.ll [ThinLTO] Add FunctionAttrs to ThinLTO index 2017-08-04 16:00:58 +00:00
thinlto-function-summary-callgraph-sample-profile-summary.ll [ThinLTO] Add FunctionAttrs to ThinLTO index 2017-08-04 16:00:58 +00:00
thinlto-function-summary-callgraph.ll [ThinLTO] Add FunctionAttrs to ThinLTO index 2017-08-04 16:00:58 +00:00
thinlto-function-summary-functionattrs.ll [ThinLTO] Add FunctionAttrs to ThinLTO index 2017-08-04 16:00:58 +00:00
thinlto-function-summary-originalnames.ll Bitcode: Add a string table to the bitcode format. 2017-04-17 17:51:36 +00:00
thinlto-function-summary-refgraph.ll [ThinLTO] Add FunctionAttrs to ThinLTO index 2017-08-04 16:00:58 +00:00
thinlto-function-summary.ll Bitcode: Write the irsymtab to disk. 2017-06-27 23:50:11 +00:00
thinlto-summary-globalvar.ll
thinlto-summary-linkage-types.ll
thinlto-summary-local-5.0.ll [LTO][ThinLTO] Use the linker resolutions to mark global values as dso_local. 2017-11-04 17:04:39 +00:00
thinlto-summary-local-5.0.ll.bc [LTO][ThinLTO] Use the linker resolutions to mark global values as dso_local. 2017-11-04 17:04:39 +00:00
thinlto-summary-section.ll
thinlto-type-tests.ll
thinlto-type-vcalls.ll
thinlto-unused-type-tests.ll
upgrade-dbg-value.ll Parse and print DIExpressions inline to ease IR and MIR testing 2017-08-23 20:31:27 +00:00
upgrade-dbg-value.ll.bc Remove the obsolete offset parameter from @llvm.dbg.value 2017-07-28 20:21:02 +00:00
upgrade-debug-info-for-profiling.ll
upgrade-debug-info-for-profiling.ll.bc
upgrade-global-ctors.ll
upgrade-global-ctors.ll.bc
upgrade-importedentity.ll Debug Info: Add a file: field to DIImportedEntity. 2017-07-19 00:09:54 +00:00
upgrade-importedentity.ll.bc Debug Info: Add a file: field to DIImportedEntity. 2017-07-19 00:09:54 +00:00
upgrade-linker-options.ll IR: Replace the "Linker Options" module flag with "llvm.linker.options" named metadata. 2017-06-12 20:10:48 +00:00
upgrade-loop-metadata.ll
upgrade-loop-metadata.ll.bc
upgrade-module-flag.ll [AutoUpgrade] Fix a compatibility issue with module flag 2017-09-15 21:12:14 +00:00
upgrade-pointer-address-space.ll
upgrade-pointer-address-space.ll.bc
upgrade-section-name.ll Bitcode: add an auto-upgrade for LTO section name 2017-10-06 18:06:59 +00:00
upgrade-subprogram-this.ll
upgrade-subprogram-this.ll.bc
upgrade-subprogram.ll
upgrade-subprogram.ll.bc
upgrade-tbaa.ll
use-list-order2.ll
use-list-order.ll
variableArgumentIntrinsic.3.2.ll
variableArgumentIntrinsic.3.2.ll.bc
vectorInstructions.3.2.ll
vectorInstructions.3.2.ll.bc
visibility-styles.3.2.ll
visibility-styles.3.2.ll.bc
vst-forward-declaration.ll
weak-cmpxchg-upgrade.ll
weak-cmpxchg-upgrade.ll.bc
weak-macho-3.5.ll
weak-macho-3.5.ll.bc