sub_8bit))>;
def : Pat<(v8i1 (load addr:$src)),
- (COPY_TO_REGCLASS (MOVZX16rm8 addr:$src), VK8)>;
+ (COPY_TO_REGCLASS (MOVZX32rm8 addr:$src), VK8)>;
def : Pat<(v2i1 (load addr:$src)),
- (COPY_TO_REGCLASS (MOVZX16rm8 addr:$src), VK2)>;
+ (COPY_TO_REGCLASS (MOVZX32rm8 addr:$src), VK2)>;
def : Pat<(v4i1 (load addr:$src)),
- (COPY_TO_REGCLASS (MOVZX16rm8 addr:$src), VK4)>;
+ (COPY_TO_REGCLASS (MOVZX32rm8 addr:$src), VK4)>;
}
let Predicates = [HasAVX512] in {
def : Pat<(store (i16 (bitconvert (v16i1 VK16:$src))), addr:$dst),
(KMOVWmk addr:$dst, VK16:$src)>;
def : Pat<(i1 (load addr:$src)),
- (COPY_TO_REGCLASS (AND16ri (MOVZX16rm8 addr:$src), (i16 1)), VK1)>;
+ (COPY_TO_REGCLASS (AND32ri (MOVZX32rm8 addr:$src), (i32 1)), VK1)>;
def : Pat<(v16i1 (bitconvert (i16 (load addr:$src)))),
(KMOVWkm addr:$src)>;
}
}
;CHECK-LABEL: test16
-;CHECK: movzbw (%rdi), %ax
+;CHECK: movzbl (%rdi), %eax
;CHECK: kmovw
;CHECK: kshiftlw $10
;CHECK: korw
}
;CHECK-LABEL: test17
-;KNL: movzbw (%rdi), %ax
-;KNL: andw $1, %ax
+;KNL: movzbl (%rdi), %eax
+;KNL: andl $1, %eax
;KNL: kshiftlw $4
;KNL: korw
;SKX: kshiftlb $4
define void @mask8_mem(i8* %ptr) {
; KNL-LABEL: mask8_mem:
; KNL: ## BB#0:
-; KNL-NEXT: movzbw (%rdi), %ax
+; KNL-NEXT: movzbl (%rdi), %eax
; KNL-NEXT: kmovw %eax, %k0
; KNL-NEXT: knotw %k0, %k0
; KNL-NEXT: kmovw %k0, %eax
define <8 x i64> @load_8i1(<8 x i1>* %a) {
; KNL-LABEL: load_8i1:
; KNL: ## BB#0:
-; KNL-NEXT: movzbw (%rdi), %ax
+; KNL-NEXT: movzbl (%rdi), %eax
; KNL-NEXT: kmovw %eax, %k1
; KNL-NEXT: vpbroadcastq {{.*}}(%rip), %zmm0 {%k1} {z}
; KNL-NEXT: retq
define <2 x i16> @load_2i1(<2 x i1>* %a) {
; KNL-LABEL: load_2i1:
; KNL: ## BB#0:
-; KNL-NEXT: movzbw (%rdi), %ax
+; KNL-NEXT: movzbl (%rdi), %eax
; KNL-NEXT: kmovw %eax, %k1
; KNL-NEXT: vpbroadcastq {{.*}}(%rip), %zmm0 {%k1} {z}
; KNL-NEXT: retq
define <4 x i16> @load_4i1(<4 x i1>* %a) {
; KNL-LABEL: load_4i1:
; KNL: ## BB#0:
-; KNL-NEXT: movzbw (%rdi), %ax
+; KNL-NEXT: movzbl (%rdi), %eax
; KNL-NEXT: kmovw %eax, %k1
; KNL-NEXT: vpbroadcastq {{.*}}(%rip), %zmm0 {%k1} {z}
; KNL-NEXT: vpmovqd %zmm0, %ymm0
define i8 @select05_mem(<8 x i1>* %a.0, <8 x i1>* %m) {
; CHECK-LABEL: select05_mem:
; CHECK: ## BB#0:
-; CHECK-NEXT: movzbw (%rsi), %ax
+; CHECK-NEXT: movzbl (%rsi), %eax
; CHECK-NEXT: kmovw %eax, %k0
-; CHECK-NEXT: movzbw (%rdi), %ax
+; CHECK-NEXT: movzbl (%rdi), %eax
; CHECK-NEXT: kmovw %eax, %k1
; CHECK-NEXT: korw %k1, %k0, %k0
; CHECK-NEXT: kmovw %k0, %eax
define i8 @select06_mem(<8 x i1>* %a.0, <8 x i1>* %m) {
; CHECK-LABEL: select06_mem:
; CHECK: ## BB#0:
-; CHECK-NEXT: movzbw (%rsi), %ax
+; CHECK-NEXT: movzbl (%rsi), %eax
; CHECK-NEXT: kmovw %eax, %k0
-; CHECK-NEXT: movzbw (%rdi), %ax
+; CHECK-NEXT: movzbl (%rdi), %eax
; CHECK-NEXT: kmovw %eax, %k1
; CHECK-NEXT: kandw %k1, %k0, %k0
; CHECK-NEXT: kmovw %k0, %eax
; KNL_32-LABEL: test7:
; KNL_32: # BB#0:
; KNL_32-NEXT: movl {{[0-9]+}}(%esp), %eax
-; KNL_32-NEXT: movzbw {{[0-9]+}}(%esp), %cx
+; KNL_32-NEXT: movzbl {{[0-9]+}}(%esp), %ecx
; KNL_32-NEXT: kmovw %ecx, %k1
; KNL_32-NEXT: vpmovsxdq %ymm0, %zmm0
; KNL_32-NEXT: kmovw %k1, %k2