Skip to content
  1. Apr 11, 2012
    • Dylan Noblesmith's avatar
      llvm-stress: stop abusing ConstantFP::get() · 68f310df
      Dylan Noblesmith authored
      ConstantFP::get(Type*, double) is unreliably host-specific:
      it can't handle a type like PPC128 on an x86 host. It even
      has a comment to that effect: "This should only be used for
      simple constant values like 2.0/1.0 etc, that are
      known-valid both as host double and as the target format."
      
      Instead, use APFloat. While we're at it, randomize the floating
      point value more thoroughly; it was previously limited
      to the range 0 to 2**19 - 1.
      
      PR12451.
      
      llvm-svn: 154446
      68f310df
    • Dylan Noblesmith's avatar
      llvm-stress: don't make vectors of x86_mmx type · 2a592dcc
      Dylan Noblesmith authored
      LangRef.html says:
      "There are no arrays, vectors or constants of this type."
      
      This was hitting assertions when passing the -generate-x86-mmx
      option.
      
      PR12452.
      
      llvm-svn: 154445
      2a592dcc
    • Kostya Serebryany's avatar
      [tsan] two more compile-time optimizations: · 5ba61ac6
      Kostya Serebryany authored
      - don't isntrument reads from constant globals.
      Saves ~1.5% of instrumented instructions on CPU2006
      (counting static instructions, not their execution).
      - don't insrument reads from vtable (which is a global constant too).
      Saves ~5%.
      
      I did not measure the run-time impact of this,
      but it is certainly non-negative.
      
      llvm-svn: 154444
      5ba61ac6
  2. Apr 10, 2012
  3. Apr 09, 2012
    • Akira Hatanaka's avatar
      Have TargetLowering::getPICJumpTableRelocBase return a node that points to the · 8483a6c4
      Akira Hatanaka authored
      GOT if jump table uses 64-bit gp-relative relocation.
      
      llvm-svn: 154341
      8483a6c4
    • Chad Rosier's avatar
      When performing a truncating store, it's possible to rearrange the data · e0e38f61
      Chad Rosier authored
      in-register, such that we can use a single vector store rather then a 
      series of scalar stores.
      
      For func_4_8 the generated code
      
      	vldr	d16, LCPI0_0
      	vmov	d17, r0, r1
      	vadd.i16	d16, d17, d16
      	vmov.u16	r0, d16[3]
      	strb	r0, [r2, #3]
      	vmov.u16	r0, d16[2]
      	strb	r0, [r2, #2]
      	vmov.u16	r0, d16[1]
      	strb	r0, [r2, #1]
      	vmov.u16	r0, d16[0]
      	strb	r0, [r2]
      	bx	lr
      
      becomes
      
      	vldr	d16, LCPI0_0
      	vmov	d17, r0, r1
      	vadd.i16	d16, d17, d16
      	vuzp.8	d16, d17
      	vst1.32	{d16[0]}, [r2, :32]
      	bx	lr
      
      I'm not fond of how this combine pessimizes 2012-03-13-DAGCombineBug.ll,
      but I couldn't think of a way to judiciously apply this combine.
      
      This
      
      	ldrh	r0, [r0, #4]
      	strh	r0, [r1]
      
      becomes
      
      	vldr	d16, [r0]
      	vmov.u16	r0, d16[2]
      	vmov.32	d16[0], r0
      	vuzp.16	d16, d17
      	vst1.32	{d16[0]}, [r1, :32]
      
      PR11158
      rdar://10703339
      
      llvm-svn: 154340
      e0e38f61
    • Lang Hames's avatar
      Patch r153892 for PR11861 apparently broke an external project (see PR12493). · 3ad11ff9
      Lang Hames authored
      This patch restores TwoAddressInstructionPass's pre-r153892 behaviour when
      rescheduling instructions in TryInstructionTransform. Hopefully this will fix
      PR12493. To refix PR11861, lowering of INSERT_SUBREGS is deferred until after
      the copy that unties the operands is emitted (this seems to be a more
      appropriate fix for that issue anyway).
      
      llvm-svn: 154338
      3ad11ff9
Loading