214 changes: 100 additions & 114 deletions llvm/test/CodeGen/X86/avx512-calling-conv.ll
Original file line number Diff line number Diff line change
Expand Up @@ -679,13 +679,6 @@ define <17 x i1> @test16(<17 x i1> %a, <17 x i1> %b) nounwind {
; KNL-NEXT: pushq %r13
; KNL-NEXT: pushq %r12
; KNL-NEXT: pushq %rbx
; KNL-NEXT: xorl %r10d, %r10d
; KNL-NEXT: testb $1, {{[0-9]+}}(%rsp)
; KNL-NEXT: movl $65535, %eax ## imm = 0xFFFF
; KNL-NEXT: movl $0, %r11d
; KNL-NEXT: cmovnel %eax, %r11d
; KNL-NEXT: testb $1, {{[0-9]+}}(%rsp)
; KNL-NEXT: cmovnel %eax, %r10d
; KNL-NEXT: movq %rdi, %rax
; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi
; KNL-NEXT: andl $1, %edi
Expand Down Expand Up @@ -905,10 +898,10 @@ define <17 x i1> @test16(<17 x i1> %a, <17 x i1> %b) nounwind {
; KNL-NEXT: kmovw %ecx, %k1
; KNL-NEXT: kshiftlw $15, %k1, %k1
; KNL-NEXT: korw %k1, %k0, %k0
; KNL-NEXT: kmovw %r11d, %k1
; KNL-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k2 ## 2-byte Reload
; KNL-NEXT: kandw %k2, %k0, %k0
; KNL-NEXT: kmovw %r10d, %k2
; KNL-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload
; KNL-NEXT: kandw %k1, %k0, %k0
; KNL-NEXT: kmovw {{[0-9]+}}(%rsp), %k1
; KNL-NEXT: kmovw {{[0-9]+}}(%rsp), %k2
; KNL-NEXT: kandw %k1, %k2, %k1
; KNL-NEXT: kmovw %k1, %edx
; KNL-NEXT: kshiftrw $1, %k0, %k1
Expand Down Expand Up @@ -1316,240 +1309,233 @@ define <17 x i1> @test16(<17 x i1> %a, <17 x i1> %b) nounwind {
; KNL_X32-NEXT: pushl %edi
; KNL_X32-NEXT: pushl %esi
; KNL_X32-NEXT: subl $16, %esp
; KNL_X32-NEXT: xorl %eax, %eax
; KNL_X32-NEXT: testb $1, {{[0-9]+}}(%esp)
; KNL_X32-NEXT: movl $65535, %edx ## imm = 0xFFFF
; KNL_X32-NEXT: movl $0, %ecx
; KNL_X32-NEXT: cmovnel %edx, %ecx
; KNL_X32-NEXT: testb $1, {{[0-9]+}}(%esp)
; KNL_X32-NEXT: cmovnel %edx, %eax
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %edx
; KNL_X32-NEXT: andl $1, %edx
; KNL_X32-NEXT: kmovw %edx, %k0
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %edx
; KNL_X32-NEXT: kmovw %edx, %k1
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax
; KNL_X32-NEXT: andl $1, %eax
; KNL_X32-NEXT: kmovw %eax, %k0
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax
; KNL_X32-NEXT: kmovw %eax, %k1
; KNL_X32-NEXT: kshiftlw $15, %k1, %k1
; KNL_X32-NEXT: kshiftrw $14, %k1, %k1
; KNL_X32-NEXT: korw %k1, %k0, %k0
; KNL_X32-NEXT: movw $-5, %dx
; KNL_X32-NEXT: kmovw %edx, %k1
; KNL_X32-NEXT: movw $-5, %ax
; KNL_X32-NEXT: kmovw %eax, %k1
; KNL_X32-NEXT: kmovw %k1, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill
; KNL_X32-NEXT: kandw %k1, %k0, %k0
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %edx
; KNL_X32-NEXT: kmovw %edx, %k1
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax
; KNL_X32-NEXT: kmovw %eax, %k1
; KNL_X32-NEXT: kshiftlw $15, %k1, %k1
; KNL_X32-NEXT: kshiftrw $13, %k1, %k1
; KNL_X32-NEXT: korw %k1, %k0, %k0
; KNL_X32-NEXT: movw $-9, %dx
; KNL_X32-NEXT: kmovw %edx, %k1
; KNL_X32-NEXT: movw $-9, %ax
; KNL_X32-NEXT: kmovw %eax, %k1
; KNL_X32-NEXT: kmovw %k1, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill
; KNL_X32-NEXT: kandw %k1, %k0, %k0
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %edx
; KNL_X32-NEXT: kmovw %edx, %k1
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax
; KNL_X32-NEXT: kmovw %eax, %k1
; KNL_X32-NEXT: kshiftlw $15, %k1, %k1
; KNL_X32-NEXT: kshiftrw $12, %k1, %k1
; KNL_X32-NEXT: korw %k1, %k0, %k0
; KNL_X32-NEXT: movw $-17, %dx
; KNL_X32-NEXT: kmovw %edx, %k1
; KNL_X32-NEXT: movw $-17, %ax
; KNL_X32-NEXT: kmovw %eax, %k1
; KNL_X32-NEXT: kmovw %k1, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill
; KNL_X32-NEXT: kandw %k1, %k0, %k0
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %edx
; KNL_X32-NEXT: kmovw %edx, %k1
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax
; KNL_X32-NEXT: kmovw %eax, %k1
; KNL_X32-NEXT: kshiftlw $15, %k1, %k1
; KNL_X32-NEXT: kshiftrw $11, %k1, %k1
; KNL_X32-NEXT: korw %k1, %k0, %k0
; KNL_X32-NEXT: movw $-33, %dx
; KNL_X32-NEXT: kmovw %edx, %k1
; KNL_X32-NEXT: movw $-33, %ax
; KNL_X32-NEXT: kmovw %eax, %k1
; KNL_X32-NEXT: kmovw %k1, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill
; KNL_X32-NEXT: kandw %k1, %k0, %k0
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %edx
; KNL_X32-NEXT: kmovw %edx, %k1
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax
; KNL_X32-NEXT: kmovw %eax, %k1
; KNL_X32-NEXT: kshiftlw $15, %k1, %k1
; KNL_X32-NEXT: kshiftrw $10, %k1, %k1
; KNL_X32-NEXT: korw %k1, %k0, %k0
; KNL_X32-NEXT: movw $-65, %dx
; KNL_X32-NEXT: kmovw %edx, %k1
; KNL_X32-NEXT: movw $-65, %ax
; KNL_X32-NEXT: kmovw %eax, %k1
; KNL_X32-NEXT: kmovw %k1, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill
; KNL_X32-NEXT: kandw %k1, %k0, %k0
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %edx
; KNL_X32-NEXT: kmovw %edx, %k1
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax
; KNL_X32-NEXT: kmovw %eax, %k1
; KNL_X32-NEXT: kshiftlw $15, %k1, %k1
; KNL_X32-NEXT: kshiftrw $9, %k1, %k1
; KNL_X32-NEXT: korw %k1, %k0, %k0
; KNL_X32-NEXT: movw $-129, %dx
; KNL_X32-NEXT: kmovw %edx, %k1
; KNL_X32-NEXT: movw $-129, %ax
; KNL_X32-NEXT: kmovw %eax, %k1
; KNL_X32-NEXT: kmovw %k1, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill
; KNL_X32-NEXT: kandw %k1, %k0, %k0
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %edx
; KNL_X32-NEXT: kmovw %edx, %k1
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax
; KNL_X32-NEXT: kmovw %eax, %k1
; KNL_X32-NEXT: kshiftlw $15, %k1, %k1
; KNL_X32-NEXT: kshiftrw $8, %k1, %k1
; KNL_X32-NEXT: korw %k1, %k0, %k0
; KNL_X32-NEXT: movw $-257, %dx ## imm = 0xFEFF
; KNL_X32-NEXT: kmovw %edx, %k1
; KNL_X32-NEXT: movw $-257, %ax ## imm = 0xFEFF
; KNL_X32-NEXT: kmovw %eax, %k1
; KNL_X32-NEXT: kmovw %k1, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill
; KNL_X32-NEXT: kandw %k1, %k0, %k0
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %edx
; KNL_X32-NEXT: kmovw %edx, %k1
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax
; KNL_X32-NEXT: kmovw %eax, %k1
; KNL_X32-NEXT: kshiftlw $15, %k1, %k1
; KNL_X32-NEXT: kshiftrw $7, %k1, %k1
; KNL_X32-NEXT: korw %k1, %k0, %k0
; KNL_X32-NEXT: movw $-513, %dx ## imm = 0xFDFF
; KNL_X32-NEXT: kmovw %edx, %k7
; KNL_X32-NEXT: movw $-513, %ax ## imm = 0xFDFF
; KNL_X32-NEXT: kmovw %eax, %k7
; KNL_X32-NEXT: kandw %k7, %k0, %k0
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %edx
; KNL_X32-NEXT: kmovw %edx, %k1
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax
; KNL_X32-NEXT: kmovw %eax, %k1
; KNL_X32-NEXT: kshiftlw $15, %k1, %k1
; KNL_X32-NEXT: kshiftrw $6, %k1, %k1
; KNL_X32-NEXT: korw %k1, %k0, %k0
; KNL_X32-NEXT: movw $-1025, %dx ## imm = 0xFBFF
; KNL_X32-NEXT: kmovw %edx, %k4
; KNL_X32-NEXT: movw $-1025, %ax ## imm = 0xFBFF
; KNL_X32-NEXT: kmovw %eax, %k4
; KNL_X32-NEXT: kandw %k4, %k0, %k0
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %edx
; KNL_X32-NEXT: kmovw %edx, %k1
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax
; KNL_X32-NEXT: kmovw %eax, %k1
; KNL_X32-NEXT: kshiftlw $15, %k1, %k1
; KNL_X32-NEXT: kshiftrw $5, %k1, %k1
; KNL_X32-NEXT: korw %k1, %k0, %k0
; KNL_X32-NEXT: movw $-2049, %dx ## imm = 0xF7FF
; KNL_X32-NEXT: kmovw %edx, %k3
; KNL_X32-NEXT: movw $-2049, %ax ## imm = 0xF7FF
; KNL_X32-NEXT: kmovw %eax, %k3
; KNL_X32-NEXT: kandw %k3, %k0, %k0
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %edx
; KNL_X32-NEXT: kmovw %edx, %k1
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax
; KNL_X32-NEXT: kmovw %eax, %k1
; KNL_X32-NEXT: kshiftlw $15, %k1, %k1
; KNL_X32-NEXT: kshiftrw $4, %k1, %k1
; KNL_X32-NEXT: korw %k1, %k0, %k0
; KNL_X32-NEXT: movw $-4097, %dx ## imm = 0xEFFF
; KNL_X32-NEXT: kmovw %edx, %k2
; KNL_X32-NEXT: movw $-4097, %ax ## imm = 0xEFFF
; KNL_X32-NEXT: kmovw %eax, %k2
; KNL_X32-NEXT: kandw %k2, %k0, %k0
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %edx
; KNL_X32-NEXT: kmovw %edx, %k1
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax
; KNL_X32-NEXT: kmovw %eax, %k1
; KNL_X32-NEXT: kshiftlw $15, %k1, %k1
; KNL_X32-NEXT: kshiftrw $3, %k1, %k1
; KNL_X32-NEXT: korw %k1, %k0, %k0
; KNL_X32-NEXT: movw $-8193, %dx ## imm = 0xDFFF
; KNL_X32-NEXT: kmovw %edx, %k1
; KNL_X32-NEXT: movw $-8193, %ax ## imm = 0xDFFF
; KNL_X32-NEXT: kmovw %eax, %k1
; KNL_X32-NEXT: kandw %k1, %k0, %k0
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %edx
; KNL_X32-NEXT: kmovw %edx, %k5
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax
; KNL_X32-NEXT: kmovw %eax, %k5
; KNL_X32-NEXT: kshiftlw $15, %k5, %k5
; KNL_X32-NEXT: kshiftrw $2, %k5, %k5
; KNL_X32-NEXT: korw %k5, %k0, %k5
; KNL_X32-NEXT: movw $-16385, %dx ## imm = 0xBFFF
; KNL_X32-NEXT: kmovw %edx, %k0
; KNL_X32-NEXT: movw $-16385, %ax ## imm = 0xBFFF
; KNL_X32-NEXT: kmovw %eax, %k0
; KNL_X32-NEXT: kandw %k0, %k5, %k5
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %edx
; KNL_X32-NEXT: kmovw %edx, %k6
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax
; KNL_X32-NEXT: kmovw %eax, %k6
; KNL_X32-NEXT: kshiftlw $14, %k6, %k6
; KNL_X32-NEXT: korw %k6, %k5, %k5
; KNL_X32-NEXT: kshiftlw $1, %k5, %k5
; KNL_X32-NEXT: kshiftrw $1, %k5, %k5
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %edx
; KNL_X32-NEXT: kmovw %edx, %k6
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax
; KNL_X32-NEXT: kmovw %eax, %k6
; KNL_X32-NEXT: kshiftlw $15, %k6, %k6
; KNL_X32-NEXT: korw %k6, %k5, %k5
; KNL_X32-NEXT: kmovw %k5, (%esp) ## 2-byte Spill
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %edx
; KNL_X32-NEXT: andl $1, %edx
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %ebx
; KNL_X32-NEXT: kmovw %ebx, %k5
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax
; KNL_X32-NEXT: andl $1, %eax
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %ecx
; KNL_X32-NEXT: kmovw %ecx, %k5
; KNL_X32-NEXT: kshiftlw $15, %k5, %k5
; KNL_X32-NEXT: kshiftrw $14, %k5, %k5
; KNL_X32-NEXT: kmovw %edx, %k6
; KNL_X32-NEXT: kmovw %eax, %k6
; KNL_X32-NEXT: korw %k5, %k6, %k5
; KNL_X32-NEXT: kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k6 ## 2-byte Reload
; KNL_X32-NEXT: kandw %k6, %k5, %k5
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %edx
; KNL_X32-NEXT: kmovw %edx, %k6
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax
; KNL_X32-NEXT: kmovw %eax, %k6
; KNL_X32-NEXT: kshiftlw $15, %k6, %k6
; KNL_X32-NEXT: kshiftrw $13, %k6, %k6
; KNL_X32-NEXT: korw %k6, %k5, %k5
; KNL_X32-NEXT: kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k6 ## 2-byte Reload
; KNL_X32-NEXT: kandw %k6, %k5, %k5
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %edx
; KNL_X32-NEXT: kmovw %edx, %k6
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax
; KNL_X32-NEXT: kmovw %eax, %k6
; KNL_X32-NEXT: kshiftlw $15, %k6, %k6
; KNL_X32-NEXT: kshiftrw $12, %k6, %k6
; KNL_X32-NEXT: korw %k6, %k5, %k5
; KNL_X32-NEXT: kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k6 ## 2-byte Reload
; KNL_X32-NEXT: kandw %k6, %k5, %k5
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %edx
; KNL_X32-NEXT: kmovw %edx, %k6
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax
; KNL_X32-NEXT: kmovw %eax, %k6
; KNL_X32-NEXT: kshiftlw $15, %k6, %k6
; KNL_X32-NEXT: kshiftrw $11, %k6, %k6
; KNL_X32-NEXT: korw %k6, %k5, %k5
; KNL_X32-NEXT: kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k6 ## 2-byte Reload
; KNL_X32-NEXT: kandw %k6, %k5, %k5
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %edx
; KNL_X32-NEXT: kmovw %edx, %k6
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax
; KNL_X32-NEXT: kmovw %eax, %k6
; KNL_X32-NEXT: kshiftlw $15, %k6, %k6
; KNL_X32-NEXT: kshiftrw $10, %k6, %k6
; KNL_X32-NEXT: korw %k6, %k5, %k5
; KNL_X32-NEXT: kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k6 ## 2-byte Reload
; KNL_X32-NEXT: kandw %k6, %k5, %k5
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %edx
; KNL_X32-NEXT: kmovw %edx, %k6
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax
; KNL_X32-NEXT: kmovw %eax, %k6
; KNL_X32-NEXT: kshiftlw $15, %k6, %k6
; KNL_X32-NEXT: kshiftrw $9, %k6, %k6
; KNL_X32-NEXT: korw %k6, %k5, %k5
; KNL_X32-NEXT: kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k6 ## 2-byte Reload
; KNL_X32-NEXT: kandw %k6, %k5, %k5
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %edx
; KNL_X32-NEXT: kmovw %edx, %k6
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax
; KNL_X32-NEXT: kmovw %eax, %k6
; KNL_X32-NEXT: kshiftlw $15, %k6, %k6
; KNL_X32-NEXT: kshiftrw $8, %k6, %k6
; KNL_X32-NEXT: korw %k6, %k5, %k5
; KNL_X32-NEXT: kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k6 ## 2-byte Reload
; KNL_X32-NEXT: kandw %k6, %k5, %k5
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %edx
; KNL_X32-NEXT: kmovw %edx, %k6
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax
; KNL_X32-NEXT: kmovw %eax, %k6
; KNL_X32-NEXT: kshiftlw $15, %k6, %k6
; KNL_X32-NEXT: kshiftrw $7, %k6, %k6
; KNL_X32-NEXT: korw %k6, %k5, %k5
; KNL_X32-NEXT: kandw %k7, %k5, %k5
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %edx
; KNL_X32-NEXT: kmovw %edx, %k6
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax
; KNL_X32-NEXT: kmovw %eax, %k6
; KNL_X32-NEXT: kshiftlw $15, %k6, %k6
; KNL_X32-NEXT: kshiftrw $6, %k6, %k6
; KNL_X32-NEXT: korw %k6, %k5, %k5
; KNL_X32-NEXT: kandw %k4, %k5, %k4
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %edx
; KNL_X32-NEXT: kmovw %edx, %k5
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax
; KNL_X32-NEXT: kmovw %eax, %k5
; KNL_X32-NEXT: kshiftlw $15, %k5, %k5
; KNL_X32-NEXT: kshiftrw $5, %k5, %k5
; KNL_X32-NEXT: korw %k5, %k4, %k4
; KNL_X32-NEXT: kandw %k3, %k4, %k3
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %edx
; KNL_X32-NEXT: kmovw %edx, %k4
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax
; KNL_X32-NEXT: kmovw %eax, %k4
; KNL_X32-NEXT: kshiftlw $15, %k4, %k4
; KNL_X32-NEXT: kshiftrw $4, %k4, %k4
; KNL_X32-NEXT: korw %k4, %k3, %k3
; KNL_X32-NEXT: kandw %k2, %k3, %k2
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %edx
; KNL_X32-NEXT: kmovw %edx, %k3
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax
; KNL_X32-NEXT: kmovw %eax, %k3
; KNL_X32-NEXT: kshiftlw $15, %k3, %k3
; KNL_X32-NEXT: kshiftrw $3, %k3, %k3
; KNL_X32-NEXT: korw %k3, %k2, %k2
; KNL_X32-NEXT: kandw %k1, %k2, %k1
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %edx
; KNL_X32-NEXT: kmovw %edx, %k2
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax
; KNL_X32-NEXT: kmovw %eax, %k2
; KNL_X32-NEXT: kshiftlw $15, %k2, %k2
; KNL_X32-NEXT: kshiftrw $2, %k2, %k2
; KNL_X32-NEXT: korw %k2, %k1, %k1
; KNL_X32-NEXT: kandw %k0, %k1, %k0
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %edx
; KNL_X32-NEXT: kmovw %edx, %k1
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax
; KNL_X32-NEXT: kmovw %eax, %k1
; KNL_X32-NEXT: kshiftlw $14, %k1, %k1
; KNL_X32-NEXT: korw %k1, %k0, %k0
; KNL_X32-NEXT: kshiftlw $1, %k0, %k0
; KNL_X32-NEXT: kshiftrw $1, %k0, %k0
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %edx
; KNL_X32-NEXT: kmovw %edx, %k1
; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax
; KNL_X32-NEXT: kmovw %eax, %k1
; KNL_X32-NEXT: kshiftlw $15, %k1, %k1
; KNL_X32-NEXT: korw %k1, %k0, %k0
; KNL_X32-NEXT: kmovw %ecx, %k1
; KNL_X32-NEXT: kmovw (%esp), %k2 ## 2-byte Reload
; KNL_X32-NEXT: kandw %k2, %k0, %k0
; KNL_X32-NEXT: kmovw %eax, %k2
; KNL_X32-NEXT: kmovw (%esp), %k1 ## 2-byte Reload
; KNL_X32-NEXT: kandw %k1, %k0, %k0
; KNL_X32-NEXT: kmovw {{[0-9]+}}(%esp), %k1
; KNL_X32-NEXT: kmovw {{[0-9]+}}(%esp), %k2
; KNL_X32-NEXT: kandw %k1, %k2, %k1
; KNL_X32-NEXT: movl {{[0-9]+}}(%esp), %eax
; KNL_X32-NEXT: kmovw %k1, %ebx
Expand Down
32 changes: 14 additions & 18 deletions llvm/test/CodeGen/X86/avx512-extract-subvector-load-store.ll
Original file line number Diff line number Diff line change
Expand Up @@ -697,12 +697,10 @@ define void @load_v3i1_broadcast_1_v1i1_store(ptr %a0,ptr %a1) {
; AVX512-LABEL: load_v3i1_broadcast_1_v1i1_store:
; AVX512: # %bb.0:
; AVX512-NEXT: movzbl (%rdi), %eax
; AVX512-NEXT: shrb %al
; AVX512-NEXT: xorl %ecx, %ecx
; AVX512-NEXT: testb $1, %al
; AVX512-NEXT: movl $255, %eax
; AVX512-NEXT: cmovel %ecx, %eax
; AVX512-NEXT: kmovd %eax, %k0
; AVX512-NEXT: btl $1, %eax
; AVX512-NEXT: sbbl %ecx, %ecx
; AVX512-NEXT: kmovd %ecx, %k0
; AVX512-NEXT: kshiftrb $1, %k0, %k0
; AVX512-NEXT: kshiftlb $7, %k0, %k0
; AVX512-NEXT: kshiftrb $7, %k0, %k0
Expand All @@ -712,12 +710,10 @@ define void @load_v3i1_broadcast_1_v1i1_store(ptr %a0,ptr %a1) {
; AVX512NOTDQ-LABEL: load_v3i1_broadcast_1_v1i1_store:
; AVX512NOTDQ: # %bb.0:
; AVX512NOTDQ-NEXT: movzbl (%rdi), %eax
; AVX512NOTDQ-NEXT: shrb %al
; AVX512NOTDQ-NEXT: xorl %ecx, %ecx
; AVX512NOTDQ-NEXT: testb $1, %al
; AVX512NOTDQ-NEXT: movl $255, %eax
; AVX512NOTDQ-NEXT: cmovel %ecx, %eax
; AVX512NOTDQ-NEXT: kmovd %eax, %k0
; AVX512NOTDQ-NEXT: btl $1, %eax
; AVX512NOTDQ-NEXT: sbbl %ecx, %ecx
; AVX512NOTDQ-NEXT: kmovd %ecx, %k0
; AVX512NOTDQ-NEXT: kshiftrw $1, %k0, %k0
; AVX512NOTDQ-NEXT: kshiftlw $15, %k0, %k0
; AVX512NOTDQ-NEXT: kshiftrw $15, %k0, %k0
Expand All @@ -732,10 +728,10 @@ define void @load_v3i1_broadcast_1_v1i1_store(ptr %a0,ptr %a1) {
define void @load_v3i1_broadcast_2_v1i1_store(ptr %a0,ptr %a1) {
; AVX512-LABEL: load_v3i1_broadcast_2_v1i1_store:
; AVX512: # %bb.0:
; AVX512-NEXT: xorl %eax, %eax
; AVX512-NEXT: testb $4, (%rdi)
; AVX512-NEXT: movl $255, %ecx
; AVX512-NEXT: cmovel %eax, %ecx
; AVX512-NEXT: movzbl (%rdi), %eax
; AVX512-NEXT: xorl %ecx, %ecx
; AVX512-NEXT: btl $2, %eax
; AVX512-NEXT: sbbl %ecx, %ecx
; AVX512-NEXT: kmovd %ecx, %k0
; AVX512-NEXT: kshiftrb $2, %k0, %k0
; AVX512-NEXT: kshiftlb $7, %k0, %k0
Expand All @@ -745,10 +741,10 @@ define void @load_v3i1_broadcast_2_v1i1_store(ptr %a0,ptr %a1) {
;
; AVX512NOTDQ-LABEL: load_v3i1_broadcast_2_v1i1_store:
; AVX512NOTDQ: # %bb.0:
; AVX512NOTDQ-NEXT: xorl %eax, %eax
; AVX512NOTDQ-NEXT: testb $4, (%rdi)
; AVX512NOTDQ-NEXT: movl $255, %ecx
; AVX512NOTDQ-NEXT: cmovel %eax, %ecx
; AVX512NOTDQ-NEXT: movzbl (%rdi), %eax
; AVX512NOTDQ-NEXT: xorl %ecx, %ecx
; AVX512NOTDQ-NEXT: btl $2, %eax
; AVX512NOTDQ-NEXT: sbbl %ecx, %ecx
; AVX512NOTDQ-NEXT: kmovd %ecx, %k0
; AVX512NOTDQ-NEXT: kshiftrw $2, %k0, %k0
; AVX512NOTDQ-NEXT: kshiftlw $15, %k0, %k0
Expand Down
6 changes: 2 additions & 4 deletions llvm/test/CodeGen/X86/avx512-insert-extract.ll
Original file line number Diff line number Diff line change
Expand Up @@ -298,10 +298,8 @@ define i64 @test14(<8 x i64>%a, <8 x i64>%b, i64 %a1, i64 %b1) nounwind {
define i16 @test15(ptr%addr) nounwind {
; CHECK-LABEL: test15:
; CHECK: ## %bb.0:
; CHECK-NEXT: xorl %ecx, %ecx
; CHECK-NEXT: cmpb $0, (%rdi)
; CHECK-NEXT: movl $65535, %eax ## imm = 0xFFFF
; CHECK-NEXT: cmovel %ecx, %eax
; CHECK-NEXT: movzbl (%rdi), %eax
; CHECK-NEXT: negl %eax
; CHECK-NEXT: ## kill: def $ax killed $ax killed $eax
; CHECK-NEXT: retq
%x = load i1 , ptr %addr, align 1
Expand Down
8 changes: 3 additions & 5 deletions llvm/test/CodeGen/X86/pr43507.ll
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,9 @@
define <8 x i1> @ham(i64 %arg) {
; CHECK-LABEL: ham:
; CHECK: # %bb.0:
; CHECK-NEXT: xorl %eax, %eax
; CHECK-NEXT: testb $1, %dil
; CHECK-NEXT: movl $255, %ecx
; CHECK-NEXT: cmovel %eax, %ecx
; CHECK-NEXT: kmovd %ecx, %k0
; CHECK-NEXT: andb $1, %dil
; CHECK-NEXT: negb %dil
; CHECK-NEXT: kmovd %edi, %k0
; CHECK-NEXT: vpmovm2w %k0, %xmm0
; CHECK-NEXT: retq
%tmp = trunc i64 %arg to i1
Expand Down
14 changes: 6 additions & 8 deletions llvm/test/CodeGen/X86/setcc-lowering.ll
Original file line number Diff line number Diff line change
Expand Up @@ -88,27 +88,25 @@ define void @pr26232(i64 %a, <16 x i1> %b) nounwind {
;
; KNL-32-LABEL: pr26232:
; KNL-32: # %bb.0: # %allocas
; KNL-32-NEXT: pushl %esi
; KNL-32-NEXT: vpmovsxbd %xmm0, %zmm0
; KNL-32-NEXT: vpslld $31, %zmm0, %zmm0
; KNL-32-NEXT: vptestmd %zmm0, %zmm0, %k0
; KNL-32-NEXT: movl {{[0-9]+}}(%esp), %eax
; KNL-32-NEXT: movl {{[0-9]+}}(%esp), %ecx
; KNL-32-NEXT: movl $65535, %edx # imm = 0xFFFF
; KNL-32-NEXT: .p2align 4, 0x90
; KNL-32-NEXT: .LBB1_1: # %for_loop599
; KNL-32-NEXT: # =>This Inner Loop Header: Depth=1
; KNL-32-NEXT: cmpl $65536, %ecx # imm = 0x10000
; KNL-32-NEXT: movl %eax, %esi
; KNL-32-NEXT: sbbl $0, %esi
; KNL-32-NEXT: movl $0, %esi
; KNL-32-NEXT: cmovll %edx, %esi
; KNL-32-NEXT: kmovw %esi, %k1
; KNL-32-NEXT: movl %eax, %edx
; KNL-32-NEXT: sbbl $0, %edx
; KNL-32-NEXT: setl %dl
; KNL-32-NEXT: movzbl %dl, %edx
; KNL-32-NEXT: negl %edx
; KNL-32-NEXT: kmovw %edx, %k1
; KNL-32-NEXT: kandw %k0, %k1, %k1
; KNL-32-NEXT: kortestw %k1, %k1
; KNL-32-NEXT: jne .LBB1_1
; KNL-32-NEXT: # %bb.2: # %for_exit600
; KNL-32-NEXT: popl %esi
; KNL-32-NEXT: retl
allocas:
br label %for_test11.preheader
Expand Down
14 changes: 6 additions & 8 deletions llvm/test/CodeGen/X86/vector-reduce-fmax-nnan.ll
Original file line number Diff line number Diff line change
Expand Up @@ -415,11 +415,10 @@ define half @test_v2f16(<2 x half> %a0) nounwind {
; AVX512F-NEXT: vpsrld $16, %xmm0, %xmm1
; AVX512F-NEXT: vcvtph2ps %xmm0, %xmm2
; AVX512F-NEXT: vcvtph2ps %xmm1, %xmm3
; AVX512F-NEXT: xorl %eax, %eax
; AVX512F-NEXT: vucomiss %xmm3, %xmm2
; AVX512F-NEXT: movl $255, %ecx
; AVX512F-NEXT: cmovbel %eax, %ecx
; AVX512F-NEXT: kmovd %ecx, %k1
; AVX512F-NEXT: seta %al
; AVX512F-NEXT: negb %al
; AVX512F-NEXT: kmovd %eax, %k1
; AVX512F-NEXT: vmovdqu16 %zmm0, %zmm1 {%k1}
; AVX512F-NEXT: vmovdqa %xmm1, %xmm0
; AVX512F-NEXT: vzeroupper
Expand All @@ -430,11 +429,10 @@ define half @test_v2f16(<2 x half> %a0) nounwind {
; AVX512VL-NEXT: vpsrld $16, %xmm0, %xmm1
; AVX512VL-NEXT: vcvtph2ps %xmm0, %xmm2
; AVX512VL-NEXT: vcvtph2ps %xmm1, %xmm3
; AVX512VL-NEXT: xorl %eax, %eax
; AVX512VL-NEXT: vucomiss %xmm3, %xmm2
; AVX512VL-NEXT: movl $255, %ecx
; AVX512VL-NEXT: cmovbel %eax, %ecx
; AVX512VL-NEXT: kmovd %ecx, %k1
; AVX512VL-NEXT: seta %al
; AVX512VL-NEXT: negb %al
; AVX512VL-NEXT: kmovd %eax, %k1
; AVX512VL-NEXT: vmovdqu16 %xmm0, %xmm1 {%k1}
; AVX512VL-NEXT: vmovdqa %xmm1, %xmm0
; AVX512VL-NEXT: retq
Expand Down
10 changes: 4 additions & 6 deletions llvm/test/CodeGen/X86/vector-reduce-fmin-nnan.ll
Original file line number Diff line number Diff line change
Expand Up @@ -416,9 +416,8 @@ define half @test_v2f16(<2 x half> %a0) nounwind {
; AVX512F-NEXT: vcvtph2ps %xmm1, %xmm3
; AVX512F-NEXT: xorl %eax, %eax
; AVX512F-NEXT: vucomiss %xmm3, %xmm2
; AVX512F-NEXT: movl $255, %ecx
; AVX512F-NEXT: cmovael %eax, %ecx
; AVX512F-NEXT: kmovd %ecx, %k1
; AVX512F-NEXT: sbbl %eax, %eax
; AVX512F-NEXT: kmovd %eax, %k1
; AVX512F-NEXT: vmovdqu16 %zmm0, %zmm1 {%k1}
; AVX512F-NEXT: vmovdqa %xmm1, %xmm0
; AVX512F-NEXT: vzeroupper
Expand All @@ -431,9 +430,8 @@ define half @test_v2f16(<2 x half> %a0) nounwind {
; AVX512VL-NEXT: vcvtph2ps %xmm1, %xmm3
; AVX512VL-NEXT: xorl %eax, %eax
; AVX512VL-NEXT: vucomiss %xmm3, %xmm2
; AVX512VL-NEXT: movl $255, %ecx
; AVX512VL-NEXT: cmovael %eax, %ecx
; AVX512VL-NEXT: kmovd %ecx, %k1
; AVX512VL-NEXT: sbbl %eax, %eax
; AVX512VL-NEXT: kmovd %eax, %k1
; AVX512VL-NEXT: vmovdqu16 %xmm0, %xmm1 {%k1}
; AVX512VL-NEXT: vmovdqa %xmm1, %xmm0
; AVX512VL-NEXT: retq
Expand Down