- Mar 27, 2010
-
-
Bob Wilson authored
llvm-svn: 99705
-
Bob Wilson authored
llvm-svn: 99704
-
Chris Lattner authored
llvm-svn: 99700
-
Johnny Chen authored
it as the format for the appropriate N3V*SL*<> classes. These instructions require special handling of the M:Vm field which encodes the restricted Dm and the lane index within Dm. Examples are A8.6.325 VMLA, VMLAL, VMLS, VMLSL (by scalar): vmlal.s32 q3, d2, d10[0] llvm-svn: 99690
-
Chris Lattner authored
llvm-svn: 99686
-
Jim Grosbach authored
through to the generic version. The generic functions use STR/LDR, but T2 needs the t2STR/t2LDR instead so we get the addressing mode correct. llvm-svn: 99678
-
Johnny Chen authored
to now take a format argument. N3VDInt<> and N3VQInt<> are modified to take a format argument as well. llvm-svn: 99676
-
- Mar 26, 2010
-
-
Johnny Chen authored
to encode the byte location of the extracted result in the concatenation of the operands, from the least significant end. Modify VEXTd and VEXTq classes to use the format. llvm-svn: 99659
-
Johnny Chen authored
follow the N3RegFrm's operand order of D:Vd N:Vn M:Vm. The operand order of N3RegVShFrm is D:Vd M:Vm N:Vn (notice that M:Vm is the first src operand). Add a parent class N3Vf which requires passing a Format argument and which the N3V class is modified to inherit from. N3V class represents the "normal" 3-Register NEON Instructions with N3RegFrm. Also add a multiclass N3VSh_QHSD to represent clusters of NEON 3-Register Shift Instructions and replace 8 invocations with it. llvm-svn: 99655
-
Jim Grosbach authored
Radar 7797856 llvm-svn: 99630
-
Johnny Chen authored
Examples are VABA (Vector Absolute Difference and Accumulate), VABAL (Vector Absolute Difference and Accumulate Long), and VABD (Vector Absolute Difference). llvm-svn: 99628
-
Evan Cheng authored
llvm-svn: 99620
-
Evan Cheng authored
llvm-svn: 99598
-
Johnny Chen authored
dispatch to the appropriate routines to handle the different interpretations of the shift amount encoded in the imm6 field. The Vd, Vm fields are interpreted the same between the two, though. See, for example, A8.6.367 VQSHL, VQSHLU (immediate) for N2RegVShLFrm format and A8.6.368 VQSHRN, VQSHRUN for N2RegVShRFrm format. llvm-svn: 99590
-
Jim Grosbach authored
Re-commit. This time complete with testsuite updates. llvm-svn: 99570
-
Jim Grosbach authored
llvm-svn: 99569
-
Jim Grosbach authored
llvm-svn: 99568
-
Johnny Chen authored
It doesn't seem to be used anywhere. llvm-svn: 99566
-
Jim Grosbach authored
llvm-svn: 99565
-
- Mar 25, 2010
-
-
Johnny Chen authored
llvm-svn: 99557
-
Jim Grosbach authored
llvm-svn: 99549
-
Johnny Chen authored
expect a Format arg. N2VCvtD/N2VCvtQ are modified to use the NVCVTFrm format. llvm-svn: 99548
-
Daniel Dunbar authored
llvm-svn: 99542
-
Jakob Stoklund Olesen authored
llvm-svn: 99540
-
Jakob Stoklund Olesen authored
Remove much horribleness from X86InstrFormats as a result. Similar simplifications are probably possible for other targets. llvm-svn: 99539
-
Jakob Stoklund Olesen authored
On Nehalem and newer CPUs there is a 2 cycle latency penalty on using a register in a different domain than where it was defined. Some instructions have equvivalents for different domains, like por/orps/orpd. The SSEDomainFix pass tries to minimize the number of domain crossings by changing between equvivalent opcodes where possible. This is a work in progress, in particular the pass doesn't do anything yet. SSE instructions are tagged with their execution domain in TableGen using the last two bits of TSFlags. Note that not all instructions are tagged correctly. Life just isn't that simple. The SSE execution domain issue is very similar to the ARM NEON/VFP pipeline issue handled by NEONMoveFixPass. This pass may become target independent to handle both. llvm-svn: 99524
-
Johnny Chen authored
instead of the current N2V. Format of NVDupLane instances are set to NEONFrm currently. llvm-svn: 99518
-
Bob Wilson authored
opcode values fitting in one byte (svn r99494). llvm-svn: 99514
-
Chris Lattner authored
handles dead implicit results more aggressively. More to come, I think this is now just a data entry problem. llvm-svn: 99486
-
Evan Cheng authored
addl $12, %esp popl %esi popl %edi popl %ebx popl %ebp jmpl *__Block_deallocator-L1$pb(%esi) # TAILCALL The problem is the global base register is assigned GR32 register class. TCRETURNmi needs the registers making up the address mode to have the GR32_TC register class. The *proper* fix is for X86DAGToDAGISel::getGlobalBaseReg() to return a copy from the global base register of the machine function rather than returning the register itself. But that has the potential of causing it to be coalesced to a more restrictive register class: GR32_TC. It can introduce additional copies and spills. For something as important the PIC base, it's not worth it especially since this is not an issue on 64-bit. llvm-svn: 99455
-
Bob Wilson authored
--- Reverse-merging r99440 into '.': U test/MC/AsmParser/X86/x86_32-bit_cat.s U test/MC/AsmParser/X86/x86_32-encoding.s U include/llvm/IntrinsicsX86.td U include/llvm/CodeGen/SelectionDAGNodes.h U lib/Target/X86/X86InstrSSE.td U lib/Target/X86/X86ISelLowering.h llvm-svn: 99450
-
- Mar 24, 2010
-
-
Kevin Enderby authored
llvm-svn: 99440
-
Jim Grosbach authored
Preliminary testing shows significant performance wins by not using these instructions. llvm-svn: 99436
-
Kevin Enderby authored
not get an "Unknown immediate size" assert failure when used. All instructions of this form have an 8-bit immediate. Also added a test case of an example instruction that is of this form. llvm-svn: 99435
-
Nate Begeman authored
llvm-svn: 99434
-
Johnny Chen authored
llvm-svn: 99428
-
Nate Begeman authored
llvm-svn: 99423
-
Johnny Chen authored
NVCVTFrm will later be used to describe "vcvt with fractional bits". llvm-svn: 99415
-
Johnny Chen authored
N3VX instructions using special case code. llvm-svn: 99409
-
Jim Grosbach authored
llvm-svn: 99402
-