summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Next PPC long double bits: ppcf128->i32 conversion.Dale Johannesen2007-10-101-2/+20
| | | | | | | Surprisingly complicated. Adds getTargetNode for 2 outputs, no inputs (missing). llvm-svn: 42822
* Migrate X86 and ARM from using X86ISD::{,I}DIV and ARMISD::MULHILO{U,S} toDan Gohman2007-10-081-32/+120
| | | | | | | | use ISD::{S,U}DIVREM and ISD::{S,U}MUL_HIO. Move the lowering code associated with these operators into target-independent in LegalizeDAG.cpp and TargetLowering.cpp. llvm-svn: 42762
* convertFromInteger, as originally written, expected sign-extendedNeil Booth2007-10-071-2/+2
| | | | | | | | input. APInt unfortunately zero-extends signed integers, so Dale modified the function to expect zero-extended input. Make this assumption explicit in the function name. llvm-svn: 42732
* Next powerpc long double bits. Comparisons work,Dale Johannesen2007-10-061-28/+56
| | | | | | although not well, and shortening FP converts. llvm-svn: 42672
* First round of ppc long double. call/return andDale Johannesen2007-10-051-25/+62
| | | | | | | | | basic arithmetic works. Rename RTLIB long double functions to distinguish different flavors of long double; the lib functions have different names, alas. llvm-svn: 42644
* Legalize support for MUL_LOHI and DIVREM.Dan Gohman2007-10-051-0/+10
| | | | llvm-svn: 42636
* Silence a warning.Evan Cheng2007-10-051-1/+1
| | | | llvm-svn: 42619
* Constant fold int-to-long-double conversions;Dale Johannesen2007-09-301-1/+1
| | | | | | | | use APFloat for int-to-float/double; use round-to-nearest for these (implementation-defined, seems to match gcc). llvm-svn: 42484
* Teach SplitVectorOp how to split INSERT_VECTOR_ELT.Dan Gohman2007-09-281-0/+12
| | | | llvm-svn: 42457
* Fix long double -> uint64 conversion.Dale Johannesen2007-09-281-1/+5
| | | | llvm-svn: 42440
* Add sqrt and powi intrinsics for long double.Dale Johannesen2007-09-281-6/+11
| | | | llvm-svn: 42423
* Silence a compiler warning.Evan Cheng2007-09-271-1/+1
| | | | llvm-svn: 42389
* Fix f80 UNDEF.Dale Johannesen2007-09-261-1/+2
| | | | llvm-svn: 42359
* Use the correct result value type instead of using getValueType(0)Dan Gohman2007-09-241-4/+3
| | | | | | | in ExpandEXTRACT_VECTOR_ELT and SplitVectorOp. This fixes an abort in the included testcase. llvm-svn: 42264
* Change APFloat::convertFromInteger to take the incomingDale Johannesen2007-09-211-1/+2
| | | | | | | | | | bit width instead of number of words allocated, which makes it actually work for int->APF conversions. Adjust callers. Add const to one of the APInt constructors to prevent surprising match when called with const argument. llvm-svn: 42210
* More long double fixes. x86_64 should build now.Dale Johannesen2007-09-191-12/+32
| | | | llvm-svn: 42155
* Fix longdouble -> uint conversion.Dale Johannesen2007-09-191-2/+3
| | | | llvm-svn: 42143
* Adjust per revew comments.Dale Johannesen2007-09-161-16/+7
| | | | llvm-svn: 42002
* Remove the assumption that FP's are either float orDale Johannesen2007-09-141-12/+29
| | | | | | | | | | | | | double from some of the many places in the optimizers it appears, and do something reasonable with x86 long double. Make APInt::dump() public, remove newline, use it to dump ConstantSDNode's. Allow APFloats in FoldingSet. Expand X86 backend handling of long doubles (conversions to/from int, mostly). llvm-svn: 41967
* Revise previous patch per review comments.Dale Johannesen2007-09-121-9/+6
| | | | | | | Next round of x87 long double stuff. Getting close now, basically works. llvm-svn: 41875
* Add APInt interfaces to APFloat (allows directlyDale Johannesen2007-09-111-6/+8
| | | | | | | | | access to bits). Use them in place of float and double interfaces where appropriate. First bits of x86 long double constants handling (untested, probably does not work). llvm-svn: 41858
* Fold the adjust_trampoline intrinsic intoDuncan Sands2007-09-111-16/+8
| | | | | | | init_trampoline. There is now only one trampoline intrinsic. llvm-svn: 41841
* Implement misaligned FP loads and stores.Dale Johannesen2007-09-081-11/+48
| | | | llvm-svn: 41786
* Change LegalFPImmediates to use APFloat.Dale Johannesen2007-08-301-9/+12
| | | | | | | | | Add APFloat interfaces to ConstantFP, SelectionDAG. Fix integer bit in double->APFloat conversion. Convert LegalizeDAG to use APFloat interface in ConstantFPSDNode uses. llvm-svn: 41587
* Fix use of declaration inside case blockAnton Korobeynikov2007-08-291-1/+2
| | | | llvm-svn: 41584
* Lower FRAME_TO_ADDR_OFFSET to zero by default (if not custom lowered)Anton Korobeynikov2007-08-291-1/+13
| | | | llvm-svn: 41578
* Allow target constants to be illegal types. The target shouldChris Lattner2007-08-251-0/+5
| | | | | | | know how to handle them. This fixes test/CodeGen/Generic/asm-large-immediate.ll llvm-svn: 41388
* Avoid issue on 64-bit hosts.Evan Cheng2007-08-171-1/+2
| | | | llvm-svn: 41143
* If dynamic_stackalloc alignment is > stack alignment, first issue an ↵Evan Cheng2007-08-161-5/+12
| | | | | | instruction to align the stack ptr before the decrement. llvm-svn: 41133
* Implement FPOWI ExpandOp.Lauro Ramos Venancio2007-08-151-0/+5
| | | | | | Fix PR1287. llvm-svn: 41112
* Update per review comments.Dale Johannesen2007-08-091-30/+15
| | | | llvm-svn: 40965
* long double 9 of N. This finishes up the X86-32 bitsDale Johannesen2007-08-091-22/+47
| | | | | | | | (constants are still not handled). Adds ConvertActions to control fp-to-fp conversions (these are currently defaulted for all other targets, so no changes there). llvm-svn: 40958
* If a target really needs to custom lower constants, it should be allowedScott Michel2007-08-081-3/+11
| | | | | | to do so. llvm-svn: 40955
* Style police: Expand the tabs to spaces!Scott Michel2007-08-021-5/+5
| | | | llvm-svn: 40712
* Expand unaligned loads/stores when the target doesn't support them. (PR1548)Lauro Ramos Venancio2007-08-011-3/+140
| | | | llvm-svn: 40682
* - Allow custom lowering for CTPOP, CTTZ, CTLZ.Scott Michel2007-07-301-2/+9
| | | | | | - Fixed an existing unexpanded tab. llvm-svn: 40605
* Support for trampolines, except for X86 codegen which isDuncan Sands2007-07-271-0/+25
| | | | | | still under discussion. llvm-svn: 40549
* Add selection DAG nodes for subreg insert/extract. PR1350Christopher Lamb2007-07-261-1/+17
| | | | llvm-svn: 40516
* Fix infinite recursion for when extract_vector_elt is legal. Unfortunately ↵Christopher Lamb2007-07-261-1/+1
| | | | | | no public targets use this code-path, so no test. llvm-svn: 40510
* Fix comments about vectors to use the current wording.Dan Gohman2007-07-161-2/+2
| | | | llvm-svn: 39921
* Fix the build. Patch from Holger Schurig.Nick Lewycky2007-07-141-1/+2
| | | | llvm-svn: 39856
* Long live the exception handling!Anton Korobeynikov2007-07-141-0/+16
| | | | | | | | | | | | | | | This patch fills the last necessary bits to enable exceptions handling in LLVM. Currently only on x86-32/linux. In fact, this patch adds necessary intrinsics (and their lowering) which represent really weird target-specific gcc builtins used inside unwinder. After corresponding llvm-gcc patch will land (easy) exceptions should be more or less workable. However, exceptions handling support should not be thought as 'finished': I expect many small and not so small glitches everywhere. llvm-svn: 39855
* Fix the comment for LegalizeOp to more accurately reflect what it does.Dan Gohman2007-07-131-3/+4
| | | | llvm-svn: 39827
* Move DenseMapKeyInfo<SDOperand> from LegalizeDAG.cpp to SelectionDAGNodes.hEvan Cheng2007-07-101-12/+0
| | | | llvm-svn: 38484
* Preserve volatililty and alignment information when lowering orDan Gohman2007-07-091-27/+40
| | | | | | simplifying loads and stores. llvm-svn: 38473
* Fix for PR 1505 (and 1489). Rewrite X87 registerDale Johannesen2007-07-031-1/+23
| | | | | | | model to include f32 variants. Some factoring improvments forthcoming. llvm-svn: 37847
* Fix an assertion failure in legalizing bitcast operators on targets whereDan Gohman2007-06-291-23/+15
| | | | | | vectors are split down to single elements as part of legalization. llvm-svn: 37785
* Rename ("shrinkify") MVT::isExtendedValueType to MVT::isExtendedVT.Dan Gohman2007-06-271-1/+1
| | | | llvm-svn: 37758
* Make the comment for ScalarizeVectorOp mention that it is only for useDan Gohman2007-06-271-4/+6
| | | | | | with single-element vectors. llvm-svn: 37752
* Generalize MVT::ValueType and associated functions to be able to representDan Gohman2007-06-251-386/+283
| | | | | | | | | | | | | | | extended vector types. Remove the special SDNode opcodes used for pre-legalize vector operations, and the special MVT::Vector type used with them. Adjust lowering and legalize to work with the normal SDNode kinds instead, and to use the normal MVT functions to work with vector types instead of using the two special operands that the pre-legalize nodes held. This allows pre-legalize and post-legalize DAGs, and the code that operates on them, to be more consistent. Pre-legalize vector operators can be handled more consistently with scalar operators. And, -view-dag-combine1-dags and -view-legalize-dags now look prettier for vector code. llvm-svn: 37719
OpenPOWER on IntegriCloud