Kristof Beyls | 933de7a | 2015-01-08 15:09:14 +0000 | [diff] [blame] | 1 | ; RUN: llc -verify-machineinstrs < %s -mtriple=armv4t | FileCheck %s -check-prefix=CHECK-v4A32 |
| 2 | ; RUN: llc -verify-machineinstrs < %s -mtriple=armv7a | FileCheck %s -check-prefix=CHECK-v7A32 |
| 3 | ; RUN: llc -verify-machineinstrs < %s -mtriple=thumbv7a | FileCheck %s -check-prefix=CHECK-THUMB2 |
| 4 | ; FIXME: There are no tests for Thumb1 since dynamic stack alignment is not supported for |
| 5 | ; Thumb1. |
| 6 | |
| 7 | define i32 @f_bic_can_be_used_align() nounwind { |
| 8 | entry: |
| 9 | ; CHECK-LABEL: f_bic_can_be_used_align: |
| 10 | ; CHECK-v7A32: bfc sp, #0, #8 |
| 11 | ; CHECK-v4A32: bic sp, sp, #255 |
| 12 | ; CHECK-THUMB2: mov r4, sp |
| 13 | ; CHECK-THUMB2-NEXT: bfc r4, #0, #8 |
| 14 | ; CHECK-THUMB2-NEXT: mov sp, r4 |
| 15 | %x = alloca i32, align 256 |
| 16 | store volatile i32 0, i32* %x, align 256 |
| 17 | ret i32 0 |
| 18 | } |
| 19 | |
| 20 | define i32 @f_too_large_for_bic_align() nounwind { |
| 21 | entry: |
| 22 | ; CHECK-LABEL: f_too_large_for_bic_align: |
| 23 | ; CHECK-v7A32: bfc sp, #0, #9 |
| 24 | ; CHECK-v4A32: lsr sp, sp, #9 |
| 25 | ; CHECK-v4A32: lsl sp, sp, #9 |
| 26 | ; CHECK-THUMB2: mov r4, sp |
| 27 | ; CHECK-THUMB2-NEXT: bfc r4, #0, #9 |
| 28 | ; CHECK-THUMB2-NEXT: mov sp, r4 |
| 29 | %x = alloca i32, align 512 |
| 30 | store volatile i32 0, i32* %x, align 512 |
| 31 | ret i32 0 |
| 32 | } |
| 33 | |
| 34 | define i8* @f_alignedDPRCS2Spills(double* %d) #0 { |
| 35 | entry: |
| 36 | ; CHECK-LABEL: f_too_large_for_bic_align: |
| 37 | ; CHECK-v7A32: bfc sp, #0, #12 |
| 38 | ; CHECK-v4A32: lsr sp, sp, #12 |
| 39 | ; CHECK-v4A32: lsl sp, sp, #12 |
| 40 | ; CHECK-THUMB2: bfc r4, #0, #12 |
| 41 | ; CHECK-THUMB2-NEXT: mov sp, r4 |
| 42 | %a = alloca i8, align 4096 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 43 | %0 = load double, double* %d, align 4 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 44 | %arrayidx1 = getelementptr inbounds double, double* %d, i32 1 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 45 | %1 = load double, double* %arrayidx1, align 4 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 46 | %arrayidx2 = getelementptr inbounds double, double* %d, i32 2 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 47 | %2 = load double, double* %arrayidx2, align 4 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 48 | %arrayidx3 = getelementptr inbounds double, double* %d, i32 3 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 49 | %3 = load double, double* %arrayidx3, align 4 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 50 | %arrayidx4 = getelementptr inbounds double, double* %d, i32 4 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 51 | %4 = load double, double* %arrayidx4, align 4 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 52 | %arrayidx5 = getelementptr inbounds double, double* %d, i32 5 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 53 | %5 = load double, double* %arrayidx5, align 4 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 54 | %arrayidx6 = getelementptr inbounds double, double* %d, i32 6 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 55 | %6 = load double, double* %arrayidx6, align 4 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 56 | %arrayidx7 = getelementptr inbounds double, double* %d, i32 7 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 57 | %7 = load double, double* %arrayidx7, align 4 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 58 | %arrayidx8 = getelementptr inbounds double, double* %d, i32 8 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 59 | %8 = load double, double* %arrayidx8, align 4 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 60 | %arrayidx9 = getelementptr inbounds double, double* %d, i32 9 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 61 | %9 = load double, double* %arrayidx9, align 4 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 62 | %arrayidx10 = getelementptr inbounds double, double* %d, i32 10 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 63 | %10 = load double, double* %arrayidx10, align 4 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 64 | %arrayidx11 = getelementptr inbounds double, double* %d, i32 11 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 65 | %11 = load double, double* %arrayidx11, align 4 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 66 | %arrayidx12 = getelementptr inbounds double, double* %d, i32 12 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 67 | %12 = load double, double* %arrayidx12, align 4 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 68 | %arrayidx13 = getelementptr inbounds double, double* %d, i32 13 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 69 | %13 = load double, double* %arrayidx13, align 4 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 70 | %arrayidx14 = getelementptr inbounds double, double* %d, i32 14 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 71 | %14 = load double, double* %arrayidx14, align 4 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 72 | %arrayidx15 = getelementptr inbounds double, double* %d, i32 15 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 73 | %15 = load double, double* %arrayidx15, align 4 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 74 | %arrayidx16 = getelementptr inbounds double, double* %d, i32 16 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 75 | %16 = load double, double* %arrayidx16, align 4 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 76 | %arrayidx17 = getelementptr inbounds double, double* %d, i32 17 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 77 | %17 = load double, double* %arrayidx17, align 4 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 78 | %arrayidx18 = getelementptr inbounds double, double* %d, i32 18 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 79 | %18 = load double, double* %arrayidx18, align 4 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 80 | %arrayidx19 = getelementptr inbounds double, double* %d, i32 19 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 81 | %19 = load double, double* %arrayidx19, align 4 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 82 | %arrayidx20 = getelementptr inbounds double, double* %d, i32 20 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 83 | %20 = load double, double* %arrayidx20, align 4 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 84 | %arrayidx21 = getelementptr inbounds double, double* %d, i32 21 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 85 | %21 = load double, double* %arrayidx21, align 4 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 86 | %arrayidx22 = getelementptr inbounds double, double* %d, i32 22 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 87 | %22 = load double, double* %arrayidx22, align 4 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 88 | %arrayidx23 = getelementptr inbounds double, double* %d, i32 23 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 89 | %23 = load double, double* %arrayidx23, align 4 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 90 | %arrayidx24 = getelementptr inbounds double, double* %d, i32 24 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 91 | %24 = load double, double* %arrayidx24, align 4 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 92 | %arrayidx25 = getelementptr inbounds double, double* %d, i32 25 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 93 | %25 = load double, double* %arrayidx25, align 4 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 94 | %arrayidx26 = getelementptr inbounds double, double* %d, i32 26 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 95 | %26 = load double, double* %arrayidx26, align 4 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 96 | %arrayidx27 = getelementptr inbounds double, double* %d, i32 27 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 97 | %27 = load double, double* %arrayidx27, align 4 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 98 | %arrayidx28 = getelementptr inbounds double, double* %d, i32 28 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 99 | %28 = load double, double* %arrayidx28, align 4 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 100 | %arrayidx29 = getelementptr inbounds double, double* %d, i32 29 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 101 | %29 = load double, double* %arrayidx29, align 4 |
Kristof Beyls | 933de7a | 2015-01-08 15:09:14 +0000 | [diff] [blame] | 102 | %div = fdiv double %29, %28 |
| 103 | %div30 = fdiv double %div, %27 |
| 104 | %div31 = fdiv double %div30, %26 |
| 105 | %div32 = fdiv double %div31, %25 |
| 106 | %div33 = fdiv double %div32, %24 |
| 107 | %div34 = fdiv double %div33, %23 |
| 108 | %div35 = fdiv double %div34, %22 |
| 109 | %div36 = fdiv double %div35, %21 |
| 110 | %div37 = fdiv double %div36, %20 |
| 111 | %div38 = fdiv double %div37, %19 |
| 112 | %div39 = fdiv double %div38, %18 |
| 113 | %div40 = fdiv double %div39, %17 |
| 114 | %div41 = fdiv double %div40, %16 |
| 115 | %div42 = fdiv double %div41, %15 |
| 116 | %div43 = fdiv double %div42, %14 |
| 117 | %div44 = fdiv double %div43, %13 |
| 118 | %div45 = fdiv double %div44, %12 |
| 119 | %div46 = fdiv double %div45, %11 |
| 120 | %div47 = fdiv double %div46, %10 |
| 121 | %div48 = fdiv double %div47, %9 |
| 122 | %div49 = fdiv double %div48, %8 |
| 123 | %div50 = fdiv double %div49, %7 |
| 124 | %div51 = fdiv double %div50, %6 |
| 125 | %div52 = fdiv double %div51, %5 |
| 126 | %div53 = fdiv double %div52, %4 |
| 127 | %div54 = fdiv double %div53, %3 |
| 128 | %div55 = fdiv double %div54, %2 |
| 129 | %div56 = fdiv double %div55, %1 |
| 130 | %div57 = fdiv double %div56, %0 |
| 131 | %div58 = fdiv double %0, %1 |
| 132 | %div59 = fdiv double %div58, %2 |
| 133 | %div60 = fdiv double %div59, %3 |
| 134 | %div61 = fdiv double %div60, %4 |
| 135 | %div62 = fdiv double %div61, %5 |
| 136 | %div63 = fdiv double %div62, %6 |
| 137 | %div64 = fdiv double %div63, %7 |
| 138 | %div65 = fdiv double %div64, %8 |
| 139 | %div66 = fdiv double %div65, %9 |
| 140 | %div67 = fdiv double %div66, %10 |
| 141 | %div68 = fdiv double %div67, %11 |
| 142 | %div69 = fdiv double %div68, %12 |
| 143 | %div70 = fdiv double %div69, %13 |
| 144 | %div71 = fdiv double %div70, %14 |
| 145 | %div72 = fdiv double %div71, %15 |
| 146 | %div73 = fdiv double %div72, %16 |
| 147 | %div74 = fdiv double %div73, %17 |
| 148 | %div75 = fdiv double %div74, %18 |
| 149 | %div76 = fdiv double %div75, %19 |
| 150 | %div77 = fdiv double %div76, %20 |
| 151 | %div78 = fdiv double %div77, %21 |
| 152 | %div79 = fdiv double %div78, %22 |
| 153 | %div80 = fdiv double %div79, %23 |
| 154 | %div81 = fdiv double %div80, %24 |
| 155 | %div82 = fdiv double %div81, %25 |
| 156 | %div83 = fdiv double %div82, %26 |
| 157 | %div84 = fdiv double %div83, %27 |
| 158 | %div85 = fdiv double %div84, %28 |
| 159 | %div86 = fdiv double %div85, %29 |
| 160 | %mul = fmul double %div57, %div86 |
| 161 | %conv = fptosi double %mul to i32 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 162 | %add.ptr = getelementptr inbounds i8, i8* %a, i32 %conv |
Kristof Beyls | 933de7a | 2015-01-08 15:09:14 +0000 | [diff] [blame] | 163 | ret i8* %add.ptr |
| 164 | } |