little steps forward

   - impl splat, store32, which lets us handle the conceptually simplest
     program, a 32-bit memset.

   - dump bitcode to /tmp on success

Kind of starting to look good!

$ ninja -C out dm && out/dm -m SkVM_Pointless
$ opt --O1 /tmp/skvm-jit-211960346.bc | llvm-dis

    ; Function Attrs: nofree norecurse nounwind writeonly
    define void @skvm-jit-211960346(i64, i8* nocapture) local_unnamed_addr #0 {
    enter:
      %2 = icmp ugt i64 %0, 7
      br i1 %2, label %loopK, label %test1.preheader

    test1.preheader:                                  ; preds = %loopK, %enter
      %.07.lcssa = phi i64 [ %0, %enter ], [ %5, %loopK ]
      %.0.lcssa = phi i8* [ %1, %enter ], [ %6, %loopK ]
      %3 = icmp eq i64 %.07.lcssa, 0
      br i1 %3, label %leave, label %loop1

    loopK:                                            ; preds = %enter, %loopK
      %.012 = phi i8* [ %6, %loopK ], [ %1, %enter ]
      %.0711 = phi i64 [ %5, %loopK ], [ %0, %enter ]
      %4 = bitcast i8* %.012 to <8 x i32>*
      store <8 x i32> <i32 42, i32 42, i32 42, i32 42, i32 42, i32 42, i32 42, i32 42>, <8 x i32>* %4, align 1
      %5 = add i64 %.0711, -8
      %6 = getelementptr i8, i8* %.012, i64 32
      %7 = icmp ugt i64 %5, 7
      br i1 %7, label %loopK, label %test1.preheader

    loop1:                                            ; preds = %test1.preheader, %loop1
      %.110 = phi i8* [ %10, %loop1 ], [ %.0.lcssa, %test1.preheader ]
      %.189 = phi i64 [ %9, %loop1 ], [ %.07.lcssa, %test1.preheader ]
      %8 = bitcast i8* %.110 to i32*
      store i32 42, i32* %8, align 1
      %9 = add i64 %.189, -1
      %10 = getelementptr i8, i8* %.110, i64 4
      %11 = icmp eq i64 %9, 0
      br i1 %11, label %leave, label %loop1

    leave:                                            ; preds = %loop1, %test1.preheader
      ret void
    }

    attributes #0 = { nofree norecurse nounwind writeonly }

Change-Id: I00953c1113739a9ee094cb6cb3c99f1b7f8de9bf
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/273509
Reviewed-by: Herb Derby <herb@google.com>
1 file changed