view test/CodeGen/X86/2011-12-08-AVXISelBugs.ll @ 33:e4204d083e25

LLVM 3.5
author Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
date Thu, 12 Dec 2013 14:32:10 +0900
parents 95c75e76d11b
children afa8332a0e37
line wrap: on
line source

; RUN: llc < %s -march=x86-64 -mcpu=corei7-avx -mattr=+avx
; Various missing patterns causing crashes.
; rdar://10538793

define void @t1() nounwind {
entry:
  br label %loop.cond

loop.cond:                                        ; preds = %t1.exit, %entry
  br i1 false, label %return, label %loop

loop:                                             ; preds = %loop.cond
  br i1 undef, label %0, label %t1.exit

; <label>:0                                       ; preds = %loop
  %1 = load <16 x i32> addrspace(1)* undef, align 64
  %2 = shufflevector <16 x i32> <i32 0, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>, <16 x i32> %1, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 16, i32 0, i32 0>
  store <16 x i32> %2, <16 x i32> addrspace(1)* undef, align 64
  br label %t1.exit

t1.exit:                                 ; preds = %0, %loop
  br label %loop.cond

return:                                           ; preds = %loop.cond
  ret void
}

define void @t2() nounwind {
  br i1 undef, label %1, label %4

; <label>:1                                       ; preds = %0
  %2 = load <16 x i32> addrspace(1)* undef, align 64
  %3 = shufflevector <16 x i32> <i32 0, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>, <16 x i32> %2, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 20, i32 0, i32 0, i32 0, i32 0>
  store <16 x i32> %3, <16 x i32> addrspace(1)* undef, align 64
  br label %4

; <label>:4                                       ; preds = %1, %0
  ret void
}

define void @t3() nounwind {
entry:
  br label %loop.cond

loop.cond:                                        ; preds = %t2.exit, %entry
  br i1 false, label %return, label %loop

loop:                                             ; preds = %loop.cond
  br i1 undef, label %0, label %t2.exit

; <label>:0                                       ; preds = %loop
  %1 = shufflevector <16 x i32> <i32 0, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>, <16 x i32> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 25, i32 0>
  %2 = load <16 x i32> addrspace(1)* undef, align 64
  %3 = shufflevector <16 x i32> <i32 0, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>, <16 x i32> %2, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 28, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
  store <16 x i32> %3, <16 x i32> addrspace(1)* undef, align 64
  br label %t2.exit

t2.exit:                                 ; preds = %0, %loop
  br label %loop.cond

return:                                           ; preds = %loop.cond
  ret void
}

define <3 x i64> @t4() nounwind {
entry:
  %0 = load <2 x i64> addrspace(1)* undef, align 16
  %1 = extractelement <2 x i64> %0, i32 0
  %2 = insertelement <3 x i64> <i64 undef, i64 0, i64 0>, i64 %1, i32 0
  ret <3 x i64> %2
}

define void @t5() nounwind {
entry:
  %0 = shufflevector <2 x i64> zeroinitializer, <2 x i64> undef, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
  %1 = shufflevector <8 x i64> <i64 0, i64 0, i64 0, i64 undef, i64 undef, i64 0, i64 0, i64 0>, <8 x i64> %0, <8 x i32> <i32 0, i32 1, i32 2, i32 9, i32 8, i32 5, i32 6, i32 7>
  store <8 x i64> %1, <8 x i64> addrspace(1)* undef, align 64

  ret void
}