comparison test/CodeGen/X86/masked-iv-safe.ll @ 121:803732b1fca8

LLVM 5.0
author kono
date Fri, 27 Oct 2017 17:07:41 +0900
parents afa8332a0e37
children
comparison
equal deleted inserted replaced
120:1172e4bd9c6f 121:803732b1fca8
1 ; RUN: llc < %s -mcpu=generic -march=x86-64 | FileCheck %s 1 ; RUN: llc < %s -mcpu=generic -mtriple=x86_64-- | FileCheck %s
2 2
3 ; Optimize away zext-inreg and sext-inreg on the loop induction 3 ; Optimize away zext-inreg and sext-inreg on the loop induction
4 ; variable using trip-count information. 4 ; variable using trip-count information.
5 5
6 ; CHECK-LABEL: count_up 6 ; CHECK-LABEL: count_up
7 ; CHECK-NOT: {{and|movz|sar|shl}} 7 ; CHECK-NOT: {{and|movz|sar|shl}}
8 ; CHECK: incq 8 ; CHECK: addq $8
9 ; CHECK-NOT: {{and|movz|sar|shl}} 9 ; CHECK-NOT: {{and|movz|sar|shl}}
10 ; CHECK: jne 10 ; CHECK: jne
11 define void @count_up(double* %d, i64 %n) nounwind { 11 define void @count_up(double* %d, i64 %n) nounwind {
12 entry: 12 entry:
13 br label %loop 13 br label %loop
36 ret void 36 ret void
37 } 37 }
38 38
39 ; CHECK-LABEL: count_down 39 ; CHECK-LABEL: count_down
40 ; CHECK-NOT: {{and|movz|sar|shl}} 40 ; CHECK-NOT: {{and|movz|sar|shl}}
41 ; CHECK: addq 41 ; CHECK: addq $-8
42 ; CHECK-NOT: {{and|movz|sar|shl}} 42 ; CHECK-NOT: {{and|movz|sar|shl}}
43 ; CHECK: jne 43 ; CHECK: jne
44 define void @count_down(double* %d, i64 %n) nounwind { 44 define void @count_down(double* %d, i64 %n) nounwind {
45 entry: 45 entry:
46 br label %loop 46 br label %loop
69 ret void 69 ret void
70 } 70 }
71 71
72 ; CHECK-LABEL: count_up_signed 72 ; CHECK-LABEL: count_up_signed
73 ; CHECK-NOT: {{and|movz|sar|shl}} 73 ; CHECK-NOT: {{and|movz|sar|shl}}
74 ; CHECK: incq 74 ; CHECK: addq $8
75 ; CHECK-NOT: {{and|movz|sar|shl}} 75 ; CHECK-NOT: {{and|movz|sar|shl}}
76 ; CHECK: jne 76 ; CHECK: jne
77 define void @count_up_signed(double* %d, i64 %n) nounwind { 77 define void @count_up_signed(double* %d, i64 %n) nounwind {
78 entry: 78 entry:
79 br label %loop 79 br label %loop
104 ret void 104 ret void
105 } 105 }
106 106
107 ; CHECK-LABEL: count_down_signed 107 ; CHECK-LABEL: count_down_signed
108 ; CHECK-NOT: {{and|movz|sar|shl}} 108 ; CHECK-NOT: {{and|movz|sar|shl}}
109 ; CHECK: addq 109 ; CHECK: addq $-8
110 ; CHECK-NOT: {{and|movz|sar|shl}} 110 ; CHECK-NOT: {{and|movz|sar|shl}}
111 ; CHECK: jne 111 ; CHECK: jne
112 define void @count_down_signed(double* %d, i64 %n) nounwind { 112 define void @count_down_signed(double* %d, i64 %n) nounwind {
113 entry: 113 entry:
114 br label %loop 114 br label %loop
139 ret void 139 ret void
140 } 140 }
141 141
142 ; CHECK-LABEL: another_count_up 142 ; CHECK-LABEL: another_count_up
143 ; CHECK-NOT: {{and|movz|sar|shl}} 143 ; CHECK-NOT: {{and|movz|sar|shl}}
144 ; CHECK: addq 144 ; CHECK: addq $8
145 ; CHECK-NOT: {{and|movz|sar|shl}} 145 ; CHECK-NOT: {{and|movz|sar|shl}}
146 ; CHECK: jne 146 ; CHECK: jne
147 define void @another_count_up(double* %d, i64 %n) nounwind { 147 define void @another_count_up(double* %d, i64 %n) nounwind {
148 entry: 148 entry:
149 br label %loop 149 br label %loop
172 ret void 172 ret void
173 } 173 }
174 174
175 ; CHECK-LABEL: another_count_down 175 ; CHECK-LABEL: another_count_down
176 ; CHECK-NOT: {{and|movz|sar|shl}} 176 ; CHECK-NOT: {{and|movz|sar|shl}}
177 ; CHECK: addq $-8, 177 ; CHECK: addq $-8
178 ; CHECK-NOT: {{and|movz|sar|shl}} 178 ; CHECK-NOT: {{and|movz|sar|shl}}
179 ; CHECK: jne 179 ; CHECK: jne
180 define void @another_count_down(double* %d, i64 %n) nounwind { 180 define void @another_count_down(double* %d, i64 %n) nounwind {
181 entry: 181 entry:
182 br label %loop 182 br label %loop
205 ret void 205 ret void
206 } 206 }
207 207
208 ; CHECK-LABEL: another_count_up_signed 208 ; CHECK-LABEL: another_count_up_signed
209 ; CHECK-NOT: {{and|movz|sar|shl}} 209 ; CHECK-NOT: {{and|movz|sar|shl}}
210 ; CHECK: addq 210 ; CHECK: addq $8
211 ; CHECK-NOT: {{and|movz|sar|shl}} 211 ; CHECK-NOT: {{and|movz|sar|shl}}
212 ; CHECK: jne 212 ; CHECK: jne
213 define void @another_count_up_signed(double* %d, i64 %n) nounwind { 213 define void @another_count_up_signed(double* %d, i64 %n) nounwind {
214 entry: 214 entry:
215 br label %loop 215 br label %loop
240 ret void 240 ret void
241 } 241 }
242 242
243 ; CHECK-LABEL: another_count_down_signed 243 ; CHECK-LABEL: another_count_down_signed
244 ; CHECK-NOT: {{and|movz|sar|shl}} 244 ; CHECK-NOT: {{and|movz|sar|shl}}
245 ; CHECK: decq 245 ; CHECK: addq $-8
246 ; CHECK-NOT: {{and|movz|sar|shl}} 246 ; CHECK-NOT: {{and|movz|sar|shl}}
247 ; CHECK: jne 247 ; CHECK: jne
248 define void @another_count_down_signed(double* %d, i64 %n) nounwind { 248 define void @another_count_down_signed(double* %d, i64 %n) nounwind {
249 entry: 249 entry:
250 br label %loop 250 br label %loop