@@ -611,26 +611,58 @@ def : Pat<(f128 (X86cmov VR128:$t, VR128:$f, imm:$cond, EFLAGS)),
611
611
(CMOV_VR128 VR128:$t, VR128:$f, imm:$cond)>;
612
612
613
613
let Predicates = [NoVLX] in {
614
+ def : Pat<(v16i8 (X86cmov VR128:$t, VR128:$f, imm:$cond, EFLAGS)),
615
+ (CMOV_VR128 VR128:$t, VR128:$f, imm:$cond)>;
616
+ def : Pat<(v8i16 (X86cmov VR128:$t, VR128:$f, imm:$cond, EFLAGS)),
617
+ (CMOV_VR128 VR128:$t, VR128:$f, imm:$cond)>;
618
+ def : Pat<(v4i32 (X86cmov VR128:$t, VR128:$f, imm:$cond, EFLAGS)),
619
+ (CMOV_VR128 VR128:$t, VR128:$f, imm:$cond)>;
614
620
def : Pat<(v4f32 (X86cmov VR128:$t, VR128:$f, imm:$cond, EFLAGS)),
615
621
(CMOV_VR128 VR128:$t, VR128:$f, imm:$cond)>;
616
622
def : Pat<(v2f64 (X86cmov VR128:$t, VR128:$f, imm:$cond, EFLAGS)),
617
623
(CMOV_VR128 VR128:$t, VR128:$f, imm:$cond)>;
624
+
625
+ def : Pat<(v32i8 (X86cmov VR256:$t, VR256:$f, imm:$cond, EFLAGS)),
626
+ (CMOV_VR256 VR256:$t, VR256:$f, imm:$cond)>;
627
+ def : Pat<(v16i16 (X86cmov VR256:$t, VR256:$f, imm:$cond, EFLAGS)),
628
+ (CMOV_VR256 VR256:$t, VR256:$f, imm:$cond)>;
629
+ def : Pat<(v8i32 (X86cmov VR256:$t, VR256:$f, imm:$cond, EFLAGS)),
630
+ (CMOV_VR256 VR256:$t, VR256:$f, imm:$cond)>;
618
631
def : Pat<(v8f32 (X86cmov VR256:$t, VR256:$f, imm:$cond, EFLAGS)),
619
632
(CMOV_VR256 VR256:$t, VR256:$f, imm:$cond)>;
620
633
def : Pat<(v4f64 (X86cmov VR256:$t, VR256:$f, imm:$cond, EFLAGS)),
621
634
(CMOV_VR256 VR256:$t, VR256:$f, imm:$cond)>;
622
635
}
623
636
let Predicates = [HasVLX] in {
637
+ def : Pat<(v16i8 (X86cmov VR128X:$t, VR128X:$f, imm:$cond, EFLAGS)),
638
+ (CMOV_VR128X VR128X:$t, VR128X:$f, imm:$cond)>;
639
+ def : Pat<(v8i16 (X86cmov VR128X:$t, VR128X:$f, imm:$cond, EFLAGS)),
640
+ (CMOV_VR128X VR128X:$t, VR128X:$f, imm:$cond)>;
641
+ def : Pat<(v4i32 (X86cmov VR128X:$t, VR128X:$f, imm:$cond, EFLAGS)),
642
+ (CMOV_VR128X VR128X:$t, VR128X:$f, imm:$cond)>;
624
643
def : Pat<(v4f32 (X86cmov VR128X:$t, VR128X:$f, imm:$cond, EFLAGS)),
625
644
(CMOV_VR128X VR128X:$t, VR128X:$f, imm:$cond)>;
626
645
def : Pat<(v2f64 (X86cmov VR128X:$t, VR128X:$f, imm:$cond, EFLAGS)),
627
646
(CMOV_VR128X VR128X:$t, VR128X:$f, imm:$cond)>;
647
+
648
+ def : Pat<(v32i8 (X86cmov VR256X:$t, VR256X:$f, imm:$cond, EFLAGS)),
649
+ (CMOV_VR256X VR256X:$t, VR256X:$f, imm:$cond)>;
650
+ def : Pat<(v16i16 (X86cmov VR256X:$t, VR256X:$f, imm:$cond, EFLAGS)),
651
+ (CMOV_VR256X VR256X:$t, VR256X:$f, imm:$cond)>;
652
+ def : Pat<(v8i32 (X86cmov VR256X:$t, VR256X:$f, imm:$cond, EFLAGS)),
653
+ (CMOV_VR256X VR256X:$t, VR256X:$f, imm:$cond)>;
628
654
def : Pat<(v8f32 (X86cmov VR256X:$t, VR256X:$f, imm:$cond, EFLAGS)),
629
655
(CMOV_VR256X VR256X:$t, VR256X:$f, imm:$cond)>;
630
656
def : Pat<(v4f64 (X86cmov VR256X:$t, VR256X:$f, imm:$cond, EFLAGS)),
631
657
(CMOV_VR256X VR256X:$t, VR256X:$f, imm:$cond)>;
632
658
}
633
659
660
+ def : Pat<(v64i8 (X86cmov VR512:$t, VR512:$f, imm:$cond, EFLAGS)),
661
+ (CMOV_VR512 VR512:$t, VR512:$f, imm:$cond)>;
662
+ def : Pat<(v32i16 (X86cmov VR512:$t, VR512:$f, imm:$cond, EFLAGS)),
663
+ (CMOV_VR512 VR512:$t, VR512:$f, imm:$cond)>;
664
+ def : Pat<(v16i32 (X86cmov VR512:$t, VR512:$f, imm:$cond, EFLAGS)),
665
+ (CMOV_VR512 VR512:$t, VR512:$f, imm:$cond)>;
634
666
def : Pat<(v16f32 (X86cmov VR512:$t, VR512:$f, imm:$cond, EFLAGS)),
635
667
(CMOV_VR512 VR512:$t, VR512:$f, imm:$cond)>;
636
668
def : Pat<(v8f64 (X86cmov VR512:$t, VR512:$f, imm:$cond, EFLAGS)),
0 commit comments