Home | History | Annotate | Download | only in single_kernel
      1 ; Expecting validation failure
      2 ; RUN: not rs2spirv_lit_driver.sh %s
      3 
      4 target datalayout = "e-m:e-i64:64-i128:128-n32:64-S128"
      5 target triple = "aarch64-none-linux-gnueabi"
      6 
      7 ; CHECK: OpEntryPoint GLCompute %[[WrapperId:[a-zA-Z_0-9]*]] "entry_duff"
      8 ; CHECK: [[KernelId:%[a-zA-Z_0-9]+]] = OpFunction {{.*}}
      9 ; Function Attrs: norecurse nounwind readnone
     10 define i32 @duff(i32 %count) #0 {
     11 entry:
     12   %add = add nsw i32 %count, 7
     13   %div = sdiv i32 %add, 8
     14   %rem = srem i32 %count, 8
     15   switch i32 %rem, label %sw.epilog [
     16     i32 0, label %do.body
     17     i32 7, label %sw.bb1
     18     i32 6, label %sw.bb2
     19     i32 5, label %sw.bb3
     20     i32 4, label %sw.bb6
     21     i32 3, label %sw.bb8
     22     i32 2, label %sw.bb12
     23     i32 1, label %sw.bb14
     24   ]
     25 
     26 do.body:                                          ; preds = %entry, %sw.bb14
     27   %n.0 = phi i32 [ %dec15, %sw.bb14 ], [ %div, %entry ]
     28   %x.0 = phi i32 [ %shl, %sw.bb14 ], [ 321, %entry ]
     29   %mul = mul nsw i32 %x.0, 5
     30   br label %sw.bb1
     31 
     32 sw.bb1:                                           ; preds = %entry, %do.body
     33   %n.1 = phi i32 [ %n.0, %do.body ], [ %div, %entry ]
     34   %x.1 = phi i32 [ %mul, %do.body ], [ 321, %entry ]
     35   %dec = add nsw i32 %x.1, -1
     36   br label %sw.bb2
     37 
     38 sw.bb2:                                           ; preds = %entry, %sw.bb1
     39   %n.2 = phi i32 [ %n.1, %sw.bb1 ], [ %div, %entry ]
     40   %x.2 = phi i32 [ %dec, %sw.bb1 ], [ 321, %entry ]
     41   %xor = xor i32 %x.2, 27
     42   br label %sw.bb3
     43 
     44 sw.bb3:                                           ; preds = %entry, %sw.bb2
     45   %n.3 = phi i32 [ %n.2, %sw.bb2 ], [ %div, %entry ]
     46   %x.3 = phi i32 [ %xor, %sw.bb2 ], [ 321, %entry ]
     47   %mul4 = mul nsw i32 %x.3, %x.3
     48   %sub.neg = add i32 %x.3, 12
     49   %sub5 = sub i32 %sub.neg, %mul4
     50   br label %sw.bb6
     51 
     52 sw.bb6:                                           ; preds = %entry, %sw.bb3
     53   %n.4 = phi i32 [ %n.3, %sw.bb3 ], [ %div, %entry ]
     54   %x.4 = phi i32 [ %sub5, %sw.bb3 ], [ 321, %entry ]
     55   %add7 = add nsw i32 %x.4, 2
     56   br label %sw.bb8
     57 
     58 sw.bb8:                                           ; preds = %entry, %sw.bb6
     59   %n.5 = phi i32 [ %n.4, %sw.bb6 ], [ %div, %entry ]
     60   %x.5 = phi i32 [ %add7, %sw.bb6 ], [ 321, %entry ]
     61   %rem9 = srem i32 %x.5, 32
     62   %mul10 = mul nsw i32 %x.5, %x.5
     63   %add11 = add nsw i32 %rem9, %mul10
     64   br label %sw.bb12
     65 
     66 sw.bb12:                                          ; preds = %entry, %sw.bb8
     67   %n.6 = phi i32 [ %n.5, %sw.bb8 ], [ %div, %entry ]
     68   %x.6 = phi i32 [ %add11, %sw.bb8 ], [ 321, %entry ]
     69   %sub13 = add nsw i32 %x.6, -2
     70   br label %sw.bb14
     71 
     72 sw.bb14:                                          ; preds = %entry, %sw.bb12
     73   %n.7 = phi i32 [ %div, %entry ], [ %n.6, %sw.bb12 ]
     74   %x.7 = phi i32 [ 321, %entry ], [ %sub13, %sw.bb12 ]
     75   %shl = shl i32 %x.7, 3
     76   %dec15 = add nsw i32 %n.7, -1
     77   %cmp = icmp sgt i32 %n.7, 1
     78   br i1 %cmp, label %do.body, label %sw.epilog
     79 
     80 sw.epilog:                                        ; preds = %sw.bb14, %entry
     81   %x.8 = phi i32 [ 321, %entry ], [ %shl, %sw.bb14 ]
     82   ret i32 %x.8
     83 }
     84 
     85 ; CHECK: %[[WrapperId]] = OpFunction {{.*}}
     86 ; CHECK-NEXT: OpLabel
     87 ; CHECK: %{{[0-9]+}} = OpFunctionCall %{{.*}} [[KernelId]]
     88 ; CHECK: OpReturn
     89 
     90 attributes #0 = { norecurse nounwind readnone "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="0" "stackrealign" "unsafe-fp-math"="false" "use-soft-float"="false" }
     91 
     92 !llvm.ident = !{!0}
     93 !\23pragma = !{!1, !2, !3}
     94 !\23rs_export_foreach_name = !{!4, !5}
     95 !\23rs_export_foreach = !{!6, !7}
     96 
     97 !0 = !{!"Android clang version 3.8.256229  (based on LLVM 3.8.256229)"}
     98 !1 = !{!"version", !"1"}
     99 !2 = !{!"java_package_name", !"rs2spirv"}
    100 !3 = !{!"rs_fp_relaxed", !""}
    101 !4 = !{!"root"}
    102 !5 = !{!"duff"}
    103 !6 = !{!"0"}
    104 !7 = !{!"35"}
    105