Home | History | Annotate | Download | only in X86
      1 ; RUN: llc < %s -mtriple=x86_64-linux -mcpu=nehalem | FileCheck %s
      2 ; CHECK-NOT:     mov
      3 ; CHECK:     paddw
      4 ; CHECK-NOT:     mov
      5 ; CHECK:     paddw
      6 ; CHECK-NOT:     paddw
      7 ; CHECK-NOT:     mov
      8 
      9 ; The 2-addr pass should ensure that identical code is produced for these functions
     10 ; no extra copy should be generated.
     11 
     12 define <2 x i64> @test1(<2 x i64> %x, <2 x i64> %y) nounwind  {
     13 entry:
     14 	%tmp6 = bitcast <2 x i64> %y to <8 x i16>		; <<8 x i16>> [#uses=1]
     15 	%tmp8 = bitcast <2 x i64> %x to <8 x i16>		; <<8 x i16>> [#uses=1]
     16 	%tmp9 = add <8 x i16> %tmp8, %tmp6		; <<8 x i16>> [#uses=1]
     17 	%tmp10 = bitcast <8 x i16> %tmp9 to <2 x i64>		; <<2 x i64>> [#uses=1]
     18 	ret <2 x i64> %tmp10
     19 }
     20 
     21 define <2 x i64> @test2(<2 x i64> %x, <2 x i64> %y) nounwind  {
     22 entry:
     23 	%tmp6 = bitcast <2 x i64> %x to <8 x i16>		; <<8 x i16>> [#uses=1]
     24 	%tmp8 = bitcast <2 x i64> %y to <8 x i16>		; <<8 x i16>> [#uses=1]
     25 	%tmp9 = add <8 x i16> %tmp8, %tmp6		; <<8 x i16>> [#uses=1]
     26 	%tmp10 = bitcast <8 x i16> %tmp9 to <2 x i64>		; <<2 x i64>> [#uses=1]
     27 	ret <2 x i64> %tmp10
     28 }
     29