brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.2 KiB · 97ca0d8 Raw
256 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512bw,+avx512vl | FileCheck %s --check-prefixes=CHECK3 4; 256-bit5 6define <32 x i8> @vpaddb256_test(<32 x i8> %i, <32 x i8> %j) nounwind readnone {7; CHECK-LABEL: vpaddb256_test:8; CHECK:       # %bb.0:9; CHECK-NEXT:    vpaddb %ymm1, %ymm0, %ymm010; CHECK-NEXT:    retq11  %x = add <32 x i8> %i, %j12  ret <32 x i8> %x13}14 15define <32 x i8> @vpaddb256_fold_test(<32 x i8> %i, ptr %j) nounwind {16; CHECK-LABEL: vpaddb256_fold_test:17; CHECK:       # %bb.0:18; CHECK-NEXT:    vpaddb (%rdi), %ymm0, %ymm019; CHECK-NEXT:    retq20  %tmp = load <32 x i8>, ptr %j, align 421  %x = add <32 x i8> %i, %tmp22  ret <32 x i8> %x23}24 25define <16 x i16> @vpaddw256_test(<16 x i16> %i, <16 x i16> %j) nounwind readnone {26; CHECK-LABEL: vpaddw256_test:27; CHECK:       # %bb.0:28; CHECK-NEXT:    vpaddw %ymm1, %ymm0, %ymm029; CHECK-NEXT:    retq30  %x = add <16 x i16> %i, %j31  ret <16 x i16> %x32}33 34define <16 x i16> @vpaddw256_fold_test(<16 x i16> %i, ptr %j) nounwind {35; CHECK-LABEL: vpaddw256_fold_test:36; CHECK:       # %bb.0:37; CHECK-NEXT:    vpaddw (%rdi), %ymm0, %ymm038; CHECK-NEXT:    retq39  %tmp = load <16 x i16>, ptr %j, align 440  %x = add <16 x i16> %i, %tmp41  ret <16 x i16> %x42}43 44define <16 x i16> @vpaddw256_mask_test(<16 x i16> %i, <16 x i16> %j, <16 x i16> %mask1) nounwind readnone {45; CHECK-LABEL: vpaddw256_mask_test:46; CHECK:       # %bb.0:47; CHECK-NEXT:    vptestmw %ymm2, %ymm2, %k148; CHECK-NEXT:    vpaddw %ymm1, %ymm0, %ymm0 {%k1}49; CHECK-NEXT:    retq50  %mask = icmp ne <16 x i16> %mask1, zeroinitializer51  %x = add <16 x i16> %i, %j52  %r = select <16 x i1> %mask, <16 x i16> %x, <16 x i16> %i53  ret <16 x i16> %r54}55 56define <16 x i16> @vpaddw256_maskz_test(<16 x i16> %i, <16 x i16> %j, <16 x i16> %mask1) nounwind readnone {57; CHECK-LABEL: vpaddw256_maskz_test:58; CHECK:       # %bb.0:59; CHECK-NEXT:    vptestmw %ymm2, %ymm2, %k160; CHECK-NEXT:    vpaddw %ymm1, %ymm0, %ymm0 {%k1} {z}61; CHECK-NEXT:    retq62  %mask = icmp ne <16 x i16> %mask1, zeroinitializer63  %x = add <16 x i16> %i, %j64  %r = select <16 x i1> %mask, <16 x i16> %x, <16 x i16> zeroinitializer65  ret <16 x i16> %r66}67 68define <16 x i16> @vpaddw256_mask_fold_test(<16 x i16> %i, ptr %j.ptr, <16 x i16> %mask1) nounwind readnone {69; CHECK-LABEL: vpaddw256_mask_fold_test:70; CHECK:       # %bb.0:71; CHECK-NEXT:    vptestmw %ymm1, %ymm1, %k172; CHECK-NEXT:    vpaddw (%rdi), %ymm0, %ymm0 {%k1}73; CHECK-NEXT:    retq74  %mask = icmp ne <16 x i16> %mask1, zeroinitializer75  %j = load <16 x i16>, ptr %j.ptr76  %x = add <16 x i16> %i, %j77  %r = select <16 x i1> %mask, <16 x i16> %x, <16 x i16> %i78  ret <16 x i16> %r79}80 81define <16 x i16> @vpaddw256_maskz_fold_test(<16 x i16> %i, ptr %j.ptr, <16 x i16> %mask1) nounwind readnone {82; CHECK-LABEL: vpaddw256_maskz_fold_test:83; CHECK:       # %bb.0:84; CHECK-NEXT:    vptestmw %ymm1, %ymm1, %k185; CHECK-NEXT:    vpaddw (%rdi), %ymm0, %ymm0 {%k1} {z}86; CHECK-NEXT:    retq87  %mask = icmp ne <16 x i16> %mask1, zeroinitializer88  %j = load <16 x i16>, ptr %j.ptr89  %x = add <16 x i16> %i, %j90  %r = select <16 x i1> %mask, <16 x i16> %x, <16 x i16> zeroinitializer91  ret <16 x i16> %r92}93 94define <32 x i8> @vpsubb256_test(<32 x i8> %i, <32 x i8> %j) nounwind readnone {95; CHECK-LABEL: vpsubb256_test:96; CHECK:       # %bb.0:97; CHECK-NEXT:    vpsubb %ymm1, %ymm0, %ymm098; CHECK-NEXT:    retq99  %x = sub <32 x i8> %i, %j100  ret <32 x i8> %x101}102 103define <16 x i16> @vpsubw256_test(<16 x i16> %i, <16 x i16> %j) nounwind readnone {104; CHECK-LABEL: vpsubw256_test:105; CHECK:       # %bb.0:106; CHECK-NEXT:    vpsubw %ymm1, %ymm0, %ymm0107; CHECK-NEXT:    retq108  %x = sub <16 x i16> %i, %j109  ret <16 x i16> %x110}111 112define <16 x i16> @vpmullw256_test(<16 x i16> %i, <16 x i16> %j) {113; CHECK-LABEL: vpmullw256_test:114; CHECK:       # %bb.0:115; CHECK-NEXT:    vpmullw %ymm1, %ymm0, %ymm0116; CHECK-NEXT:    retq117  %x = mul <16 x i16> %i, %j118  ret <16 x i16> %x119}120 121; 128-bit122 123define <16 x i8> @vpaddb128_test(<16 x i8> %i, <16 x i8> %j) nounwind readnone {124; CHECK-LABEL: vpaddb128_test:125; CHECK:       # %bb.0:126; CHECK-NEXT:    vpaddb %xmm1, %xmm0, %xmm0127; CHECK-NEXT:    retq128  %x = add <16 x i8> %i, %j129  ret <16 x i8> %x130}131 132define <16 x i8> @vpaddb128_fold_test(<16 x i8> %i, ptr %j) nounwind {133; CHECK-LABEL: vpaddb128_fold_test:134; CHECK:       # %bb.0:135; CHECK-NEXT:    vpaddb (%rdi), %xmm0, %xmm0136; CHECK-NEXT:    retq137  %tmp = load <16 x i8>, ptr %j, align 4138  %x = add <16 x i8> %i, %tmp139  ret <16 x i8> %x140}141 142define <8 x i16> @vpaddw128_test(<8 x i16> %i, <8 x i16> %j) nounwind readnone {143; CHECK-LABEL: vpaddw128_test:144; CHECK:       # %bb.0:145; CHECK-NEXT:    vpaddw %xmm1, %xmm0, %xmm0146; CHECK-NEXT:    retq147  %x = add <8 x i16> %i, %j148  ret <8 x i16> %x149}150 151define <8 x i16> @vpaddw128_fold_test(<8 x i16> %i, ptr %j) nounwind {152; CHECK-LABEL: vpaddw128_fold_test:153; CHECK:       # %bb.0:154; CHECK-NEXT:    vpaddw (%rdi), %xmm0, %xmm0155; CHECK-NEXT:    retq156  %tmp = load <8 x i16>, ptr %j, align 4157  %x = add <8 x i16> %i, %tmp158  ret <8 x i16> %x159}160 161define <8 x i16> @vpaddw128_mask_test(<8 x i16> %i, <8 x i16> %j, <8 x i16> %mask1) nounwind readnone {162; CHECK-LABEL: vpaddw128_mask_test:163; CHECK:       # %bb.0:164; CHECK-NEXT:    vptestmw %xmm2, %xmm2, %k1165; CHECK-NEXT:    vpaddw %xmm1, %xmm0, %xmm0 {%k1}166; CHECK-NEXT:    retq167  %mask = icmp ne <8 x i16> %mask1, zeroinitializer168  %x = add <8 x i16> %i, %j169  %r = select <8 x i1> %mask, <8 x i16> %x, <8 x i16> %i170  ret <8 x i16> %r171}172 173define <8 x i16> @vpaddw128_maskz_test(<8 x i16> %i, <8 x i16> %j, <8 x i16> %mask1) nounwind readnone {174; CHECK-LABEL: vpaddw128_maskz_test:175; CHECK:       # %bb.0:176; CHECK-NEXT:    vptestmw %xmm2, %xmm2, %k1177; CHECK-NEXT:    vpaddw %xmm1, %xmm0, %xmm0 {%k1} {z}178; CHECK-NEXT:    retq179  %mask = icmp ne <8 x i16> %mask1, zeroinitializer180  %x = add <8 x i16> %i, %j181  %r = select <8 x i1> %mask, <8 x i16> %x, <8 x i16> zeroinitializer182  ret <8 x i16> %r183}184 185define <8 x i16> @vpaddw128_mask_fold_test(<8 x i16> %i, ptr %j.ptr, <8 x i16> %mask1) nounwind readnone {186; CHECK-LABEL: vpaddw128_mask_fold_test:187; CHECK:       # %bb.0:188; CHECK-NEXT:    vptestmw %xmm1, %xmm1, %k1189; CHECK-NEXT:    vpaddw (%rdi), %xmm0, %xmm0 {%k1}190; CHECK-NEXT:    retq191  %mask = icmp ne <8 x i16> %mask1, zeroinitializer192  %j = load <8 x i16>, ptr %j.ptr193  %x = add <8 x i16> %i, %j194  %r = select <8 x i1> %mask, <8 x i16> %x, <8 x i16> %i195  ret <8 x i16> %r196}197 198define <8 x i16> @vpaddw128_maskz_fold_test(<8 x i16> %i, ptr %j.ptr, <8 x i16> %mask1) nounwind readnone {199; CHECK-LABEL: vpaddw128_maskz_fold_test:200; CHECK:       # %bb.0:201; CHECK-NEXT:    vptestmw %xmm1, %xmm1, %k1202; CHECK-NEXT:    vpaddw (%rdi), %xmm0, %xmm0 {%k1} {z}203; CHECK-NEXT:    retq204  %mask = icmp ne <8 x i16> %mask1, zeroinitializer205  %j = load <8 x i16>, ptr %j.ptr206  %x = add <8 x i16> %i, %j207  %r = select <8 x i1> %mask, <8 x i16> %x, <8 x i16> zeroinitializer208  ret <8 x i16> %r209}210 211define <16 x i8> @vpsubb128_test(<16 x i8> %i, <16 x i8> %j) nounwind readnone {212; CHECK-LABEL: vpsubb128_test:213; CHECK:       # %bb.0:214; CHECK-NEXT:    vpsubb %xmm1, %xmm0, %xmm0215; CHECK-NEXT:    retq216  %x = sub <16 x i8> %i, %j217  ret <16 x i8> %x218}219 220define <8 x i16> @vpsubw128_test(<8 x i16> %i, <8 x i16> %j) nounwind readnone {221; CHECK-LABEL: vpsubw128_test:222; CHECK:       # %bb.0:223; CHECK-NEXT:    vpsubw %xmm1, %xmm0, %xmm0224; CHECK-NEXT:    retq225  %x = sub <8 x i16> %i, %j226  ret <8 x i16> %x227}228 229define <8 x i16> @vpmullw128_test(<8 x i16> %i, <8 x i16> %j) {230; CHECK-LABEL: vpmullw128_test:231; CHECK:       # %bb.0:232; CHECK-NEXT:    vpmullw %xmm1, %xmm0, %xmm0233; CHECK-NEXT:    retq234  %x = mul <8 x i16> %i, %j235  ret <8 x i16> %x236}237 238define i16 @PR90356(<16 x i1> %a) {239; CHECK-LABEL: PR90356:240; CHECK:       # %bb.0:241; CHECK-NEXT:    vpsllw $7, %xmm0, %xmm0242; CHECK-NEXT:    vpmovb2m %xmm0, %k1243; CHECK-NEXT:    vpternlogd {{.*#+}} zmm0 {%k1} {z} = -1244; CHECK-NEXT:    movb $63, %al245; CHECK-NEXT:    kmovd %eax, %k1246; CHECK-NEXT:    vpexpandq %zmm0, %zmm0 {%k1} {z}247; CHECK-NEXT:    vptestmd %zmm0, %zmm0, %k0248; CHECK-NEXT:    kmovd %k0, %eax249; CHECK-NEXT:    # kill: def $ax killed $ax killed $eax250; CHECK-NEXT:    vzeroupper251; CHECK-NEXT:    retq252  %1 = shufflevector <16 x i1> %a, <16 x i1> zeroinitializer, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 28, i32 29, i32 30, i32 31>253  %2 = bitcast <16 x i1> %1 to i16254  ret i16 %2255}256