Lines Matching refs:BMI2

4 … %s | FileCheck %s --check-prefixes=CHECK,X86,V0123,X86-V0123,SSE2,X86-SSE2,BMI2,X86-BMI2,V2,X86-V2
5 …i2,+avx2 < %s | FileCheck %s --check-prefixes=CHECK,X86,V0123,X86-V0123,BMI2,X86-BMI2,AVX2,X86-AVX2
8 … %s | FileCheck %s --check-prefixes=CHECK,X64,V0123,X64-V0123,SSE2,X64-SSE2,BMI2,X64-BMI2,V2,X64-V2
9 …i2,+avx2 < %s | FileCheck %s --check-prefixes=CHECK,X64,V0123,X64-V0123,BMI2,X64-BMI2,AVX2,X64-AVX2
106 ; X86-BMI2-LABEL: scalar_i16_signbit_eq:
107 ; X86-BMI2: # %bb.0:
108 ; X86-BMI2-NEXT: movb {{[0-9]+}}(%esp), %al
109 ; X86-BMI2-NEXT: shlxl %eax, {{[0-9]+}}(%esp), %eax
110 ; X86-BMI2-NEXT: testl $32768, %eax # imm = 0x8000
111 ; X86-BMI2-NEXT: sete %al
112 ; X86-BMI2-NEXT: retl
123 ; X64-BMI2-LABEL: scalar_i16_signbit_eq:
124 ; X64-BMI2: # %bb.0:
125 ; X64-BMI2-NEXT: shlxl %esi, %edi, %eax
126 ; X64-BMI2-NEXT: testl $32768, %eax # imm = 0x8000
127 ; X64-BMI2-NEXT: sete %al
128 ; X64-BMI2-NEXT: retq
145 ; X86-BMI2-LABEL: scalar_i16_lowestbit_eq:
146 ; X86-BMI2: # %bb.0:
147 ; X86-BMI2-NEXT: movb {{[0-9]+}}(%esp), %al
148 ; X86-BMI2-NEXT: shlxl %eax, {{[0-9]+}}(%esp), %eax
149 ; X86-BMI2-NEXT: testb $1, %al
150 ; X86-BMI2-NEXT: sete %al
151 ; X86-BMI2-NEXT: retl
162 ; X64-BMI2-LABEL: scalar_i16_lowestbit_eq:
163 ; X64-BMI2: # %bb.0:
164 ; X64-BMI2-NEXT: shlxl %esi, %edi, %eax
165 ; X64-BMI2-NEXT: testb $1, %al
166 ; X64-BMI2-NEXT: sete %al
167 ; X64-BMI2-NEXT: retq
184 ; X86-BMI2-LABEL: scalar_i16_bitsinmiddle_eq:
185 ; X86-BMI2: # %bb.0:
186 ; X86-BMI2-NEXT: movb {{[0-9]+}}(%esp), %al
187 ; X86-BMI2-NEXT: shlxl %eax, {{[0-9]+}}(%esp), %eax
188 ; X86-BMI2-NEXT: testl $4080, %eax # imm = 0xFF0
189 ; X86-BMI2-NEXT: sete %al
190 ; X86-BMI2-NEXT: retl
201 ; X64-BMI2-LABEL: scalar_i16_bitsinmiddle_eq:
202 ; X64-BMI2: # %bb.0:
203 ; X64-BMI2-NEXT: shlxl %esi, %edi, %eax
204 ; X64-BMI2-NEXT: testl $4080, %eax # imm = 0xFF0
205 ; X64-BMI2-NEXT: sete %al
206 ; X64-BMI2-NEXT: retq
225 ; X86-BMI2-LABEL: scalar_i32_signbit_eq:
226 ; X86-BMI2: # %bb.0:
227 ; X86-BMI2-NEXT: movb {{[0-9]+}}(%esp), %al
228 ; X86-BMI2-NEXT: shlxl %eax, {{[0-9]+}}(%esp), %eax
229 ; X86-BMI2-NEXT: testl $-2147483648, %eax # imm = 0x80000000
230 ; X86-BMI2-NEXT: sete %al
231 ; X86-BMI2-NEXT: retl
242 ; X64-BMI2-LABEL: scalar_i32_signbit_eq:
243 ; X64-BMI2: # %bb.0:
244 ; X64-BMI2-NEXT: shlxl %esi, %edi, %eax
245 ; X64-BMI2-NEXT: testl $-2147483648, %eax # imm = 0x80000000
246 ; X64-BMI2-NEXT: sete %al
247 ; X64-BMI2-NEXT: retq
264 ; X86-BMI2-LABEL: scalar_i32_lowestbit_eq:
265 ; X86-BMI2: # %bb.0:
266 ; X86-BMI2-NEXT: movb {{[0-9]+}}(%esp), %al
267 ; X86-BMI2-NEXT: shlxl %eax, {{[0-9]+}}(%esp), %eax
268 ; X86-BMI2-NEXT: testb $1, %al
269 ; X86-BMI2-NEXT: sete %al
270 ; X86-BMI2-NEXT: retl
281 ; X64-BMI2-LABEL: scalar_i32_lowestbit_eq:
282 ; X64-BMI2: # %bb.0:
283 ; X64-BMI2-NEXT: shlxl %esi, %edi, %eax
284 ; X64-BMI2-NEXT: testb $1, %al
285 ; X64-BMI2-NEXT: sete %al
286 ; X64-BMI2-NEXT: retq
303 ; X86-BMI2-LABEL: scalar_i32_bitsinmiddle_eq:
304 ; X86-BMI2: # %bb.0:
305 ; X86-BMI2-NEXT: movb {{[0-9]+}}(%esp), %al
306 ; X86-BMI2-NEXT: shlxl %eax, {{[0-9]+}}(%esp), %eax
307 ; X86-BMI2-NEXT: testl $16776960, %eax # imm = 0xFFFF00
308 ; X86-BMI2-NEXT: sete %al
309 ; X86-BMI2-NEXT: retl
320 ; X64-BMI2-LABEL: scalar_i32_bitsinmiddle_eq:
321 ; X64-BMI2: # %bb.0:
322 ; X64-BMI2-NEXT: shlxl %esi, %edi, %eax
323 ; X64-BMI2-NEXT: testl $16776960, %eax # imm = 0xFFFF00
324 ; X64-BMI2-NEXT: sete %al
325 ; X64-BMI2-NEXT: retq
351 ; X86-BMI2-LABEL: scalar_i64_signbit_eq:
352 ; X86-BMI2: # %bb.0:
353 ; X86-BMI2-NEXT: movb {{[0-9]+}}(%esp), %cl
354 ; X86-BMI2-NEXT: movl {{[0-9]+}}(%esp), %eax
355 ; X86-BMI2-NEXT: movl {{[0-9]+}}(%esp), %edx
356 ; X86-BMI2-NEXT: shldl %cl, %eax, %edx
357 ; X86-BMI2-NEXT: shlxl %ecx, %eax, %eax
358 ; X86-BMI2-NEXT: testb $32, %cl
359 ; X86-BMI2-NEXT: cmovel %edx, %eax
360 ; X86-BMI2-NEXT: testl $-2147483648, %eax # imm = 0x80000000
361 ; X86-BMI2-NEXT: sete %al
362 ; X86-BMI2-NEXT: retl
373 ; X64-BMI2-LABEL: scalar_i64_signbit_eq:
374 ; X64-BMI2: # %bb.0:
375 ; X64-BMI2-NEXT: shlxq %rsi, %rdi, %rax
376 ; X64-BMI2-NEXT: shrq $63, %rax
377 ; X64-BMI2-NEXT: sete %al
378 ; X64-BMI2-NEXT: retq
398 ; X86-BMI2-LABEL: scalar_i64_lowestbit_eq:
399 ; X86-BMI2: # %bb.0:
400 ; X86-BMI2-NEXT: movb {{[0-9]+}}(%esp), %al
401 ; X86-BMI2-NEXT: shlxl %eax, {{[0-9]+}}(%esp), %ecx
402 ; X86-BMI2-NEXT: xorl %edx, %edx
403 ; X86-BMI2-NEXT: testb $32, %al
404 ; X86-BMI2-NEXT: cmovel %ecx, %edx
405 ; X86-BMI2-NEXT: testb $1, %dl
406 ; X86-BMI2-NEXT: sete %al
407 ; X86-BMI2-NEXT: retl
418 ; X64-BMI2-LABEL: scalar_i64_lowestbit_eq:
419 ; X64-BMI2: # %bb.0:
420 ; X64-BMI2-NEXT: shlxq %rsi, %rdi, %rax
421 ; X64-BMI2-NEXT: testb $1, %al
422 ; X64-BMI2-NEXT: sete %al
423 ; X64-BMI2-NEXT: retq
451 ; X86-BMI2-LABEL: scalar_i64_bitsinmiddle_eq:
452 ; X86-BMI2: # %bb.0:
453 ; X86-BMI2-NEXT: pushl %esi
454 ; X86-BMI2-NEXT: movb {{[0-9]+}}(%esp), %cl
455 ; X86-BMI2-NEXT: movl {{[0-9]+}}(%esp), %eax
456 ; X86-BMI2-NEXT: movl {{[0-9]+}}(%esp), %edx
457 ; X86-BMI2-NEXT: shldl %cl, %eax, %edx
458 ; X86-BMI2-NEXT: shlxl %ecx, %eax, %eax
459 ; X86-BMI2-NEXT: xorl %esi, %esi
460 ; X86-BMI2-NEXT: testb $32, %cl
461 ; X86-BMI2-NEXT: cmovnel %eax, %edx
462 ; X86-BMI2-NEXT: movzwl %dx, %ecx
463 ; X86-BMI2-NEXT: cmovel %eax, %esi
464 ; X86-BMI2-NEXT: andl $-65536, %esi # imm = 0xFFFF0000
465 ; X86-BMI2-NEXT: orl %ecx, %esi
466 ; X86-BMI2-NEXT: sete %al
467 ; X86-BMI2-NEXT: popl %esi
468 ; X86-BMI2-NEXT: retl
480 ; X64-BMI2-LABEL: scalar_i64_bitsinmiddle_eq:
481 ; X64-BMI2: # %bb.0:
482 ; X64-BMI2-NEXT: shlxq %rsi, %rdi, %rax
483 ; X64-BMI2-NEXT: movabsq $281474976645120, %rcx # imm = 0xFFFFFFFF0000
484 ; X64-BMI2-NEXT: testq %rcx, %rax
485 ; X64-BMI2-NEXT: sete %al
486 ; X64-BMI2-NEXT: retq
769 ; X86-BMI2-LABEL: scalar_i32_x_is_const2_eq:
770 ; X86-BMI2: # %bb.0:
771 ; X86-BMI2-NEXT: movb {{[0-9]+}}(%esp), %al
772 ; X86-BMI2-NEXT: movl $1, %ecx
773 ; X86-BMI2-NEXT: shrxl %eax, %ecx, %eax
774 ; X86-BMI2-NEXT: testb %al, %al
775 ; X86-BMI2-NEXT: sete %al
776 ; X86-BMI2-NEXT: retl
788 ; X64-BMI2-LABEL: scalar_i32_x_is_const2_eq:
789 ; X64-BMI2: # %bb.0:
790 ; X64-BMI2-NEXT: movl $1, %eax
791 ; X64-BMI2-NEXT: shrxl %edi, %eax, %eax
792 ; X64-BMI2-NEXT: testb %al, %al
793 ; X64-BMI2-NEXT: sete %al
794 ; X64-BMI2-NEXT: retq