~pali/+junk/llvm-toolchain-3.7

« back to all changes in this revision

Viewing changes to test/CodeGen/X86/shift-avx2-crash.ll

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2015-07-15 17:51:08 UTC
  • Revision ID: package-import@ubuntu.com-20150715175108-l8mynwovkx4zx697
Tags: upstream-3.7~+rc2
ImportĀ upstreamĀ versionĀ 3.7~+rc2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
; RUN: llc < %s  -mcpu=core-avx2 > /dev/null
 
2
; This test crashed on variable shift creation on AVX2
 
3
 
 
4
target datalayout = "e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128"
 
5
target triple = "i386-unknown-linux-gnu"
 
6
 
 
7
define void @f_f(float* noalias nocapture %RET, float %aFOO, i32 %div)  {
 
8
allocas:
 
9
  %__idiv_table_u32_offset10_offset_load.i = add i64 0, -2
 
10
  br label %if_then18.i
 
11
 
 
12
if_then18.i:
 
13
  %aFOO_load_to_uint32 = fptoui float %aFOO to i32
 
14
  %aFOO_load_to_uint32_broadcast_init = insertelement <8 x i32> undef, i32 %aFOO_load_to_uint32, i32 0
 
15
  %aFOO_load_to_uint32_broadcast = shufflevector <8 x i32> %aFOO_load_to_uint32_broadcast_init, <8 x i32> undef, <8 x i32> zeroinitializer
 
16
 
 
17
  %multiplier_load_broadcast_init.i = insertelement <8 x i64> undef, i64 2, i32 0
 
18
  %multiplier_load_broadcast.i = shufflevector <8 x i64> %multiplier_load_broadcast_init.i, <8 x i64> undef, <8 x i32> zeroinitializer
 
19
  %numerator_load_to_uint64.i = zext <8 x i32> %aFOO_load_to_uint32_broadcast to <8 x i64>
 
20
 
 
21
  ;if replace '%__idiv_table_u32_offset10_offset_load.i' with '-2' or remove 'if_then18.i' label the error disappears
 
22
  %add__shift_load21.i = add i64 %__idiv_table_u32_offset10_offset_load.i, 32
 
23
  %add__shift_load21_broadcast_init.i = insertelement <8 x i64> undef, i64 %add__shift_load21.i, i32 0
 
24
  %add__shift_load21_broadcast.i = shufflevector <8 x i64> %add__shift_load21_broadcast_init.i, <8 x i64> undef, <8 x i32> zeroinitializer
 
25
 
 
26
  %mul_val_load_mult_load.i = mul <8 x i64> %numerator_load_to_uint64.i, %multiplier_load_broadcast.i
 
27
  %bitop22.i = lshr <8 x i64> %mul_val_load_mult_load.i, %add__shift_load21_broadcast.i
 
28
  %bitop22_to_uint32.i = trunc <8 x i64> %bitop22.i to <8 x i32>
 
29
  br label %__fast_idiv___UM_vyuunu.exit
 
30
 
 
31
 
 
32
__fast_idiv___UM_vyuunu.exit:                   
 
33
  %calltmp_to_float = uitofp <8 x i32> %bitop22_to_uint32.i to <8 x float>
 
34
  %ptrcast = bitcast float* %RET to <8 x float>*
 
35
  store <8 x float> %calltmp_to_float, <8 x float>* %ptrcast, align 4
 
36
  ret void
 
37
}
 
38