1 ; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=core-avx2 -mattr=+avx2 | FileCheck %s
4 define <4 x i64> @vpaddq(<4 x i64> %i, <4 x i64> %j) nounwind readnone {
5 %x = add <4 x i64> %i, %j
10 define <8 x i32> @vpaddd(<8 x i32> %i, <8 x i32> %j) nounwind readnone {
11 %x = add <8 x i32> %i, %j
16 define <16 x i16> @vpaddw(<16 x i16> %i, <16 x i16> %j) nounwind readnone {
17 %x = add <16 x i16> %i, %j
22 define <32 x i8> @vpaddb(<32 x i8> %i, <32 x i8> %j) nounwind readnone {
23 %x = add <32 x i8> %i, %j
28 define <4 x i64> @vpsubq(<4 x i64> %i, <4 x i64> %j) nounwind readnone {
29 %x = sub <4 x i64> %i, %j
34 define <8 x i32> @vpsubd(<8 x i32> %i, <8 x i32> %j) nounwind readnone {
35 %x = sub <8 x i32> %i, %j
40 define <16 x i16> @vpsubw(<16 x i16> %i, <16 x i16> %j) nounwind readnone {
41 %x = sub <16 x i16> %i, %j
46 define <32 x i8> @vpsubb(<32 x i8> %i, <32 x i8> %j) nounwind readnone {
47 %x = sub <32 x i8> %i, %j
52 define <8 x i32> @vpmulld(<8 x i32> %i, <8 x i32> %j) nounwind readnone {
53 %x = mul <8 x i32> %i, %j
58 define <16 x i16> @vpmullw(<16 x i16> %i, <16 x i16> %j) nounwind readnone {
59 %x = mul <16 x i16> %i, %j
63 ; CHECK: vpmuludq %ymm
64 ; CHECK-NEXT: vpsrlq $32, %ymm
65 ; CHECK-NEXT: vpmuludq %ymm
66 ; CHECK-NEXT: vpsllq $32, %ymm
67 ; CHECK-NEXT: vpaddq %ymm
68 ; CHECK-NEXT: vpsrlq $32, %ymm
69 ; CHECK-NEXT: vpmuludq %ymm
70 ; CHECK-NEXT: vpsllq $32, %ymm
71 ; CHECK-NEXT: vpaddq %ymm
72 define <4 x i64> @mul-v4i64(<4 x i64> %i, <4 x i64> %j) nounwind readnone {
73 %x = mul <4 x i64> %i, %j
80 define <8 x i32> @mul_const1(<8 x i32> %x) {
81 %y = mul <8 x i32> %x, <i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2>
88 define <4 x i64> @mul_const2(<4 x i64> %x) {
89 %y = mul <4 x i64> %x, <i64 4, i64 4, i64 4, i64 4>
96 define <16 x i16> @mul_const3(<16 x i16> %x) {
97 %y = mul <16 x i16> %x, <i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8>
105 define <4 x i64> @mul_const4(<4 x i64> %x) {
106 %y = mul <4 x i64> %x, <i64 -1, i64 -1, i64 -1, i64 -1>
113 define <8 x i32> @mul_const5(<8 x i32> %x) {
114 %y = mul <8 x i32> %x, <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
121 define <8 x i32> @mul_const6(<8 x i32> %x) {
122 %y = mul <8 x i32> %x, <i32 0, i32 0, i32 0, i32 2, i32 0, i32 2, i32 0, i32 0>
130 define <8 x i64> @mul_const7(<8 x i64> %x) {
131 %y = mul <8 x i64> %x, <i64 2, i64 2, i64 2, i64 2, i64 2, i64 2, i64 2, i64 2>
138 define <8 x i16> @mul_const8(<8 x i16> %x) {
139 %y = mul <8 x i16> %x, <i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8>
146 define <8 x i32> @mul_const9(<8 x i32> %x) {
147 %y = mul <8 x i32> %x, <i32 2, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>