- Mar 30, 2013
-
-
Akira Hatanaka authored
Check that instruction selection can select multiply-add/sub DSP instructions from a pattern that doesn't have intrinsics. llvm-svn: 178406
-
Akira Hatanaka authored
llvm-svn: 178405
-
Akira Hatanaka authored
derived class MipsSETargetLowering. We shouldn't be generating madd/msub nodes if target is Mips16, since Mips16 doesn't have support for multipy-add/sub instructions. llvm-svn: 178404
-
Akira Hatanaka authored
The new instructions have explicit register output operands and use table-gen patterns instead of C++ code to do instruction selection. Mips16's instructions are unaffected by this change. llvm-svn: 178403
-
Akira Hatanaka authored
llvm-svn: 178396
-
Akira Hatanaka authored
llvm-svn: 178395
-
Akira Hatanaka authored
instructions. llvm-svn: 178394
-
Akira Hatanaka authored
called in several places in ScheduleDAGRRList.cpp. llvm-svn: 178393
-
Akira Hatanaka authored
to handle accumulator registers. llvm-svn: 178392
-
Akira Hatanaka authored
callee-saved scan. The code makes use of register's scavenger's capability to spill multiple registers. llvm-svn: 178391
-
Akira Hatanaka authored
registers. llvm-svn: 178390
-
- Mar 29, 2013
-
-
Jyotsna Verma authored
llvm-svn: 178368
-
Hal Finkel authored
Like nearbyint, rint can be implemented on PPC using the frin instruction. The complication comes from the fact that rint needs to set the FE_INEXACT flag when the result does not equal the input value (and frin does not do that). As a result, we use a custom inserter which, after the rounding, compares the rounded value with the original, and if they differ, explicitly sets the XX bit in the FPSCR register (which corresponds to FE_INEXACT). Once LLVM has better modeling of the floating-point environment we should be able to (often) eliminate this extra complexity. llvm-svn: 178362
-
Akira Hatanaka authored
llvm-svn: 178359
-
Benjamin Kramer authored
It was superseded by MachineBlockPlacement and disabled by default since LLVM 3.1. llvm-svn: 178349
-
Jyotsna Verma authored
llvm-svn: 178345
-
Hal Finkel authored
These instructions are available on the P5x (and later) and on the A2. They implement the standard floating-point rounding operations (floor, trunc, etc.). One caveat: frin (round to nearest) does not implement "ties to even", and so is only enabled in fast-math mode. llvm-svn: 178337
-
Akira Hatanaka authored
register classes for Mips64 and DSP-ASE. No functionality changes. llvm-svn: 178328
-
Akira Hatanaka authored
No functionality changes. llvm-svn: 178327
-
Akira Hatanaka authored
No functionality changes. llvm-svn: 178326
-
Jack Carter authored
Mips assembler supports macros that allows the OR instruction to have an immediate parameter. This patch adds an instruction alias that converts this macro into a Mips ORI instruction. Contributer: Vladimir Medic llvm-svn: 178316
-
Michael Liao authored
llvm-svn: 178314
-
Michael Liao authored
- RDRAND always clears the destination value when a random value is not available (i.e. CF == 0). This value is truncated or zero-extended as the false boolean value to be returned. Boolean simplification needs to skip this 'zext' or 'trunc' node. llvm-svn: 178312
-
Michael Liao authored
To enable a load of a call address to be folded with that call, this load is moved from outside of callseq into callseq. Such a moving adds a non-glued node (that load) into a glued sequence. This non-glue load is only removed when DAG selection folds them into a memory form call instruction. When such instruction selection is disabled, it breaks DAG schedule. To prevent that, such moving is disabled when target favors register indirect call. Previous workaround disabling CALL32m/CALL64m insn selection is removed. llvm-svn: 178308
-
Jack Carter authored
Mips assembler allows following to be used as aliased instructions: jal $rs for jalr $rs jal $rd,$rd for jalr $rd,$rs This patch provides alias definitions in td files and test cases to show the usage. Contributer: Vladimir Medic llvm-svn: 178304
-
- Mar 28, 2013
-
-
Nadav Rotem authored
llvm-svn: 178303
-
Nadav Rotem authored
llvm-svn: 178301
-
Nadav Rotem authored
llvm-svn: 178300
-
Michael Liao authored
llvm-svn: 178299
-
Eric Christopher authored
llvm-svn: 178293
-
Timur Iskhodzhanov authored
llvm-svn: 178291
-
Hal Finkel authored
Compiling in 32-bit mode on a P7 would assert after 64-bit DAG combines were added for bswap with load/store. This is because these combines are really only valid in 64-bit mode, regardless of the CPU (and this was not being checked). llvm-svn: 178286
-
Jyotsna Verma authored
llvm-svn: 178281
-
Hal Finkel authored
Thanks to Bill Schmidt for pointing this out! llvm-svn: 178280
-
Jyotsna Verma authored
llvm-svn: 178279
-
Bill Schmidt authored
This follows up Ulrich Weigand's work in PPCInstrInfo.td and PPCInstr64Bit.td by doing the corresponding work for most of the Altivec patterns. I have not been able to do anything for the following classes of instructions: (1) Vector logicals. These don't have corresponding intrinsics and don't have a single obvious vector type. So far as I can tell I need to leave these as VRRC. Affected instructions are: VAND, VANDC, VNOR, VOR, VXOR, V_SET0. (2) Instructions that make use of vector shuffle. The selection code promotes all shuffles to v16i8, so any pattern that matches on a shuffle is constrained. I haven't found any way to make the patterns match on their natural types, so I plan to leave these as VRRC. Affected instructions are: VMRG*, VSPLTB, VSPLTH, VSPLTW, VPKUHUM, VPKUWUM. No change in behavior is anticipated. llvm-svn: 178277
-
Hal Finkel authored
These are 64-bit load/store with byte-swap, and available on the P7 and the A2. Like the similar instructions for 16- and 32-bit words, these are matched in the target DAG-combine phase against load/store-bswap pairs. llvm-svn: 178276
-
Gordon Keiser authored
They should always be zero-extended, not sign extended. Added test case. llvm-svn: 178275
-
Gordon Keiser authored
llvm-svn: 178256
-
Jyotsna Verma authored
Remove noV4T gp-relative instructions. llvm-svn: 178246
-