1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mattr=+avx512f | FileCheck %s --check-prefix=CHECK --check-prefix=KNL
3 ; RUN: llc < %s -mattr=+avx512f,+avx512vl,+avx512bw,+avx512dq | FileCheck %s --check-prefix=CHECK --check-prefix=SKX
5 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
6 target triple = "x86_64-unknown-linux-gnu"
8 define i64 @foo64(i1 zeroext %i) #0 {
11 ; CHECK-NEXT: movzbl %dil, %eax
12 ; CHECK-NEXT: orq $-2, %rax
17 %z = zext i1 %i to i64
25 define i16 @foo16(i1 zeroext %i) #0 {
28 ; CHECK-NEXT: movzbl %dil, %eax
29 ; CHECK-NEXT: orl $65534, %eax # imm = 0xFFFE
30 ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
35 %z = zext i1 %i to i16
43 define i16 @foo16_1(i1 zeroext %i, i32 %j) #0 {
44 ; CHECK-LABEL: foo16_1:
46 ; CHECK-NEXT: movzbl %dil, %eax
47 ; CHECK-NEXT: orl $2, %eax
48 ; CHECK-NEXT: # kill: def $ax killed $ax killed $eax
53 %z = zext i1 %i to i16
61 define i32 @foo32(i1 zeroext %i) #0 {
64 ; CHECK-NEXT: movzbl %dil, %eax
65 ; CHECK-NEXT: orl $-2, %eax
70 %z = zext i1 %i to i32
78 define i8 @foo8(i1 zeroext %i) #0 {
81 ; CHECK-NEXT: movl %edi, %eax
82 ; CHECK-NEXT: orb $-2, %al
83 ; CHECK-NEXT: # kill: def $al killed $al killed $eax