brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.2 KiB · 0df1a1d Raw
180 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx512vbmi --show-mc-encoding | FileCheck %s --check-prefixes=CHECK,X863; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512vbmi --show-mc-encoding | FileCheck %s --check-prefixes=CHECK,X644 5declare <64 x i8> @llvm.x86.avx512.permvar.qi.512(<64 x i8>, <64 x i8>)6 7define <64 x i8>@test_int_x86_avx512_permvar_qi_512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2) {8; CHECK-LABEL: test_int_x86_avx512_permvar_qi_512:9; CHECK:       # %bb.0:10; CHECK-NEXT:    vpermb %zmm0, %zmm1, %zmm0 # encoding: [0x62,0xf2,0x75,0x48,0x8d,0xc0]11; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]12  %1 = call <64 x i8> @llvm.x86.avx512.permvar.qi.512(<64 x i8> %x0, <64 x i8> %x1)13  ret <64 x i8> %114}15 16define <64 x i8>@test_int_x86_avx512_mask_permvar_qi_512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3) {17; X86-LABEL: test_int_x86_avx512_mask_permvar_qi_512:18; X86:       # %bb.0:19; X86-NEXT:    kmovq {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf8,0x90,0x4c,0x24,0x04]20; X86-NEXT:    vpermb %zmm0, %zmm1, %zmm2 {%k1} # encoding: [0x62,0xf2,0x75,0x49,0x8d,0xd0]21; X86-NEXT:    vmovdqa64 %zmm2, %zmm0 # encoding: [0x62,0xf1,0xfd,0x48,0x6f,0xc2]22; X86-NEXT:    retl # encoding: [0xc3]23;24; X64-LABEL: test_int_x86_avx512_mask_permvar_qi_512:25; X64:       # %bb.0:26; X64-NEXT:    kmovq %rdi, %k1 # encoding: [0xc4,0xe1,0xfb,0x92,0xcf]27; X64-NEXT:    vpermb %zmm0, %zmm1, %zmm2 {%k1} # encoding: [0x62,0xf2,0x75,0x49,0x8d,0xd0]28; X64-NEXT:    vmovdqa64 %zmm2, %zmm0 # encoding: [0x62,0xf1,0xfd,0x48,0x6f,0xc2]29; X64-NEXT:    retq # encoding: [0xc3]30  %1 = call <64 x i8> @llvm.x86.avx512.permvar.qi.512(<64 x i8> %x0, <64 x i8> %x1)31  %2 = bitcast i64 %x3 to <64 x i1>32  %3 = select <64 x i1> %2, <64 x i8> %1, <64 x i8> %x233  ret <64 x i8> %334}35 36define <64 x i8>@test_int_x86_avx512_maskz_permvar_qi_512(<64 x i8> %x0, <64 x i8> %x1, i64 %x3) {37; X86-LABEL: test_int_x86_avx512_maskz_permvar_qi_512:38; X86:       # %bb.0:39; X86-NEXT:    kmovq {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf8,0x90,0x4c,0x24,0x04]40; X86-NEXT:    vpermb %zmm0, %zmm1, %zmm0 {%k1} {z} # encoding: [0x62,0xf2,0x75,0xc9,0x8d,0xc0]41; X86-NEXT:    retl # encoding: [0xc3]42;43; X64-LABEL: test_int_x86_avx512_maskz_permvar_qi_512:44; X64:       # %bb.0:45; X64-NEXT:    kmovq %rdi, %k1 # encoding: [0xc4,0xe1,0xfb,0x92,0xcf]46; X64-NEXT:    vpermb %zmm0, %zmm1, %zmm0 {%k1} {z} # encoding: [0x62,0xf2,0x75,0xc9,0x8d,0xc0]47; X64-NEXT:    retq # encoding: [0xc3]48  %1 = call <64 x i8> @llvm.x86.avx512.permvar.qi.512(<64 x i8> %x0, <64 x i8> %x1)49  %2 = bitcast i64 %x3 to <64 x i1>50  %3 = select <64 x i1> %2, <64 x i8> %1, <64 x i8> zeroinitializer51  ret <64 x i8> %352}53 54declare <64 x i8> @llvm.x86.avx512.pmultishift.qb.512(<64 x i8>, <64 x i8>)55 56define <64 x i8>@test_int_x86_avx512_pmultishift_qb_512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2) {57; CHECK-LABEL: test_int_x86_avx512_pmultishift_qb_512:58; CHECK:       # %bb.0:59; CHECK-NEXT:    vpmultishiftqb %zmm1, %zmm0, %zmm0 # encoding: [0x62,0xf2,0xfd,0x48,0x83,0xc1]60; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]61  %1 = call <64 x i8> @llvm.x86.avx512.pmultishift.qb.512(<64 x i8> %x0, <64 x i8> %x1)62  ret <64 x i8> %163}64 65define <64 x i8>@test_int_x86_avx512_mask_pmultishift_qb_512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3) {66; X86-LABEL: test_int_x86_avx512_mask_pmultishift_qb_512:67; X86:       # %bb.0:68; X86-NEXT:    kmovq {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf8,0x90,0x4c,0x24,0x04]69; X86-NEXT:    vpmultishiftqb %zmm1, %zmm0, %zmm2 {%k1} # encoding: [0x62,0xf2,0xfd,0x49,0x83,0xd1]70; X86-NEXT:    vmovdqa64 %zmm2, %zmm0 # encoding: [0x62,0xf1,0xfd,0x48,0x6f,0xc2]71; X86-NEXT:    retl # encoding: [0xc3]72;73; X64-LABEL: test_int_x86_avx512_mask_pmultishift_qb_512:74; X64:       # %bb.0:75; X64-NEXT:    kmovq %rdi, %k1 # encoding: [0xc4,0xe1,0xfb,0x92,0xcf]76; X64-NEXT:    vpmultishiftqb %zmm1, %zmm0, %zmm2 {%k1} # encoding: [0x62,0xf2,0xfd,0x49,0x83,0xd1]77; X64-NEXT:    vmovdqa64 %zmm2, %zmm0 # encoding: [0x62,0xf1,0xfd,0x48,0x6f,0xc2]78; X64-NEXT:    retq # encoding: [0xc3]79  %1 = call <64 x i8> @llvm.x86.avx512.pmultishift.qb.512(<64 x i8> %x0, <64 x i8> %x1)80  %2 = bitcast i64 %x3 to <64 x i1>81  %3 = select <64 x i1> %2, <64 x i8> %1, <64 x i8> %x282  ret <64 x i8> %383}84 85define <64 x i8>@test_int_x86_avx512_maskz_pmultishift_qb_512(<64 x i8> %x0, <64 x i8> %x1, i64 %x3) {86; X86-LABEL: test_int_x86_avx512_maskz_pmultishift_qb_512:87; X86:       # %bb.0:88; X86-NEXT:    kmovq {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf8,0x90,0x4c,0x24,0x04]89; X86-NEXT:    vpmultishiftqb %zmm1, %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf2,0xfd,0xc9,0x83,0xc1]90; X86-NEXT:    retl # encoding: [0xc3]91;92; X64-LABEL: test_int_x86_avx512_maskz_pmultishift_qb_512:93; X64:       # %bb.0:94; X64-NEXT:    kmovq %rdi, %k1 # encoding: [0xc4,0xe1,0xfb,0x92,0xcf]95; X64-NEXT:    vpmultishiftqb %zmm1, %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf2,0xfd,0xc9,0x83,0xc1]96; X64-NEXT:    retq # encoding: [0xc3]97  %1 = call <64 x i8> @llvm.x86.avx512.pmultishift.qb.512(<64 x i8> %x0, <64 x i8> %x1)98  %2 = bitcast i64 %x3 to <64 x i1>99  %3 = select <64 x i1> %2, <64 x i8> %1, <64 x i8> zeroinitializer100  ret <64 x i8> %3101}102 103declare <64 x i8> @llvm.x86.avx512.vpermi2var.qi.512(<64 x i8>, <64 x i8>, <64 x i8>)104 105define <64 x i8>@test_int_x86_avx512_vpermi2var_qi_512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2) {106; CHECK-LABEL: test_int_x86_avx512_vpermi2var_qi_512:107; CHECK:       # %bb.0:108; CHECK-NEXT:    vpermt2b %zmm2, %zmm1, %zmm0 # encoding: [0x62,0xf2,0x75,0x48,0x7d,0xc2]109; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]110  %1 = call <64 x i8> @llvm.x86.avx512.vpermi2var.qi.512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2)111  ret <64 x i8> %1112}113 114define <64 x i8>@test_int_x86_avx512_mask_vpermi2var_qi_512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3) {115; X86-LABEL: test_int_x86_avx512_mask_vpermi2var_qi_512:116; X86:       # %bb.0:117; X86-NEXT:    kmovq {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf8,0x90,0x4c,0x24,0x04]118; X86-NEXT:    vpermi2b %zmm2, %zmm0, %zmm1 {%k1} # encoding: [0x62,0xf2,0x7d,0x49,0x75,0xca]119; X86-NEXT:    vmovdqa64 %zmm1, %zmm0 # encoding: [0x62,0xf1,0xfd,0x48,0x6f,0xc1]120; X86-NEXT:    retl # encoding: [0xc3]121;122; X64-LABEL: test_int_x86_avx512_mask_vpermi2var_qi_512:123; X64:       # %bb.0:124; X64-NEXT:    kmovq %rdi, %k1 # encoding: [0xc4,0xe1,0xfb,0x92,0xcf]125; X64-NEXT:    vpermi2b %zmm2, %zmm0, %zmm1 {%k1} # encoding: [0x62,0xf2,0x7d,0x49,0x75,0xca]126; X64-NEXT:    vmovdqa64 %zmm1, %zmm0 # encoding: [0x62,0xf1,0xfd,0x48,0x6f,0xc1]127; X64-NEXT:    retq # encoding: [0xc3]128  %1 = call <64 x i8> @llvm.x86.avx512.vpermi2var.qi.512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2)129  %2 = bitcast i64 %x3 to <64 x i1>130  %3 = select <64 x i1> %2, <64 x i8> %1, <64 x i8> %x1131  ret <64 x i8> %3132}133 134define <64 x i8>@test_int_x86_avx512_vpermt2var_qi_512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2) {135; CHECK-LABEL: test_int_x86_avx512_vpermt2var_qi_512:136; CHECK:       # %bb.0:137; CHECK-NEXT:    vpermi2b %zmm2, %zmm1, %zmm0 # encoding: [0x62,0xf2,0x75,0x48,0x75,0xc2]138; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]139  %1 = call <64 x i8> @llvm.x86.avx512.vpermi2var.qi.512(<64 x i8> %x1, <64 x i8> %x0, <64 x i8> %x2)140  ret <64 x i8> %1141}142 143define <64 x i8>@test_int_x86_avx512_mask_vpermt2var_qi_512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3) {144; X86-LABEL: test_int_x86_avx512_mask_vpermt2var_qi_512:145; X86:       # %bb.0:146; X86-NEXT:    kmovq {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf8,0x90,0x4c,0x24,0x04]147; X86-NEXT:    vpermt2b %zmm2, %zmm0, %zmm1 {%k1} # encoding: [0x62,0xf2,0x7d,0x49,0x7d,0xca]148; X86-NEXT:    vmovdqa64 %zmm1, %zmm0 # encoding: [0x62,0xf1,0xfd,0x48,0x6f,0xc1]149; X86-NEXT:    retl # encoding: [0xc3]150;151; X64-LABEL: test_int_x86_avx512_mask_vpermt2var_qi_512:152; X64:       # %bb.0:153; X64-NEXT:    kmovq %rdi, %k1 # encoding: [0xc4,0xe1,0xfb,0x92,0xcf]154; X64-NEXT:    vpermt2b %zmm2, %zmm0, %zmm1 {%k1} # encoding: [0x62,0xf2,0x7d,0x49,0x7d,0xca]155; X64-NEXT:    vmovdqa64 %zmm1, %zmm0 # encoding: [0x62,0xf1,0xfd,0x48,0x6f,0xc1]156; X64-NEXT:    retq # encoding: [0xc3]157  %1 = call <64 x i8> @llvm.x86.avx512.vpermi2var.qi.512(<64 x i8> %x1, <64 x i8> %x0, <64 x i8> %x2)158  %2 = bitcast i64 %x3 to <64 x i1>159  %3 = select <64 x i1> %2, <64 x i8> %1, <64 x i8> %x1160  ret <64 x i8> %3161}162 163define <64 x i8>@test_int_x86_avx512_maskz_vpermt2var_qi_512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3) {164; X86-LABEL: test_int_x86_avx512_maskz_vpermt2var_qi_512:165; X86:       # %bb.0:166; X86-NEXT:    kmovq {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf8,0x90,0x4c,0x24,0x04]167; X86-NEXT:    vpermi2b %zmm2, %zmm1, %zmm0 {%k1} {z} # encoding: [0x62,0xf2,0x75,0xc9,0x75,0xc2]168; X86-NEXT:    retl # encoding: [0xc3]169;170; X64-LABEL: test_int_x86_avx512_maskz_vpermt2var_qi_512:171; X64:       # %bb.0:172; X64-NEXT:    kmovq %rdi, %k1 # encoding: [0xc4,0xe1,0xfb,0x92,0xcf]173; X64-NEXT:    vpermi2b %zmm2, %zmm1, %zmm0 {%k1} {z} # encoding: [0x62,0xf2,0x75,0xc9,0x75,0xc2]174; X64-NEXT:    retq # encoding: [0xc3]175  %1 = call <64 x i8> @llvm.x86.avx512.vpermi2var.qi.512(<64 x i8> %x1, <64 x i8> %x0, <64 x i8> %x2)176  %2 = bitcast i64 %x3 to <64 x i1>177  %3 = select <64 x i1> %2, <64 x i8> %1, <64 x i8> zeroinitializer178  ret <64 x i8> %3179}180