Home | History | Annotate | Download | only in X86
      1 ; RUN: llc < %s -mtriple=x86_64-darwin -mcpu=corei7 | grep movabsq | count 3
      2 
      3 define i64 @constant_hoisting(i64 %o0, i64 %o1, i64 %o2, i64 %o3, i64 %o4, i64 %o5) {
      4 entry:
      5   %l0 = and i64 %o0, -281474976710654
      6   %c0 = icmp ne i64 %l0, 0
      7   br i1 %c0, label %fail, label %bb1
      8 
      9 bb1:
     10   %l1 = and i64 %o1, -281474976710654
     11   %c1 = icmp ne i64 %l1, 0
     12   br i1 %c1, label %fail, label %bb2
     13 
     14 bb2:
     15   %l2 = and i64 %o2, -281474976710654
     16   %c2 = icmp ne i64 %l2, 0
     17   br i1 %c2, label %fail, label %bb3
     18 
     19 bb3:
     20   %l3 = and i64 %o3, -281474976710654
     21   %c3 = icmp ne i64 %l3, 0
     22   br i1 %c3, label %fail, label %bb4
     23 
     24 bb4:
     25   %l4 = and i64 %o4, -281474976710653
     26   %c4 = icmp ne i64 %l4, 0
     27   br i1 %c4, label %fail, label %bb5
     28 
     29 bb5:
     30   %l5 = and i64 %o5, -281474976710652
     31   %c5 = icmp ne i64 %l5, 0
     32   br i1 %c5, label %fail, label %bb6
     33 
     34 bb6:
     35   ret i64 %l5
     36 
     37 fail:
     38   ret i64 -1
     39 }
     40 
     41 define void @constant_expressions() {
     42 entry:
     43   %0 = load i64, i64* inttoptr (i64 add (i64 51250129900, i64 0) to i64*)
     44   %1 = load i64, i64* inttoptr (i64 add (i64 51250129900, i64 8) to i64*)
     45   %2 = load i64, i64* inttoptr (i64 add (i64 51250129900, i64 16) to i64*)
     46   %3 = load i64, i64* inttoptr (i64 add (i64 51250129900, i64 24) to i64*)
     47   %4 = add i64 %0, %1
     48   %5 = add i64 %2, %3
     49   %6 = add i64 %4, %5
     50   store i64 %6, i64* inttoptr (i64 add (i64 51250129900, i64 0) to i64*)
     51   ret void
     52 }
     53 
     54 
     55 define void @constant_expressions2() {
     56 entry:
     57   %0 = load i64, i64* inttoptr (i64 51250129900 to i64*)
     58   %1 = load i64, i64* inttoptr (i64 51250129908 to i64*)
     59   %2 = load i64, i64* inttoptr (i64 51250129916 to i64*)
     60   %3 = load i64, i64* inttoptr (i64 51250129924 to i64*)
     61   %4 = add i64 %0, %1
     62   %5 = add i64 %2, %3
     63   %6 = add i64 %4, %5
     64   store i64 %6, i64* inttoptr (i64 51250129900 to i64*)
     65   ret void
     66 }
     67 
     68