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
102 ; X86-BMI2-LABEL: scalar_i16_signbit_eq:
103 ; X86-BMI2: # %bb.0:
104 ; X86-BMI2-NEXT: movzwl {{[0-9]+}}(%esp), %eax
105 ; X86-BMI2-NEXT: movb {{[0-9]+}}(%esp), %cl
106 ; X86-BMI2-NEXT: shrxl %ecx, %eax, %eax
107 ; X86-BMI2-NEXT: testl $32768, %eax # imm = 0x8000
108 ; X86-BMI2-NEXT: sete %al
109 ; X86-BMI2-NEXT: retl
121 ; X64-BMI2-LABEL: scalar_i16_signbit_eq:
122 ; X64-BMI2: # %bb.0:
123 ; X64-BMI2-NEXT: movzwl %di, %eax
124 ; X64-BMI2-NEXT: shrxl %esi, %eax, %eax
125 ; X64-BMI2-NEXT: testl $32768, %eax # imm = 0x8000
126 ; X64-BMI2-NEXT: sete %al
127 ; X64-BMI2-NEXT: retq
164 ; X86-BMI2-LABEL: scalar_i16_bitsinmiddle_eq:
165 ; X86-BMI2: # %bb.0:
166 ; X86-BMI2-NEXT: movzwl {{[0-9]+}}(%esp), %eax
167 ; X86-BMI2-NEXT: movb {{[0-9]+}}(%esp), %cl
168 ; X86-BMI2-NEXT: shrxl %ecx, %eax, %eax
169 ; X86-BMI2-NEXT: testl $4080, %eax # imm = 0xFF0
170 ; X86-BMI2-NEXT: sete %al
171 ; X86-BMI2-NEXT: retl
183 ; X64-BMI2-LABEL: scalar_i16_bitsinmiddle_eq:
184 ; X64-BMI2: # %bb.0:
185 ; X64-BMI2-NEXT: movzwl %di, %eax
186 ; X64-BMI2-NEXT: shrxl %esi, %eax, %eax
187 ; X64-BMI2-NEXT: testl $4080, %eax # imm = 0xFF0
188 ; X64-BMI2-NEXT: sete %al
189 ; X64-BMI2-NEXT: retq
208 ; X86-BMI2-LABEL: scalar_i32_signbit_eq:
209 ; X86-BMI2: # %bb.0:
210 ; X86-BMI2-NEXT: movb {{[0-9]+}}(%esp), %al
211 ; X86-BMI2-NEXT: shrxl %eax, {{[0-9]+}}(%esp), %eax
212 ; X86-BMI2-NEXT: testl $-2147483648, %eax # imm = 0x80000000
213 ; X86-BMI2-NEXT: sete %al
214 ; X86-BMI2-NEXT: retl
225 ; X64-BMI2-LABEL: scalar_i32_signbit_eq:
226 ; X64-BMI2: # %bb.0:
227 ; X64-BMI2-NEXT: shrxl %esi, %edi, %eax
228 ; X64-BMI2-NEXT: testl $-2147483648, %eax # imm = 0x80000000
229 ; X64-BMI2-NEXT: sete %al
230 ; X64-BMI2-NEXT: retq
267 ; X86-BMI2-LABEL: scalar_i32_bitsinmiddle_eq:
268 ; X86-BMI2: # %bb.0:
269 ; X86-BMI2-NEXT: movb {{[0-9]+}}(%esp), %al
270 ; X86-BMI2-NEXT: shrxl %eax, {{[0-9]+}}(%esp), %eax
271 ; X86-BMI2-NEXT: testl $16776960, %eax # imm = 0xFFFF00
272 ; X86-BMI2-NEXT: sete %al
273 ; X86-BMI2-NEXT: retl
284 ; X64-BMI2-LABEL: scalar_i32_bitsinmiddle_eq:
285 ; X64-BMI2: # %bb.0:
286 ; X64-BMI2-NEXT: shrxl %esi, %edi, %eax
287 ; X64-BMI2-NEXT: testl $16776960, %eax # imm = 0xFFFF00
288 ; X64-BMI2-NEXT: sete %al
289 ; X64-BMI2-NEXT: retq
311 ; X86-BMI2-LABEL: scalar_i64_signbit_eq:
312 ; X86-BMI2: # %bb.0:
313 ; X86-BMI2-NEXT: movb {{[0-9]+}}(%esp), %al
314 ; X86-BMI2-NEXT: shrxl %eax, {{[0-9]+}}(%esp), %ecx
315 ; X86-BMI2-NEXT: xorl %edx, %edx
316 ; X86-BMI2-NEXT: testb $32, %al
317 ; X86-BMI2-NEXT: cmovel %ecx, %edx
318 ; X86-BMI2-NEXT: testl $-2147483648, %edx # imm = 0x80000000
319 ; X86-BMI2-NEXT: sete %al
320 ; X86-BMI2-NEXT: retl
331 ; X64-BMI2-LABEL: scalar_i64_signbit_eq:
332 ; X64-BMI2: # %bb.0:
333 ; X64-BMI2-NEXT: shrxq %rsi, %rdi, %rax
334 ; X64-BMI2-NEXT: btq $63, %rax
335 ; X64-BMI2-NEXT: setae %al
336 ; X64-BMI2-NEXT: retq
363 ; X86-BMI2-LABEL: scalar_i64_lowestbit_eq:
364 ; X86-BMI2: # %bb.0:
365 ; X86-BMI2-NEXT: pushl %esi
366 ; X86-BMI2-NEXT: movb {{[0-9]+}}(%esp), %cl
367 ; X86-BMI2-NEXT: movl $1, %eax
368 ; X86-BMI2-NEXT: xorl %edx, %edx
369 ; X86-BMI2-NEXT: xorl %esi, %esi
370 ; X86-BMI2-NEXT: shldl %cl, %eax, %esi
371 ; X86-BMI2-NEXT: shlxl %ecx, %eax, %eax
372 ; X86-BMI2-NEXT: testb $32, %cl
373 ; X86-BMI2-NEXT: cmovnel %eax, %esi
374 ; X86-BMI2-NEXT: cmovnel %edx, %eax
375 ; X86-BMI2-NEXT: andl {{[0-9]+}}(%esp), %esi
376 ; X86-BMI2-NEXT: andl {{[0-9]+}}(%esp), %eax
377 ; X86-BMI2-NEXT: orl %esi, %eax
378 ; X86-BMI2-NEXT: sete %al
379 ; X86-BMI2-NEXT: popl %esi
380 ; X86-BMI2-NEXT: retl
414 ; X86-BMI2-LABEL: scalar_i64_bitsinmiddle_eq:
415 ; X86-BMI2: # %bb.0:
416 ; X86-BMI2-NEXT: pushl %esi
417 ; X86-BMI2-NEXT: movb {{[0-9]+}}(%esp), %cl
418 ; X86-BMI2-NEXT: movl {{[0-9]+}}(%esp), %eax
419 ; X86-BMI2-NEXT: movl {{[0-9]+}}(%esp), %edx
420 ; X86-BMI2-NEXT: shrdl %cl, %edx, %eax
421 ; X86-BMI2-NEXT: shrxl %ecx, %edx, %edx
422 ; X86-BMI2-NEXT: xorl %esi, %esi
423 ; X86-BMI2-NEXT: testb $32, %cl
424 ; X86-BMI2-NEXT: cmovnel %edx, %eax
425 ; X86-BMI2-NEXT: cmovel %edx, %esi
426 ; X86-BMI2-NEXT: andl $-65536, %eax # imm = 0xFFFF0000
427 ; X86-BMI2-NEXT: movzwl %si, %ecx
428 ; X86-BMI2-NEXT: orl %eax, %ecx
429 ; X86-BMI2-NEXT: sete %al
430 ; X86-BMI2-NEXT: popl %esi
431 ; X86-BMI2-NEXT: retl
443 ; X64-BMI2-LABEL: scalar_i64_bitsinmiddle_eq:
444 ; X64-BMI2: # %bb.0:
445 ; X64-BMI2-NEXT: shrxq %rsi, %rdi, %rax
446 ; X64-BMI2-NEXT: movabsq $281474976645120, %rcx # imm = 0xFFFFFFFF0000
447 ; X64-BMI2-NEXT: testq %rcx, %rax
448 ; X64-BMI2-NEXT: sete %al
449 ; X64-BMI2-NEXT: retq
751 ; X86-BMI2-LABEL: scalar_i32_x_is_const_eq:
752 ; X86-BMI2: # %bb.0:
753 ; X86-BMI2-NEXT: movb {{[0-9]+}}(%esp), %al
754 ; X86-BMI2-NEXT: movl $-1437226411, %ecx # imm = 0xAA55AA55
755 ; X86-BMI2-NEXT: shlxl %eax, %ecx, %eax
756 ; X86-BMI2-NEXT: testb $1, %al
757 ; X86-BMI2-NEXT: sete %al
758 ; X86-BMI2-NEXT: retl
770 ; X64-BMI2-LABEL: scalar_i32_x_is_const_eq:
771 ; X64-BMI2: # %bb.0:
772 ; X64-BMI2-NEXT: movl $-1437226411, %eax # imm = 0xAA55AA55
773 ; X64-BMI2-NEXT: shlxl %edi, %eax, %eax
774 ; X64-BMI2-NEXT: testb $1, %al
775 ; X64-BMI2-NEXT: sete %al
776 ; X64-BMI2-NEXT: retq