Please use GitHub pull requests for new patches. Avoid migrating existing patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
test/CodeGen/X86/bitcast-and-setcc-512.ll
Show First 20 Lines • Show All 651 Lines • ▼ Show 20 Lines | |||||
; AVX512F-NEXT: kmovw %k0, {{[0-9]+}}(%rsp) | ; AVX512F-NEXT: kmovw %k0, {{[0-9]+}}(%rsp) | ||||
; AVX512F-NEXT: vpmovsxbd %xmm0, %zmm0 | ; AVX512F-NEXT: vpmovsxbd %xmm0, %zmm0 | ||||
; AVX512F-NEXT: vpslld $31, %zmm0, %zmm0 | ; AVX512F-NEXT: vpslld $31, %zmm0, %zmm0 | ||||
; AVX512F-NEXT: vptestmd %zmm0, %zmm0, %k0 | ; AVX512F-NEXT: vptestmd %zmm0, %zmm0, %k0 | ||||
; AVX512F-NEXT: kmovw %k0, (%rsp) | ; AVX512F-NEXT: kmovw %k0, (%rsp) | ||||
; AVX512F-NEXT: movl (%rsp), %eax | ; AVX512F-NEXT: movl (%rsp), %eax | ||||
; AVX512F-NEXT: movq %rbp, %rsp | ; AVX512F-NEXT: movq %rbp, %rsp | ||||
; AVX512F-NEXT: popq %rbp | ; AVX512F-NEXT: popq %rbp | ||||
; AVX512F-NEXT: .Lcfi3: | |||||
; AVX512F-NEXT: .cfi_def_cfa %rsp, 8 | |||||
; AVX512F-NEXT: vzeroupper | ; AVX512F-NEXT: vzeroupper | ||||
; AVX512F-NEXT: retq | ; AVX512F-NEXT: retq | ||||
; | ; | ||||
; AVX512BW-LABEL: v32i16: | ; AVX512BW-LABEL: v32i16: | ||||
; AVX512BW: # BB#0: | ; AVX512BW: # BB#0: | ||||
; AVX512BW-NEXT: vpcmpgtw %zmm1, %zmm0, %k1 | ; AVX512BW-NEXT: vpcmpgtw %zmm1, %zmm0, %k1 | ||||
; AVX512BW-NEXT: vpcmpgtw %zmm3, %zmm2, %k0 {%k1} | ; AVX512BW-NEXT: vpcmpgtw %zmm3, %zmm2, %k0 {%k1} | ||||
; AVX512BW-NEXT: kmovd %k0, %eax | ; AVX512BW-NEXT: kmovd %k0, %eax | ||||
▲ Show 20 Lines • Show All 733 Lines • ▼ Show 20 Lines | |||||
; AVX1-NEXT: andb $1, %al | ; AVX1-NEXT: andb $1, %al | ||||
; AVX1-NEXT: movb %al, {{[0-9]+}}(%rsp) | ; AVX1-NEXT: movb %al, {{[0-9]+}}(%rsp) | ||||
; AVX1-NEXT: movl (%rsp), %ecx | ; AVX1-NEXT: movl (%rsp), %ecx | ||||
; AVX1-NEXT: movl {{[0-9]+}}(%rsp), %eax | ; AVX1-NEXT: movl {{[0-9]+}}(%rsp), %eax | ||||
; AVX1-NEXT: shlq $32, %rax | ; AVX1-NEXT: shlq $32, %rax | ||||
; AVX1-NEXT: orq %rcx, %rax | ; AVX1-NEXT: orq %rcx, %rax | ||||
; AVX1-NEXT: movq %rbp, %rsp | ; AVX1-NEXT: movq %rbp, %rsp | ||||
; AVX1-NEXT: popq %rbp | ; AVX1-NEXT: popq %rbp | ||||
; AVX1-NEXT: .Lcfi3: | |||||
; AVX1-NEXT: .cfi_def_cfa %rsp, 8 | |||||
; AVX1-NEXT: vzeroupper | ; AVX1-NEXT: vzeroupper | ||||
; AVX1-NEXT: retq | ; AVX1-NEXT: retq | ||||
; | ; | ||||
; AVX2-LABEL: v64i8: | ; AVX2-LABEL: v64i8: | ||||
; AVX2: # BB#0: | ; AVX2: # BB#0: | ||||
; AVX2-NEXT: pushq %rbp | ; AVX2-NEXT: pushq %rbp | ||||
; AVX2-NEXT: .Lcfi0: | ; AVX2-NEXT: .Lcfi0: | ||||
; AVX2-NEXT: .cfi_def_cfa_offset 16 | ; AVX2-NEXT: .cfi_def_cfa_offset 16 | ||||
▲ Show 20 Lines • Show All 205 Lines • ▼ Show 20 Lines | |||||
; AVX2-NEXT: andb $1, %al | ; AVX2-NEXT: andb $1, %al | ||||
; AVX2-NEXT: movb %al, {{[0-9]+}}(%rsp) | ; AVX2-NEXT: movb %al, {{[0-9]+}}(%rsp) | ||||
; AVX2-NEXT: movl (%rsp), %ecx | ; AVX2-NEXT: movl (%rsp), %ecx | ||||
; AVX2-NEXT: movl {{[0-9]+}}(%rsp), %eax | ; AVX2-NEXT: movl {{[0-9]+}}(%rsp), %eax | ||||
; AVX2-NEXT: shlq $32, %rax | ; AVX2-NEXT: shlq $32, %rax | ||||
; AVX2-NEXT: orq %rcx, %rax | ; AVX2-NEXT: orq %rcx, %rax | ||||
; AVX2-NEXT: movq %rbp, %rsp | ; AVX2-NEXT: movq %rbp, %rsp | ||||
; AVX2-NEXT: popq %rbp | ; AVX2-NEXT: popq %rbp | ||||
; AVX2-NEXT: .Lcfi3: | |||||
; AVX2-NEXT: .cfi_def_cfa %rsp, 8 | |||||
; AVX2-NEXT: vzeroupper | ; AVX2-NEXT: vzeroupper | ||||
; AVX2-NEXT: retq | ; AVX2-NEXT: retq | ||||
; | ; | ||||
; AVX512F-LABEL: v64i8: | ; AVX512F-LABEL: v64i8: | ||||
; AVX512F: # BB#0: | ; AVX512F: # BB#0: | ||||
; AVX512F-NEXT: pushq %rbp | ; AVX512F-NEXT: pushq %rbp | ||||
; AVX512F-NEXT: .Lcfi3: | |||||
; AVX512F-NEXT: .cfi_def_cfa_offset 16 | |||||
; AVX512F-NEXT: .Lcfi4: | ; AVX512F-NEXT: .Lcfi4: | ||||
; AVX512F-NEXT: .cfi_def_cfa_offset 16 | |||||
; AVX512F-NEXT: .Lcfi5: | |||||
; AVX512F-NEXT: .cfi_offset %rbp, -16 | ; AVX512F-NEXT: .cfi_offset %rbp, -16 | ||||
; AVX512F-NEXT: movq %rsp, %rbp | ; AVX512F-NEXT: movq %rsp, %rbp | ||||
; AVX512F-NEXT: .Lcfi5: | ; AVX512F-NEXT: .Lcfi6: | ||||
; AVX512F-NEXT: .cfi_def_cfa_register %rbp | ; AVX512F-NEXT: .cfi_def_cfa_register %rbp | ||||
; AVX512F-NEXT: andq $-32, %rsp | ; AVX512F-NEXT: andq $-32, %rsp | ||||
; AVX512F-NEXT: subq $64, %rsp | ; AVX512F-NEXT: subq $64, %rsp | ||||
; AVX512F-NEXT: vpcmpgtb %ymm3, %ymm1, %ymm1 | ; AVX512F-NEXT: vpcmpgtb %ymm3, %ymm1, %ymm1 | ||||
; AVX512F-NEXT: vpcmpgtb %ymm2, %ymm0, %ymm0 | ; AVX512F-NEXT: vpcmpgtb %ymm2, %ymm0, %ymm0 | ||||
; AVX512F-NEXT: vpcmpgtb %ymm7, %ymm5, %ymm2 | ; AVX512F-NEXT: vpcmpgtb %ymm7, %ymm5, %ymm2 | ||||
; AVX512F-NEXT: vpand %ymm2, %ymm1, %ymm1 | ; AVX512F-NEXT: vpand %ymm2, %ymm1, %ymm1 | ||||
; AVX512F-NEXT: vpcmpgtb %ymm6, %ymm4, %ymm2 | ; AVX512F-NEXT: vpcmpgtb %ymm6, %ymm4, %ymm2 | ||||
Show All 17 Lines | |||||
; AVX512F-NEXT: vptestmd %zmm0, %zmm0, %k0 | ; AVX512F-NEXT: vptestmd %zmm0, %zmm0, %k0 | ||||
; AVX512F-NEXT: kmovw %k0, {{[0-9]+}}(%rsp) | ; AVX512F-NEXT: kmovw %k0, {{[0-9]+}}(%rsp) | ||||
; AVX512F-NEXT: movl (%rsp), %ecx | ; AVX512F-NEXT: movl (%rsp), %ecx | ||||
; AVX512F-NEXT: movl {{[0-9]+}}(%rsp), %eax | ; AVX512F-NEXT: movl {{[0-9]+}}(%rsp), %eax | ||||
; AVX512F-NEXT: shlq $32, %rax | ; AVX512F-NEXT: shlq $32, %rax | ||||
; AVX512F-NEXT: orq %rcx, %rax | ; AVX512F-NEXT: orq %rcx, %rax | ||||
; AVX512F-NEXT: movq %rbp, %rsp | ; AVX512F-NEXT: movq %rbp, %rsp | ||||
; AVX512F-NEXT: popq %rbp | ; AVX512F-NEXT: popq %rbp | ||||
; AVX512F-NEXT: .Lcfi7: | |||||
; AVX512F-NEXT: .cfi_def_cfa %rsp, 8 | |||||
; AVX512F-NEXT: vzeroupper | ; AVX512F-NEXT: vzeroupper | ||||
; AVX512F-NEXT: retq | ; AVX512F-NEXT: retq | ||||
; | ; | ||||
; AVX512BW-LABEL: v64i8: | ; AVX512BW-LABEL: v64i8: | ||||
; AVX512BW: # BB#0: | ; AVX512BW: # BB#0: | ||||
; AVX512BW-NEXT: vpcmpgtb %zmm1, %zmm0, %k1 | ; AVX512BW-NEXT: vpcmpgtb %zmm1, %zmm0, %k1 | ||||
; AVX512BW-NEXT: vpcmpgtb %zmm3, %zmm2, %k0 {%k1} | ; AVX512BW-NEXT: vpcmpgtb %zmm3, %zmm2, %k0 {%k1} | ||||
; AVX512BW-NEXT: kmovq %k0, %rax | ; AVX512BW-NEXT: kmovq %k0, %rax | ||||
; AVX512BW-NEXT: vzeroupper | ; AVX512BW-NEXT: vzeroupper | ||||
; AVX512BW-NEXT: retq | ; AVX512BW-NEXT: retq | ||||
%x0 = icmp sgt <64 x i8> %a, %b | %x0 = icmp sgt <64 x i8> %a, %b | ||||
%x1 = icmp sgt <64 x i8> %c, %d | %x1 = icmp sgt <64 x i8> %c, %d | ||||
%y = and <64 x i1> %x0, %x1 | %y = and <64 x i1> %x0, %x1 | ||||
%res = bitcast <64 x i1> %y to i64 | %res = bitcast <64 x i1> %y to i64 | ||||
ret i64 %res | ret i64 %res | ||||
} | } |