Skip to content
  1. Apr 05, 2013
    • Andrew Trick's avatar
      MachineScheduler: format DEBUG output. · 419d4917
      Andrew Trick authored
      I'm getting more serious about tuning and enabling on x86/ARM. Start
      by making the trace readable.
      
      llvm-svn: 178821
      419d4917
    • Arnold Schwaighofer's avatar
      LoopVectorizer: Pass OperandValueKind information to the cost model · df6f67ed
      Arnold Schwaighofer authored
      Pass down the fact that an operand is going to be a vector of constants.
      
      This should bring the performance of MultiSource/Benchmarks/PAQ8p/paq8p on x86
      back. It had degraded to scalar performance due to my pervious shift cost change
      that made all shifts expensive on x86.
      
      radar://13576547
      
      llvm-svn: 178809
      df6f67ed
    • Arnold Schwaighofer's avatar
      X86 cost model: Differentiate cost for vector shifts of constants · 44f902ed
      Arnold Schwaighofer authored
      SSE2 has efficient support for shifts by a scalar. My previous change of making
      shifts expensive did not take this into account marking all shifts as expensive.
      This would prevent vectorization from happening where it is actually beneficial.
      
      With this change we differentiate between shifts of constants and other shifts.
      
      radar://13576547
      
      llvm-svn: 178808
      44f902ed
    • Arnold Schwaighofer's avatar
      CostModel: Add parameter to instruction cost to further classify operand values · b9773871
      Arnold Schwaighofer authored
      On certain architectures we can support efficient vectorized version of
      instructions if the operand value is uniform (splat) or a constant scalar.
      An example of this is a vector shift on x86.
      
      We can efficiently support
      
      for (i = 0 ; i < ; i += 4)
        w[0:3] = v[0:3] << <2, 2, 2, 2>
      
      but not
      
      for (i = 0; i < ; i += 4)
        w[0:3] = v[0:3] << x[0:3]
      
      This patch adds a parameter to getArithmeticInstrCost to further qualify operand
      values as uniform or uniform constant.
      
      Targets can then choose to return a different cost for instructions with such
      operand values.
      
      A follow-up commit will test this feature on x86.
      
      radar://13576547
      
      llvm-svn: 178807
      b9773871
    • Manman Ren's avatar
      Debug Info: revert 178722 for now. · bdcb4464
      Manman Ren authored
      There is a difference for FORM_ref_addr between DWARF 2 and DWARF 3+.
      Since Eric is against guarding DWARF 2 ref_addr with DarwinGDBCompat, we are
      still in discussion on how to handle this.
      
      The correct solution is to update our header to say version 4 instead of version
      2 and update tool chains as well.
      
      rdar://problem/13559431
      
      llvm-svn: 178806
      bdcb4464
    • Adrian Prantl's avatar
      typo · 322f41d0
      Adrian Prantl authored
      llvm-svn: 178804
      322f41d0
    • Hal Finkel's avatar
      Rename the current PPC BCL definition to BCLalways · e5680b3c
      Hal Finkel authored
      BCL is normally a conditional branch-and-link instruction, but has
      an unconditional form (which is used in the SjLj code, for example).
      To make clear that this BCL instruction definition is specifically
      the special unconditional form (which does not meaningfully take
      a condition-register input), rename it to BCLalways.
      
      No functionality change intended.
      
      llvm-svn: 178803
      e5680b3c
    • Hal Finkel's avatar
      PPC: Improve code generation for mixed-precision reciprocal sqrt · f96c18e3
      Hal Finkel authored
      The DAGCombine logic that recognized a/sqrt(b) and transformed it into
      a multiplication by the reciprocal sqrt did not handle cases where the
      sqrt and the division were separated by an fpext or fptrunc.
      
      llvm-svn: 178801
      f96c18e3
  2. Apr 04, 2013
  3. Apr 03, 2013
    • Arnold Schwaighofer's avatar
      X86 cost model: Vector shifts are expensive in most cases · e9b50164
      Arnold Schwaighofer authored
      The default logic does not correctly identify costs of casts because they are
      marked as custom on x86.
      
      For some cases, where the shift amount is a scalar we would be able to generate
      better code. Unfortunately, when this is the case the value (the splat) will get
      hoisted out of the loop, thereby making it invisible to ISel.
      
      radar://13130673
      radar://13537826
      
      llvm-svn: 178703
      e9b50164
    • Rafael Espindola's avatar
      Implement the "mips endian" for r_info. · 2025e8b8
      Rafael Espindola authored
      Normally r_info is just a 32 of 64 bit number matching the endian of the rest
      of the file. Unfortunately, mips 64 bit little endian is special: The top 32
      bits are a little endian number and the following 32 are a big endian one.
      
      llvm-svn: 178694
      2025e8b8
    • Richard Osborne's avatar
      [XCore] Check disassembly of the st8 instruction. · 122acb21
      Richard Osborne authored
      llvm-svn: 178689
      122acb21
    • Richard Osborne's avatar
      [XCore] Update disassembler test to improve coverage of the instructions. · fb0b4ea3
      Richard Osborne authored
      Previously some instructions were unintentionally covered twice and
      others were not covered at all.
      
      llvm-svn: 178688
      fb0b4ea3
    • Eric Christopher's avatar
      Implements low-level object file format specific output for COFF and · 9cad53cf
      Eric Christopher authored
      ELF with support for:
      
      - File headers
      - Section headers + data
      - Relocations
      - Symbols
      - Unwind data (only COFF/Win64)
      
      The output format follows a few rules:
      - Values are almost always output one per line (as elf-dump/coff-dump already do). - Many values are translated to something readable (like enum names), with the raw value in parentheses.
      - Hex numbers are output in uppercase, prefixed with "0x".
      - Flags are sorted alphabetically.
      - Lists and groups are always delimited.
      
      Example output:
      ---------- snip ----------
      Sections [
        Section {
          Index: 1
          Name: .text (5)
          Type: SHT_PROGBITS (0x1)
          Flags [ (0x6)
            SHF_ALLOC (0x2)
            SHF_EXECINSTR (0x4)
          ]
          Address: 0x0
          Offset: 0x40
          Size: 33
          Link: 0
          Info: 0
          AddressAlignment: 16
          EntrySize: 0
          Relocations [
            0x6 R_386_32 .rodata.str1.1 0x0
            0xB R_386_PC32 puts 0x0
            0x12 R_386_32 .rodata.str1.1 0x0
            0x17 R_386_PC32 puts 0x0
          ]
          SectionData (
            0000: 83EC04C7 04240000 0000E8FC FFFFFFC7  |.....$..........|
            0010: 04240600 0000E8FC FFFFFF31 C083C404  |.$.........1....|
            0020: C3                                   |.|
          )
        }
      ]
      ---------- snip ----------
      
      Relocations and symbols can be output standalone or together with the section header as displayed in the example.
      This feature set supports all tests in test/MC/COFF and test/MC/ELF (and I suspect all additional tests using elf-dump), making elf-dump and coff-dump deprecated.
      
      Patch by Nico Rieck!
      
      llvm-svn: 178679
      9cad53cf
Loading