119 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 | FileCheck %s3 4define <64 x i8> @vpaddb512_test(<64 x i8> %i, <64 x i8> %j) nounwind readnone {5; CHECK-LABEL: vpaddb512_test:6; CHECK: # %bb.0:7; CHECK-NEXT: vpaddb %zmm1, %zmm0, %zmm08; CHECK-NEXT: retq9 %x = add <64 x i8> %i, %j10 ret <64 x i8> %x11}12 13define <64 x i8> @vpaddb512_fold_test(<64 x i8> %i, ptr %j) nounwind {14; CHECK-LABEL: vpaddb512_fold_test:15; CHECK: # %bb.0:16; CHECK-NEXT: vpaddb (%rdi), %zmm0, %zmm017; CHECK-NEXT: retq18 %tmp = load <64 x i8>, ptr %j, align 419 %x = add <64 x i8> %i, %tmp20 ret <64 x i8> %x21}22 23define <32 x i16> @vpaddw512_test(<32 x i16> %i, <32 x i16> %j) nounwind readnone {24; CHECK-LABEL: vpaddw512_test:25; CHECK: # %bb.0:26; CHECK-NEXT: vpaddw %zmm1, %zmm0, %zmm027; CHECK-NEXT: retq28 %x = add <32 x i16> %i, %j29 ret <32 x i16> %x30}31 32define <32 x i16> @vpaddw512_fold_test(<32 x i16> %i, ptr %j) nounwind {33; CHECK-LABEL: vpaddw512_fold_test:34; CHECK: # %bb.0:35; CHECK-NEXT: vpaddw (%rdi), %zmm0, %zmm036; CHECK-NEXT: retq37 %tmp = load <32 x i16>, ptr %j, align 438 %x = add <32 x i16> %i, %tmp39 ret <32 x i16> %x40}41 42define <32 x i16> @vpaddw512_mask_test(<32 x i16> %i, <32 x i16> %j, <32 x i16> %mask1) nounwind readnone {43; CHECK-LABEL: vpaddw512_mask_test:44; CHECK: # %bb.0:45; CHECK-NEXT: vptestmw %zmm2, %zmm2, %k146; CHECK-NEXT: vpaddw %zmm1, %zmm0, %zmm0 {%k1}47; CHECK-NEXT: retq48 %mask = icmp ne <32 x i16> %mask1, zeroinitializer49 %x = add <32 x i16> %i, %j50 %r = select <32 x i1> %mask, <32 x i16> %x, <32 x i16> %i51 ret <32 x i16> %r52}53 54define <32 x i16> @vpaddw512_maskz_test(<32 x i16> %i, <32 x i16> %j, <32 x i16> %mask1) nounwind readnone {55; CHECK-LABEL: vpaddw512_maskz_test:56; CHECK: # %bb.0:57; CHECK-NEXT: vptestmw %zmm2, %zmm2, %k158; CHECK-NEXT: vpaddw %zmm1, %zmm0, %zmm0 {%k1} {z}59; CHECK-NEXT: retq60 %mask = icmp ne <32 x i16> %mask1, zeroinitializer61 %x = add <32 x i16> %i, %j62 %r = select <32 x i1> %mask, <32 x i16> %x, <32 x i16> zeroinitializer63 ret <32 x i16> %r64}65 66define <32 x i16> @vpaddw512_mask_fold_test(<32 x i16> %i, ptr %j.ptr, <32 x i16> %mask1) nounwind readnone {67; CHECK-LABEL: vpaddw512_mask_fold_test:68; CHECK: # %bb.0:69; CHECK-NEXT: vptestmw %zmm1, %zmm1, %k170; CHECK-NEXT: vpaddw (%rdi), %zmm0, %zmm0 {%k1}71; CHECK-NEXT: retq72 %mask = icmp ne <32 x i16> %mask1, zeroinitializer73 %j = load <32 x i16>, ptr %j.ptr74 %x = add <32 x i16> %i, %j75 %r = select <32 x i1> %mask, <32 x i16> %x, <32 x i16> %i76 ret <32 x i16> %r77}78 79define <32 x i16> @vpaddw512_maskz_fold_test(<32 x i16> %i, ptr %j.ptr, <32 x i16> %mask1) nounwind readnone {80; CHECK-LABEL: vpaddw512_maskz_fold_test:81; CHECK: # %bb.0:82; CHECK-NEXT: vptestmw %zmm1, %zmm1, %k183; CHECK-NEXT: vpaddw (%rdi), %zmm0, %zmm0 {%k1} {z}84; CHECK-NEXT: retq85 %mask = icmp ne <32 x i16> %mask1, zeroinitializer86 %j = load <32 x i16>, ptr %j.ptr87 %x = add <32 x i16> %i, %j88 %r = select <32 x i1> %mask, <32 x i16> %x, <32 x i16> zeroinitializer89 ret <32 x i16> %r90}91 92define <64 x i8> @vpsubb512_test(<64 x i8> %i, <64 x i8> %j) nounwind readnone {93; CHECK-LABEL: vpsubb512_test:94; CHECK: # %bb.0:95; CHECK-NEXT: vpsubb %zmm1, %zmm0, %zmm096; CHECK-NEXT: retq97 %x = sub <64 x i8> %i, %j98 ret <64 x i8> %x99}100 101define <32 x i16> @vpsubw512_test(<32 x i16> %i, <32 x i16> %j) nounwind readnone {102; CHECK-LABEL: vpsubw512_test:103; CHECK: # %bb.0:104; CHECK-NEXT: vpsubw %zmm1, %zmm0, %zmm0105; CHECK-NEXT: retq106 %x = sub <32 x i16> %i, %j107 ret <32 x i16> %x108}109 110define <32 x i16> @vpmullw512_test(<32 x i16> %i, <32 x i16> %j) {111; CHECK-LABEL: vpmullw512_test:112; CHECK: # %bb.0:113; CHECK-NEXT: vpmullw %zmm1, %zmm0, %zmm0114; CHECK-NEXT: retq115 %x = mul <32 x i16> %i, %j116 ret <32 x i16> %x117}118 119