llvm.org GIT mirror llvm / release_70 test / CodeGen / X86 / 2011-10-21-widen-cmp.ll
release_70

Tree @release_70 (Download .tar.gz)

2011-10-21-widen-cmp.ll @release_70

423c686
2cfd254
4bd222a
 
 
 
55853da
2cfd254
ca0df55
55853da
2cfd254
cc54be0
55853da
2cfd254
4bd222a
 
55853da
4bd222a
 
 
 
55853da
2cfd254
ca0df55
0ffe6c0
2cfd254
cc54be0
55853da
2cfd254
4bd222a
 
55853da
4bd222a
 
 
5b2bba6
2cfd254
 
ca0df55
aea5485
2cfd254
5b2bba6
 
 
 
 
 
 
 
 
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -mcpu=corei7 | FileCheck %s

; Check that a <4 x float> compare is generated and that we are
; not stuck in an endless loop.

define void @cmp_2_floats(<2 x float> %a, <2 x float> %b) {
; CHECK-LABEL: cmp_2_floats:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    movaps %xmm0, %xmm2
; CHECK-NEXT:    cmpordps %xmm0, %xmm0
; CHECK-NEXT:    blendvps %xmm0, %xmm2, %xmm1
; CHECK-NEXT:    movlps %xmm1, (%rax)
; CHECK-NEXT:    retq
entry:
  %0 = fcmp oeq <2 x float> undef, undef
  %1 = select <2 x i1> %0, <2 x float> %a, <2 x float> %b
  store <2 x float> %1, <2 x float>* undef
  ret void
}

define void @cmp_2_doubles(<2 x double> %a, <2 x double> %b) {
; CHECK-LABEL: cmp_2_doubles:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    movapd %xmm0, %xmm2
; CHECK-NEXT:    cmpordpd %xmm0, %xmm0
; CHECK-NEXT:    blendvpd %xmm0, %xmm2, %xmm1
; CHECK-NEXT:    movapd %xmm1, (%rax)
; CHECK-NEXT:    retq
entry:
  %0 = fcmp oeq <2 x double> undef, undef
  %1 = select <2 x i1> %0, <2 x double> %a, <2 x double> %b
  store <2 x double> %1, <2 x double>* undef
  ret void
}

define void @mp_11193(<8 x float> * nocapture %aFOO, <8 x float>* nocapture %RET) nounwind {
; CHECK-LABEL: mp_11193:
; CHECK:       # %bb.0: # %allocas
; CHECK-NEXT:    movl $-1082130432, (%rsi) # imm = 0xBF800000
; CHECK-NEXT:    retq
allocas:
  %bincmp = fcmp olt <8 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 9.000000e+00, float 1.000000e+00, float 9.000000e+00, float 1.000000e+00> , <float 3.000000e+00, float 3.000000e+00, float 3.000000e+00, float 3.000000e+00, float 3.000000e+00, float 3.000000e+00, float 3.000000e+00, float 3.000000e+00>
  %t = extractelement <8 x i1> %bincmp, i32 0
  %ft = sitofp i1 %t to float
  %pp = bitcast <8 x float>* %RET to float*
  store float %ft, float* %pp
  ret void
}