Add a small missed optimization: turn X == C ? X : Y into X == C ? C : Y. This
[llvm/stm8.git] / test / CodeGen / X86 / sse-commute.ll
blob336bf06e557d791d1399f89bbf3fa59dd368efff
1 ; RUN: llc -mtriple=x86_64-linux < %s | FileCheck %s
3 ; Commute the comparison to avoid a move.
4 ; PR7500.
6 ; CHECK: a:
7 ; CHECK-NOT: mov
8 ; CHECK:     pcmpeqd
9 define <2 x double> @a(<2 x double>, <2 x double>) nounwind readnone {
10 entry:
11   %tmp6 = bitcast <2 x double> %0 to <4 x i32>    ; <<4 x i32>> [#uses=2]
12   %tmp4 = bitcast <2 x double> %1 to <4 x i32>    ; <<4 x i32>> [#uses=1]
13   %cmp = icmp eq <4 x i32> %tmp6, %tmp4           ; <<4 x i1>> [#uses=1]
14   %sext = sext <4 x i1> %cmp to <4 x i32>         ; <<4 x i32>> [#uses=1]
15   %and = and <4 x i32> %tmp6, %sext               ; <<4 x i32>> [#uses=1]
16   %tmp8 = bitcast <4 x i32> %and to <2 x double>  ; <<2 x double>> [#uses=1]
17   ret <2 x double> %tmp8