Evan Cheng | b9bbb57 | 2009-09-21 21:12:25 +0000 | [diff] [blame] | 1 | ; RUN: llc < %s -mtriple=x86_64-apple-darwin10.0 -relocation-model=pic -disable-fp-elim -stats |& grep asm-printer | grep 84 |
Evan Cheng | 29b4cf6 | 2009-04-20 08:01:12 +0000 | [diff] [blame] | 2 | ; rdar://6802189 |
| 3 | |
| 4 | ; Test if linearscan is unfavoring registers for allocation to allow more reuse |
| 5 | ; of reloads from stack slots. |
| 6 | |
| 7 | %struct.SHA_CTX = type { i32, i32, i32, i32, i32, i32, i32, [16 x i32], i32 } |
| 8 | |
| 9 | define fastcc void @sha1_block_data_order(%struct.SHA_CTX* nocapture %c, i8* %p, i64 %num) nounwind { |
| 10 | entry: |
| 11 | br label %bb |
| 12 | |
| 13 | bb: ; preds = %bb, %entry |
| 14 | %asmtmp511 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 1, i32 0) nounwind ; <i32> [#uses=3] |
| 15 | %asmtmp513 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 30, i32 0) nounwind ; <i32> [#uses=2] |
| 16 | %asmtmp516 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 30, i32 0) nounwind ; <i32> [#uses=1] |
| 17 | %asmtmp517 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 1, i32 0) nounwind ; <i32> [#uses=2] |
| 18 | %0 = xor i32 0, %asmtmp513 ; <i32> [#uses=0] |
| 19 | %1 = add i32 0, %asmtmp517 ; <i32> [#uses=1] |
| 20 | %2 = add i32 %1, 0 ; <i32> [#uses=1] |
| 21 | %3 = add i32 %2, 0 ; <i32> [#uses=1] |
| 22 | %asmtmp519 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 30, i32 0) nounwind ; <i32> [#uses=1] |
| 23 | %4 = xor i32 0, %asmtmp511 ; <i32> [#uses=1] |
| 24 | %asmtmp520 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 1, i32 %4) nounwind ; <i32> [#uses=2] |
| 25 | %5 = xor i32 0, %asmtmp516 ; <i32> [#uses=1] |
| 26 | %6 = xor i32 %5, %asmtmp519 ; <i32> [#uses=1] |
| 27 | %7 = add i32 %asmtmp513, -899497514 ; <i32> [#uses=1] |
| 28 | %8 = add i32 %7, %asmtmp520 ; <i32> [#uses=1] |
| 29 | %9 = add i32 %8, %6 ; <i32> [#uses=1] |
| 30 | %10 = add i32 %9, 0 ; <i32> [#uses=1] |
| 31 | %asmtmp523 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 1, i32 0) nounwind ; <i32> [#uses=1] |
| 32 | %asmtmp525 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 30, i32 %3) nounwind ; <i32> [#uses=2] |
| 33 | %11 = xor i32 0, %asmtmp525 ; <i32> [#uses=1] |
| 34 | %12 = add i32 0, %11 ; <i32> [#uses=1] |
| 35 | %13 = add i32 %12, 0 ; <i32> [#uses=2] |
| 36 | %asmtmp528 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 30, i32 %10) nounwind ; <i32> [#uses=1] |
| 37 | %14 = xor i32 0, %asmtmp520 ; <i32> [#uses=1] |
| 38 | %asmtmp529 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 1, i32 %14) nounwind ; <i32> [#uses=1] |
| 39 | %asmtmp530 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 5, i32 %13) nounwind ; <i32> [#uses=1] |
| 40 | %15 = add i32 0, %asmtmp530 ; <i32> [#uses=1] |
| 41 | %16 = xor i32 0, %asmtmp523 ; <i32> [#uses=1] |
| 42 | %asmtmp532 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 1, i32 %16) nounwind ; <i32> [#uses=2] |
| 43 | %asmtmp533 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 5, i32 %15) nounwind ; <i32> [#uses=1] |
| 44 | %17 = xor i32 %13, %asmtmp528 ; <i32> [#uses=1] |
| 45 | %18 = xor i32 %17, 0 ; <i32> [#uses=1] |
| 46 | %19 = add i32 %asmtmp525, -899497514 ; <i32> [#uses=1] |
| 47 | %20 = add i32 %19, %asmtmp532 ; <i32> [#uses=1] |
| 48 | %21 = add i32 %20, %18 ; <i32> [#uses=1] |
| 49 | %22 = add i32 %21, %asmtmp533 ; <i32> [#uses=1] |
| 50 | %23 = xor i32 0, %asmtmp511 ; <i32> [#uses=1] |
| 51 | %24 = xor i32 %23, 0 ; <i32> [#uses=1] |
| 52 | %asmtmp535 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 1, i32 %24) nounwind ; <i32> [#uses=3] |
| 53 | %25 = add i32 0, %asmtmp535 ; <i32> [#uses=1] |
| 54 | %26 = add i32 %25, 0 ; <i32> [#uses=1] |
| 55 | %27 = add i32 %26, 0 ; <i32> [#uses=1] |
| 56 | %28 = xor i32 0, %asmtmp529 ; <i32> [#uses=0] |
| 57 | %29 = xor i32 %22, 0 ; <i32> [#uses=1] |
| 58 | %30 = xor i32 %29, 0 ; <i32> [#uses=1] |
| 59 | %31 = add i32 0, %30 ; <i32> [#uses=1] |
| 60 | %32 = add i32 %31, 0 ; <i32> [#uses=3] |
| 61 | %asmtmp541 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 1, i32 0) nounwind ; <i32> [#uses=2] |
| 62 | %asmtmp542 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 5, i32 %32) nounwind ; <i32> [#uses=1] |
| 63 | %33 = add i32 0, %asmtmp541 ; <i32> [#uses=1] |
| 64 | %34 = add i32 %33, 0 ; <i32> [#uses=1] |
| 65 | %35 = add i32 %34, %asmtmp542 ; <i32> [#uses=1] |
| 66 | %asmtmp543 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 30, i32 %27) nounwind ; <i32> [#uses=2] |
| 67 | %36 = xor i32 0, %asmtmp535 ; <i32> [#uses=0] |
| 68 | %37 = xor i32 %32, 0 ; <i32> [#uses=1] |
| 69 | %38 = xor i32 %37, %asmtmp543 ; <i32> [#uses=1] |
| 70 | %39 = add i32 0, %38 ; <i32> [#uses=1] |
| 71 | %40 = add i32 %39, 0 ; <i32> [#uses=2] |
| 72 | %asmtmp546 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 30, i32 %32) nounwind ; <i32> [#uses=1] |
| 73 | %asmtmp547 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 1, i32 0) nounwind ; <i32> [#uses=2] |
| 74 | %41 = add i32 0, -899497514 ; <i32> [#uses=1] |
| 75 | %42 = add i32 %41, %asmtmp547 ; <i32> [#uses=1] |
| 76 | %43 = add i32 %42, 0 ; <i32> [#uses=1] |
| 77 | %44 = add i32 %43, 0 ; <i32> [#uses=3] |
| 78 | %asmtmp549 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 30, i32 %35) nounwind ; <i32> [#uses=2] |
| 79 | %45 = xor i32 0, %asmtmp541 ; <i32> [#uses=1] |
| 80 | %asmtmp550 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 1, i32 %45) nounwind ; <i32> [#uses=2] |
| 81 | %asmtmp551 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 5, i32 %44) nounwind ; <i32> [#uses=1] |
| 82 | %46 = xor i32 %40, %asmtmp546 ; <i32> [#uses=1] |
| 83 | %47 = xor i32 %46, %asmtmp549 ; <i32> [#uses=1] |
| 84 | %48 = add i32 %asmtmp543, -899497514 ; <i32> [#uses=1] |
| 85 | %49 = add i32 %48, %asmtmp550 ; <i32> [#uses=1] |
| 86 | %50 = add i32 %49, %47 ; <i32> [#uses=1] |
| 87 | %51 = add i32 %50, %asmtmp551 ; <i32> [#uses=1] |
| 88 | %asmtmp552 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 30, i32 %40) nounwind ; <i32> [#uses=2] |
| 89 | %52 = xor i32 %44, %asmtmp549 ; <i32> [#uses=1] |
| 90 | %53 = xor i32 %52, %asmtmp552 ; <i32> [#uses=1] |
| 91 | %54 = add i32 0, %53 ; <i32> [#uses=1] |
| 92 | %55 = add i32 %54, 0 ; <i32> [#uses=2] |
| 93 | %asmtmp555 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 30, i32 %44) nounwind ; <i32> [#uses=2] |
| 94 | %56 = xor i32 0, %asmtmp532 ; <i32> [#uses=1] |
| 95 | %57 = xor i32 %56, %asmtmp547 ; <i32> [#uses=1] |
| 96 | %asmtmp556 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 1, i32 %57) nounwind ; <i32> [#uses=1] |
| 97 | %58 = add i32 0, %asmtmp556 ; <i32> [#uses=1] |
| 98 | %59 = add i32 %58, 0 ; <i32> [#uses=1] |
| 99 | %60 = add i32 %59, 0 ; <i32> [#uses=1] |
| 100 | %asmtmp558 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 30, i32 %51) nounwind ; <i32> [#uses=1] |
| 101 | %61 = xor i32 %asmtmp517, %asmtmp511 ; <i32> [#uses=1] |
| 102 | %62 = xor i32 %61, %asmtmp535 ; <i32> [#uses=1] |
| 103 | %63 = xor i32 %62, %asmtmp550 ; <i32> [#uses=1] |
| 104 | %asmtmp559 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 1, i32 %63) nounwind ; <i32> [#uses=1] |
| 105 | %64 = xor i32 %55, %asmtmp555 ; <i32> [#uses=1] |
| 106 | %65 = xor i32 %64, %asmtmp558 ; <i32> [#uses=1] |
| 107 | %asmtmp561 = tail call i32 asm "roll $1,$0", "=r,I,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 30, i32 %55) nounwind ; <i32> [#uses=1] |
| 108 | %66 = add i32 %asmtmp552, -899497514 ; <i32> [#uses=1] |
| 109 | %67 = add i32 %66, %65 ; <i32> [#uses=1] |
| 110 | %68 = add i32 %67, %asmtmp559 ; <i32> [#uses=1] |
| 111 | %69 = add i32 %68, 0 ; <i32> [#uses=1] |
| 112 | %70 = add i32 %69, 0 ; <i32> [#uses=1] |
| 113 | store i32 %70, i32* null, align 4 |
| 114 | %71 = add i32 0, %60 ; <i32> [#uses=1] |
| 115 | store i32 %71, i32* null, align 4 |
| 116 | %72 = add i32 0, %asmtmp561 ; <i32> [#uses=1] |
| 117 | store i32 %72, i32* null, align 4 |
| 118 | %73 = add i32 0, %asmtmp555 ; <i32> [#uses=1] |
| 119 | store i32 %73, i32* null, align 4 |
| 120 | br label %bb |
| 121 | } |