brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.4 KiB · ce5d2e7 Raw
192 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=i686-unknown -mattr=+avx512cd | FileCheck %s --check-prefixes=CHECK,X863; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+avx512cd | FileCheck %s --check-prefixes=CHECK,X644 5declare <16 x i32> @llvm.x86.avx512.mask.conflict.d.512(<16 x i32>, <16 x i32>, i16) nounwind readonly6 7define <16 x i32> @test_conflict_d(<16 x i32> %a) {8; CHECK-LABEL: test_conflict_d:9; CHECK:       # %bb.0:10; CHECK-NEXT:    vpconflictd %zmm0, %zmm011; CHECK-NEXT:    ret{{[l|q]}}12  %res = call <16 x i32> @llvm.x86.avx512.mask.conflict.d.512(<16 x i32> %a, <16 x i32> undef, i16 -1)13  ret <16 x i32> %res14}15 16define <16 x i32> @test_mask_conflict_d(<16 x i32> %a, <16 x i32> %b, i16 %mask) {17; X86-LABEL: test_mask_conflict_d:18; X86:       # %bb.0:19; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k120; X86-NEXT:    vpconflictd %zmm0, %zmm1 {%k1}21; X86-NEXT:    vmovdqa64 %zmm1, %zmm022; X86-NEXT:    retl23;24; X64-LABEL: test_mask_conflict_d:25; X64:       # %bb.0:26; X64-NEXT:    kmovw %edi, %k127; X64-NEXT:    vpconflictd %zmm0, %zmm1 {%k1}28; X64-NEXT:    vmovdqa64 %zmm1, %zmm029; X64-NEXT:    retq30  %res = call <16 x i32> @llvm.x86.avx512.mask.conflict.d.512(<16 x i32> %a, <16 x i32> %b, i16 %mask)31  ret <16 x i32> %res32}33 34define <16 x i32> @test_maskz_conflict_d(<16 x i32> %a, i16 %mask) {35; X86-LABEL: test_maskz_conflict_d:36; X86:       # %bb.0:37; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k138; X86-NEXT:    vpconflictd %zmm0, %zmm0 {%k1} {z}39; X86-NEXT:    retl40;41; X64-LABEL: test_maskz_conflict_d:42; X64:       # %bb.0:43; X64-NEXT:    kmovw %edi, %k144; X64-NEXT:    vpconflictd %zmm0, %zmm0 {%k1} {z}45; X64-NEXT:    retq46  %res = call <16 x i32> @llvm.x86.avx512.mask.conflict.d.512(<16 x i32> %a, <16 x i32> zeroinitializer, i16 %mask)47  ret <16 x i32> %res48}49 50declare <8 x i64> @llvm.x86.avx512.mask.conflict.q.512(<8 x i64>, <8 x i64>, i8) nounwind readonly51 52define <8 x i64> @test_conflict_q(<8 x i64> %a) {53; CHECK-LABEL: test_conflict_q:54; CHECK:       # %bb.0:55; CHECK-NEXT:    vpconflictq %zmm0, %zmm056; CHECK-NEXT:    ret{{[l|q]}}57  %res = call <8 x i64> @llvm.x86.avx512.mask.conflict.q.512(<8 x i64> %a, <8 x i64> undef, i8 -1)58  ret <8 x i64> %res59}60 61define <8 x i64> @test_mask_conflict_q(<8 x i64> %a, <8 x i64> %b, i8 %mask) {62; X86-LABEL: test_mask_conflict_q:63; X86:       # %bb.0:64; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax65; X86-NEXT:    kmovw %eax, %k166; X86-NEXT:    vpconflictq %zmm0, %zmm1 {%k1}67; X86-NEXT:    vmovdqa64 %zmm1, %zmm068; X86-NEXT:    retl69;70; X64-LABEL: test_mask_conflict_q:71; X64:       # %bb.0:72; X64-NEXT:    kmovw %edi, %k173; X64-NEXT:    vpconflictq %zmm0, %zmm1 {%k1}74; X64-NEXT:    vmovdqa64 %zmm1, %zmm075; X64-NEXT:    retq76  %res = call <8 x i64> @llvm.x86.avx512.mask.conflict.q.512(<8 x i64> %a, <8 x i64> %b, i8 %mask)77  ret <8 x i64> %res78}79 80define <8 x i64> @test_maskz_conflict_q(<8 x i64> %a, i8 %mask) {81; X86-LABEL: test_maskz_conflict_q:82; X86:       # %bb.0:83; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax84; X86-NEXT:    kmovw %eax, %k185; X86-NEXT:    vpconflictq %zmm0, %zmm0 {%k1} {z}86; X86-NEXT:    retl87;88; X64-LABEL: test_maskz_conflict_q:89; X64:       # %bb.0:90; X64-NEXT:    kmovw %edi, %k191; X64-NEXT:    vpconflictq %zmm0, %zmm0 {%k1} {z}92; X64-NEXT:    retq93  %res = call <8 x i64> @llvm.x86.avx512.mask.conflict.q.512(<8 x i64> %a, <8 x i64> zeroinitializer, i8 %mask)94  ret <8 x i64> %res95}96 97define <16 x i32> @test_lzcnt_d(<16 x i32> %a) {98; CHECK-LABEL: test_lzcnt_d:99; CHECK:       # %bb.0:100; CHECK-NEXT:    vplzcntd %zmm0, %zmm0101; CHECK-NEXT:    ret{{[l|q]}}102  %res = call <16 x i32> @llvm.x86.avx512.mask.lzcnt.d.512(<16 x i32> %a, <16 x i32> zeroinitializer, i16 -1)103  ret <16 x i32> %res104}105 106declare <16 x i32> @llvm.x86.avx512.mask.lzcnt.d.512(<16 x i32>, <16 x i32>, i16) nounwind readonly107 108define <8 x i64> @test_lzcnt_q(<8 x i64> %a) {109; CHECK-LABEL: test_lzcnt_q:110; CHECK:       # %bb.0:111; CHECK-NEXT:    vplzcntq %zmm0, %zmm0112; CHECK-NEXT:    ret{{[l|q]}}113  %res = call <8 x i64> @llvm.x86.avx512.mask.lzcnt.q.512(<8 x i64> %a, <8 x i64> zeroinitializer, i8 -1)114  ret <8 x i64> %res115}116 117declare <8 x i64> @llvm.x86.avx512.mask.lzcnt.q.512(<8 x i64>, <8 x i64>, i8) nounwind readonly118 119 120define <16 x i32> @test_mask_lzcnt_d(<16 x i32> %a, <16 x i32> %b, i16 %mask) {121; X86-LABEL: test_mask_lzcnt_d:122; X86:       # %bb.0:123; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1124; X86-NEXT:    vplzcntd %zmm0, %zmm1 {%k1}125; X86-NEXT:    vmovdqa64 %zmm1, %zmm0126; X86-NEXT:    retl127;128; X64-LABEL: test_mask_lzcnt_d:129; X64:       # %bb.0:130; X64-NEXT:    kmovw %edi, %k1131; X64-NEXT:    vplzcntd %zmm0, %zmm1 {%k1}132; X64-NEXT:    vmovdqa64 %zmm1, %zmm0133; X64-NEXT:    retq134  %res = call <16 x i32> @llvm.x86.avx512.mask.lzcnt.d.512(<16 x i32> %a, <16 x i32> %b, i16 %mask)135  ret <16 x i32> %res136}137 138define <8 x i64> @test_mask_lzcnt_q(<8 x i64> %a, <8 x i64> %b, i8 %mask) {139; X86-LABEL: test_mask_lzcnt_q:140; X86:       # %bb.0:141; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax142; X86-NEXT:    kmovw %eax, %k1143; X86-NEXT:    vplzcntq %zmm0, %zmm1 {%k1}144; X86-NEXT:    vmovdqa64 %zmm1, %zmm0145; X86-NEXT:    retl146;147; X64-LABEL: test_mask_lzcnt_q:148; X64:       # %bb.0:149; X64-NEXT:    kmovw %edi, %k1150; X64-NEXT:    vplzcntq %zmm0, %zmm1 {%k1}151; X64-NEXT:    vmovdqa64 %zmm1, %zmm0152; X64-NEXT:    retq153  %res = call <8 x i64> @llvm.x86.avx512.mask.lzcnt.q.512(<8 x i64> %a, <8 x i64> %b, i8 %mask)154  ret <8 x i64> %res155}156 157define <16 x i32> @test_x86_vbroadcastmw_512(i16 %a0) {158; X86-LABEL: test_x86_vbroadcastmw_512:159; X86:       # %bb.0:160; X86-NEXT:    movzwl {{[0-9]+}}(%esp), %eax161; X86-NEXT:    vpbroadcastd %eax, %zmm0162; X86-NEXT:    retl163;164; X64-LABEL: test_x86_vbroadcastmw_512:165; X64:       # %bb.0:166; X64-NEXT:    movzwl %di, %eax167; X64-NEXT:    vpbroadcastd %eax, %zmm0168; X64-NEXT:    retq169  %res = call <16 x i32> @llvm.x86.avx512.broadcastmw.512(i16 %a0)170  ret <16 x i32> %res171}172declare <16 x i32> @llvm.x86.avx512.broadcastmw.512(i16)173 174define <8 x i64> @test_x86_broadcastmb_512(i8 %a0) {175; X86-LABEL: test_x86_broadcastmb_512:176; X86:       # %bb.0:177; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax178; X86-NEXT:    vmovd %eax, %xmm0179; X86-NEXT:    vpbroadcastq %xmm0, %zmm0180; X86-NEXT:    retl181;182; X64-LABEL: test_x86_broadcastmb_512:183; X64:       # %bb.0:184; X64-NEXT:    movzbl %dil, %eax185; X64-NEXT:    vpbroadcastq %rax, %zmm0186; X64-NEXT:    retq187  %res = call <8 x i64> @llvm.x86.avx512.broadcastmb.512(i8 %a0)188  ret <8 x i64> %res189}190declare <8 x i64> @llvm.x86.avx512.broadcastmb.512(i8)191 192