1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-20 03:23:01 +02:00
llvm-mirror/include/llvm/IR
Simon Pilgrim e2f3b489b8 [X86][SSE] Reimplement SSE fp2si conversion intrinsics instead of using generic IR
D20859 and D20860 attempted to replace the SSE (V)CVTTPS2DQ and VCVTTPD2DQ truncating conversions with generic IR instead.

It turns out that the behaviour of these intrinsics is different enough from generic IR that this will cause problems, INF/NAN/out of range values are guaranteed to result in a 0x80000000 value - which plays havoc with constant folding which converts them to either zero or UNDEF. This is also an issue with the scalar implementations (which were already generic IR and what I was trying to match).

This patch changes both scalar and packed versions back to using x86-specific builtins.

It also deals with the other scalar conversion cases that are runtime rounding mode dependent and can have similar issues with constant folding.

A companion clang patch is at D22105

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

llvm-svn: 275981
2016-07-19 15:07:43 +00:00
..
Argument.h Swift Calling Convention: add swifterror attribute. 2016-04-01 21:41:15 +00:00
AssemblyAnnotationWriter.h
Attributes.h Add getReturnedArgOperand to Call/InvokeInst, CallSite 2016-07-10 23:01:32 +00:00
Attributes.td Add writeonly IR attribute 2016-07-04 08:01:29 +00:00
AutoUpgrade.h Objective-C Class Properties: Autoupgrade "Class Properties" module flag. 2016-05-25 23:14:48 +00:00
BasicBlock.h Revert "[SimplifyCFG] Extend TryToSimplifyUncondBranchFromEmptyBlock for empty block including lifetime intrinsics" 2016-05-02 19:43:22 +00:00
CallingConv.h AMDGPU/SI: Add amdgpu_kernel calling convention. Part 1. 2016-05-06 09:07:29 +00:00
CallSite.h Add getReturnedArgOperand to Call/InvokeInst, CallSite 2016-07-10 23:01:32 +00:00
CFG.h
CMakeLists.txt
Comdat.h [NFC] Remove some dead code: 2016-05-11 16:38:40 +00:00
Constant.h Simplify handleOperandChangeImpl() removing last argument (NFC) 2016-02-10 22:47:15 +00:00
ConstantFolder.h
ConstantRange.h [ConstantRange] Add an getEquivalentICmp helper 2016-05-19 03:53:06 +00:00
Constants.h [IR] Require ArrayRef of 'uint32_t' instead of 'int' for the mask argument for one of the signatures of CreateShuffleVector. This better emphasises that you can't use it for the -1 as undef behavior. 2016-06-12 00:41:19 +00:00
DataLayout.h [IR] Make getIndexedOffsetInType return a signed result 2016-07-13 03:42:38 +00:00
DebugInfo.h DebugInfo: Remove MDString-based type references 2016-04-23 21:08:00 +00:00
DebugInfoFlags.def [CodeView] Implement support for bitfields in LLVM 2016-06-30 03:00:20 +00:00
DebugInfoMetadata.h [codeview] Add DISubprogram::ThisAdjustment 2016-07-01 02:41:21 +00:00
DebugLoc.h
DerivedTypes.h don't repeat names in documentation comments; NFC 2016-02-25 15:55:28 +00:00
DiagnosticInfo.h [OptRemark,LDist] RFC: Add hotness attribute 2016-07-15 17:23:20 +00:00
DiagnosticPrinter.h
DIBuilder.h [codeview] Add DISubprogram::ThisAdjustment 2016-07-01 02:41:21 +00:00
Dominators.h Allow BasicBlockEdge to be used in DenseMap 2016-07-11 04:37:53 +00:00
Function.h Style: drop some unnecessary ';' [NFC] 2016-07-19 09:01:46 +00:00
GetElementPtrTypeIterator.h [opaque pointer types] [NFC] gep_type_{begin,end} now take source element type and address space. 2016-01-22 01:33:43 +00:00
GlobalAlias.h [GlobalDCE, Misc] Don't remove functions referenced by ifuncs 2016-05-04 00:20:48 +00:00
GlobalIFunc.h Remove some unneeded headers and replace some headers with forward class declarations (NFC) 2016-04-16 07:51:28 +00:00
GlobalIndirectSymbol.h [GlobalDCE, Misc] Don't remove functions referenced by ifuncs 2016-05-04 00:20:48 +00:00
GlobalObject.h IR: New representation for CFI and virtual call optimization pass metadata. 2016-06-24 21:21:32 +00:00
GlobalValue.h IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
GlobalVariable.h IR: Call dropAllReferences from GlobalVariable's destructor. 2016-06-08 00:13:39 +00:00
GVMaterializer.h [ThinLTO] Remove post-pass metadata linking support 2016-03-29 18:24:19 +00:00
InlineAsm.h [inlineasm] Propagate operand constraints to the backend 2016-07-18 13:17:31 +00:00
InstIterator.h
InstrTypes.h Style: drop some unnecessary ';' [NFC] 2016-07-19 09:01:46 +00:00
Instruction.def [IR] Remove terminatepad 2015-12-14 18:34:23 +00:00
Instruction.h [AliasAnalysis] Give back AA results for fence instructions 2016-07-15 17:19:24 +00:00
Instructions.h Style: drop some unnecessary ';' [NFC] 2016-07-19 09:01:46 +00:00
InstVisitor.h [IR] Remove terminatepad 2015-12-14 18:34:23 +00:00
IntrinsicInst.h [NFC] Remove some dead code: 2016-05-11 16:38:40 +00:00
Intrinsics.h Remangle intrinsics names when types are renamed 2016-06-24 15:10:29 +00:00
Intrinsics.td Add a 'Returned' intrinsic property corresponding to the 'returned' argument attribute 2016-07-11 01:28:42 +00:00
IntrinsicsAArch64.td IR: Set TargetPrefix for some X86 and AArch64 intrinsics where it was missing 2016-07-01 22:07:11 +00:00
IntrinsicsAMDGPU.td AMDGPU: Add intrinsic for s_flbit_i32/v_ffbh_i32 2016-07-18 18:35:05 +00:00
IntrinsicsARM.td [ARM] Add support for mrrc/mrrc2 intrinsics. 2016-06-17 00:52:41 +00:00
IntrinsicsBPF.td
IntrinsicsHexagon.td [Hexagon] Handle operand type differences for A2_tfrpi 2016-05-05 15:29:47 +00:00
IntrinsicsMips.td Split IntrReadArgMem into IntrReadMem and IntrArgMemOnly 2016-04-21 17:48:02 +00:00
IntrinsicsNVVM.td IR: Set a TargetPrefix for nvvm intrinsics 2016-07-08 17:25:18 +00:00
IntrinsicsPowerPC.td Split IntrReadArgMem into IntrReadMem and IntrArgMemOnly 2016-04-21 17:48:02 +00:00
IntrinsicsSystemZ.td [SystemZ] Utilize Test Data Class instructions. 2016-07-10 14:41:22 +00:00
IntrinsicsWebAssembly.td [WebAssembly] Rename memory_size intrinsic to current_memory 2016-05-02 17:25:22 +00:00
IntrinsicsX86.td [X86][SSE] Reimplement SSE fp2si conversion intrinsics instead of using generic IR 2016-07-19 15:07:43 +00:00
IntrinsicsXCore.td
IRBuilder.h Support arbitrary addrspace pointers in masked load/store intrinsics 2016-06-28 18:27:25 +00:00
IRPrintingPasses.h [PM] Remove support for omitting the AnalysisManager argument to new 2016-06-17 00:11:01 +00:00
LegacyPassManager.h
LegacyPassManagers.h [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
LegacyPassNameParser.h
LLVMContext.h [OptRemark,LDist] RFC: Add hotness attribute 2016-07-15 17:23:20 +00:00
Mangler.h Remove some unneeded headers and replace some headers with forward class declarations (NFC) 2016-04-16 07:51:28 +00:00
MDBuilder.h
Metadata.def BitcodeReader: Avoid referencing unresolved nodes from distinct ones 2016-04-23 04:15:56 +00:00
Metadata.h BitcodeReader: Avoid referencing unresolved nodes from distinct ones 2016-04-23 04:15:56 +00:00
Module.h IR: Introduce Module::global_objects(). 2016-06-22 20:29:42 +00:00
ModuleSlotTracker.h IR: Avoid mallocs in constructor of ModuleSlotTracker 2016-04-20 19:05:59 +00:00
ModuleSummaryIndex.h [ThinLTO] Perform profile-guided indirect call promotion 2016-07-17 14:47:01 +00:00
NoFolder.h
OperandTraits.h
Operator.h [EarlyCSE] Take the intersection of flags on instructions 2016-04-22 06:37:45 +00:00
OptBisect.h Re-commit optimization bisect support (r267022) without new pass manager support. 2016-04-22 22:06:11 +00:00
PassManager.h [PM] Remove support for omitting the AnalysisManager argument to new 2016-06-17 00:11:01 +00:00
PassManagerInternal.h [PM] Run clang-format over various parts of the new pass manager code 2016-06-17 07:15:29 +00:00
PatternMatch.h Add optimization for 'icmp slt (or A, B), A' and some related idioms based on knowledge of the sign bit for A and B. 2016-04-21 00:53:14 +00:00
PredIteratorCache.h
ProfileSummary.h Apply clang-tidy's misc-move-constructor-init throughout LLVM. 2016-05-27 14:27:24 +00:00
Statepoint.h Minor comment cleanup [NFC] 2016-04-21 16:15:19 +00:00
SymbolTableListTraits.h [GCC] Attribute ifunc support in llvm 2016-04-07 12:32:19 +00:00
TrackingMDRef.h Remove some unneeded headers and replace some headers with forward class declarations (NFC) 2016-04-16 07:51:28 +00:00
Type.h fix documentation comments; NFC 2016-06-02 20:37:52 +00:00
TypeBuilder.h
TypeFinder.h Make more headers self-contained. 2016-01-27 18:03:37 +00:00
Use.h [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
UseListOrder.h Add missing includes. 2016-06-28 12:17:05 +00:00
User.h Remove some unneeded headers and replace some headers with forward class declarations (NFC) 2016-04-16 07:51:28 +00:00
Value.def [GCC] Attribute ifunc support in llvm 2016-04-07 12:32:19 +00:00
Value.h Remove Value::isPointerDereferenceable; NFCI 2016-06-02 00:52:48 +00:00
ValueHandle.h
ValueMap.h Linker: Avoid constructing ValueMap::MDMapT 2016-04-19 16:57:24 +00:00
ValueSymbolTable.h Remove some unneeded headers and replace some headers with forward class declarations (NFC) 2016-04-16 07:51:28 +00:00
Verifier.h [PM] Remove support for omitting the AnalysisManager argument to new 2016-06-17 00:11:01 +00:00