Skip to content
  1. Jan 11, 2012
    • Chandler Carruth's avatar
      Teach the X86 instruction selection to do some heroic transforms to · 55b2cdee
      Chandler Carruth authored
      detect a pattern which can be implemented with a small 'shl' embedded in
      the addressing mode scale. This happens in real code as follows:
      
        unsigned x = my_accelerator_table[input >> 11];
      
      Here we have some lookup table that we look into using the high bits of
      'input'. Each entity in the table is 4-bytes, which means this
      implicitly gets turned into (once lowered out of a GEP):
      
        *(unsigned*)((char*)my_accelerator_table + ((input >> 11) << 2));
      
      The shift right followed by a shift left is canonicalized to a smaller
      shift right and masking off the low bits. That hides the shift right
      which x86 has an addressing mode designed to support. We now detect
      masks of this form, and produce the longer shift right followed by the
      proper addressing mode. In addition to saving a (rather large)
      instruction, this also reduces stalls in Intel chips on benchmarks I've
      measured.
      
      In order for all of this to work, one part of the DAG needs to be
      canonicalized *still further* than it currently is. This involves
      removing pointless 'trunc' nodes between a zextload and a zext. Without
      that, we end up generating spurious masks and hiding the pattern.
      
      llvm-svn: 147936
      55b2cdee
    • Rafael Espindola's avatar
      Add big endian mips support. Based on a patch by Jack Carter. · 647841b1
      Rafael Espindola authored
      llvm-svn: 147924
      647841b1
    • Rafael Espindola's avatar
      Add the skeleton of an asm parser for mips. · 870c4e92
      Rafael Espindola authored
      llvm-svn: 147923
      870c4e92
    • Andrew Trick's avatar
      ARM Ld/St Optimizer fix. · 642f0f6a
      Andrew Trick authored
      Allow LDRD to be formed from pairs with different LDR encodings. This was the original intention of the pass. Somewhere along the way, the LDR opcodes were refined which broke the optimization. We really don't care what the original opcodes are as long as they both map to the same LDRD and the immediate still fits.
      
      Fixes rdar://10435045 ARMLoadStoreOptimization cannot handle mixed LDRi8/LDRi12
      
      llvm-svn: 147922
      642f0f6a
  2. Jan 10, 2012
  3. Jan 09, 2012
  4. Jan 08, 2012
  5. Jan 07, 2012
Loading