David Majnemer
3bb6073919
obj2yaml: Don't crash if the characteristics field is zero
...
obj2yaml would fail when seeing a Weak External auxiliary record with a
characteristics field holding zero instead of one of
IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY, IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY,
or IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY.
llvm-svn: 205911
2014-04-09 16:38:15 +00:00
Justin Holewinski
30d56a7b86
[NVPTX] Add preliminary intrinsics and codegen support for textures/surfaces
...
This commit adds intrinsics and codegen support for the surface read/write and texture read instructions that take an explicit sampler parameter. Codegen operates on image handles at the PTX level, but falls back to direct replacement of handles with kernel arguments if image handles are not enabled. Note that image handles are explicitly disabled for all target architectures in this change (to be enabled later).
llvm-svn: 205907
2014-04-09 15:39:15 +00:00
Justin Holewinski
9d852a8e08
[NVPTX] Add support for addrspacecast in global variable initializers, including emitting generic() when casting to address space 0.
...
llvm-svn: 205906
2014-04-09 15:39:11 +00:00
Justin Holewinski
5959695a16
[NVPTX] Add query support for read-write images and managed variables
...
This also fixes a bug in the annotation cache where the cache will not be cleared between modules if multiple modules are compiled in the same process.
llvm-svn: 205905
2014-04-09 15:38:52 +00:00
Alp Toker
16f98b255d
Fix some doc and comment typos
...
llvm-svn: 205899
2014-04-09 14:47:27 +00:00
Bradley Smith
246b0b617d
[ARM64] Change SYS without a register to an alias to make disassembling more consistant.
...
llvm-svn: 205898
2014-04-09 14:44:58 +00:00
Bradley Smith
2cef19a2e6
[ARM64] Correctly disassemble ISB operand as ISB not DBarrier.
...
llvm-svn: 205897
2014-04-09 14:44:54 +00:00
Bradley Smith
239120cada
[ARM64] Properly support both apple and standard syntax for FMOV
...
llvm-svn: 205896
2014-04-09 14:44:49 +00:00
Bradley Smith
a2308f47d3
[ARM64] Flag setting logical/add/sub immediate instructions don't use SP.
...
llvm-svn: 205895
2014-04-09 14:44:44 +00:00
Bradley Smith
f280e91849
[ARM64] Conditional branches must always print their condition code, even AL.
...
llvm-svn: 205894
2014-04-09 14:44:39 +00:00
Bradley Smith
a19b7e83dc
[ARM64] Fix disassembly logic for extended loads/stores with 32-bit registers.
...
llvm-svn: 205893
2014-04-09 14:44:36 +00:00
Bradley Smith
a0d7a9a12f
[ARM64] When printing a pre-indexed address with #0 , the ', #0' is not optional.
...
llvm-svn: 205892
2014-04-09 14:44:31 +00:00
Bradley Smith
70c6acbbfd
[ARM64] Add missing shifted register MVN alias to ORN
...
llvm-svn: 205891
2014-04-09 14:44:26 +00:00
Bradley Smith
403bbf95c0
[ARM64] SXTW/UXTW are only valid aliases for 32-bit operations.
...
llvm-svn: 205890
2014-04-09 14:44:22 +00:00
Bradley Smith
779238a216
[ARM64] Fix canonicalisation of MOVs. MOV is too complex to be modelled by a dumb alias.
...
llvm-svn: 205889
2014-04-09 14:44:18 +00:00
Bradley Smith
f823079acd
[ARM64] Fixup ADR/ADRP parsing such that they accept immediates and all labels types
...
llvm-svn: 205888
2014-04-09 14:44:12 +00:00
Bradley Smith
af2710c96f
[ARM64] Ensure sp is decoded as SP, not XZR in LD1 instructions.
...
llvm-svn: 205887
2014-04-09 14:44:07 +00:00
Bradley Smith
a0dce246ed
[ARM64] Tighten up the special casing in emitting arithmetic extends. UXTW should only be translated when the instruction uses WSP, not SP. Vice versa for UXTX and 64-bit instructions.
...
llvm-svn: 205886
2014-04-09 14:44:03 +00:00
Bradley Smith
3971d3dc75
[ARM64] Rename LR to the UAL-compliant 'X30'.
...
llvm-svn: 205885
2014-04-09 14:43:59 +00:00
Bradley Smith
6f1aa59c31
[ARM64] Rename FP to the UAL-compliant 'X29'.
...
llvm-svn: 205884
2014-04-09 14:43:50 +00:00
Bradley Smith
5511f08055
[ARM64] Add a PostEncoderMethod to FCMP - the Rm field should canonically be zero but should be decoded/disassembled with any value.
...
llvm-svn: 205883
2014-04-09 14:43:40 +00:00
Bradley Smith
eb4ca04db2
[ARM64] SCVTF and FCVTZS/U are undefined if scale<5> == 0.
...
llvm-svn: 205882
2014-04-09 14:43:35 +00:00
Bradley Smith
db7b9b17eb
[ARM64] EXT and EXTR instructions on v8i8 and W regs respectively must have the top bit of their immediate clear.
...
llvm-svn: 205881
2014-04-09 14:43:31 +00:00
Bradley Smith
60e7667886
[ARM64] Scaled fixed-point FCVTZSs should also have bit 29 set to zero.
...
llvm-svn: 205880
2014-04-09 14:43:27 +00:00
Bradley Smith
7525b47208
[ARM64] UBFM/BFM is undefined on w registers when imms<5> or immr<5> is 1.
...
llvm-svn: 205879
2014-04-09 14:43:24 +00:00
Bradley Smith
0243aa33fa
[ARM64] Floating point to fixed point scaled conversions are only available on fcvtzs and fcvtzu.
...
llvm-svn: 205878
2014-04-09 14:43:20 +00:00
Bradley Smith
8f906a3c5f
[ARM64] Port over the PostEncoderMethod fix for SMULH/UMULH from AArch64.
...
llvm-svn: 205877
2014-04-09 14:43:15 +00:00
Bradley Smith
9f29b726d5
[ARM64] Add missing tlbi operands and error for extra/missing register on tlbi aliases.
...
llvm-svn: 205876
2014-04-09 14:43:11 +00:00
Bradley Smith
e8b4166acc
[ARM64] Rework system register parsing to overcome SPSel clash in MSR variants.
...
llvm-svn: 205875
2014-04-09 14:43:06 +00:00
Bradley Smith
bc35b1f138
[ARM64] Port over the PostEncoderMethod from AArch64 for exclusive loads and stores, so the unused register fields are set to all-ones canonically but are recognised with any value.
...
llvm-svn: 205874
2014-04-09 14:43:01 +00:00
Bradley Smith
4925be9b56
[ARM64] Use PStateMapper to ensure that MSRcpsr operands are validated during disassembly.
...
llvm-svn: 205873
2014-04-09 14:42:56 +00:00
Bradley Smith
3339427e2a
[ARM64] Remove PrefetchOp and use ARM64PRFM instead.
...
llvm-svn: 205872
2014-04-09 14:42:53 +00:00
Bradley Smith
16478c4ccf
[ARM64] Add WZR to isGPR32Register, since every use needs to check for this anyway.
...
llvm-svn: 205871
2014-04-09 14:42:49 +00:00
Bradley Smith
3db2a85853
[ARM64] Remove ARM64SYS.
...
llvm-svn: 205870
2014-04-09 14:42:45 +00:00
Bradley Smith
fb90df563f
[ARM64] Move CPSRField and DBarrier operands over to AArch64-style disassembly and assembly. This removes the last users of namespace ARM64SYS.
...
llvm-svn: 205869
2014-04-09 14:42:42 +00:00
Bradley Smith
08c391c156
[ARM64] Switch the decoder, disassembler, instprinter and asmparser over to using AArch64-style system registers, and fix up test failures discovered in the process.
...
llvm-svn: 205868
2014-04-09 14:42:36 +00:00
Bradley Smith
2ba17a4a17
[ARM64] Move ARM64BaseInfo.{cpp,h} into a Utils/ subdirectory, a la AArch64. These files are required in the decoder, disassembler and parser, and a layering violation was imminent.
...
llvm-svn: 205867
2014-04-09 14:42:27 +00:00
Bradley Smith
ceeb04df60
[ARM64] Copy the named immediate operand mapping logic and enums from AArch64. AArch64's named immediate mapping and parsing is much more advanced than ARM64's. No functionality change - they're currently living side by side while I switch uses over.
...
llvm-svn: 205866
2014-04-09 14:42:16 +00:00
Bradley Smith
8c0b88c987
[ARM64] Shifted register ALU ops are reserved if sf=0 and imm6<5>=1, and also (for add/sub only) if shift=11.
...
llvm-svn: 205865
2014-04-09 14:42:11 +00:00
Bradley Smith
527bf86e56
[ARM64] Add support for NV condition code (exists only for valid assembly/disassembly, equivilant to AL)
...
llvm-svn: 205864
2014-04-09 14:42:07 +00:00
Bradley Smith
6d7af17a3f
[ARM64] Add missing 1Q -> 1q vector kind alias
...
llvm-svn: 205863
2014-04-09 14:42:01 +00:00
Bradley Smith
7d253f29a4
[ARM64] Add parsing for vector lists such as {v0.8b-v3.8b}
...
llvm-svn: 205862
2014-04-09 14:41:58 +00:00
Bradley Smith
664aa67153
[ARM64] Correctly alias LSL to UXTW for 32bit instruction variants, rather than UXTX
...
llvm-svn: 205861
2014-04-09 14:41:53 +00:00
Bradley Smith
35cadc58c9
[ARM64] STRHro and STRBro were not being decoded at all.
...
llvm-svn: 205860
2014-04-09 14:41:49 +00:00
Bradley Smith
87c60e00d5
[ARM64] MOVK with sf=0 and hw<1>=1 is unallocated. Shift amount for ADD/SUB instructions is unallocated if shift > 4.
...
llvm-svn: 205859
2014-04-09 14:41:45 +00:00
Bradley Smith
cd91e5cd0c
[ARM64] Register-offset loads and stores with the 'option' field equal to 00x or 10x are undefined.
...
llvm-svn: 205858
2014-04-09 14:41:38 +00:00
Filipe Cabecinhas
2c4e8ae0fd
Revert "YAMLIO: Encode ambiguous hex strings explicitly"
...
This reverts commit r205839.
It broke several tests in lld.
llvm-svn: 205857
2014-04-09 14:35:17 +00:00
Arnold Schwaighofer
fd0bf5d6e5
SLPVectorizer: Only vectorize intrinsics whose operands are widened equally
...
The vectorizer only knows how to vectorize intrinics by widening all operands by
the same factor.
Patch by Tyler Nowicki!
llvm-svn: 205855
2014-04-09 14:20:47 +00:00
Elena Demikhovsky
cf0b9bafc3
AVX-512: insert element to mask vector; store i1 data
...
Implemented INSERT_VECTOR_ELT operation for v16i1 and v8i1 vectors;
Implemented "store" for i1 type
llvm-svn: 205850
2014-04-09 12:37:50 +00:00
Daniel Sanders
b282f1fec5
Re-commit: [mips] abs.[ds], and neg.[ds] should be allowed regardless of -enable-no-nans-fp-math
...
Summary:
They behave in accordance with the Has2008 and ABS2008 configuration bits of the processor which are used to select between the 1985 and 2008 versions of IEEE 754. In 1985 mode, these instructions are arithmetic (i.e. they raise invalid operation exceptions when given NaN), in 2008 mode they are non-arithmetic (i.e. they are copies).
nmadd.[ds], and nmsub.[ds] are still subject to -enable-no-nans-fp-math because the ISA spec does not explicitly state that they obey Has2008 and ABS2008.
Fixed the issue with the previous version of this patch (r205628). A pre-existing 'let Predicate =' statement was removing some predicates that were necessary for FP64 to behave correctly.
Reviewers: matheusalmeida
Reviewed By: matheusalmeida
Differential Revision: http://llvm-reviews.chandlerc.com/D3274
llvm-svn: 205844
2014-04-09 09:56:43 +00:00