brintos

brintos / llvm-project-archived public Read only

0
0
Text · 301.5 KiB · 1a60644 Raw
7637 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -fast-isel -mtriple=i386-unknown-unknown -mattr=+avx512f,+avx512vl | FileCheck %s --check-prefixes=CHECK,X863; RUN: llc < %s -fast-isel -mtriple=x86_64-unknown-unknown -mattr=+avx512f,+avx512vl | FileCheck %s --check-prefixes=CHECK,X644 5; NOTE: This should use IR equivalent to what is generated by clang/test/CodeGen/avx512vl-builtins.c6 7define <4 x float> @test_mm_mask_cvtepi32_ps(<4 x float> %__W, i8 zeroext %__U, <2 x i64> %__A) {8; X86-LABEL: test_mm_mask_cvtepi32_ps:9; X86:       # %bb.0: # %entry10; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax11; X86-NEXT:    kmovw %eax, %k112; X86-NEXT:    vcvtdq2ps %xmm1, %xmm0 {%k1}13; X86-NEXT:    retl14;15; X64-LABEL: test_mm_mask_cvtepi32_ps:16; X64:       # %bb.0: # %entry17; X64-NEXT:    kmovw %edi, %k118; X64-NEXT:    vcvtdq2ps %xmm1, %xmm0 {%k1}19; X64-NEXT:    retq20entry:21  %0 = bitcast <2 x i64> %__A to <4 x i32>22  %conv.i.i = sitofp <4 x i32> %0 to <4 x float>23  %1 = bitcast i8 %__U to <8 x i1>24  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>25  %2 = select <4 x i1> %extract.i, <4 x float> %conv.i.i, <4 x float> %__W26  ret <4 x float> %227}28 29define <4 x float> @test_mm_maskz_cvtepi32_ps(i8 zeroext %__U, <2 x i64> %__A) {30; X86-LABEL: test_mm_maskz_cvtepi32_ps:31; X86:       # %bb.0: # %entry32; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax33; X86-NEXT:    kmovw %eax, %k134; X86-NEXT:    vcvtdq2ps %xmm0, %xmm0 {%k1} {z}35; X86-NEXT:    retl36;37; X64-LABEL: test_mm_maskz_cvtepi32_ps:38; X64:       # %bb.0: # %entry39; X64-NEXT:    kmovw %edi, %k140; X64-NEXT:    vcvtdq2ps %xmm0, %xmm0 {%k1} {z}41; X64-NEXT:    retq42entry:43  %0 = bitcast <2 x i64> %__A to <4 x i32>44  %conv.i.i = sitofp <4 x i32> %0 to <4 x float>45  %1 = bitcast i8 %__U to <8 x i1>46  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>47  %2 = select <4 x i1> %extract.i, <4 x float> %conv.i.i, <4 x float> zeroinitializer48  ret <4 x float> %249}50 51define <8 x float> @test_mm256_mask_cvtepi32_ps(<8 x float> %__W, i8 zeroext %__U, <4 x i64> %__A) {52; X86-LABEL: test_mm256_mask_cvtepi32_ps:53; X86:       # %bb.0: # %entry54; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax55; X86-NEXT:    kmovw %eax, %k156; X86-NEXT:    vcvtdq2ps %ymm1, %ymm0 {%k1}57; X86-NEXT:    retl58;59; X64-LABEL: test_mm256_mask_cvtepi32_ps:60; X64:       # %bb.0: # %entry61; X64-NEXT:    kmovw %edi, %k162; X64-NEXT:    vcvtdq2ps %ymm1, %ymm0 {%k1}63; X64-NEXT:    retq64entry:65  %0 = bitcast <4 x i64> %__A to <8 x i32>66  %conv.i.i = sitofp <8 x i32> %0 to <8 x float>67  %1 = bitcast i8 %__U to <8 x i1>68  %2 = select <8 x i1> %1, <8 x float> %conv.i.i, <8 x float> %__W69  ret <8 x float> %270}71 72define <8 x float> @test_mm256_maskz_cvtepi32_ps(i8 zeroext %__U, <4 x i64> %__A) {73; X86-LABEL: test_mm256_maskz_cvtepi32_ps:74; X86:       # %bb.0: # %entry75; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax76; X86-NEXT:    kmovw %eax, %k177; X86-NEXT:    vcvtdq2ps %ymm0, %ymm0 {%k1} {z}78; X86-NEXT:    retl79;80; X64-LABEL: test_mm256_maskz_cvtepi32_ps:81; X64:       # %bb.0: # %entry82; X64-NEXT:    kmovw %edi, %k183; X64-NEXT:    vcvtdq2ps %ymm0, %ymm0 {%k1} {z}84; X64-NEXT:    retq85entry:86  %0 = bitcast <4 x i64> %__A to <8 x i32>87  %conv.i.i = sitofp <8 x i32> %0 to <8 x float>88  %1 = bitcast i8 %__U to <8 x i1>89  %2 = select <8 x i1> %1, <8 x float> %conv.i.i, <8 x float> zeroinitializer90  ret <8 x float> %291}92 93define <2 x i64> @test_mm_mask_cvtpd_epi32(<2 x i64> %__W, i8 zeroext %__U, <2 x double> %__A) {94; X86-LABEL: test_mm_mask_cvtpd_epi32:95; X86:       # %bb.0: # %entry96; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax97; X86-NEXT:    kmovw %eax, %k198; X86-NEXT:    vcvtpd2dq %xmm1, %xmm0 {%k1}99; X86-NEXT:    retl100;101; X64-LABEL: test_mm_mask_cvtpd_epi32:102; X64:       # %bb.0: # %entry103; X64-NEXT:    kmovw %edi, %k1104; X64-NEXT:    vcvtpd2dq %xmm1, %xmm0 {%k1}105; X64-NEXT:    retq106entry:107  %0 = bitcast <2 x i64> %__W to <4 x i32>108  %1 = tail call <4 x i32> @llvm.x86.avx512.mask.cvtpd2dq.128(<2 x double> %__A, <4 x i32> %0, i8 %__U) #8109  %2 = bitcast <4 x i32> %1 to <2 x i64>110  ret <2 x i64> %2111}112 113define <2 x i64> @test_mm_maskz_cvtpd_epi32(i8 zeroext %__U, <2 x double> %__A) {114; X86-LABEL: test_mm_maskz_cvtpd_epi32:115; X86:       # %bb.0: # %entry116; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax117; X86-NEXT:    kmovw %eax, %k1118; X86-NEXT:    vcvtpd2dq %xmm0, %xmm0 {%k1} {z}119; X86-NEXT:    retl120;121; X64-LABEL: test_mm_maskz_cvtpd_epi32:122; X64:       # %bb.0: # %entry123; X64-NEXT:    kmovw %edi, %k1124; X64-NEXT:    vcvtpd2dq %xmm0, %xmm0 {%k1} {z}125; X64-NEXT:    retq126entry:127  %0 = tail call <4 x i32> @llvm.x86.avx512.mask.cvtpd2dq.128(<2 x double> %__A, <4 x i32> zeroinitializer, i8 %__U) #8128  %1 = bitcast <4 x i32> %0 to <2 x i64>129  ret <2 x i64> %1130}131 132define <2 x i64> @test_mm256_mask_cvtpd_epi32(<2 x i64> %__W, i8 zeroext %__U, <4 x double> %__A) {133; X86-LABEL: test_mm256_mask_cvtpd_epi32:134; X86:       # %bb.0: # %entry135; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax136; X86-NEXT:    kmovw %eax, %k1137; X86-NEXT:    vcvtpd2dq %ymm1, %xmm0 {%k1}138; X86-NEXT:    vzeroupper139; X86-NEXT:    retl140;141; X64-LABEL: test_mm256_mask_cvtpd_epi32:142; X64:       # %bb.0: # %entry143; X64-NEXT:    kmovw %edi, %k1144; X64-NEXT:    vcvtpd2dq %ymm1, %xmm0 {%k1}145; X64-NEXT:    vzeroupper146; X64-NEXT:    retq147entry:148  %0 = tail call <4 x i32> @llvm.x86.avx.cvt.pd2dq.256(<4 x double> %__A) #8149  %1 = bitcast <2 x i64> %__W to <4 x i32>150  %2 = bitcast i8 %__U to <8 x i1>151  %extract.i = shufflevector <8 x i1> %2, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>152  %3 = select <4 x i1> %extract.i, <4 x i32> %0, <4 x i32> %1153  %4 = bitcast <4 x i32> %3 to <2 x i64>154  ret <2 x i64> %4155}156 157define <2 x i64> @test_mm256_maskz_cvtpd_epi32(i8 zeroext %__U, <4 x double> %__A) {158; X86-LABEL: test_mm256_maskz_cvtpd_epi32:159; X86:       # %bb.0: # %entry160; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax161; X86-NEXT:    kmovw %eax, %k1162; X86-NEXT:    vcvtpd2dq %ymm0, %xmm0 {%k1} {z}163; X86-NEXT:    vzeroupper164; X86-NEXT:    retl165;166; X64-LABEL: test_mm256_maskz_cvtpd_epi32:167; X64:       # %bb.0: # %entry168; X64-NEXT:    kmovw %edi, %k1169; X64-NEXT:    vcvtpd2dq %ymm0, %xmm0 {%k1} {z}170; X64-NEXT:    vzeroupper171; X64-NEXT:    retq172entry:173  %0 = tail call <4 x i32> @llvm.x86.avx.cvt.pd2dq.256(<4 x double> %__A) #8174  %1 = bitcast i8 %__U to <8 x i1>175  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>176  %2 = select <4 x i1> %extract.i, <4 x i32> %0, <4 x i32> zeroinitializer177  %3 = bitcast <4 x i32> %2 to <2 x i64>178  ret <2 x i64> %3179}180 181define <4 x float> @test_mm_mask_cvtpd_ps(<4 x float> %__W, i8 zeroext %__U, <2 x double> %__A) {182; X86-LABEL: test_mm_mask_cvtpd_ps:183; X86:       # %bb.0: # %entry184; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax185; X86-NEXT:    kmovw %eax, %k1186; X86-NEXT:    vcvtpd2ps %xmm1, %xmm0 {%k1}187; X86-NEXT:    retl188;189; X64-LABEL: test_mm_mask_cvtpd_ps:190; X64:       # %bb.0: # %entry191; X64-NEXT:    kmovw %edi, %k1192; X64-NEXT:    vcvtpd2ps %xmm1, %xmm0 {%k1}193; X64-NEXT:    retq194entry:195  %0 = tail call <4 x float> @llvm.x86.avx512.mask.cvtpd2ps(<2 x double> %__A, <4 x float> %__W, i8 %__U) #8196  ret <4 x float> %0197}198 199define <4 x float> @test_mm_maskz_cvtpd_ps(i8 zeroext %__U, <2 x double> %__A) {200; X86-LABEL: test_mm_maskz_cvtpd_ps:201; X86:       # %bb.0: # %entry202; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax203; X86-NEXT:    kmovw %eax, %k1204; X86-NEXT:    vcvtpd2ps %xmm0, %xmm0 {%k1} {z}205; X86-NEXT:    retl206;207; X64-LABEL: test_mm_maskz_cvtpd_ps:208; X64:       # %bb.0: # %entry209; X64-NEXT:    kmovw %edi, %k1210; X64-NEXT:    vcvtpd2ps %xmm0, %xmm0 {%k1} {z}211; X64-NEXT:    retq212entry:213  %0 = tail call <4 x float> @llvm.x86.avx512.mask.cvtpd2ps(<2 x double> %__A, <4 x float> zeroinitializer, i8 %__U) #8214  ret <4 x float> %0215}216 217define <4 x float> @test_mm256_mask_cvtpd_ps(<4 x float> %__W, i8 zeroext %__U, <4 x double> %__A) {218; X86-LABEL: test_mm256_mask_cvtpd_ps:219; X86:       # %bb.0: # %entry220; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax221; X86-NEXT:    kmovw %eax, %k1222; X86-NEXT:    vcvtpd2ps %ymm1, %xmm0 {%k1}223; X86-NEXT:    vzeroupper224; X86-NEXT:    retl225;226; X64-LABEL: test_mm256_mask_cvtpd_ps:227; X64:       # %bb.0: # %entry228; X64-NEXT:    kmovw %edi, %k1229; X64-NEXT:    vcvtpd2ps %ymm1, %xmm0 {%k1}230; X64-NEXT:    vzeroupper231; X64-NEXT:    retq232entry:233  %0 = tail call <4 x float> @llvm.x86.avx.cvt.pd2.ps.256(<4 x double> %__A) #8234  %1 = bitcast i8 %__U to <8 x i1>235  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>236  %2 = select <4 x i1> %extract.i, <4 x float> %0, <4 x float> %__W237  ret <4 x float> %2238}239 240define <4 x float> @test_mm256_maskz_cvtpd_ps(i8 zeroext %__U, <4 x double> %__A) {241; X86-LABEL: test_mm256_maskz_cvtpd_ps:242; X86:       # %bb.0: # %entry243; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax244; X86-NEXT:    kmovw %eax, %k1245; X86-NEXT:    vcvtpd2ps %ymm0, %xmm0 {%k1} {z}246; X86-NEXT:    vzeroupper247; X86-NEXT:    retl248;249; X64-LABEL: test_mm256_maskz_cvtpd_ps:250; X64:       # %bb.0: # %entry251; X64-NEXT:    kmovw %edi, %k1252; X64-NEXT:    vcvtpd2ps %ymm0, %xmm0 {%k1} {z}253; X64-NEXT:    vzeroupper254; X64-NEXT:    retq255entry:256  %0 = tail call <4 x float> @llvm.x86.avx.cvt.pd2.ps.256(<4 x double> %__A) #8257  %1 = bitcast i8 %__U to <8 x i1>258  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>259  %2 = select <4 x i1> %extract.i, <4 x float> %0, <4 x float> zeroinitializer260  ret <4 x float> %2261}262 263define <2 x i64> @test_mm_cvtpd_epu32(<2 x double> %__A) {264; CHECK-LABEL: test_mm_cvtpd_epu32:265; CHECK:       # %bb.0: # %entry266; CHECK-NEXT:    vcvtpd2udq %xmm0, %xmm0267; CHECK-NEXT:    ret{{[l|q]}}268entry:269  %0 = tail call <4 x i32> @llvm.x86.avx512.mask.cvtpd2udq.128(<2 x double> %__A, <4 x i32> zeroinitializer, i8 -1) #8270  %1 = bitcast <4 x i32> %0 to <2 x i64>271  ret <2 x i64> %1272}273 274define <2 x i64> @test_mm_mask_cvtpd_epu32(<2 x i64> %__W, i8 zeroext %__U, <2 x double> %__A) {275; X86-LABEL: test_mm_mask_cvtpd_epu32:276; X86:       # %bb.0: # %entry277; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax278; X86-NEXT:    kmovw %eax, %k1279; X86-NEXT:    vcvtpd2udq %xmm1, %xmm0 {%k1}280; X86-NEXT:    retl281;282; X64-LABEL: test_mm_mask_cvtpd_epu32:283; X64:       # %bb.0: # %entry284; X64-NEXT:    kmovw %edi, %k1285; X64-NEXT:    vcvtpd2udq %xmm1, %xmm0 {%k1}286; X64-NEXT:    retq287entry:288  %0 = bitcast <2 x i64> %__W to <4 x i32>289  %1 = tail call <4 x i32> @llvm.x86.avx512.mask.cvtpd2udq.128(<2 x double> %__A, <4 x i32> %0, i8 %__U) #8290  %2 = bitcast <4 x i32> %1 to <2 x i64>291  ret <2 x i64> %2292}293 294define <2 x i64> @test_mm_maskz_cvtpd_epu32(i8 zeroext %__U, <2 x double> %__A) {295; X86-LABEL: test_mm_maskz_cvtpd_epu32:296; X86:       # %bb.0: # %entry297; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax298; X86-NEXT:    kmovw %eax, %k1299; X86-NEXT:    vcvtpd2udq %xmm0, %xmm0 {%k1} {z}300; X86-NEXT:    retl301;302; X64-LABEL: test_mm_maskz_cvtpd_epu32:303; X64:       # %bb.0: # %entry304; X64-NEXT:    kmovw %edi, %k1305; X64-NEXT:    vcvtpd2udq %xmm0, %xmm0 {%k1} {z}306; X64-NEXT:    retq307entry:308  %0 = tail call <4 x i32> @llvm.x86.avx512.mask.cvtpd2udq.128(<2 x double> %__A, <4 x i32> zeroinitializer, i8 %__U) #8309  %1 = bitcast <4 x i32> %0 to <2 x i64>310  ret <2 x i64> %1311}312 313define <2 x i64> @test_mm256_cvtpd_epu32(<4 x double> %__A) {314; CHECK-LABEL: test_mm256_cvtpd_epu32:315; CHECK:       # %bb.0: # %entry316; CHECK-NEXT:    vcvtpd2udq %ymm0, %xmm0317; CHECK-NEXT:    vzeroupper318; CHECK-NEXT:    ret{{[l|q]}}319entry:320  %0 = tail call <4 x i32> @llvm.x86.avx512.mask.cvtpd2udq.256(<4 x double> %__A, <4 x i32> zeroinitializer, i8 -1) #8321  %1 = bitcast <4 x i32> %0 to <2 x i64>322  ret <2 x i64> %1323}324 325define <2 x i64> @test_mm256_mask_cvtpd_epu32(<2 x i64> %__W, i8 zeroext %__U, <4 x double> %__A) {326; X86-LABEL: test_mm256_mask_cvtpd_epu32:327; X86:       # %bb.0: # %entry328; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax329; X86-NEXT:    kmovw %eax, %k1330; X86-NEXT:    vcvtpd2udq %ymm1, %xmm0 {%k1}331; X86-NEXT:    vzeroupper332; X86-NEXT:    retl333;334; X64-LABEL: test_mm256_mask_cvtpd_epu32:335; X64:       # %bb.0: # %entry336; X64-NEXT:    kmovw %edi, %k1337; X64-NEXT:    vcvtpd2udq %ymm1, %xmm0 {%k1}338; X64-NEXT:    vzeroupper339; X64-NEXT:    retq340entry:341  %0 = bitcast <2 x i64> %__W to <4 x i32>342  %1 = tail call <4 x i32> @llvm.x86.avx512.mask.cvtpd2udq.256(<4 x double> %__A, <4 x i32> %0, i8 %__U) #8343  %2 = bitcast <4 x i32> %1 to <2 x i64>344  ret <2 x i64> %2345}346 347define <2 x i64> @test_mm256_maskz_cvtpd_epu32(i8 zeroext %__U, <4 x double> %__A) {348; X86-LABEL: test_mm256_maskz_cvtpd_epu32:349; X86:       # %bb.0: # %entry350; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax351; X86-NEXT:    kmovw %eax, %k1352; X86-NEXT:    vcvtpd2udq %ymm0, %xmm0 {%k1} {z}353; X86-NEXT:    vzeroupper354; X86-NEXT:    retl355;356; X64-LABEL: test_mm256_maskz_cvtpd_epu32:357; X64:       # %bb.0: # %entry358; X64-NEXT:    kmovw %edi, %k1359; X64-NEXT:    vcvtpd2udq %ymm0, %xmm0 {%k1} {z}360; X64-NEXT:    vzeroupper361; X64-NEXT:    retq362entry:363  %0 = tail call <4 x i32> @llvm.x86.avx512.mask.cvtpd2udq.256(<4 x double> %__A, <4 x i32> zeroinitializer, i8 %__U) #8364  %1 = bitcast <4 x i32> %0 to <2 x i64>365  ret <2 x i64> %1366}367 368define <4 x float> @test_mm_mask_cvtph_ps(<4 x float> %__W, i8 zeroext %__U, <2 x i64> %__A) {369; X86-LABEL: test_mm_mask_cvtph_ps:370; X86:       # %bb.0: # %entry371; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax372; X86-NEXT:    kmovw %eax, %k1373; X86-NEXT:    vcvtph2ps %xmm1, %xmm0 {%k1}374; X86-NEXT:    retl375;376; X64-LABEL: test_mm_mask_cvtph_ps:377; X64:       # %bb.0: # %entry378; X64-NEXT:    kmovw %edi, %k1379; X64-NEXT:    vcvtph2ps %xmm1, %xmm0 {%k1}380; X64-NEXT:    retq381entry:382  %0 = bitcast <2 x i64> %__A to <8 x i16>383  %1 = shufflevector <8 x i16> %0, <8 x i16> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>384  %2 = bitcast <4 x i16> %1 to <4 x half>385  %3 = bitcast i8 %__U to <8 x i1>386  %4 = shufflevector <8 x i1> %3, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>387  %5 = fpext <4 x half> %2 to <4 x float>388  %6 = select <4 x i1> %4, <4 x float> %5, <4 x float> %__W389  ret <4 x float> %6390}391 392define <4 x float> @test_mm_maskz_cvtph_ps(i8 zeroext %__U, <2 x i64> %__A) {393; X86-LABEL: test_mm_maskz_cvtph_ps:394; X86:       # %bb.0: # %entry395; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax396; X86-NEXT:    kmovw %eax, %k1397; X86-NEXT:    vcvtph2ps %xmm0, %xmm0 {%k1} {z}398; X86-NEXT:    retl399;400; X64-LABEL: test_mm_maskz_cvtph_ps:401; X64:       # %bb.0: # %entry402; X64-NEXT:    kmovw %edi, %k1403; X64-NEXT:    vcvtph2ps %xmm0, %xmm0 {%k1} {z}404; X64-NEXT:    retq405entry:406  %0 = bitcast <2 x i64> %__A to <8 x i16>407  %1 = shufflevector <8 x i16> %0, <8 x i16> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>408  %2 = bitcast <4 x i16> %1 to <4 x half>409  %3 = bitcast i8 %__U to <8 x i1>410  %4 = shufflevector <8 x i1> %3, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>411  %5 = fpext <4 x half> %2 to <4 x float>412  %6 = select <4 x i1> %4, <4 x float> %5, <4 x float> zeroinitializer413  ret <4 x float> %6414}415 416define <8 x float> @test_mm256_mask_cvtph_ps(<8 x float> %__W, i8 zeroext %__U, <2 x i64> %__A) {417; X86-LABEL: test_mm256_mask_cvtph_ps:418; X86:       # %bb.0: # %entry419; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax420; X86-NEXT:    kmovw %eax, %k1421; X86-NEXT:    vcvtph2ps %xmm1, %ymm0 {%k1}422; X86-NEXT:    retl423;424; X64-LABEL: test_mm256_mask_cvtph_ps:425; X64:       # %bb.0: # %entry426; X64-NEXT:    kmovw %edi, %k1427; X64-NEXT:    vcvtph2ps %xmm1, %ymm0 {%k1}428; X64-NEXT:    retq429entry:430  %0 = bitcast <2 x i64> %__A to <8 x i16>431  %1 = bitcast <8 x i16> %0 to <8 x half>432  %2 = bitcast i8 %__U to <8 x i1>433  %3 = fpext <8 x half> %1 to <8 x float>434  %4 = select <8 x i1> %2, <8 x float> %3, <8 x float> %__W435  ret <8 x float> %4436}437 438define <8 x float> @test_mm256_maskz_cvtph_ps(i8 zeroext %__U, <2 x i64> %__A) {439; X86-LABEL: test_mm256_maskz_cvtph_ps:440; X86:       # %bb.0: # %entry441; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax442; X86-NEXT:    kmovw %eax, %k1443; X86-NEXT:    vcvtph2ps %xmm0, %ymm0 {%k1} {z}444; X86-NEXT:    retl445;446; X64-LABEL: test_mm256_maskz_cvtph_ps:447; X64:       # %bb.0: # %entry448; X64-NEXT:    kmovw %edi, %k1449; X64-NEXT:    vcvtph2ps %xmm0, %ymm0 {%k1} {z}450; X64-NEXT:    retq451entry:452  %0 = bitcast <2 x i64> %__A to <8 x i16>453  %1 = bitcast <8 x i16> %0 to <8 x half>454  %2 = bitcast i8 %__U to <8 x i1>455  %3 = fpext <8 x half> %1 to <8 x float>456  %4 = select <8 x i1> %2, <8 x float> %3, <8 x float> zeroinitializer457  ret <8 x float> %4458}459 460define <2 x i64> @test_mm_mask_cvtps_epi32(<2 x i64> %__W, i8 zeroext %__U, <4 x float> %__A) {461; X86-LABEL: test_mm_mask_cvtps_epi32:462; X86:       # %bb.0: # %entry463; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax464; X86-NEXT:    kmovw %eax, %k1465; X86-NEXT:    vcvtps2dq %xmm1, %xmm0 {%k1}466; X86-NEXT:    retl467;468; X64-LABEL: test_mm_mask_cvtps_epi32:469; X64:       # %bb.0: # %entry470; X64-NEXT:    kmovw %edi, %k1471; X64-NEXT:    vcvtps2dq %xmm1, %xmm0 {%k1}472; X64-NEXT:    retq473entry:474  %0 = tail call <4 x i32> @llvm.x86.sse2.cvtps2dq(<4 x float> %__A) #8475  %1 = bitcast <2 x i64> %__W to <4 x i32>476  %2 = bitcast i8 %__U to <8 x i1>477  %extract.i = shufflevector <8 x i1> %2, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>478  %3 = select <4 x i1> %extract.i, <4 x i32> %0, <4 x i32> %1479  %4 = bitcast <4 x i32> %3 to <2 x i64>480  ret <2 x i64> %4481}482 483define <2 x i64> @test_mm_maskz_cvtps_epi32(i8 zeroext %__U, <4 x float> %__A) {484; X86-LABEL: test_mm_maskz_cvtps_epi32:485; X86:       # %bb.0: # %entry486; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax487; X86-NEXT:    kmovw %eax, %k1488; X86-NEXT:    vcvtps2dq %xmm0, %xmm0 {%k1} {z}489; X86-NEXT:    retl490;491; X64-LABEL: test_mm_maskz_cvtps_epi32:492; X64:       # %bb.0: # %entry493; X64-NEXT:    kmovw %edi, %k1494; X64-NEXT:    vcvtps2dq %xmm0, %xmm0 {%k1} {z}495; X64-NEXT:    retq496entry:497  %0 = tail call <4 x i32> @llvm.x86.sse2.cvtps2dq(<4 x float> %__A) #8498  %1 = bitcast i8 %__U to <8 x i1>499  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>500  %2 = select <4 x i1> %extract.i, <4 x i32> %0, <4 x i32> zeroinitializer501  %3 = bitcast <4 x i32> %2 to <2 x i64>502  ret <2 x i64> %3503}504 505define <4 x i64> @test_mm256_mask_cvtps_epi32(<4 x i64> %__W, i8 zeroext %__U, <8 x float> %__A) {506; X86-LABEL: test_mm256_mask_cvtps_epi32:507; X86:       # %bb.0: # %entry508; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax509; X86-NEXT:    kmovw %eax, %k1510; X86-NEXT:    vcvtps2dq %ymm1, %ymm0 {%k1}511; X86-NEXT:    retl512;513; X64-LABEL: test_mm256_mask_cvtps_epi32:514; X64:       # %bb.0: # %entry515; X64-NEXT:    kmovw %edi, %k1516; X64-NEXT:    vcvtps2dq %ymm1, %ymm0 {%k1}517; X64-NEXT:    retq518entry:519  %0 = tail call <8 x i32> @llvm.x86.avx.cvt.ps2dq.256(<8 x float> %__A) #8520  %1 = bitcast <4 x i64> %__W to <8 x i32>521  %2 = bitcast i8 %__U to <8 x i1>522  %3 = select <8 x i1> %2, <8 x i32> %0, <8 x i32> %1523  %4 = bitcast <8 x i32> %3 to <4 x i64>524  ret <4 x i64> %4525}526 527define <4 x i64> @test_mm256_maskz_cvtps_epi32(i8 zeroext %__U, <8 x float> %__A) {528; X86-LABEL: test_mm256_maskz_cvtps_epi32:529; X86:       # %bb.0: # %entry530; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax531; X86-NEXT:    kmovw %eax, %k1532; X86-NEXT:    vcvtps2dq %ymm0, %ymm0 {%k1} {z}533; X86-NEXT:    retl534;535; X64-LABEL: test_mm256_maskz_cvtps_epi32:536; X64:       # %bb.0: # %entry537; X64-NEXT:    kmovw %edi, %k1538; X64-NEXT:    vcvtps2dq %ymm0, %ymm0 {%k1} {z}539; X64-NEXT:    retq540entry:541  %0 = tail call <8 x i32> @llvm.x86.avx.cvt.ps2dq.256(<8 x float> %__A) #8542  %1 = bitcast i8 %__U to <8 x i1>543  %2 = select <8 x i1> %1, <8 x i32> %0, <8 x i32> zeroinitializer544  %3 = bitcast <8 x i32> %2 to <4 x i64>545  ret <4 x i64> %3546}547 548define <2 x double> @test_mm_mask_cvtps_pd(<2 x double> %__W, i8 zeroext %__U, <4 x float> %__A) local_unnamed_addr #0 {549; X86-LABEL: test_mm_mask_cvtps_pd:550; X86:       # %bb.0: # %entry551; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax552; X86-NEXT:    kmovw %eax, %k1553; X86-NEXT:    vcvtps2pd %xmm1, %xmm0 {%k1}554; X86-NEXT:    retl555;556; X64-LABEL: test_mm_mask_cvtps_pd:557; X64:       # %bb.0: # %entry558; X64-NEXT:    kmovw %edi, %k1559; X64-NEXT:    vcvtps2pd %xmm1, %xmm0 {%k1}560; X64-NEXT:    retq561entry:562  %shuffle.i.i = shufflevector <4 x float> %__A, <4 x float> undef, <2 x i32> <i32 0, i32 1>563  %conv.i.i = fpext <2 x float> %shuffle.i.i to <2 x double>564  %0 = bitcast i8 %__U to <8 x i1>565  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <2 x i32> <i32 0, i32 1>566  %1 = select <2 x i1> %extract.i, <2 x double> %conv.i.i, <2 x double> %__W567  ret <2 x double> %1568}569 570define <2 x double> @test_mm_maskz_cvtps_pd(i8 zeroext %__U, <4 x float> %__A) local_unnamed_addr #0 {571; X86-LABEL: test_mm_maskz_cvtps_pd:572; X86:       # %bb.0: # %entry573; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax574; X86-NEXT:    kmovw %eax, %k1575; X86-NEXT:    vcvtps2pd %xmm0, %xmm0 {%k1} {z}576; X86-NEXT:    retl577;578; X64-LABEL: test_mm_maskz_cvtps_pd:579; X64:       # %bb.0: # %entry580; X64-NEXT:    kmovw %edi, %k1581; X64-NEXT:    vcvtps2pd %xmm0, %xmm0 {%k1} {z}582; X64-NEXT:    retq583entry:584  %shuffle.i.i = shufflevector <4 x float> %__A, <4 x float> undef, <2 x i32> <i32 0, i32 1>585  %conv.i.i = fpext <2 x float> %shuffle.i.i to <2 x double>586  %0 = bitcast i8 %__U to <8 x i1>587  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <2 x i32> <i32 0, i32 1>588  %1 = select <2 x i1> %extract.i, <2 x double> %conv.i.i, <2 x double> zeroinitializer589  ret <2 x double> %1590}591 592define <4 x double> @test_mm256_mask_cvtps_pd(<4 x double> %__W, i8 zeroext %__U, <4 x float> %__A) local_unnamed_addr #0 {593; X86-LABEL: test_mm256_mask_cvtps_pd:594; X86:       # %bb.0: # %entry595; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax596; X86-NEXT:    kmovw %eax, %k1597; X86-NEXT:    vcvtps2pd %xmm1, %ymm0 {%k1}598; X86-NEXT:    retl599;600; X64-LABEL: test_mm256_mask_cvtps_pd:601; X64:       # %bb.0: # %entry602; X64-NEXT:    kmovw %edi, %k1603; X64-NEXT:    vcvtps2pd %xmm1, %ymm0 {%k1}604; X64-NEXT:    retq605entry:606  %conv.i.i = fpext <4 x float> %__A to <4 x double>607  %0 = bitcast i8 %__U to <8 x i1>608  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>609  %1 = select <4 x i1> %extract.i, <4 x double> %conv.i.i, <4 x double> %__W610  ret <4 x double> %1611}612 613define <4 x double> @test_mm256_maskz_cvtps_pd(i8 zeroext %__U, <4 x float> %__A) local_unnamed_addr #0 {614; X86-LABEL: test_mm256_maskz_cvtps_pd:615; X86:       # %bb.0: # %entry616; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax617; X86-NEXT:    kmovw %eax, %k1618; X86-NEXT:    vcvtps2pd %xmm0, %ymm0 {%k1} {z}619; X86-NEXT:    retl620;621; X64-LABEL: test_mm256_maskz_cvtps_pd:622; X64:       # %bb.0: # %entry623; X64-NEXT:    kmovw %edi, %k1624; X64-NEXT:    vcvtps2pd %xmm0, %ymm0 {%k1} {z}625; X64-NEXT:    retq626entry:627  %conv.i.i = fpext <4 x float> %__A to <4 x double>628  %0 = bitcast i8 %__U to <8 x i1>629  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>630  %1 = select <4 x i1> %extract.i, <4 x double> %conv.i.i, <4 x double> zeroinitializer631  ret <4 x double> %1632}633 634define <2 x i64> @test_mm_cvtps_epu32(<4 x float> %__A) {635; CHECK-LABEL: test_mm_cvtps_epu32:636; CHECK:       # %bb.0: # %entry637; CHECK-NEXT:    vcvtps2udq %xmm0, %xmm0638; CHECK-NEXT:    ret{{[l|q]}}639entry:640  %0 = tail call <4 x i32> @llvm.x86.avx512.mask.cvtps2udq.128(<4 x float> %__A, <4 x i32> zeroinitializer, i8 -1) #8641  %1 = bitcast <4 x i32> %0 to <2 x i64>642  ret <2 x i64> %1643}644 645define <2 x i64> @test_mm_mask_cvtps_epu32(<2 x i64> %__W, i8 zeroext %__U, <4 x float> %__A) {646; X86-LABEL: test_mm_mask_cvtps_epu32:647; X86:       # %bb.0: # %entry648; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax649; X86-NEXT:    kmovw %eax, %k1650; X86-NEXT:    vcvtps2udq %xmm1, %xmm0 {%k1}651; X86-NEXT:    retl652;653; X64-LABEL: test_mm_mask_cvtps_epu32:654; X64:       # %bb.0: # %entry655; X64-NEXT:    kmovw %edi, %k1656; X64-NEXT:    vcvtps2udq %xmm1, %xmm0 {%k1}657; X64-NEXT:    retq658entry:659  %0 = bitcast <2 x i64> %__W to <4 x i32>660  %1 = tail call <4 x i32> @llvm.x86.avx512.mask.cvtps2udq.128(<4 x float> %__A, <4 x i32> %0, i8 %__U) #8661  %2 = bitcast <4 x i32> %1 to <2 x i64>662  ret <2 x i64> %2663}664 665define <2 x i64> @test_mm_maskz_cvtps_epu32(i8 zeroext %__U, <4 x float> %__A) {666; X86-LABEL: test_mm_maskz_cvtps_epu32:667; X86:       # %bb.0: # %entry668; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax669; X86-NEXT:    kmovw %eax, %k1670; X86-NEXT:    vcvtps2udq %xmm0, %xmm0 {%k1} {z}671; X86-NEXT:    retl672;673; X64-LABEL: test_mm_maskz_cvtps_epu32:674; X64:       # %bb.0: # %entry675; X64-NEXT:    kmovw %edi, %k1676; X64-NEXT:    vcvtps2udq %xmm0, %xmm0 {%k1} {z}677; X64-NEXT:    retq678entry:679  %0 = tail call <4 x i32> @llvm.x86.avx512.mask.cvtps2udq.128(<4 x float> %__A, <4 x i32> zeroinitializer, i8 %__U) #8680  %1 = bitcast <4 x i32> %0 to <2 x i64>681  ret <2 x i64> %1682}683 684define <4 x i64> @test_mm256_cvtps_epu32(<8 x float> %__A) {685; CHECK-LABEL: test_mm256_cvtps_epu32:686; CHECK:       # %bb.0: # %entry687; CHECK-NEXT:    vcvtps2udq %ymm0, %ymm0688; CHECK-NEXT:    ret{{[l|q]}}689entry:690  %0 = tail call <8 x i32> @llvm.x86.avx512.mask.cvtps2udq.256(<8 x float> %__A, <8 x i32> zeroinitializer, i8 -1) #8691  %1 = bitcast <8 x i32> %0 to <4 x i64>692  ret <4 x i64> %1693}694 695define <4 x i64> @test_mm256_mask_cvtps_epu32(<4 x i64> %__W, i8 zeroext %__U, <8 x float> %__A) {696; X86-LABEL: test_mm256_mask_cvtps_epu32:697; X86:       # %bb.0: # %entry698; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax699; X86-NEXT:    kmovw %eax, %k1700; X86-NEXT:    vcvtps2udq %ymm1, %ymm0 {%k1}701; X86-NEXT:    retl702;703; X64-LABEL: test_mm256_mask_cvtps_epu32:704; X64:       # %bb.0: # %entry705; X64-NEXT:    kmovw %edi, %k1706; X64-NEXT:    vcvtps2udq %ymm1, %ymm0 {%k1}707; X64-NEXT:    retq708entry:709  %0 = bitcast <4 x i64> %__W to <8 x i32>710  %1 = tail call <8 x i32> @llvm.x86.avx512.mask.cvtps2udq.256(<8 x float> %__A, <8 x i32> %0, i8 %__U) #8711  %2 = bitcast <8 x i32> %1 to <4 x i64>712  ret <4 x i64> %2713}714 715define <4 x i64> @test_mm256_maskz_cvtps_epu32(i8 zeroext %__U, <8 x float> %__A) {716; X86-LABEL: test_mm256_maskz_cvtps_epu32:717; X86:       # %bb.0: # %entry718; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax719; X86-NEXT:    kmovw %eax, %k1720; X86-NEXT:    vcvtps2udq %ymm0, %ymm0 {%k1} {z}721; X86-NEXT:    retl722;723; X64-LABEL: test_mm256_maskz_cvtps_epu32:724; X64:       # %bb.0: # %entry725; X64-NEXT:    kmovw %edi, %k1726; X64-NEXT:    vcvtps2udq %ymm0, %ymm0 {%k1} {z}727; X64-NEXT:    retq728entry:729  %0 = tail call <8 x i32> @llvm.x86.avx512.mask.cvtps2udq.256(<8 x float> %__A, <8 x i32> zeroinitializer, i8 %__U) #8730  %1 = bitcast <8 x i32> %0 to <4 x i64>731  ret <4 x i64> %1732}733 734define <2 x i64> @test_mm_mask_cvttpd_epi32(<2 x i64> %__W, i8 zeroext %__U, <2 x double> %__A) {735; X86-LABEL: test_mm_mask_cvttpd_epi32:736; X86:       # %bb.0: # %entry737; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax738; X86-NEXT:    kmovw %eax, %k1739; X86-NEXT:    vcvttpd2dq %xmm1, %xmm0 {%k1}740; X86-NEXT:    retl741;742; X64-LABEL: test_mm_mask_cvttpd_epi32:743; X64:       # %bb.0: # %entry744; X64-NEXT:    kmovw %edi, %k1745; X64-NEXT:    vcvttpd2dq %xmm1, %xmm0 {%k1}746; X64-NEXT:    retq747entry:748  %0 = bitcast <2 x i64> %__W to <4 x i32>749  %1 = tail call <4 x i32> @llvm.x86.avx512.mask.cvttpd2dq.128(<2 x double> %__A, <4 x i32> %0, i8 %__U) #8750  %2 = bitcast <4 x i32> %1 to <2 x i64>751  ret <2 x i64> %2752}753 754define <2 x i64> @test_mm_maskz_cvttpd_epi32(i8 zeroext %__U, <2 x double> %__A) {755; X86-LABEL: test_mm_maskz_cvttpd_epi32:756; X86:       # %bb.0: # %entry757; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax758; X86-NEXT:    kmovw %eax, %k1759; X86-NEXT:    vcvttpd2dq %xmm0, %xmm0 {%k1} {z}760; X86-NEXT:    retl761;762; X64-LABEL: test_mm_maskz_cvttpd_epi32:763; X64:       # %bb.0: # %entry764; X64-NEXT:    kmovw %edi, %k1765; X64-NEXT:    vcvttpd2dq %xmm0, %xmm0 {%k1} {z}766; X64-NEXT:    retq767entry:768  %0 = tail call <4 x i32> @llvm.x86.avx512.mask.cvttpd2dq.128(<2 x double> %__A, <4 x i32> zeroinitializer, i8 %__U) #8769  %1 = bitcast <4 x i32> %0 to <2 x i64>770  ret <2 x i64> %1771}772 773define <2 x i64> @test_mm256_mask_cvttpd_epi32(<2 x i64> %__W, i8 zeroext %__U, <4 x double> %__A) {774; X86-LABEL: test_mm256_mask_cvttpd_epi32:775; X86:       # %bb.0: # %entry776; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax777; X86-NEXT:    kmovw %eax, %k1778; X86-NEXT:    vcvttpd2dq %ymm1, %xmm0 {%k1}779; X86-NEXT:    vzeroupper780; X86-NEXT:    retl781;782; X64-LABEL: test_mm256_mask_cvttpd_epi32:783; X64:       # %bb.0: # %entry784; X64-NEXT:    kmovw %edi, %k1785; X64-NEXT:    vcvttpd2dq %ymm1, %xmm0 {%k1}786; X64-NEXT:    vzeroupper787; X64-NEXT:    retq788entry:789  %0 = tail call <4 x i32> @llvm.x86.avx.cvtt.pd2dq.256(<4 x double> %__A) #8790  %1 = bitcast <2 x i64> %__W to <4 x i32>791  %2 = bitcast i8 %__U to <8 x i1>792  %extract.i = shufflevector <8 x i1> %2, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>793  %3 = select <4 x i1> %extract.i, <4 x i32> %0, <4 x i32> %1794  %4 = bitcast <4 x i32> %3 to <2 x i64>795  ret <2 x i64> %4796}797 798define <2 x i64> @test_mm256_maskz_cvttpd_epi32(i8 zeroext %__U, <4 x double> %__A) {799; X86-LABEL: test_mm256_maskz_cvttpd_epi32:800; X86:       # %bb.0: # %entry801; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax802; X86-NEXT:    kmovw %eax, %k1803; X86-NEXT:    vcvttpd2dq %ymm0, %xmm0 {%k1} {z}804; X86-NEXT:    vzeroupper805; X86-NEXT:    retl806;807; X64-LABEL: test_mm256_maskz_cvttpd_epi32:808; X64:       # %bb.0: # %entry809; X64-NEXT:    kmovw %edi, %k1810; X64-NEXT:    vcvttpd2dq %ymm0, %xmm0 {%k1} {z}811; X64-NEXT:    vzeroupper812; X64-NEXT:    retq813entry:814  %0 = tail call <4 x i32> @llvm.x86.avx.cvtt.pd2dq.256(<4 x double> %__A) #8815  %1 = bitcast i8 %__U to <8 x i1>816  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>817  %2 = select <4 x i1> %extract.i, <4 x i32> %0, <4 x i32> zeroinitializer818  %3 = bitcast <4 x i32> %2 to <2 x i64>819  ret <2 x i64> %3820}821 822define <2 x i64> @test_mm_cvttpd_epu32(<2 x double> %__A) {823; CHECK-LABEL: test_mm_cvttpd_epu32:824; CHECK:       # %bb.0: # %entry825; CHECK-NEXT:    vcvttpd2udq %xmm0, %xmm0826; CHECK-NEXT:    ret{{[l|q]}}827entry:828  %0 = tail call <4 x i32> @llvm.x86.avx512.mask.cvttpd2udq.128(<2 x double> %__A, <4 x i32> zeroinitializer, i8 -1) #8829  %1 = bitcast <4 x i32> %0 to <2 x i64>830  ret <2 x i64> %1831}832 833define <2 x i64> @test_mm_mask_cvttpd_epu32(<2 x i64> %__W, i8 zeroext %__U, <2 x double> %__A) {834; X86-LABEL: test_mm_mask_cvttpd_epu32:835; X86:       # %bb.0: # %entry836; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax837; X86-NEXT:    kmovw %eax, %k1838; X86-NEXT:    vcvttpd2udq %xmm1, %xmm0 {%k1}839; X86-NEXT:    retl840;841; X64-LABEL: test_mm_mask_cvttpd_epu32:842; X64:       # %bb.0: # %entry843; X64-NEXT:    kmovw %edi, %k1844; X64-NEXT:    vcvttpd2udq %xmm1, %xmm0 {%k1}845; X64-NEXT:    retq846entry:847  %0 = bitcast <2 x i64> %__W to <4 x i32>848  %1 = tail call <4 x i32> @llvm.x86.avx512.mask.cvttpd2udq.128(<2 x double> %__A, <4 x i32> %0, i8 %__U) #8849  %2 = bitcast <4 x i32> %1 to <2 x i64>850  ret <2 x i64> %2851}852 853define <2 x i64> @test_mm_maskz_cvttpd_epu32(i8 zeroext %__U, <2 x double> %__A) {854; X86-LABEL: test_mm_maskz_cvttpd_epu32:855; X86:       # %bb.0: # %entry856; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax857; X86-NEXT:    kmovw %eax, %k1858; X86-NEXT:    vcvttpd2udq %xmm0, %xmm0 {%k1} {z}859; X86-NEXT:    retl860;861; X64-LABEL: test_mm_maskz_cvttpd_epu32:862; X64:       # %bb.0: # %entry863; X64-NEXT:    kmovw %edi, %k1864; X64-NEXT:    vcvttpd2udq %xmm0, %xmm0 {%k1} {z}865; X64-NEXT:    retq866entry:867  %0 = tail call <4 x i32> @llvm.x86.avx512.mask.cvttpd2udq.128(<2 x double> %__A, <4 x i32> zeroinitializer, i8 %__U) #8868  %1 = bitcast <4 x i32> %0 to <2 x i64>869  ret <2 x i64> %1870}871 872define <2 x i64> @test_mm256_cvttpd_epu32(<4 x double> %__A) {873; CHECK-LABEL: test_mm256_cvttpd_epu32:874; CHECK:       # %bb.0: # %entry875; CHECK-NEXT:    vcvttpd2udq %ymm0, %xmm0876; CHECK-NEXT:    vzeroupper877; CHECK-NEXT:    ret{{[l|q]}}878entry:879  %0 = tail call <4 x i32> @llvm.x86.avx512.mask.cvttpd2udq.256(<4 x double> %__A, <4 x i32> zeroinitializer, i8 -1) #8880  %1 = bitcast <4 x i32> %0 to <2 x i64>881  ret <2 x i64> %1882}883 884define <2 x i64> @test_mm256_mask_cvttpd_epu32(<2 x i64> %__W, i8 zeroext %__U, <4 x double> %__A) {885; X86-LABEL: test_mm256_mask_cvttpd_epu32:886; X86:       # %bb.0: # %entry887; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax888; X86-NEXT:    kmovw %eax, %k1889; X86-NEXT:    vcvttpd2udq %ymm1, %xmm0 {%k1}890; X86-NEXT:    vzeroupper891; X86-NEXT:    retl892;893; X64-LABEL: test_mm256_mask_cvttpd_epu32:894; X64:       # %bb.0: # %entry895; X64-NEXT:    kmovw %edi, %k1896; X64-NEXT:    vcvttpd2udq %ymm1, %xmm0 {%k1}897; X64-NEXT:    vzeroupper898; X64-NEXT:    retq899entry:900  %0 = bitcast <2 x i64> %__W to <4 x i32>901  %1 = tail call <4 x i32> @llvm.x86.avx512.mask.cvttpd2udq.256(<4 x double> %__A, <4 x i32> %0, i8 %__U) #8902  %2 = bitcast <4 x i32> %1 to <2 x i64>903  ret <2 x i64> %2904}905 906define <2 x i64> @test_mm256_maskz_cvttpd_epu32(i8 zeroext %__U, <4 x double> %__A) {907; X86-LABEL: test_mm256_maskz_cvttpd_epu32:908; X86:       # %bb.0: # %entry909; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax910; X86-NEXT:    kmovw %eax, %k1911; X86-NEXT:    vcvttpd2udq %ymm0, %xmm0 {%k1} {z}912; X86-NEXT:    vzeroupper913; X86-NEXT:    retl914;915; X64-LABEL: test_mm256_maskz_cvttpd_epu32:916; X64:       # %bb.0: # %entry917; X64-NEXT:    kmovw %edi, %k1918; X64-NEXT:    vcvttpd2udq %ymm0, %xmm0 {%k1} {z}919; X64-NEXT:    vzeroupper920; X64-NEXT:    retq921entry:922  %0 = tail call <4 x i32> @llvm.x86.avx512.mask.cvttpd2udq.256(<4 x double> %__A, <4 x i32> zeroinitializer, i8 %__U) #8923  %1 = bitcast <4 x i32> %0 to <2 x i64>924  ret <2 x i64> %1925}926 927define <2 x i64> @test_mm_mask_cvttps_epi32(<2 x i64> %__W, i8 zeroext %__U, <4 x float> %__A) {928; X86-LABEL: test_mm_mask_cvttps_epi32:929; X86:       # %bb.0: # %entry930; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax931; X86-NEXT:    kmovw %eax, %k1932; X86-NEXT:    vcvttps2dq %xmm1, %xmm0 {%k1}933; X86-NEXT:    retl934;935; X64-LABEL: test_mm_mask_cvttps_epi32:936; X64:       # %bb.0: # %entry937; X64-NEXT:    kmovw %edi, %k1938; X64-NEXT:    vcvttps2dq %xmm1, %xmm0 {%k1}939; X64-NEXT:    retq940entry:941  %0 = tail call <4 x i32> @llvm.x86.sse2.cvttps2dq(<4 x float> %__A) #8942  %1 = bitcast <2 x i64> %__W to <4 x i32>943  %2 = bitcast i8 %__U to <8 x i1>944  %extract.i = shufflevector <8 x i1> %2, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>945  %3 = select <4 x i1> %extract.i, <4 x i32> %0, <4 x i32> %1946  %4 = bitcast <4 x i32> %3 to <2 x i64>947  ret <2 x i64> %4948}949 950define <2 x i64> @test_mm_maskz_cvttps_epi32(i8 zeroext %__U, <4 x float> %__A) {951; X86-LABEL: test_mm_maskz_cvttps_epi32:952; X86:       # %bb.0: # %entry953; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax954; X86-NEXT:    kmovw %eax, %k1955; X86-NEXT:    vcvttps2dq %xmm0, %xmm0 {%k1} {z}956; X86-NEXT:    retl957;958; X64-LABEL: test_mm_maskz_cvttps_epi32:959; X64:       # %bb.0: # %entry960; X64-NEXT:    kmovw %edi, %k1961; X64-NEXT:    vcvttps2dq %xmm0, %xmm0 {%k1} {z}962; X64-NEXT:    retq963entry:964  %0 = tail call <4 x i32> @llvm.x86.sse2.cvttps2dq(<4 x float> %__A) #8965  %1 = bitcast i8 %__U to <8 x i1>966  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>967  %2 = select <4 x i1> %extract.i, <4 x i32> %0, <4 x i32> zeroinitializer968  %3 = bitcast <4 x i32> %2 to <2 x i64>969  ret <2 x i64> %3970}971 972define <4 x i64> @test_mm256_mask_cvttps_epi32(<4 x i64> %__W, i8 zeroext %__U, <8 x float> %__A) {973; X86-LABEL: test_mm256_mask_cvttps_epi32:974; X86:       # %bb.0: # %entry975; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax976; X86-NEXT:    kmovw %eax, %k1977; X86-NEXT:    vcvttps2dq %ymm1, %ymm0 {%k1}978; X86-NEXT:    retl979;980; X64-LABEL: test_mm256_mask_cvttps_epi32:981; X64:       # %bb.0: # %entry982; X64-NEXT:    kmovw %edi, %k1983; X64-NEXT:    vcvttps2dq %ymm1, %ymm0 {%k1}984; X64-NEXT:    retq985entry:986  %0 = tail call <8 x i32> @llvm.x86.avx.cvtt.ps2dq.256(<8 x float> %__A) #8987  %1 = bitcast <4 x i64> %__W to <8 x i32>988  %2 = bitcast i8 %__U to <8 x i1>989  %3 = select <8 x i1> %2, <8 x i32> %0, <8 x i32> %1990  %4 = bitcast <8 x i32> %3 to <4 x i64>991  ret <4 x i64> %4992}993 994define <4 x i64> @test_mm256_maskz_cvttps_epi32(i8 zeroext %__U, <8 x float> %__A) {995; X86-LABEL: test_mm256_maskz_cvttps_epi32:996; X86:       # %bb.0: # %entry997; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax998; X86-NEXT:    kmovw %eax, %k1999; X86-NEXT:    vcvttps2dq %ymm0, %ymm0 {%k1} {z}1000; X86-NEXT:    retl1001;1002; X64-LABEL: test_mm256_maskz_cvttps_epi32:1003; X64:       # %bb.0: # %entry1004; X64-NEXT:    kmovw %edi, %k11005; X64-NEXT:    vcvttps2dq %ymm0, %ymm0 {%k1} {z}1006; X64-NEXT:    retq1007entry:1008  %0 = tail call <8 x i32> @llvm.x86.avx.cvtt.ps2dq.256(<8 x float> %__A) #81009  %1 = bitcast i8 %__U to <8 x i1>1010  %2 = select <8 x i1> %1, <8 x i32> %0, <8 x i32> zeroinitializer1011  %3 = bitcast <8 x i32> %2 to <4 x i64>1012  ret <4 x i64> %31013}1014 1015define <2 x i64> @test_mm_cvttps_epu32(<4 x float> %__A) {1016; CHECK-LABEL: test_mm_cvttps_epu32:1017; CHECK:       # %bb.0: # %entry1018; CHECK-NEXT:    vcvttps2udq %xmm0, %xmm01019; CHECK-NEXT:    ret{{[l|q]}}1020entry:1021  %0 = tail call <4 x i32> @llvm.x86.avx512.mask.cvttps2udq.128(<4 x float> %__A, <4 x i32> zeroinitializer, i8 -1) #81022  %1 = bitcast <4 x i32> %0 to <2 x i64>1023  ret <2 x i64> %11024}1025 1026define <2 x i64> @test_mm_mask_cvttps_epu32(<2 x i64> %__W, i8 zeroext %__U, <4 x float> %__A) {1027; X86-LABEL: test_mm_mask_cvttps_epu32:1028; X86:       # %bb.0: # %entry1029; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax1030; X86-NEXT:    kmovw %eax, %k11031; X86-NEXT:    vcvttps2udq %xmm1, %xmm0 {%k1}1032; X86-NEXT:    retl1033;1034; X64-LABEL: test_mm_mask_cvttps_epu32:1035; X64:       # %bb.0: # %entry1036; X64-NEXT:    kmovw %edi, %k11037; X64-NEXT:    vcvttps2udq %xmm1, %xmm0 {%k1}1038; X64-NEXT:    retq1039entry:1040  %0 = bitcast <2 x i64> %__W to <4 x i32>1041  %1 = tail call <4 x i32> @llvm.x86.avx512.mask.cvttps2udq.128(<4 x float> %__A, <4 x i32> %0, i8 %__U) #81042  %2 = bitcast <4 x i32> %1 to <2 x i64>1043  ret <2 x i64> %21044}1045 1046define <2 x i64> @test_mm_maskz_cvttps_epu32(i8 zeroext %__U, <4 x float> %__A) {1047; X86-LABEL: test_mm_maskz_cvttps_epu32:1048; X86:       # %bb.0: # %entry1049; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax1050; X86-NEXT:    kmovw %eax, %k11051; X86-NEXT:    vcvttps2udq %xmm0, %xmm0 {%k1} {z}1052; X86-NEXT:    retl1053;1054; X64-LABEL: test_mm_maskz_cvttps_epu32:1055; X64:       # %bb.0: # %entry1056; X64-NEXT:    kmovw %edi, %k11057; X64-NEXT:    vcvttps2udq %xmm0, %xmm0 {%k1} {z}1058; X64-NEXT:    retq1059entry:1060  %0 = tail call <4 x i32> @llvm.x86.avx512.mask.cvttps2udq.128(<4 x float> %__A, <4 x i32> zeroinitializer, i8 %__U) #81061  %1 = bitcast <4 x i32> %0 to <2 x i64>1062  ret <2 x i64> %11063}1064 1065define <4 x i64> @test_mm256_cvttps_epu32(<8 x float> %__A) {1066; CHECK-LABEL: test_mm256_cvttps_epu32:1067; CHECK:       # %bb.0: # %entry1068; CHECK-NEXT:    vcvttps2udq %ymm0, %ymm01069; CHECK-NEXT:    ret{{[l|q]}}1070entry:1071  %0 = tail call <8 x i32> @llvm.x86.avx512.mask.cvttps2udq.256(<8 x float> %__A, <8 x i32> zeroinitializer, i8 -1) #81072  %1 = bitcast <8 x i32> %0 to <4 x i64>1073  ret <4 x i64> %11074}1075 1076define <4 x i64> @test_mm256_mask_cvttps_epu32(<4 x i64> %__W, i8 zeroext %__U, <8 x float> %__A) {1077; X86-LABEL: test_mm256_mask_cvttps_epu32:1078; X86:       # %bb.0: # %entry1079; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax1080; X86-NEXT:    kmovw %eax, %k11081; X86-NEXT:    vcvttps2udq %ymm1, %ymm0 {%k1}1082; X86-NEXT:    retl1083;1084; X64-LABEL: test_mm256_mask_cvttps_epu32:1085; X64:       # %bb.0: # %entry1086; X64-NEXT:    kmovw %edi, %k11087; X64-NEXT:    vcvttps2udq %ymm1, %ymm0 {%k1}1088; X64-NEXT:    retq1089entry:1090  %0 = bitcast <4 x i64> %__W to <8 x i32>1091  %1 = tail call <8 x i32> @llvm.x86.avx512.mask.cvttps2udq.256(<8 x float> %__A, <8 x i32> %0, i8 %__U) #81092  %2 = bitcast <8 x i32> %1 to <4 x i64>1093  ret <4 x i64> %21094}1095 1096define <4 x i64> @test_mm256_maskz_cvttps_epu32(i8 zeroext %__U, <8 x float> %__A) {1097; X86-LABEL: test_mm256_maskz_cvttps_epu32:1098; X86:       # %bb.0: # %entry1099; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax1100; X86-NEXT:    kmovw %eax, %k11101; X86-NEXT:    vcvttps2udq %ymm0, %ymm0 {%k1} {z}1102; X86-NEXT:    retl1103;1104; X64-LABEL: test_mm256_maskz_cvttps_epu32:1105; X64:       # %bb.0: # %entry1106; X64-NEXT:    kmovw %edi, %k11107; X64-NEXT:    vcvttps2udq %ymm0, %ymm0 {%k1} {z}1108; X64-NEXT:    retq1109entry:1110  %0 = tail call <8 x i32> @llvm.x86.avx512.mask.cvttps2udq.256(<8 x float> %__A, <8 x i32> zeroinitializer, i8 %__U) #81111  %1 = bitcast <8 x i32> %0 to <4 x i64>1112  ret <4 x i64> %11113}1114 1115define <2 x double> @test_mm_cvtepu32_pd(<2 x i64> %__A) local_unnamed_addr #0 {1116; CHECK-LABEL: test_mm_cvtepu32_pd:1117; CHECK:       # %bb.0: # %entry1118; CHECK-NEXT:    vcvtudq2pd %xmm0, %xmm01119; CHECK-NEXT:    ret{{[l|q]}}1120entry:1121  %0 = bitcast <2 x i64> %__A to <4 x i32>1122  %shuffle.i = shufflevector <4 x i32> %0, <4 x i32> undef, <2 x i32> <i32 0, i32 1>1123  %conv.i = uitofp <2 x i32> %shuffle.i to <2 x double>1124  ret <2 x double> %conv.i1125}1126 1127define <2 x double> @test_mm_mask_cvtepu32_pd(<2 x double> %__W, i8 zeroext %__U, <2 x i64> %__A) local_unnamed_addr #0 {1128; X86-LABEL: test_mm_mask_cvtepu32_pd:1129; X86:       # %bb.0: # %entry1130; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax1131; X86-NEXT:    kmovw %eax, %k11132; X86-NEXT:    vcvtudq2pd %xmm1, %xmm0 {%k1}1133; X86-NEXT:    retl1134;1135; X64-LABEL: test_mm_mask_cvtepu32_pd:1136; X64:       # %bb.0: # %entry1137; X64-NEXT:    kmovw %edi, %k11138; X64-NEXT:    vcvtudq2pd %xmm1, %xmm0 {%k1}1139; X64-NEXT:    retq1140entry:1141  %0 = bitcast <2 x i64> %__A to <4 x i32>1142  %shuffle.i.i = shufflevector <4 x i32> %0, <4 x i32> undef, <2 x i32> <i32 0, i32 1>1143  %conv.i.i = uitofp <2 x i32> %shuffle.i.i to <2 x double>1144  %1 = bitcast i8 %__U to <8 x i1>1145  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <2 x i32> <i32 0, i32 1>1146  %2 = select <2 x i1> %extract.i, <2 x double> %conv.i.i, <2 x double> %__W1147  ret <2 x double> %21148}1149 1150define <2 x double> @test_mm_maskz_cvtepu32_pd(i8 zeroext %__U, <2 x i64> %__A) local_unnamed_addr #0 {1151; X86-LABEL: test_mm_maskz_cvtepu32_pd:1152; X86:       # %bb.0: # %entry1153; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax1154; X86-NEXT:    kmovw %eax, %k11155; X86-NEXT:    vcvtudq2pd %xmm0, %xmm0 {%k1} {z}1156; X86-NEXT:    retl1157;1158; X64-LABEL: test_mm_maskz_cvtepu32_pd:1159; X64:       # %bb.0: # %entry1160; X64-NEXT:    kmovw %edi, %k11161; X64-NEXT:    vcvtudq2pd %xmm0, %xmm0 {%k1} {z}1162; X64-NEXT:    retq1163entry:1164  %0 = bitcast <2 x i64> %__A to <4 x i32>1165  %shuffle.i.i = shufflevector <4 x i32> %0, <4 x i32> undef, <2 x i32> <i32 0, i32 1>1166  %conv.i.i = uitofp <2 x i32> %shuffle.i.i to <2 x double>1167  %1 = bitcast i8 %__U to <8 x i1>1168  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <2 x i32> <i32 0, i32 1>1169  %2 = select <2 x i1> %extract.i, <2 x double> %conv.i.i, <2 x double> zeroinitializer1170  ret <2 x double> %21171}1172 1173define <4 x double> @test_mm256_cvtepu32_pd(<2 x i64> %__A) local_unnamed_addr #0 {1174; CHECK-LABEL: test_mm256_cvtepu32_pd:1175; CHECK:       # %bb.0: # %entry1176; CHECK-NEXT:    vcvtudq2pd %xmm0, %ymm01177; CHECK-NEXT:    ret{{[l|q]}}1178entry:1179  %0 = bitcast <2 x i64> %__A to <4 x i32>1180  %conv.i = uitofp <4 x i32> %0 to <4 x double>1181  ret <4 x double> %conv.i1182}1183 1184define <4 x double> @test_mm256_mask_cvtepu32_pd(<4 x double> %__W, i8 zeroext %__U, <2 x i64> %__A) local_unnamed_addr #0 {1185; X86-LABEL: test_mm256_mask_cvtepu32_pd:1186; X86:       # %bb.0: # %entry1187; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax1188; X86-NEXT:    kmovw %eax, %k11189; X86-NEXT:    vcvtudq2pd %xmm1, %ymm0 {%k1}1190; X86-NEXT:    retl1191;1192; X64-LABEL: test_mm256_mask_cvtepu32_pd:1193; X64:       # %bb.0: # %entry1194; X64-NEXT:    kmovw %edi, %k11195; X64-NEXT:    vcvtudq2pd %xmm1, %ymm0 {%k1}1196; X64-NEXT:    retq1197entry:1198  %0 = bitcast <2 x i64> %__A to <4 x i32>1199  %conv.i.i = uitofp <4 x i32> %0 to <4 x double>1200  %1 = bitcast i8 %__U to <8 x i1>1201  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>1202  %2 = select <4 x i1> %extract.i, <4 x double> %conv.i.i, <4 x double> %__W1203  ret <4 x double> %21204}1205 1206define <4 x double> @test_mm256_maskz_cvtepu32_pd(i8 zeroext %__U, <2 x i64> %__A) local_unnamed_addr #0 {1207; X86-LABEL: test_mm256_maskz_cvtepu32_pd:1208; X86:       # %bb.0: # %entry1209; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax1210; X86-NEXT:    kmovw %eax, %k11211; X86-NEXT:    vcvtudq2pd %xmm0, %ymm0 {%k1} {z}1212; X86-NEXT:    retl1213;1214; X64-LABEL: test_mm256_maskz_cvtepu32_pd:1215; X64:       # %bb.0: # %entry1216; X64-NEXT:    kmovw %edi, %k11217; X64-NEXT:    vcvtudq2pd %xmm0, %ymm0 {%k1} {z}1218; X64-NEXT:    retq1219entry:1220  %0 = bitcast <2 x i64> %__A to <4 x i32>1221  %conv.i.i = uitofp <4 x i32> %0 to <4 x double>1222  %1 = bitcast i8 %__U to <8 x i1>1223  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>1224  %2 = select <4 x i1> %extract.i, <4 x double> %conv.i.i, <4 x double> zeroinitializer1225  ret <4 x double> %21226}1227 1228define <4 x float> @test_mm_cvtepu32_ps(<2 x i64> %__A) {1229; CHECK-LABEL: test_mm_cvtepu32_ps:1230; CHECK:       # %bb.0: # %entry1231; CHECK-NEXT:    vcvtudq2ps %xmm0, %xmm01232; CHECK-NEXT:    ret{{[l|q]}}1233entry:1234  %0 = bitcast <2 x i64> %__A to <4 x i32>1235  %conv.i = uitofp <4 x i32> %0 to <4 x float>1236  ret <4 x float> %conv.i1237}1238 1239define <4 x float> @test_mm_mask_cvtepu32_ps(<4 x float> %__W, i8 zeroext %__U, <2 x i64> %__A) {1240; X86-LABEL: test_mm_mask_cvtepu32_ps:1241; X86:       # %bb.0: # %entry1242; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax1243; X86-NEXT:    kmovw %eax, %k11244; X86-NEXT:    vcvtudq2ps %xmm1, %xmm0 {%k1}1245; X86-NEXT:    retl1246;1247; X64-LABEL: test_mm_mask_cvtepu32_ps:1248; X64:       # %bb.0: # %entry1249; X64-NEXT:    kmovw %edi, %k11250; X64-NEXT:    vcvtudq2ps %xmm1, %xmm0 {%k1}1251; X64-NEXT:    retq1252entry:1253  %0 = bitcast <2 x i64> %__A to <4 x i32>1254  %conv.i.i = uitofp <4 x i32> %0 to <4 x float>1255  %1 = bitcast i8 %__U to <8 x i1>1256  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>1257  %2 = select <4 x i1> %extract.i, <4 x float> %conv.i.i, <4 x float> %__W1258  ret <4 x float> %21259}1260 1261define <4 x float> @test_mm_maskz_cvtepu32_ps(i8 zeroext %__U, <2 x i64> %__A) {1262; X86-LABEL: test_mm_maskz_cvtepu32_ps:1263; X86:       # %bb.0: # %entry1264; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax1265; X86-NEXT:    kmovw %eax, %k11266; X86-NEXT:    vcvtudq2ps %xmm0, %xmm0 {%k1} {z}1267; X86-NEXT:    retl1268;1269; X64-LABEL: test_mm_maskz_cvtepu32_ps:1270; X64:       # %bb.0: # %entry1271; X64-NEXT:    kmovw %edi, %k11272; X64-NEXT:    vcvtudq2ps %xmm0, %xmm0 {%k1} {z}1273; X64-NEXT:    retq1274entry:1275  %0 = bitcast <2 x i64> %__A to <4 x i32>1276  %conv.i.i = uitofp <4 x i32> %0 to <4 x float>1277  %1 = bitcast i8 %__U to <8 x i1>1278  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>1279  %2 = select <4 x i1> %extract.i, <4 x float> %conv.i.i, <4 x float> zeroinitializer1280  ret <4 x float> %21281}1282 1283define <8 x float> @test_mm256_cvtepu32_ps(<4 x i64> %__A) {1284; CHECK-LABEL: test_mm256_cvtepu32_ps:1285; CHECK:       # %bb.0: # %entry1286; CHECK-NEXT:    vcvtudq2ps %ymm0, %ymm01287; CHECK-NEXT:    ret{{[l|q]}}1288entry:1289  %0 = bitcast <4 x i64> %__A to <8 x i32>1290  %conv.i = uitofp <8 x i32> %0 to <8 x float>1291  ret <8 x float> %conv.i1292}1293 1294define <8 x float> @test_mm256_mask_cvtepu32_ps(<8 x float> %__W, i8 zeroext %__U, <4 x i64> %__A) {1295; X86-LABEL: test_mm256_mask_cvtepu32_ps:1296; X86:       # %bb.0: # %entry1297; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax1298; X86-NEXT:    kmovw %eax, %k11299; X86-NEXT:    vcvtudq2ps %ymm1, %ymm0 {%k1}1300; X86-NEXT:    retl1301;1302; X64-LABEL: test_mm256_mask_cvtepu32_ps:1303; X64:       # %bb.0: # %entry1304; X64-NEXT:    kmovw %edi, %k11305; X64-NEXT:    vcvtudq2ps %ymm1, %ymm0 {%k1}1306; X64-NEXT:    retq1307entry:1308  %0 = bitcast <4 x i64> %__A to <8 x i32>1309  %conv.i.i = uitofp <8 x i32> %0 to <8 x float>1310  %1 = bitcast i8 %__U to <8 x i1>1311  %2 = select <8 x i1> %1, <8 x float> %conv.i.i, <8 x float> %__W1312  ret <8 x float> %21313}1314 1315define <8 x float> @test_mm256_maskz_cvtepu32_ps(i8 zeroext %__U, <4 x i64> %__A) {1316; X86-LABEL: test_mm256_maskz_cvtepu32_ps:1317; X86:       # %bb.0: # %entry1318; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax1319; X86-NEXT:    kmovw %eax, %k11320; X86-NEXT:    vcvtudq2ps %ymm0, %ymm0 {%k1} {z}1321; X86-NEXT:    retl1322;1323; X64-LABEL: test_mm256_maskz_cvtepu32_ps:1324; X64:       # %bb.0: # %entry1325; X64-NEXT:    kmovw %edi, %k11326; X64-NEXT:    vcvtudq2ps %ymm0, %ymm0 {%k1} {z}1327; X64-NEXT:    retq1328entry:1329  %0 = bitcast <4 x i64> %__A to <8 x i32>1330  %conv.i.i = uitofp <8 x i32> %0 to <8 x float>1331  %1 = bitcast i8 %__U to <8 x i1>1332  %2 = select <8 x i1> %1, <8 x float> %conv.i.i, <8 x float> zeroinitializer1333  ret <8 x float> %21334}1335 1336define <8 x float> @test_mm256_shuffle_f32x4(<8 x float> %__A, <8 x float> %__B) {1337; CHECK-LABEL: test_mm256_shuffle_f32x4:1338; CHECK:       # %bb.0: # %entry1339; CHECK-NEXT:    vperm2f128 {{.*#+}} ymm0 = ymm0[2,3],ymm1[2,3]1340; CHECK-NEXT:    ret{{[l|q]}}1341entry:1342  %shuffle = shufflevector <8 x float> %__A, <8 x float> %__B, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 12, i32 13, i32 14, i32 15>1343  ret <8 x float> %shuffle1344}1345 1346define <8 x float> @test_mm256_mask_shuffle_f32x4(<8 x float> %__W, i8 zeroext %__U, <8 x float> %__A, <8 x float> %__B) {1347; X86-LABEL: test_mm256_mask_shuffle_f32x4:1348; X86:       # %bb.0: # %entry1349; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax1350; X86-NEXT:    kmovw %eax, %k11351; X86-NEXT:    vshuff32x4 {{.*#+}} ymm0 {%k1} = ymm1[4,5,6,7],ymm2[4,5,6,7]1352; X86-NEXT:    retl1353;1354; X64-LABEL: test_mm256_mask_shuffle_f32x4:1355; X64:       # %bb.0: # %entry1356; X64-NEXT:    kmovw %edi, %k11357; X64-NEXT:    vshuff32x4 {{.*#+}} ymm0 {%k1} = ymm1[4,5,6,7],ymm2[4,5,6,7]1358; X64-NEXT:    retq1359entry:1360  %shuffle = shufflevector <8 x float> %__A, <8 x float> %__B, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 12, i32 13, i32 14, i32 15>1361  %0 = bitcast i8 %__U to <8 x i1>1362  %1 = select <8 x i1> %0, <8 x float> %shuffle, <8 x float> %__W1363  ret <8 x float> %11364}1365 1366define <8 x float> @test_mm256_maskz_shuffle_f32x4(i8 zeroext %__U, <8 x float> %__A, <8 x float> %__B) {1367; X86-LABEL: test_mm256_maskz_shuffle_f32x4:1368; X86:       # %bb.0: # %entry1369; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax1370; X86-NEXT:    kmovw %eax, %k11371; X86-NEXT:    vshuff32x4 {{.*#+}} ymm0 {%k1} {z} = ymm0[4,5,6,7],ymm1[4,5,6,7]1372; X86-NEXT:    retl1373;1374; X64-LABEL: test_mm256_maskz_shuffle_f32x4:1375; X64:       # %bb.0: # %entry1376; X64-NEXT:    kmovw %edi, %k11377; X64-NEXT:    vshuff32x4 {{.*#+}} ymm0 {%k1} {z} = ymm0[4,5,6,7],ymm1[4,5,6,7]1378; X64-NEXT:    retq1379entry:1380  %shuffle = shufflevector <8 x float> %__A, <8 x float> %__B, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 12, i32 13, i32 14, i32 15>1381  %0 = bitcast i8 %__U to <8 x i1>1382  %1 = select <8 x i1> %0, <8 x float> %shuffle, <8 x float> zeroinitializer1383  ret <8 x float> %11384}1385 1386define <4 x double> @test_mm256_shuffle_f64x2(<4 x double> %__A, <4 x double> %__B) {1387; CHECK-LABEL: test_mm256_shuffle_f64x2:1388; CHECK:       # %bb.0: # %entry1389; CHECK-NEXT:    vperm2f128 {{.*#+}} ymm0 = ymm0[2,3],ymm1[2,3]1390; CHECK-NEXT:    ret{{[l|q]}}1391entry:1392  %shuffle = shufflevector <4 x double> %__A, <4 x double> %__B, <4 x i32> <i32 2, i32 3, i32 6, i32 7>1393  ret <4 x double> %shuffle1394}1395 1396define <4 x double> @test_mm256_mask_shuffle_f64x2(<4 x double> %__W, i8 zeroext %__U, <4 x double> %__A, <4 x double> %__B) {1397; X86-LABEL: test_mm256_mask_shuffle_f64x2:1398; X86:       # %bb.0: # %entry1399; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax1400; X86-NEXT:    kmovw %eax, %k11401; X86-NEXT:    vshuff64x2 {{.*#+}} ymm0 {%k1} = ymm1[2,3],ymm2[2,3]1402; X86-NEXT:    retl1403;1404; X64-LABEL: test_mm256_mask_shuffle_f64x2:1405; X64:       # %bb.0: # %entry1406; X64-NEXT:    kmovw %edi, %k11407; X64-NEXT:    vshuff64x2 {{.*#+}} ymm0 {%k1} = ymm1[2,3],ymm2[2,3]1408; X64-NEXT:    retq1409entry:1410  %shuffle = shufflevector <4 x double> %__A, <4 x double> %__B, <4 x i32> <i32 2, i32 3, i32 6, i32 7>1411  %0 = bitcast i8 %__U to <8 x i1>1412  %extract = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>1413  %1 = select <4 x i1> %extract, <4 x double> %shuffle, <4 x double> %__W1414  ret <4 x double> %11415}1416 1417define <4 x double> @test_mm256_maskz_shuffle_f64x2(i8 zeroext %__U, <4 x double> %__A, <4 x double> %__B) {1418; X86-LABEL: test_mm256_maskz_shuffle_f64x2:1419; X86:       # %bb.0: # %entry1420; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax1421; X86-NEXT:    kmovw %eax, %k11422; X86-NEXT:    vshuff64x2 {{.*#+}} ymm0 {%k1} {z} = ymm0[2,3],ymm1[2,3]1423; X86-NEXT:    retl1424;1425; X64-LABEL: test_mm256_maskz_shuffle_f64x2:1426; X64:       # %bb.0: # %entry1427; X64-NEXT:    kmovw %edi, %k11428; X64-NEXT:    vshuff64x2 {{.*#+}} ymm0 {%k1} {z} = ymm0[2,3],ymm1[2,3]1429; X64-NEXT:    retq1430entry:1431  %shuffle = shufflevector <4 x double> %__A, <4 x double> %__B, <4 x i32> <i32 2, i32 3, i32 6, i32 7>1432  %0 = bitcast i8 %__U to <8 x i1>1433  %extract = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>1434  %1 = select <4 x i1> %extract, <4 x double> %shuffle, <4 x double> zeroinitializer1435  ret <4 x double> %11436}1437 1438define <4 x i64> @test_mm256_shuffle_i32x4(<4 x i64> %__A, <4 x i64> %__B) {1439; CHECK-LABEL: test_mm256_shuffle_i32x4:1440; CHECK:       # %bb.0: # %entry1441; CHECK-NEXT:    vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm1[2,3]1442; CHECK-NEXT:    ret{{[l|q]}}1443entry:1444  %shuffle = shufflevector <4 x i64> %__A, <4 x i64> %__B, <4 x i32> <i32 2, i32 3, i32 6, i32 7>1445  ret <4 x i64> %shuffle1446}1447 1448define <4 x i64> @test_mm256_mask_shuffle_i32x4(<4 x i64> %__W, i8 zeroext %__U, <4 x i64> %__A, <4 x i64> %__B) {1449; X86-LABEL: test_mm256_mask_shuffle_i32x4:1450; X86:       # %bb.0: # %entry1451; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax1452; X86-NEXT:    kmovw %eax, %k11453; X86-NEXT:    vshufi32x4 {{.*#+}} ymm0 {%k1} = ymm1[4,5,6,7],ymm2[4,5,6,7]1454; X86-NEXT:    retl1455;1456; X64-LABEL: test_mm256_mask_shuffle_i32x4:1457; X64:       # %bb.0: # %entry1458; X64-NEXT:    kmovw %edi, %k11459; X64-NEXT:    vshufi32x4 {{.*#+}} ymm0 {%k1} = ymm1[4,5,6,7],ymm2[4,5,6,7]1460; X64-NEXT:    retq1461entry:1462  %shuffle = shufflevector <4 x i64> %__A, <4 x i64> %__B, <4 x i32> <i32 2, i32 3, i32 6, i32 7>1463  %0 = bitcast <4 x i64> %shuffle to <8 x i32>1464  %1 = bitcast <4 x i64> %__W to <8 x i32>1465  %2 = bitcast i8 %__U to <8 x i1>1466  %3 = select <8 x i1> %2, <8 x i32> %0, <8 x i32> %11467  %4 = bitcast <8 x i32> %3 to <4 x i64>1468  ret <4 x i64> %41469}1470 1471define <4 x i64> @test_mm256_maskz_shuffle_i32x4(i8 zeroext %__U, <4 x i64> %__A, <4 x i64> %__B) {1472; X86-LABEL: test_mm256_maskz_shuffle_i32x4:1473; X86:       # %bb.0: # %entry1474; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax1475; X86-NEXT:    kmovw %eax, %k11476; X86-NEXT:    vshufi32x4 {{.*#+}} ymm0 {%k1} {z} = ymm0[4,5,6,7],ymm1[4,5,6,7]1477; X86-NEXT:    retl1478;1479; X64-LABEL: test_mm256_maskz_shuffle_i32x4:1480; X64:       # %bb.0: # %entry1481; X64-NEXT:    kmovw %edi, %k11482; X64-NEXT:    vshufi32x4 {{.*#+}} ymm0 {%k1} {z} = ymm0[4,5,6,7],ymm1[4,5,6,7]1483; X64-NEXT:    retq1484entry:1485  %shuffle = shufflevector <4 x i64> %__A, <4 x i64> %__B, <4 x i32> <i32 2, i32 3, i32 6, i32 7>1486  %0 = bitcast <4 x i64> %shuffle to <8 x i32>1487  %1 = bitcast i8 %__U to <8 x i1>1488  %2 = select <8 x i1> %1, <8 x i32> %0, <8 x i32> zeroinitializer1489  %3 = bitcast <8 x i32> %2 to <4 x i64>1490  ret <4 x i64> %31491}1492 1493define <4 x i64> @test_mm256_shuffle_i64x2(<4 x i64> %__A, <4 x i64> %__B) {1494; CHECK-LABEL: test_mm256_shuffle_i64x2:1495; CHECK:       # %bb.0: # %entry1496; CHECK-NEXT:    vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm1[2,3]1497; CHECK-NEXT:    ret{{[l|q]}}1498entry:1499  %shuffle = shufflevector <4 x i64> %__A, <4 x i64> %__B, <4 x i32> <i32 2, i32 3, i32 6, i32 7>1500  ret <4 x i64> %shuffle1501}1502 1503define <4 x i64> @test_mm256_mask_shuffle_i64x2(<4 x i64> %__W, i8 zeroext %__U, <4 x i64> %__A, <4 x i64> %__B) {1504; X86-LABEL: test_mm256_mask_shuffle_i64x2:1505; X86:       # %bb.0: # %entry1506; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax1507; X86-NEXT:    kmovw %eax, %k11508; X86-NEXT:    vshufi64x2 {{.*#+}} ymm0 {%k1} = ymm1[2,3],ymm2[2,3]1509; X86-NEXT:    retl1510;1511; X64-LABEL: test_mm256_mask_shuffle_i64x2:1512; X64:       # %bb.0: # %entry1513; X64-NEXT:    kmovw %edi, %k11514; X64-NEXT:    vshufi64x2 {{.*#+}} ymm0 {%k1} = ymm1[2,3],ymm2[2,3]1515; X64-NEXT:    retq1516entry:1517  %shuffle = shufflevector <4 x i64> %__A, <4 x i64> %__B, <4 x i32> <i32 2, i32 3, i32 6, i32 7>1518  %0 = bitcast i8 %__U to <8 x i1>1519  %extract = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>1520  %1 = select <4 x i1> %extract, <4 x i64> %shuffle, <4 x i64> %__W1521  ret <4 x i64> %11522}1523 1524define <4 x i64> @test_mm256_maskz_shuffle_i64x2(i8 zeroext %__U, <4 x i64> %__A, <4 x i64> %__B) {1525; X86-LABEL: test_mm256_maskz_shuffle_i64x2:1526; X86:       # %bb.0: # %entry1527; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax1528; X86-NEXT:    kmovw %eax, %k11529; X86-NEXT:    vshufi64x2 {{.*#+}} ymm0 {%k1} {z} = ymm0[2,3],ymm1[2,3]1530; X86-NEXT:    retl1531;1532; X64-LABEL: test_mm256_maskz_shuffle_i64x2:1533; X64:       # %bb.0: # %entry1534; X64-NEXT:    kmovw %edi, %k11535; X64-NEXT:    vshufi64x2 {{.*#+}} ymm0 {%k1} {z} = ymm0[2,3],ymm1[2,3]1536; X64-NEXT:    retq1537entry:1538  %shuffle = shufflevector <4 x i64> %__A, <4 x i64> %__B, <4 x i32> <i32 2, i32 3, i32 6, i32 7>1539  %0 = bitcast i8 %__U to <8 x i1>1540  %extract = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>1541  %1 = select <4 x i1> %extract, <4 x i64> %shuffle, <4 x i64> zeroinitializer1542  ret <4 x i64> %11543}1544 1545define zeroext i8 @test_mm_test_epi32_mask(<2 x i64> %__A, <2 x i64> %__B) {1546; CHECK-LABEL: test_mm_test_epi32_mask:1547; CHECK:       # %bb.0: # %entry1548; CHECK-NEXT:    vptestmd %xmm0, %xmm1, %k01549; CHECK-NEXT:    kmovw %k0, %eax1550; CHECK-NEXT:    # kill: def $al killed $al killed $eax1551; CHECK-NEXT:    ret{{[l|q]}}1552entry:1553  %and.i.i = and <2 x i64> %__B, %__A1554  %0 = bitcast <2 x i64> %and.i.i to <4 x i32>1555  %1 = icmp ne <4 x i32> %0, zeroinitializer1556  %2 = shufflevector <4 x i1> %1, <4 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>1557  %3 = bitcast <8 x i1> %2 to i81558  ret i8 %31559}1560 1561define zeroext i8 @test_mm_mask_test_epi32_mask(i8 zeroext %__U, <2 x i64> %__A, <2 x i64> %__B) {1562; X86-LABEL: test_mm_mask_test_epi32_mask:1563; X86:       # %bb.0: # %entry1564; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax1565; X86-NEXT:    kmovw %eax, %k11566; X86-NEXT:    vptestmd %xmm0, %xmm1, %k0 {%k1}1567; X86-NEXT:    kmovw %k0, %eax1568; X86-NEXT:    # kill: def $al killed $al killed $eax1569; X86-NEXT:    retl1570;1571; X64-LABEL: test_mm_mask_test_epi32_mask:1572; X64:       # %bb.0: # %entry1573; X64-NEXT:    kmovw %edi, %k11574; X64-NEXT:    vptestmd %xmm0, %xmm1, %k0 {%k1}1575; X64-NEXT:    kmovw %k0, %eax1576; X64-NEXT:    # kill: def $al killed $al killed $eax1577; X64-NEXT:    retq1578entry:1579  %and.i.i = and <2 x i64> %__B, %__A1580  %0 = bitcast <2 x i64> %and.i.i to <4 x i32>1581  %1 = icmp ne <4 x i32> %0, zeroinitializer1582  %2 = bitcast i8 %__U to <8 x i1>1583  %extract.i = shufflevector <8 x i1> %2, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>1584  %3 = and <4 x i1> %1, %extract.i1585  %4 = shufflevector <4 x i1> %3, <4 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>1586  %5 = bitcast <8 x i1> %4 to i81587  ret i8 %51588}1589 1590define zeroext i8 @test_mm256_test_epi32_mask(<4 x i64> %__A, <4 x i64> %__B) {1591; CHECK-LABEL: test_mm256_test_epi32_mask:1592; CHECK:       # %bb.0: # %entry1593; CHECK-NEXT:    vptestmd %ymm0, %ymm1, %k01594; CHECK-NEXT:    kmovw %k0, %eax1595; CHECK-NEXT:    # kill: def $al killed $al killed $eax1596; CHECK-NEXT:    vzeroupper1597; CHECK-NEXT:    ret{{[l|q]}}1598entry:1599  %and.i.i = and <4 x i64> %__B, %__A1600  %0 = bitcast <4 x i64> %and.i.i to <8 x i32>1601  %1 = icmp ne <8 x i32> %0, zeroinitializer1602  %2 = bitcast <8 x i1> %1 to i81603  ret i8 %21604}1605 1606define zeroext i8 @test_mm256_mask_test_epi32_mask(i8 zeroext %__U, <4 x i64> %__A, <4 x i64> %__B) {1607; X86-LABEL: test_mm256_mask_test_epi32_mask:1608; X86:       # %bb.0: # %entry1609; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax1610; X86-NEXT:    kmovw %eax, %k11611; X86-NEXT:    vptestmd %ymm0, %ymm1, %k0 {%k1}1612; X86-NEXT:    kmovw %k0, %eax1613; X86-NEXT:    # kill: def $al killed $al killed $eax1614; X86-NEXT:    vzeroupper1615; X86-NEXT:    retl1616;1617; X64-LABEL: test_mm256_mask_test_epi32_mask:1618; X64:       # %bb.0: # %entry1619; X64-NEXT:    kmovw %edi, %k11620; X64-NEXT:    vptestmd %ymm0, %ymm1, %k0 {%k1}1621; X64-NEXT:    kmovw %k0, %eax1622; X64-NEXT:    # kill: def $al killed $al killed $eax1623; X64-NEXT:    vzeroupper1624; X64-NEXT:    retq1625entry:1626  %and.i.i = and <4 x i64> %__B, %__A1627  %0 = bitcast <4 x i64> %and.i.i to <8 x i32>1628  %1 = icmp ne <8 x i32> %0, zeroinitializer1629  %2 = bitcast i8 %__U to <8 x i1>1630  %3 = and <8 x i1> %1, %21631  %4 = bitcast <8 x i1> %3 to i81632  ret i8 %41633}1634 1635define zeroext i8 @test_mm_test_epi64_mask(<2 x i64> %__A, <2 x i64> %__B) {1636; CHECK-LABEL: test_mm_test_epi64_mask:1637; CHECK:       # %bb.0: # %entry1638; CHECK-NEXT:    vptestmq %xmm0, %xmm1, %k01639; CHECK-NEXT:    kmovw %k0, %eax1640; CHECK-NEXT:    # kill: def $al killed $al killed $eax1641; CHECK-NEXT:    ret{{[l|q]}}1642entry:1643  %and.i.i = and <2 x i64> %__B, %__A1644  %0 = icmp ne <2 x i64> %and.i.i, zeroinitializer1645  %1 = shufflevector <2 x i1> %0, <2 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3>1646  %2 = bitcast <8 x i1> %1 to i81647  ret i8 %21648}1649 1650define zeroext i8 @test_mm_mask_test_epi64_mask(i8 zeroext %__U, <2 x i64> %__A, <2 x i64> %__B) {1651; X86-LABEL: test_mm_mask_test_epi64_mask:1652; X86:       # %bb.0: # %entry1653; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax1654; X86-NEXT:    kmovw %eax, %k11655; X86-NEXT:    vptestmq %xmm0, %xmm1, %k0 {%k1}1656; X86-NEXT:    kmovw %k0, %eax1657; X86-NEXT:    # kill: def $al killed $al killed $eax1658; X86-NEXT:    retl1659;1660; X64-LABEL: test_mm_mask_test_epi64_mask:1661; X64:       # %bb.0: # %entry1662; X64-NEXT:    kmovw %edi, %k11663; X64-NEXT:    vptestmq %xmm0, %xmm1, %k0 {%k1}1664; X64-NEXT:    kmovw %k0, %eax1665; X64-NEXT:    # kill: def $al killed $al killed $eax1666; X64-NEXT:    retq1667entry:1668  %and.i.i = and <2 x i64> %__B, %__A1669  %0 = icmp ne <2 x i64> %and.i.i, zeroinitializer1670  %1 = bitcast i8 %__U to <8 x i1>1671  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <2 x i32> <i32 0, i32 1>1672  %2 = and <2 x i1> %0, %extract.i1673  %3 = shufflevector <2 x i1> %2, <2 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3>1674  %4 = bitcast <8 x i1> %3 to i81675  ret i8 %41676}1677 1678define zeroext i8 @test_mm256_test_epi64_mask(<4 x i64> %__A, <4 x i64> %__B) {1679; CHECK-LABEL: test_mm256_test_epi64_mask:1680; CHECK:       # %bb.0: # %entry1681; CHECK-NEXT:    vptestmq %ymm0, %ymm1, %k01682; CHECK-NEXT:    kmovw %k0, %eax1683; CHECK-NEXT:    # kill: def $al killed $al killed $eax1684; CHECK-NEXT:    vzeroupper1685; CHECK-NEXT:    ret{{[l|q]}}1686entry:1687  %and.i.i = and <4 x i64> %__B, %__A1688  %0 = icmp ne <4 x i64> %and.i.i, zeroinitializer1689  %1 = shufflevector <4 x i1> %0, <4 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>1690  %2 = bitcast <8 x i1> %1 to i81691  ret i8 %21692}1693 1694define zeroext i8 @test_mm256_mask_test_epi64_mask(i8 zeroext %__U, <4 x i64> %__A, <4 x i64> %__B) {1695; X86-LABEL: test_mm256_mask_test_epi64_mask:1696; X86:       # %bb.0: # %entry1697; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax1698; X86-NEXT:    kmovw %eax, %k11699; X86-NEXT:    vptestmq %ymm0, %ymm1, %k0 {%k1}1700; X86-NEXT:    kmovw %k0, %eax1701; X86-NEXT:    # kill: def $al killed $al killed $eax1702; X86-NEXT:    vzeroupper1703; X86-NEXT:    retl1704;1705; X64-LABEL: test_mm256_mask_test_epi64_mask:1706; X64:       # %bb.0: # %entry1707; X64-NEXT:    kmovw %edi, %k11708; X64-NEXT:    vptestmq %ymm0, %ymm1, %k0 {%k1}1709; X64-NEXT:    kmovw %k0, %eax1710; X64-NEXT:    # kill: def $al killed $al killed $eax1711; X64-NEXT:    vzeroupper1712; X64-NEXT:    retq1713entry:1714  %and.i.i = and <4 x i64> %__B, %__A1715  %0 = icmp ne <4 x i64> %and.i.i, zeroinitializer1716  %1 = bitcast i8 %__U to <8 x i1>1717  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>1718  %2 = and <4 x i1> %0, %extract.i1719  %3 = shufflevector <4 x i1> %2, <4 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>1720  %4 = bitcast <8 x i1> %3 to i81721  ret i8 %41722}1723 1724define zeroext i8 @test_mm_testn_epi32_mask(<2 x i64> %__A, <2 x i64> %__B) {1725; CHECK-LABEL: test_mm_testn_epi32_mask:1726; CHECK:       # %bb.0: # %entry1727; CHECK-NEXT:    vptestnmd %xmm0, %xmm1, %k01728; CHECK-NEXT:    kmovw %k0, %eax1729; CHECK-NEXT:    # kill: def $al killed $al killed $eax1730; CHECK-NEXT:    ret{{[l|q]}}1731entry:1732  %and.i.i = and <2 x i64> %__B, %__A1733  %0 = bitcast <2 x i64> %and.i.i to <4 x i32>1734  %1 = icmp eq <4 x i32> %0, zeroinitializer1735  %2 = shufflevector <4 x i1> %1, <4 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>1736  %3 = bitcast <8 x i1> %2 to i81737  ret i8 %31738}1739 1740define zeroext i8 @test_mm_mask_testn_epi32_mask(i8 zeroext %__U, <2 x i64> %__A, <2 x i64> %__B) {1741; X86-LABEL: test_mm_mask_testn_epi32_mask:1742; X86:       # %bb.0: # %entry1743; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax1744; X86-NEXT:    kmovw %eax, %k11745; X86-NEXT:    vptestnmd %xmm0, %xmm1, %k0 {%k1}1746; X86-NEXT:    kmovw %k0, %eax1747; X86-NEXT:    # kill: def $al killed $al killed $eax1748; X86-NEXT:    retl1749;1750; X64-LABEL: test_mm_mask_testn_epi32_mask:1751; X64:       # %bb.0: # %entry1752; X64-NEXT:    kmovw %edi, %k11753; X64-NEXT:    vptestnmd %xmm0, %xmm1, %k0 {%k1}1754; X64-NEXT:    kmovw %k0, %eax1755; X64-NEXT:    # kill: def $al killed $al killed $eax1756; X64-NEXT:    retq1757entry:1758  %and.i.i = and <2 x i64> %__B, %__A1759  %0 = bitcast <2 x i64> %and.i.i to <4 x i32>1760  %1 = icmp eq <4 x i32> %0, zeroinitializer1761  %2 = bitcast i8 %__U to <8 x i1>1762  %extract.i = shufflevector <8 x i1> %2, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>1763  %3 = and <4 x i1> %1, %extract.i1764  %4 = shufflevector <4 x i1> %3, <4 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>1765  %5 = bitcast <8 x i1> %4 to i81766  ret i8 %51767}1768 1769define zeroext i8 @test_mm256_testn_epi32_mask(<4 x i64> %__A, <4 x i64> %__B) {1770; CHECK-LABEL: test_mm256_testn_epi32_mask:1771; CHECK:       # %bb.0: # %entry1772; CHECK-NEXT:    vptestnmd %ymm0, %ymm1, %k01773; CHECK-NEXT:    kmovw %k0, %eax1774; CHECK-NEXT:    # kill: def $al killed $al killed $eax1775; CHECK-NEXT:    vzeroupper1776; CHECK-NEXT:    ret{{[l|q]}}1777entry:1778  %and.i.i = and <4 x i64> %__B, %__A1779  %0 = bitcast <4 x i64> %and.i.i to <8 x i32>1780  %1 = icmp eq <8 x i32> %0, zeroinitializer1781  %2 = bitcast <8 x i1> %1 to i81782  ret i8 %21783}1784 1785define zeroext i8 @test_mm256_mask_testn_epi32_mask(i8 zeroext %__U, <4 x i64> %__A, <4 x i64> %__B) {1786; X86-LABEL: test_mm256_mask_testn_epi32_mask:1787; X86:       # %bb.0: # %entry1788; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax1789; X86-NEXT:    kmovw %eax, %k11790; X86-NEXT:    vptestnmd %ymm0, %ymm1, %k0 {%k1}1791; X86-NEXT:    kmovw %k0, %eax1792; X86-NEXT:    # kill: def $al killed $al killed $eax1793; X86-NEXT:    vzeroupper1794; X86-NEXT:    retl1795;1796; X64-LABEL: test_mm256_mask_testn_epi32_mask:1797; X64:       # %bb.0: # %entry1798; X64-NEXT:    kmovw %edi, %k11799; X64-NEXT:    vptestnmd %ymm0, %ymm1, %k0 {%k1}1800; X64-NEXT:    kmovw %k0, %eax1801; X64-NEXT:    # kill: def $al killed $al killed $eax1802; X64-NEXT:    vzeroupper1803; X64-NEXT:    retq1804entry:1805  %and.i.i = and <4 x i64> %__B, %__A1806  %0 = bitcast <4 x i64> %and.i.i to <8 x i32>1807  %1 = icmp eq <8 x i32> %0, zeroinitializer1808  %2 = bitcast i8 %__U to <8 x i1>1809  %3 = and <8 x i1> %1, %21810  %4 = bitcast <8 x i1> %3 to i81811  ret i8 %41812}1813 1814define zeroext i8 @test_mm_testn_epi64_mask(<2 x i64> %__A, <2 x i64> %__B) {1815; CHECK-LABEL: test_mm_testn_epi64_mask:1816; CHECK:       # %bb.0: # %entry1817; CHECK-NEXT:    vptestnmq %xmm0, %xmm1, %k01818; CHECK-NEXT:    kmovw %k0, %eax1819; CHECK-NEXT:    # kill: def $al killed $al killed $eax1820; CHECK-NEXT:    ret{{[l|q]}}1821entry:1822  %and.i.i = and <2 x i64> %__B, %__A1823  %0 = icmp eq <2 x i64> %and.i.i, zeroinitializer1824  %1 = shufflevector <2 x i1> %0, <2 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3>1825  %2 = bitcast <8 x i1> %1 to i81826  ret i8 %21827}1828 1829define zeroext i8 @test_mm_mask_testn_epi64_mask(i8 zeroext %__U, <2 x i64> %__A, <2 x i64> %__B) {1830; X86-LABEL: test_mm_mask_testn_epi64_mask:1831; X86:       # %bb.0: # %entry1832; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax1833; X86-NEXT:    kmovw %eax, %k11834; X86-NEXT:    vptestnmq %xmm0, %xmm1, %k0 {%k1}1835; X86-NEXT:    kmovw %k0, %eax1836; X86-NEXT:    # kill: def $al killed $al killed $eax1837; X86-NEXT:    retl1838;1839; X64-LABEL: test_mm_mask_testn_epi64_mask:1840; X64:       # %bb.0: # %entry1841; X64-NEXT:    kmovw %edi, %k11842; X64-NEXT:    vptestnmq %xmm0, %xmm1, %k0 {%k1}1843; X64-NEXT:    kmovw %k0, %eax1844; X64-NEXT:    # kill: def $al killed $al killed $eax1845; X64-NEXT:    retq1846entry:1847  %and.i.i = and <2 x i64> %__B, %__A1848  %0 = icmp eq <2 x i64> %and.i.i, zeroinitializer1849  %1 = bitcast i8 %__U to <8 x i1>1850  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <2 x i32> <i32 0, i32 1>1851  %2 = and <2 x i1> %0, %extract.i1852  %3 = shufflevector <2 x i1> %2, <2 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3>1853  %4 = bitcast <8 x i1> %3 to i81854  ret i8 %41855}1856 1857define zeroext i8 @test_mm256_testn_epi64_mask(<4 x i64> %__A, <4 x i64> %__B) {1858; CHECK-LABEL: test_mm256_testn_epi64_mask:1859; CHECK:       # %bb.0: # %entry1860; CHECK-NEXT:    vptestnmq %ymm0, %ymm1, %k01861; CHECK-NEXT:    kmovw %k0, %eax1862; CHECK-NEXT:    # kill: def $al killed $al killed $eax1863; CHECK-NEXT:    vzeroupper1864; CHECK-NEXT:    ret{{[l|q]}}1865entry:1866  %and.i.i = and <4 x i64> %__B, %__A1867  %0 = icmp eq <4 x i64> %and.i.i, zeroinitializer1868  %1 = shufflevector <4 x i1> %0, <4 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>1869  %2 = bitcast <8 x i1> %1 to i81870  ret i8 %21871}1872 1873define zeroext i8 @test_mm256_mask_testn_epi64_mask(i8 zeroext %__U, <4 x i64> %__A, <4 x i64> %__B) {1874; X86-LABEL: test_mm256_mask_testn_epi64_mask:1875; X86:       # %bb.0: # %entry1876; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax1877; X86-NEXT:    kmovw %eax, %k11878; X86-NEXT:    vptestnmq %ymm0, %ymm1, %k0 {%k1}1879; X86-NEXT:    kmovw %k0, %eax1880; X86-NEXT:    # kill: def $al killed $al killed $eax1881; X86-NEXT:    vzeroupper1882; X86-NEXT:    retl1883;1884; X64-LABEL: test_mm256_mask_testn_epi64_mask:1885; X64:       # %bb.0: # %entry1886; X64-NEXT:    kmovw %edi, %k11887; X64-NEXT:    vptestnmq %ymm0, %ymm1, %k0 {%k1}1888; X64-NEXT:    kmovw %k0, %eax1889; X64-NEXT:    # kill: def $al killed $al killed $eax1890; X64-NEXT:    vzeroupper1891; X64-NEXT:    retq1892entry:1893  %and.i.i = and <4 x i64> %__B, %__A1894  %0 = icmp eq <4 x i64> %and.i.i, zeroinitializer1895  %1 = bitcast i8 %__U to <8 x i1>1896  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>1897  %2 = and <4 x i1> %0, %extract.i1898  %3 = shufflevector <4 x i1> %2, <4 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>1899  %4 = bitcast <8 x i1> %3 to i81900  ret i8 %41901}1902 1903define <2 x i64> @test_mm_mask_set1_epi32(<2 x i64> %__O, i8 zeroext %__M)  {1904; X86-LABEL: test_mm_mask_set1_epi32:1905; X86:       # %bb.0: # %entry1906; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax1907; X86-NEXT:    kmovw %eax, %k11908; X86-NEXT:    vpbroadcastd {{.*#+}} xmm0 {%k1} = [5,5,5,5]1909; X86-NEXT:    retl1910;1911; X64-LABEL: test_mm_mask_set1_epi32:1912; X64:       # %bb.0: # %entry1913; X64-NEXT:    kmovw %edi, %k11914; X64-NEXT:    vpbroadcastd {{.*#+}} xmm0 {%k1} = [5,5,5,5]1915; X64-NEXT:    retq1916entry:1917  %0 = bitcast <2 x i64> %__O to <4 x i32>1918  %1 = bitcast i8 %__M to <8 x i1>1919  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>1920  %2 = select <4 x i1> %extract.i, <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32> %01921  %3 = bitcast <4 x i32> %2 to <2 x i64>1922  ret <2 x i64> %31923}1924 1925define <2 x i64> @test_mm_maskz_set1_epi32(i8 zeroext %__M) {1926; X86-LABEL: test_mm_maskz_set1_epi32:1927; X86:       # %bb.0: # %entry1928; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax1929; X86-NEXT:    kmovw %eax, %k11930; X86-NEXT:    vpbroadcastd {{.*#+}} xmm0 {%k1} {z} = [5,5,5,5]1931; X86-NEXT:    retl1932;1933; X64-LABEL: test_mm_maskz_set1_epi32:1934; X64:       # %bb.0: # %entry1935; X64-NEXT:    kmovw %edi, %k11936; X64-NEXT:    vpbroadcastd {{.*#+}} xmm0 {%k1} {z} = [5,5,5,5]1937; X64-NEXT:    retq1938entry:1939  %0 = bitcast i8 %__M to <8 x i1>1940  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>1941  %1 = select <4 x i1> %extract.i, <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32> zeroinitializer1942  %2 = bitcast <4 x i32> %1 to <2 x i64>1943  ret <2 x i64> %21944}1945 1946define <4 x i64> @test_mm256_mask_set1_epi32(<4 x i64> %__O, i8 zeroext %__M)  {1947; X86-LABEL: test_mm256_mask_set1_epi32:1948; X86:       # %bb.0: # %entry1949; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax1950; X86-NEXT:    kmovw %eax, %k11951; X86-NEXT:    vpbroadcastd {{.*#+}} ymm0 {%k1} = [5,5,5,5,5,5,5,5]1952; X86-NEXT:    retl1953;1954; X64-LABEL: test_mm256_mask_set1_epi32:1955; X64:       # %bb.0: # %entry1956; X64-NEXT:    kmovw %edi, %k11957; X64-NEXT:    vpbroadcastd {{.*#+}} ymm0 {%k1} = [5,5,5,5,5,5,5,5]1958; X64-NEXT:    retq1959entry:1960  %0 = bitcast <4 x i64> %__O to <8 x i32>1961  %1 = bitcast i8 %__M to <8 x i1>1962  %2 = select <8 x i1> %1, <8 x i32> <i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5>, <8 x i32> %01963  %3 = bitcast <8 x i32> %2 to <4 x i64>1964  ret <4 x i64> %31965}1966 1967define <4 x i64> @test_mm256_maskz_set1_epi32(i8 zeroext %__M)  {1968; X86-LABEL: test_mm256_maskz_set1_epi32:1969; X86:       # %bb.0: # %entry1970; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax1971; X86-NEXT:    kmovw %eax, %k11972; X86-NEXT:    vpbroadcastd {{.*#+}} ymm0 {%k1} {z} = [5,5,5,5,5,5,5,5]1973; X86-NEXT:    retl1974;1975; X64-LABEL: test_mm256_maskz_set1_epi32:1976; X64:       # %bb.0: # %entry1977; X64-NEXT:    kmovw %edi, %k11978; X64-NEXT:    vpbroadcastd {{.*#+}} ymm0 {%k1} {z} = [5,5,5,5,5,5,5,5]1979; X64-NEXT:    retq1980entry:1981  %0 = bitcast i8 %__M to <8 x i1>1982  %1 = select <8 x i1> %0, <8 x i32> <i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5>, <8 x i32> zeroinitializer1983  %2 = bitcast <8 x i32> %1 to <4 x i64>1984  ret <4 x i64> %21985}1986 1987define <2 x i64> @test_mm_mask_set1_epi64(<2 x i64> %__O, i8 zeroext %__M, i64 %__A)  {1988; X86-LABEL: test_mm_mask_set1_epi64:1989; X86:       # %bb.0: # %entry1990; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax1991; X86-NEXT:    vmovd {{.*#+}} xmm1 = mem[0],zero,zero,zero1992; X86-NEXT:    vpinsrd $1, {{[0-9]+}}(%esp), %xmm1, %xmm11993; X86-NEXT:    kmovw %eax, %k11994; X86-NEXT:    vpbroadcastq %xmm1, %xmm0 {%k1}1995; X86-NEXT:    retl1996;1997; X64-LABEL: test_mm_mask_set1_epi64:1998; X64:       # %bb.0: # %entry1999; X64-NEXT:    kmovw %edi, %k12000; X64-NEXT:    vpbroadcastq %rsi, %xmm0 {%k1}2001; X64-NEXT:    retq2002entry:2003  %vecinit.i.i.i = insertelement <2 x i64> undef, i64 %__A, i32 02004  %vecinit1.i.i.i = shufflevector <2 x i64> %vecinit.i.i.i, <2 x i64> undef, <2 x i32> zeroinitializer2005  %0 = bitcast i8 %__M to <8 x i1>2006  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <2 x i32> <i32 0, i32 1>2007  %1 = select <2 x i1> %extract.i, <2 x i64> %vecinit1.i.i.i, <2 x i64> %__O2008  ret <2 x i64> %12009}2010 2011define <2 x i64> @test_mm_maskz_set1_epi64(i8 zeroext %__M, i64 %__A)  {2012; X86-LABEL: test_mm_maskz_set1_epi64:2013; X86:       # %bb.0: # %entry2014; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2015; X86-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero2016; X86-NEXT:    vpinsrd $1, {{[0-9]+}}(%esp), %xmm0, %xmm02017; X86-NEXT:    kmovw %eax, %k12018; X86-NEXT:    vpbroadcastq %xmm0, %xmm0 {%k1} {z}2019; X86-NEXT:    retl2020;2021; X64-LABEL: test_mm_maskz_set1_epi64:2022; X64:       # %bb.0: # %entry2023; X64-NEXT:    kmovw %edi, %k12024; X64-NEXT:    vpbroadcastq %rsi, %xmm0 {%k1} {z}2025; X64-NEXT:    retq2026entry:2027  %vecinit.i.i.i = insertelement <2 x i64> undef, i64 %__A, i32 02028  %vecinit1.i.i.i = shufflevector <2 x i64> %vecinit.i.i.i, <2 x i64> undef, <2 x i32> zeroinitializer2029  %0 = bitcast i8 %__M to <8 x i1>2030  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <2 x i32> <i32 0, i32 1>2031  %1 = select <2 x i1> %extract.i, <2 x i64> %vecinit1.i.i.i, <2 x i64> zeroinitializer2032  ret <2 x i64> %12033}2034 2035 2036define <4 x i64> @test_mm256_mask_set1_epi64(<4 x i64> %__O, i8 zeroext %__M, i64 %__A) {2037; X86-LABEL: test_mm256_mask_set1_epi64:2038; X86:       # %bb.0: # %entry2039; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2040; X86-NEXT:    vmovd {{.*#+}} xmm1 = mem[0],zero,zero,zero2041; X86-NEXT:    vpinsrd $1, {{[0-9]+}}(%esp), %xmm1, %xmm12042; X86-NEXT:    kmovw %eax, %k12043; X86-NEXT:    vpbroadcastq %xmm1, %ymm0 {%k1}2044; X86-NEXT:    retl2045;2046; X64-LABEL: test_mm256_mask_set1_epi64:2047; X64:       # %bb.0: # %entry2048; X64-NEXT:    kmovw %edi, %k12049; X64-NEXT:    vpbroadcastq %rsi, %ymm0 {%k1}2050; X64-NEXT:    retq2051entry:2052  %vecinit.i.i = insertelement <4 x i64> undef, i64 %__A, i32 02053  %vecinit3.i.i = shufflevector <4 x i64> %vecinit.i.i, <4 x i64> undef, <4 x i32> zeroinitializer2054  %0 = bitcast i8 %__M to <8 x i1>2055  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>2056  %1 = select <4 x i1> %extract.i, <4 x i64> %vecinit3.i.i, <4 x i64> %__O2057  ret <4 x i64> %12058}2059 2060define <4 x i64> @test_mm256_maskz_set1_epi64(i8 zeroext %__M, i64 %__A)  {2061; X86-LABEL: test_mm256_maskz_set1_epi64:2062; X86:       # %bb.0: # %entry2063; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2064; X86-NEXT:    vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero2065; X86-NEXT:    vpinsrd $1, {{[0-9]+}}(%esp), %xmm0, %xmm02066; X86-NEXT:    kmovw %eax, %k12067; X86-NEXT:    vpbroadcastq %xmm0, %ymm0 {%k1} {z}2068; X86-NEXT:    retl2069;2070; X64-LABEL: test_mm256_maskz_set1_epi64:2071; X64:       # %bb.0: # %entry2072; X64-NEXT:    kmovw %edi, %k12073; X64-NEXT:    vpbroadcastq %rsi, %ymm0 {%k1} {z}2074; X64-NEXT:    retq2075entry:2076  %vecinit.i.i = insertelement <4 x i64> undef, i64 %__A, i32 02077  %vecinit3.i.i = shufflevector <4 x i64> %vecinit.i.i, <4 x i64> undef, <4 x i32> zeroinitializer2078  %0 = bitcast i8 %__M to <8 x i1>2079  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>2080  %1 = select <4 x i1> %extract.i, <4 x i64> %vecinit3.i.i, <4 x i64> zeroinitializer2081  ret <4 x i64> %12082}2083 2084define <2 x i64> @test_mm_broadcastd_epi32(<2 x i64> %a0) {2085; CHECK-LABEL: test_mm_broadcastd_epi32:2086; CHECK:       # %bb.0:2087; CHECK-NEXT:    vbroadcastss %xmm0, %xmm02088; CHECK-NEXT:    ret{{[l|q]}}2089  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>2090  %res0 = shufflevector <4 x i32> %arg0, <4 x i32> undef, <4 x i32> zeroinitializer2091  %res1 = bitcast <4 x i32> %res0 to <2 x i64>2092  ret <2 x i64> %res12093}2094 2095define <2 x i64> @test_mm_mask_broadcastd_epi32(<2 x i64> %__O, i8 zeroext %__M, <2 x i64> %__A) {2096; X86-LABEL: test_mm_mask_broadcastd_epi32:2097; X86:       # %bb.0: # %entry2098; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2099; X86-NEXT:    kmovw %eax, %k12100; X86-NEXT:    vpbroadcastd %xmm1, %xmm0 {%k1}2101; X86-NEXT:    retl2102;2103; X64-LABEL: test_mm_mask_broadcastd_epi32:2104; X64:       # %bb.0: # %entry2105; X64-NEXT:    kmovw %edi, %k12106; X64-NEXT:    vpbroadcastd %xmm1, %xmm0 {%k1}2107; X64-NEXT:    retq2108entry:2109  %0 = bitcast <2 x i64> %__A to <4 x i32>2110  %shuffle.i.i = shufflevector <4 x i32> %0, <4 x i32> undef, <4 x i32> zeroinitializer2111  %1 = bitcast <2 x i64> %__O to <4 x i32>2112  %2 = bitcast i8 %__M to <8 x i1>2113  %extract.i = shufflevector <8 x i1> %2, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>2114  %3 = select <4 x i1> %extract.i, <4 x i32> %shuffle.i.i, <4 x i32> %12115  %4 = bitcast <4 x i32> %3 to <2 x i64>2116  ret <2 x i64> %42117}2118 2119define <2 x i64> @test_mm_maskz_broadcastd_epi32(i8 zeroext %__M, <2 x i64> %__A) {2120; X86-LABEL: test_mm_maskz_broadcastd_epi32:2121; X86:       # %bb.0: # %entry2122; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2123; X86-NEXT:    kmovw %eax, %k12124; X86-NEXT:    vpbroadcastd %xmm0, %xmm0 {%k1} {z}2125; X86-NEXT:    retl2126;2127; X64-LABEL: test_mm_maskz_broadcastd_epi32:2128; X64:       # %bb.0: # %entry2129; X64-NEXT:    kmovw %edi, %k12130; X64-NEXT:    vpbroadcastd %xmm0, %xmm0 {%k1} {z}2131; X64-NEXT:    retq2132entry:2133  %0 = bitcast <2 x i64> %__A to <4 x i32>2134  %shuffle.i.i = shufflevector <4 x i32> %0, <4 x i32> undef, <4 x i32> zeroinitializer2135  %1 = bitcast i8 %__M to <8 x i1>2136  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>2137  %2 = select <4 x i1> %extract.i, <4 x i32> %shuffle.i.i, <4 x i32> zeroinitializer2138  %3 = bitcast <4 x i32> %2 to <2 x i64>2139  ret <2 x i64> %32140}2141 2142define <4 x i64> @test_mm256_broadcastd_epi32(<2 x i64> %a0) {2143; CHECK-LABEL: test_mm256_broadcastd_epi32:2144; CHECK:       # %bb.0:2145; CHECK-NEXT:    vbroadcastss %xmm0, %ymm02146; CHECK-NEXT:    ret{{[l|q]}}2147  %arg0 = bitcast <2 x i64> %a0 to <4 x i32>2148  %res0 = shufflevector <4 x i32> %arg0, <4 x i32> undef, <8 x i32> zeroinitializer2149  %res1 = bitcast <8 x i32> %res0 to <4 x i64>2150  ret <4 x i64> %res12151}2152 2153define <4 x i64> @test_mm256_mask_broadcastd_epi32(<4 x i64> %a0, i8 %a1, <2 x i64> %a2) {2154; X86-LABEL: test_mm256_mask_broadcastd_epi32:2155; X86:       # %bb.0:2156; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2157; X86-NEXT:    kmovw %eax, %k12158; X86-NEXT:    vpbroadcastd %xmm1, %ymm0 {%k1}2159; X86-NEXT:    retl2160;2161; X64-LABEL: test_mm256_mask_broadcastd_epi32:2162; X64:       # %bb.0:2163; X64-NEXT:    kmovw %edi, %k12164; X64-NEXT:    vpbroadcastd %xmm1, %ymm0 {%k1}2165; X64-NEXT:    retq2166  %arg0 = bitcast <4 x i64> %a0 to <8 x i32>2167  %arg1 = bitcast i8 %a1 to <8 x i1>2168  %arg2 = bitcast <2 x i64> %a2 to <4 x i32>2169  %res0 = shufflevector <4 x i32> %arg2, <4 x i32> undef, <8 x i32> zeroinitializer2170  %res1 = select <8 x i1> %arg1, <8 x i32> %res0, <8 x i32> %arg02171  %res2 = bitcast <8 x i32> %res1 to <4 x i64>2172  ret <4 x i64> %res22173}2174 2175define <4 x i64> @test_mm256_maskz_broadcastd_epi32(i8 %a0, <2 x i64> %a1) {2176; X86-LABEL: test_mm256_maskz_broadcastd_epi32:2177; X86:       # %bb.0:2178; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2179; X86-NEXT:    kmovw %eax, %k12180; X86-NEXT:    vpbroadcastd %xmm0, %ymm0 {%k1} {z}2181; X86-NEXT:    retl2182;2183; X64-LABEL: test_mm256_maskz_broadcastd_epi32:2184; X64:       # %bb.0:2185; X64-NEXT:    kmovw %edi, %k12186; X64-NEXT:    vpbroadcastd %xmm0, %ymm0 {%k1} {z}2187; X64-NEXT:    retq2188  %arg0 = bitcast i8 %a0 to <8 x i1>2189  %arg1 = bitcast <2 x i64> %a1 to <4 x i32>2190  %res0 = shufflevector <4 x i32> %arg1, <4 x i32> undef, <8 x i32> zeroinitializer2191  %res1 = select <8 x i1> %arg0, <8 x i32> %res0, <8 x i32> zeroinitializer2192  %res2 = bitcast <8 x i32> %res1 to <4 x i64>2193  ret <4 x i64> %res22194}2195 2196define <2 x i64> @test_mm_broadcastq_epi64(<2 x i64> %a0) {2197; CHECK-LABEL: test_mm_broadcastq_epi64:2198; CHECK:       # %bb.0:2199; CHECK-NEXT:    vmovddup {{.*#+}} xmm0 = xmm0[0,0]2200; CHECK-NEXT:    ret{{[l|q]}}2201  %res = shufflevector <2 x i64> %a0, <2 x i64> undef, <2 x i32> zeroinitializer2202  ret <2 x i64> %res2203}2204 2205define <2 x i64> @test_mm_mask_broadcastq_epi64(<2 x i64> %__O, i8 zeroext %__M, <2 x i64> %__A) {2206; X86-LABEL: test_mm_mask_broadcastq_epi64:2207; X86:       # %bb.0: # %entry2208; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2209; X86-NEXT:    kmovw %eax, %k12210; X86-NEXT:    vpbroadcastq %xmm1, %xmm0 {%k1}2211; X86-NEXT:    retl2212;2213; X64-LABEL: test_mm_mask_broadcastq_epi64:2214; X64:       # %bb.0: # %entry2215; X64-NEXT:    kmovw %edi, %k12216; X64-NEXT:    vpbroadcastq %xmm1, %xmm0 {%k1}2217; X64-NEXT:    retq2218entry:2219  %shuffle.i.i = shufflevector <2 x i64> %__A, <2 x i64> undef, <2 x i32> zeroinitializer2220  %0 = bitcast i8 %__M to <8 x i1>2221  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <2 x i32> <i32 0, i32 1>2222  %1 = select <2 x i1> %extract.i, <2 x i64> %shuffle.i.i, <2 x i64> %__O2223  ret <2 x i64> %12224}2225 2226define <2 x i64> @test_mm_maskz_broadcastq_epi64(i8 zeroext %__M, <2 x i64> %__A) {2227; X86-LABEL: test_mm_maskz_broadcastq_epi64:2228; X86:       # %bb.0: # %entry2229; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2230; X86-NEXT:    kmovw %eax, %k12231; X86-NEXT:    vpbroadcastq %xmm0, %xmm0 {%k1} {z}2232; X86-NEXT:    retl2233;2234; X64-LABEL: test_mm_maskz_broadcastq_epi64:2235; X64:       # %bb.0: # %entry2236; X64-NEXT:    kmovw %edi, %k12237; X64-NEXT:    vpbroadcastq %xmm0, %xmm0 {%k1} {z}2238; X64-NEXT:    retq2239entry:2240  %shuffle.i.i = shufflevector <2 x i64> %__A, <2 x i64> undef, <2 x i32> zeroinitializer2241  %0 = bitcast i8 %__M to <8 x i1>2242  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <2 x i32> <i32 0, i32 1>2243  %1 = select <2 x i1> %extract.i, <2 x i64> %shuffle.i.i, <2 x i64> zeroinitializer2244  ret <2 x i64> %12245}2246 2247define <4 x i64> @test_mm256_broadcastq_epi64(<2 x i64> %a0) {2248; CHECK-LABEL: test_mm256_broadcastq_epi64:2249; CHECK:       # %bb.0:2250; CHECK-NEXT:    vbroadcastsd %xmm0, %ymm02251; CHECK-NEXT:    ret{{[l|q]}}2252  %res = shufflevector <2 x i64> %a0, <2 x i64> undef, <4 x i32> zeroinitializer2253  ret <4 x i64> %res2254}2255 2256define <4 x i64> @test_mm256_mask_broadcastq_epi64(<4 x i64> %__O, i8 zeroext %__M, <2 x i64> %__A) {2257; X86-LABEL: test_mm256_mask_broadcastq_epi64:2258; X86:       # %bb.0: # %entry2259; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2260; X86-NEXT:    kmovw %eax, %k12261; X86-NEXT:    vpbroadcastq %xmm1, %ymm0 {%k1}2262; X86-NEXT:    retl2263;2264; X64-LABEL: test_mm256_mask_broadcastq_epi64:2265; X64:       # %bb.0: # %entry2266; X64-NEXT:    kmovw %edi, %k12267; X64-NEXT:    vpbroadcastq %xmm1, %ymm0 {%k1}2268; X64-NEXT:    retq2269entry:2270  %shuffle.i.i = shufflevector <2 x i64> %__A, <2 x i64> undef, <4 x i32> zeroinitializer2271  %0 = bitcast i8 %__M to <8 x i1>2272  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>2273  %1 = select <4 x i1> %extract.i, <4 x i64> %shuffle.i.i, <4 x i64> %__O2274  ret <4 x i64> %12275}2276 2277define <4 x i64> @test_mm256_maskz_broadcastq_epi64(i8 zeroext %__M, <2 x i64> %__A) {2278; X86-LABEL: test_mm256_maskz_broadcastq_epi64:2279; X86:       # %bb.0: # %entry2280; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2281; X86-NEXT:    kmovw %eax, %k12282; X86-NEXT:    vpbroadcastq %xmm0, %ymm0 {%k1} {z}2283; X86-NEXT:    retl2284;2285; X64-LABEL: test_mm256_maskz_broadcastq_epi64:2286; X64:       # %bb.0: # %entry2287; X64-NEXT:    kmovw %edi, %k12288; X64-NEXT:    vpbroadcastq %xmm0, %ymm0 {%k1} {z}2289; X64-NEXT:    retq2290entry:2291  %shuffle.i.i = shufflevector <2 x i64> %__A, <2 x i64> undef, <4 x i32> zeroinitializer2292  %0 = bitcast i8 %__M to <8 x i1>2293  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>2294  %1 = select <4 x i1> %extract.i, <4 x i64> %shuffle.i.i, <4 x i64> zeroinitializer2295  ret <4 x i64> %12296}2297 2298define <4 x double> @test_mm256_broadcastsd_pd(<2 x double> %a0) {2299; CHECK-LABEL: test_mm256_broadcastsd_pd:2300; CHECK:       # %bb.0:2301; CHECK-NEXT:    vbroadcastsd %xmm0, %ymm02302; CHECK-NEXT:    ret{{[l|q]}}2303  %res = shufflevector <2 x double> %a0, <2 x double> undef, <4 x i32> zeroinitializer2304  ret <4 x double> %res2305}2306 2307define <4 x double> @test_mm256_mask_broadcastsd_pd(<4 x double> %__O, i8 zeroext %__M, <2 x double> %__A) {2308; X86-LABEL: test_mm256_mask_broadcastsd_pd:2309; X86:       # %bb.0: # %entry2310; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2311; X86-NEXT:    kmovw %eax, %k12312; X86-NEXT:    vbroadcastsd %xmm1, %ymm0 {%k1}2313; X86-NEXT:    retl2314;2315; X64-LABEL: test_mm256_mask_broadcastsd_pd:2316; X64:       # %bb.0: # %entry2317; X64-NEXT:    kmovw %edi, %k12318; X64-NEXT:    vbroadcastsd %xmm1, %ymm0 {%k1}2319; X64-NEXT:    retq2320entry:2321  %shuffle.i.i = shufflevector <2 x double> %__A, <2 x double> undef, <4 x i32> zeroinitializer2322  %0 = bitcast i8 %__M to <8 x i1>2323  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>2324  %1 = select <4 x i1> %extract.i, <4 x double> %shuffle.i.i, <4 x double> %__O2325  ret <4 x double> %12326}2327 2328define <4 x double> @test_mm256_maskz_broadcastsd_pd(i8 zeroext %__M, <2 x double> %__A) {2329; X86-LABEL: test_mm256_maskz_broadcastsd_pd:2330; X86:       # %bb.0: # %entry2331; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2332; X86-NEXT:    kmovw %eax, %k12333; X86-NEXT:    vbroadcastsd %xmm0, %ymm0 {%k1} {z}2334; X86-NEXT:    retl2335;2336; X64-LABEL: test_mm256_maskz_broadcastsd_pd:2337; X64:       # %bb.0: # %entry2338; X64-NEXT:    kmovw %edi, %k12339; X64-NEXT:    vbroadcastsd %xmm0, %ymm0 {%k1} {z}2340; X64-NEXT:    retq2341entry:2342  %shuffle.i.i = shufflevector <2 x double> %__A, <2 x double> undef, <4 x i32> zeroinitializer2343  %0 = bitcast i8 %__M to <8 x i1>2344  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>2345  %1 = select <4 x i1> %extract.i, <4 x double> %shuffle.i.i, <4 x double> zeroinitializer2346  ret <4 x double> %12347}2348 2349define <4 x float> @test_mm_broadcastss_ps(<4 x float> %a0) {2350; CHECK-LABEL: test_mm_broadcastss_ps:2351; CHECK:       # %bb.0:2352; CHECK-NEXT:    vbroadcastss %xmm0, %xmm02353; CHECK-NEXT:    ret{{[l|q]}}2354  %res = shufflevector <4 x float> %a0, <4 x float> undef, <4 x i32> zeroinitializer2355  ret <4 x float> %res2356}2357 2358define <4 x float> @test_mm_mask_broadcastss_ps(<4 x float> %__O, i8 zeroext %__M, <4 x float> %__A) {2359; X86-LABEL: test_mm_mask_broadcastss_ps:2360; X86:       # %bb.0: # %entry2361; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2362; X86-NEXT:    kmovw %eax, %k12363; X86-NEXT:    vbroadcastss %xmm1, %xmm0 {%k1}2364; X86-NEXT:    retl2365;2366; X64-LABEL: test_mm_mask_broadcastss_ps:2367; X64:       # %bb.0: # %entry2368; X64-NEXT:    kmovw %edi, %k12369; X64-NEXT:    vbroadcastss %xmm1, %xmm0 {%k1}2370; X64-NEXT:    retq2371entry:2372  %shuffle.i.i = shufflevector <4 x float> %__A, <4 x float> undef, <4 x i32> zeroinitializer2373  %0 = bitcast i8 %__M to <8 x i1>2374  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>2375  %1 = select <4 x i1> %extract.i, <4 x float> %shuffle.i.i, <4 x float> %__O2376  ret <4 x float> %12377}2378 2379define <4 x float> @test_mm_maskz_broadcastss_ps(i8 zeroext %__M, <4 x float> %__A) {2380; X86-LABEL: test_mm_maskz_broadcastss_ps:2381; X86:       # %bb.0: # %entry2382; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2383; X86-NEXT:    kmovw %eax, %k12384; X86-NEXT:    vbroadcastss %xmm0, %xmm0 {%k1} {z}2385; X86-NEXT:    retl2386;2387; X64-LABEL: test_mm_maskz_broadcastss_ps:2388; X64:       # %bb.0: # %entry2389; X64-NEXT:    kmovw %edi, %k12390; X64-NEXT:    vbroadcastss %xmm0, %xmm0 {%k1} {z}2391; X64-NEXT:    retq2392entry:2393  %shuffle.i.i = shufflevector <4 x float> %__A, <4 x float> undef, <4 x i32> zeroinitializer2394  %0 = bitcast i8 %__M to <8 x i1>2395  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>2396  %1 = select <4 x i1> %extract.i, <4 x float> %shuffle.i.i, <4 x float> zeroinitializer2397  ret <4 x float> %12398}2399 2400define <8 x float> @test_mm256_broadcastss_ps(<4 x float> %a0) {2401; CHECK-LABEL: test_mm256_broadcastss_ps:2402; CHECK:       # %bb.0:2403; CHECK-NEXT:    vbroadcastss %xmm0, %ymm02404; CHECK-NEXT:    ret{{[l|q]}}2405  %res = shufflevector <4 x float> %a0, <4 x float> undef, <8 x i32> zeroinitializer2406  ret <8 x float> %res2407}2408 2409define <8 x float> @test_mm256_mask_broadcastss_ps(<8 x float> %a0, i8 %a1, <4 x float> %a2) {2410; X86-LABEL: test_mm256_mask_broadcastss_ps:2411; X86:       # %bb.0:2412; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2413; X86-NEXT:    kmovw %eax, %k12414; X86-NEXT:    vbroadcastss %xmm1, %ymm0 {%k1}2415; X86-NEXT:    retl2416;2417; X64-LABEL: test_mm256_mask_broadcastss_ps:2418; X64:       # %bb.0:2419; X64-NEXT:    kmovw %edi, %k12420; X64-NEXT:    vbroadcastss %xmm1, %ymm0 {%k1}2421; X64-NEXT:    retq2422  %arg1 = bitcast i8 %a1 to <8 x i1>2423  %res0 = shufflevector <4 x float> %a2, <4 x float> undef, <8 x i32> zeroinitializer2424  %res1 = select <8 x i1> %arg1, <8 x float> %res0, <8 x float> %a02425  ret <8 x float> %res12426}2427 2428define <8 x float> @test_mm256_maskz_broadcastss_ps(i8 %a0, <4 x float> %a1) {2429; X86-LABEL: test_mm256_maskz_broadcastss_ps:2430; X86:       # %bb.0:2431; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2432; X86-NEXT:    kmovw %eax, %k12433; X86-NEXT:    vbroadcastss %xmm0, %ymm0 {%k1} {z}2434; X86-NEXT:    retl2435;2436; X64-LABEL: test_mm256_maskz_broadcastss_ps:2437; X64:       # %bb.0:2438; X64-NEXT:    kmovw %edi, %k12439; X64-NEXT:    vbroadcastss %xmm0, %ymm0 {%k1} {z}2440; X64-NEXT:    retq2441  %arg0 = bitcast i8 %a0 to <8 x i1>2442  %res0 = shufflevector <4 x float> %a1, <4 x float> undef, <8 x i32> zeroinitializer2443  %res1 = select <8 x i1> %arg0, <8 x float> %res0, <8 x float> zeroinitializer2444  ret <8 x float> %res12445}2446 2447define <2 x double> @test_mm_movddup_pd(<2 x double> %a0) {2448; CHECK-LABEL: test_mm_movddup_pd:2449; CHECK:       # %bb.0:2450; CHECK-NEXT:    vmovddup {{.*#+}} xmm0 = xmm0[0,0]2451; CHECK-NEXT:    ret{{[l|q]}}2452  %res = shufflevector <2 x double> %a0, <2 x double> undef, <2 x i32> zeroinitializer2453  ret <2 x double> %res2454}2455 2456define <2 x double> @test_mm_mask_movedup_pd(<2 x double> %__W, i8 zeroext %__U, <2 x double> %__A) {2457; X86-LABEL: test_mm_mask_movedup_pd:2458; X86:       # %bb.0: # %entry2459; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2460; X86-NEXT:    kmovw %eax, %k12461; X86-NEXT:    vmovddup {{.*#+}} xmm0 {%k1} = xmm1[0,0]2462; X86-NEXT:    retl2463;2464; X64-LABEL: test_mm_mask_movedup_pd:2465; X64:       # %bb.0: # %entry2466; X64-NEXT:    kmovw %edi, %k12467; X64-NEXT:    vmovddup {{.*#+}} xmm0 {%k1} = xmm1[0,0]2468; X64-NEXT:    retq2469entry:2470  %shuffle.i.i = shufflevector <2 x double> %__A, <2 x double> undef, <2 x i32> zeroinitializer2471  %0 = bitcast i8 %__U to <8 x i1>2472  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <2 x i32> <i32 0, i32 1>2473  %1 = select <2 x i1> %extract.i, <2 x double> %shuffle.i.i, <2 x double> %__W2474  ret <2 x double> %12475}2476 2477define <2 x double> @test_mm_maskz_movedup_pd(i8 zeroext %__U, <2 x double> %__A) {2478; X86-LABEL: test_mm_maskz_movedup_pd:2479; X86:       # %bb.0: # %entry2480; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2481; X86-NEXT:    kmovw %eax, %k12482; X86-NEXT:    vmovddup {{.*#+}} xmm0 {%k1} {z} = xmm0[0,0]2483; X86-NEXT:    retl2484;2485; X64-LABEL: test_mm_maskz_movedup_pd:2486; X64:       # %bb.0: # %entry2487; X64-NEXT:    kmovw %edi, %k12488; X64-NEXT:    vmovddup {{.*#+}} xmm0 {%k1} {z} = xmm0[0,0]2489; X64-NEXT:    retq2490entry:2491  %shuffle.i.i = shufflevector <2 x double> %__A, <2 x double> undef, <2 x i32> zeroinitializer2492  %0 = bitcast i8 %__U to <8 x i1>2493  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <2 x i32> <i32 0, i32 1>2494  %1 = select <2 x i1> %extract.i, <2 x double> %shuffle.i.i, <2 x double> zeroinitializer2495  ret <2 x double> %12496}2497 2498define <4 x double> @test_mm256_movddup_pd(<4 x double> %a0) {2499; CHECK-LABEL: test_mm256_movddup_pd:2500; CHECK:       # %bb.0:2501; CHECK-NEXT:    vmovddup {{.*#+}} ymm0 = ymm0[0,0,2,2]2502; CHECK-NEXT:    ret{{[l|q]}}2503  %res = shufflevector <4 x double> %a0, <4 x double> undef, <4 x i32> <i32 0, i32 0, i32 2, i32 2>2504  ret <4 x double> %res2505}2506 2507define <4 x double> @test_mm256_mask_movedup_pd(<4 x double> %__W, i8 zeroext %__U, <4 x double> %__A) {2508; X86-LABEL: test_mm256_mask_movedup_pd:2509; X86:       # %bb.0: # %entry2510; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2511; X86-NEXT:    kmovw %eax, %k12512; X86-NEXT:    vmovddup {{.*#+}} ymm0 {%k1} = ymm1[0,0,2,2]2513; X86-NEXT:    retl2514;2515; X64-LABEL: test_mm256_mask_movedup_pd:2516; X64:       # %bb.0: # %entry2517; X64-NEXT:    kmovw %edi, %k12518; X64-NEXT:    vmovddup {{.*#+}} ymm0 {%k1} = ymm1[0,0,2,2]2519; X64-NEXT:    retq2520entry:2521  %shuffle.i.i = shufflevector <4 x double> %__A, <4 x double> undef, <4 x i32> <i32 0, i32 0, i32 2, i32 2>2522  %0 = bitcast i8 %__U to <8 x i1>2523  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>2524  %1 = select <4 x i1> %extract.i, <4 x double> %shuffle.i.i, <4 x double> %__W2525  ret <4 x double> %12526}2527 2528define <4 x double> @test_mm256_maskz_movedup_pd(i8 zeroext %__U, <4 x double> %__A) {2529; X86-LABEL: test_mm256_maskz_movedup_pd:2530; X86:       # %bb.0: # %entry2531; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2532; X86-NEXT:    kmovw %eax, %k12533; X86-NEXT:    vmovddup {{.*#+}} ymm0 {%k1} {z} = ymm0[0,0,2,2]2534; X86-NEXT:    retl2535;2536; X64-LABEL: test_mm256_maskz_movedup_pd:2537; X64:       # %bb.0: # %entry2538; X64-NEXT:    kmovw %edi, %k12539; X64-NEXT:    vmovddup {{.*#+}} ymm0 {%k1} {z} = ymm0[0,0,2,2]2540; X64-NEXT:    retq2541entry:2542  %shuffle.i.i = shufflevector <4 x double> %__A, <4 x double> undef, <4 x i32> <i32 0, i32 0, i32 2, i32 2>2543  %0 = bitcast i8 %__U to <8 x i1>2544  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>2545  %1 = select <4 x i1> %extract.i, <4 x double> %shuffle.i.i, <4 x double> zeroinitializer2546  ret <4 x double> %12547}2548 2549define <4 x float> @test_mm_movehdup_ps(<4 x float> %a0) {2550; CHECK-LABEL: test_mm_movehdup_ps:2551; CHECK:       # %bb.0:2552; CHECK-NEXT:    vmovshdup {{.*#+}} xmm0 = xmm0[1,1,3,3]2553; CHECK-NEXT:    ret{{[l|q]}}2554  %res = shufflevector <4 x float> %a0, <4 x float> undef, <4 x i32> <i32 1, i32 1, i32 3, i32 3>2555  ret <4 x float> %res2556}2557 2558define <4 x float> @test_mm_mask_movehdup_ps(<4 x float> %__W, i8 zeroext %__U, <4 x float> %__A) {2559; X86-LABEL: test_mm_mask_movehdup_ps:2560; X86:       # %bb.0: # %entry2561; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2562; X86-NEXT:    kmovw %eax, %k12563; X86-NEXT:    vmovshdup {{.*#+}} xmm0 {%k1} = xmm1[1,1,3,3]2564; X86-NEXT:    retl2565;2566; X64-LABEL: test_mm_mask_movehdup_ps:2567; X64:       # %bb.0: # %entry2568; X64-NEXT:    kmovw %edi, %k12569; X64-NEXT:    vmovshdup {{.*#+}} xmm0 {%k1} = xmm1[1,1,3,3]2570; X64-NEXT:    retq2571entry:2572  %shuffle.i.i = shufflevector <4 x float> %__A, <4 x float> undef, <4 x i32> <i32 1, i32 1, i32 3, i32 3>2573  %0 = bitcast i8 %__U to <8 x i1>2574  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>2575  %1 = select <4 x i1> %extract.i, <4 x float> %shuffle.i.i, <4 x float> %__W2576  ret <4 x float> %12577}2578 2579define <4 x float> @test_mm_maskz_movehdup_ps(i8 zeroext %__U, <4 x float> %__A) {2580; X86-LABEL: test_mm_maskz_movehdup_ps:2581; X86:       # %bb.0: # %entry2582; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2583; X86-NEXT:    kmovw %eax, %k12584; X86-NEXT:    vmovshdup {{.*#+}} xmm0 {%k1} {z} = xmm0[1,1,3,3]2585; X86-NEXT:    retl2586;2587; X64-LABEL: test_mm_maskz_movehdup_ps:2588; X64:       # %bb.0: # %entry2589; X64-NEXT:    kmovw %edi, %k12590; X64-NEXT:    vmovshdup {{.*#+}} xmm0 {%k1} {z} = xmm0[1,1,3,3]2591; X64-NEXT:    retq2592entry:2593  %shuffle.i.i = shufflevector <4 x float> %__A, <4 x float> undef, <4 x i32> <i32 1, i32 1, i32 3, i32 3>2594  %0 = bitcast i8 %__U to <8 x i1>2595  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>2596  %1 = select <4 x i1> %extract.i, <4 x float> %shuffle.i.i, <4 x float> zeroinitializer2597  ret <4 x float> %12598}2599 2600define <8 x float> @test_mm256_movehdup_ps(<8 x float> %a0) {2601; CHECK-LABEL: test_mm256_movehdup_ps:2602; CHECK:       # %bb.0:2603; CHECK-NEXT:    vmovshdup {{.*#+}} ymm0 = ymm0[1,1,3,3,5,5,7,7]2604; CHECK-NEXT:    ret{{[l|q]}}2605  %res = shufflevector <8 x float> %a0, <8 x float> undef, <8 x i32> <i32 1, i32 1, i32 3, i32 3, i32 5, i32 5, i32 7, i32 7>2606  ret <8 x float> %res2607}2608 2609define <8 x float> @test_mm256_mask_movehdup_ps(<8 x float> %a0, i8 %a1, <8 x float> %a2) {2610; X86-LABEL: test_mm256_mask_movehdup_ps:2611; X86:       # %bb.0:2612; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2613; X86-NEXT:    kmovw %eax, %k12614; X86-NEXT:    vmovshdup {{.*#+}} ymm0 {%k1} = ymm1[1,1,3,3,5,5,7,7]2615; X86-NEXT:    retl2616;2617; X64-LABEL: test_mm256_mask_movehdup_ps:2618; X64:       # %bb.0:2619; X64-NEXT:    kmovw %edi, %k12620; X64-NEXT:    vmovshdup {{.*#+}} ymm0 {%k1} = ymm1[1,1,3,3,5,5,7,7]2621; X64-NEXT:    retq2622  %arg1 = bitcast i8 %a1 to <8 x i1>2623  %res0 = shufflevector <8 x float> %a2, <8 x float> undef, <8 x i32> <i32 1, i32 1, i32 3, i32 3, i32 5, i32 5, i32 7, i32 7>2624  %res1 = select <8 x i1> %arg1, <8 x float> %res0, <8 x float> %a02625  ret <8 x float> %res12626}2627 2628define <8 x float> @test_mm256_maskz_movehdup_ps(i8 %a0, <8 x float> %a1) {2629; X86-LABEL: test_mm256_maskz_movehdup_ps:2630; X86:       # %bb.0:2631; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2632; X86-NEXT:    kmovw %eax, %k12633; X86-NEXT:    vmovshdup {{.*#+}} ymm0 {%k1} {z} = ymm0[1,1,3,3,5,5,7,7]2634; X86-NEXT:    retl2635;2636; X64-LABEL: test_mm256_maskz_movehdup_ps:2637; X64:       # %bb.0:2638; X64-NEXT:    kmovw %edi, %k12639; X64-NEXT:    vmovshdup {{.*#+}} ymm0 {%k1} {z} = ymm0[1,1,3,3,5,5,7,7]2640; X64-NEXT:    retq2641  %arg0 = bitcast i8 %a0 to <8 x i1>2642  %res0 = shufflevector <8 x float> %a1, <8 x float> undef, <8 x i32> <i32 1, i32 1, i32 3, i32 3, i32 5, i32 5, i32 7, i32 7>2643  %res1 = select <8 x i1> %arg0, <8 x float> %res0, <8 x float> zeroinitializer2644  ret <8 x float> %res12645}2646 2647define <4 x float> @test_mm_moveldup_ps(<4 x float> %a0) {2648; CHECK-LABEL: test_mm_moveldup_ps:2649; CHECK:       # %bb.0:2650; CHECK-NEXT:    vmovsldup {{.*#+}} xmm0 = xmm0[0,0,2,2]2651; CHECK-NEXT:    ret{{[l|q]}}2652  %res = shufflevector <4 x float> %a0, <4 x float> undef, <4 x i32> <i32 0, i32 0, i32 2, i32 2>2653  ret <4 x float> %res2654}2655 2656define <4 x float> @test_mm_mask_moveldup_ps(<4 x float> %__W, i8 zeroext %__U, <4 x float> %__A) {2657; X86-LABEL: test_mm_mask_moveldup_ps:2658; X86:       # %bb.0: # %entry2659; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2660; X86-NEXT:    kmovw %eax, %k12661; X86-NEXT:    vmovsldup {{.*#+}} xmm0 {%k1} = xmm1[0,0,2,2]2662; X86-NEXT:    retl2663;2664; X64-LABEL: test_mm_mask_moveldup_ps:2665; X64:       # %bb.0: # %entry2666; X64-NEXT:    kmovw %edi, %k12667; X64-NEXT:    vmovsldup {{.*#+}} xmm0 {%k1} = xmm1[0,0,2,2]2668; X64-NEXT:    retq2669entry:2670  %shuffle.i.i = shufflevector <4 x float> %__A, <4 x float> undef, <4 x i32> <i32 0, i32 0, i32 2, i32 2>2671  %0 = bitcast i8 %__U to <8 x i1>2672  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>2673  %1 = select <4 x i1> %extract.i, <4 x float> %shuffle.i.i, <4 x float> %__W2674  ret <4 x float> %12675}2676 2677define <4 x float> @test_mm_maskz_moveldup_ps(i8 zeroext %__U, <4 x float> %__A) {2678; X86-LABEL: test_mm_maskz_moveldup_ps:2679; X86:       # %bb.0: # %entry2680; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2681; X86-NEXT:    kmovw %eax, %k12682; X86-NEXT:    vmovsldup {{.*#+}} xmm0 {%k1} {z} = xmm0[0,0,2,2]2683; X86-NEXT:    retl2684;2685; X64-LABEL: test_mm_maskz_moveldup_ps:2686; X64:       # %bb.0: # %entry2687; X64-NEXT:    kmovw %edi, %k12688; X64-NEXT:    vmovsldup {{.*#+}} xmm0 {%k1} {z} = xmm0[0,0,2,2]2689; X64-NEXT:    retq2690entry:2691  %shuffle.i.i = shufflevector <4 x float> %__A, <4 x float> undef, <4 x i32> <i32 0, i32 0, i32 2, i32 2>2692  %0 = bitcast i8 %__U to <8 x i1>2693  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>2694  %1 = select <4 x i1> %extract.i, <4 x float> %shuffle.i.i, <4 x float> zeroinitializer2695  ret <4 x float> %12696}2697 2698define <8 x float> @test_mm256_moveldup_ps(<8 x float> %a0) {2699; CHECK-LABEL: test_mm256_moveldup_ps:2700; CHECK:       # %bb.0:2701; CHECK-NEXT:    vmovsldup {{.*#+}} ymm0 = ymm0[0,0,2,2,4,4,6,6]2702; CHECK-NEXT:    ret{{[l|q]}}2703  %res = shufflevector <8 x float> %a0, <8 x float> undef, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>2704  ret <8 x float> %res2705}2706 2707define <8 x float> @test_mm256_mask_moveldup_ps(<8 x float> %a0, i8 %a1, <8 x float> %a2) {2708; X86-LABEL: test_mm256_mask_moveldup_ps:2709; X86:       # %bb.0:2710; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2711; X86-NEXT:    kmovw %eax, %k12712; X86-NEXT:    vmovsldup {{.*#+}} ymm0 {%k1} = ymm1[0,0,2,2,4,4,6,6]2713; X86-NEXT:    retl2714;2715; X64-LABEL: test_mm256_mask_moveldup_ps:2716; X64:       # %bb.0:2717; X64-NEXT:    kmovw %edi, %k12718; X64-NEXT:    vmovsldup {{.*#+}} ymm0 {%k1} = ymm1[0,0,2,2,4,4,6,6]2719; X64-NEXT:    retq2720  %arg1 = bitcast i8 %a1 to <8 x i1>2721  %res0 = shufflevector <8 x float> %a2, <8 x float> undef, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>2722  %res1 = select <8 x i1> %arg1, <8 x float> %res0, <8 x float> %a02723  ret <8 x float> %res12724}2725 2726define <8 x float> @test_mm256_maskz_moveldup_ps(i8 %a0, <8 x float> %a1) {2727; X86-LABEL: test_mm256_maskz_moveldup_ps:2728; X86:       # %bb.0:2729; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2730; X86-NEXT:    kmovw %eax, %k12731; X86-NEXT:    vmovsldup {{.*#+}} ymm0 {%k1} {z} = ymm0[0,0,2,2,4,4,6,6]2732; X86-NEXT:    retl2733;2734; X64-LABEL: test_mm256_maskz_moveldup_ps:2735; X64:       # %bb.0:2736; X64-NEXT:    kmovw %edi, %k12737; X64-NEXT:    vmovsldup {{.*#+}} ymm0 {%k1} {z} = ymm0[0,0,2,2,4,4,6,6]2738; X64-NEXT:    retq2739  %arg0 = bitcast i8 %a0 to <8 x i1>2740  %res0 = shufflevector <8 x float> %a1, <8 x float> undef, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>2741  %res1 = select <8 x i1> %arg0, <8 x float> %res0, <8 x float> zeroinitializer2742  ret <8 x float> %res12743}2744 2745define <4 x i64> @test_mm256_permutex_epi64(<4 x i64> %a0) {2746; CHECK-LABEL: test_mm256_permutex_epi64:2747; CHECK:       # %bb.0:2748; CHECK-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[3,0,0,0]2749; CHECK-NEXT:    ret{{[l|q]}}2750  %res = shufflevector <4 x i64> %a0, <4 x i64> undef, <4 x i32> <i32 3, i32 0, i32 0, i32 0>2751  ret <4 x i64> %res2752}2753 2754define <4 x i64> @test_mm256_mask_permutex_epi64(<4 x i64> %__W, i8 zeroext %__M, <4 x i64> %__X) {2755; X86-LABEL: test_mm256_mask_permutex_epi64:2756; X86:       # %bb.0: # %entry2757; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2758; X86-NEXT:    kmovw %eax, %k12759; X86-NEXT:    vpermq {{.*#+}} ymm0 {%k1} = ymm1[3,0,0,0]2760; X86-NEXT:    retl2761;2762; X64-LABEL: test_mm256_mask_permutex_epi64:2763; X64:       # %bb.0: # %entry2764; X64-NEXT:    kmovw %edi, %k12765; X64-NEXT:    vpermq {{.*#+}} ymm0 {%k1} = ymm1[3,0,0,0]2766; X64-NEXT:    retq2767entry:2768  %perm = shufflevector <4 x i64> %__X, <4 x i64> undef, <4 x i32> <i32 3, i32 0, i32 0, i32 0>2769  %0 = bitcast i8 %__M to <8 x i1>2770  %extract = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>2771  %1 = select <4 x i1> %extract, <4 x i64> %perm, <4 x i64> %__W2772  ret <4 x i64> %12773}2774 2775define <4 x i64> @test_mm256_maskz_permutex_epi64(i8 zeroext %__M, <4 x i64> %__X) {2776; X86-LABEL: test_mm256_maskz_permutex_epi64:2777; X86:       # %bb.0: # %entry2778; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2779; X86-NEXT:    kmovw %eax, %k12780; X86-NEXT:    vpermq {{.*#+}} ymm0 {%k1} {z} = ymm0[3,0,0,0]2781; X86-NEXT:    retl2782;2783; X64-LABEL: test_mm256_maskz_permutex_epi64:2784; X64:       # %bb.0: # %entry2785; X64-NEXT:    kmovw %edi, %k12786; X64-NEXT:    vpermq {{.*#+}} ymm0 {%k1} {z} = ymm0[3,0,0,0]2787; X64-NEXT:    retq2788entry:2789  %perm = shufflevector <4 x i64> %__X, <4 x i64> undef, <4 x i32> <i32 3, i32 0, i32 0, i32 0>2790  %0 = bitcast i8 %__M to <8 x i1>2791  %extract = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>2792  %1 = select <4 x i1> %extract, <4 x i64> %perm, <4 x i64> zeroinitializer2793  ret <4 x i64> %12794}2795 2796define <4 x double> @test_mm256_permutex_pd(<4 x double> %a0) {2797; CHECK-LABEL: test_mm256_permutex_pd:2798; CHECK:       # %bb.0:2799; CHECK-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[3,0,0,0]2800; CHECK-NEXT:    ret{{[l|q]}}2801  %res = shufflevector <4 x double> %a0, <4 x double> undef, <4 x i32> <i32 3, i32 0, i32 0, i32 0>2802  ret <4 x double> %res2803}2804 2805define <4 x double> @test_mm256_mask_permutex_pd(<4 x double> %__W, i8 zeroext %__U, <4 x double> %__X) {2806; X86-LABEL: test_mm256_mask_permutex_pd:2807; X86:       # %bb.0: # %entry2808; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2809; X86-NEXT:    kmovw %eax, %k12810; X86-NEXT:    vpermpd {{.*#+}} ymm0 {%k1} = ymm1[1,0,0,0]2811; X86-NEXT:    retl2812;2813; X64-LABEL: test_mm256_mask_permutex_pd:2814; X64:       # %bb.0: # %entry2815; X64-NEXT:    kmovw %edi, %k12816; X64-NEXT:    vpermpd {{.*#+}} ymm0 {%k1} = ymm1[1,0,0,0]2817; X64-NEXT:    retq2818entry:2819  %perm = shufflevector <4 x double> %__X, <4 x double> undef, <4 x i32> <i32 1, i32 0, i32 0, i32 0>2820  %0 = bitcast i8 %__U to <8 x i1>2821  %extract = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>2822  %1 = select <4 x i1> %extract, <4 x double> %perm, <4 x double> %__W2823  ret <4 x double> %12824}2825 2826define <4 x double> @test_mm256_maskz_permutex_pd(i8 zeroext %__U, <4 x double> %__X) {2827; X86-LABEL: test_mm256_maskz_permutex_pd:2828; X86:       # %bb.0: # %entry2829; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2830; X86-NEXT:    kmovw %eax, %k12831; X86-NEXT:    vpermpd {{.*#+}} ymm0 {%k1} {z} = ymm0[1,0,0,0]2832; X86-NEXT:    retl2833;2834; X64-LABEL: test_mm256_maskz_permutex_pd:2835; X64:       # %bb.0: # %entry2836; X64-NEXT:    kmovw %edi, %k12837; X64-NEXT:    vpermpd {{.*#+}} ymm0 {%k1} {z} = ymm0[1,0,0,0]2838; X64-NEXT:    retq2839entry:2840  %perm = shufflevector <4 x double> %__X, <4 x double> undef, <4 x i32> <i32 1, i32 0, i32 0, i32 0>2841  %0 = bitcast i8 %__U to <8 x i1>2842  %extract = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>2843  %1 = select <4 x i1> %extract, <4 x double> %perm, <4 x double> zeroinitializer2844  ret <4 x double> %12845}2846 2847define <2 x double> @test_mm_shuffle_pd(<2 x double> %a0, <2 x double> %a1) {2848; CHECK-LABEL: test_mm_shuffle_pd:2849; CHECK:       # %bb.0:2850; CHECK-NEXT:    vunpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]2851; CHECK-NEXT:    ret{{[l|q]}}2852  %res = shufflevector <2 x double> %a0, <2 x double> %a1, <2 x i32> <i32 1, i32 3>2853  ret <2 x double> %res2854}2855 2856define <2 x double> @test_mm_mask_shuffle_pd(<2 x double> %__W, i8 zeroext %__U, <2 x double> %__A, <2 x double> %__B) {2857; X86-LABEL: test_mm_mask_shuffle_pd:2858; X86:       # %bb.0: # %entry2859; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2860; X86-NEXT:    kmovw %eax, %k12861; X86-NEXT:    vunpckhpd {{.*#+}} xmm0 {%k1} = xmm1[1],xmm2[1]2862; X86-NEXT:    retl2863;2864; X64-LABEL: test_mm_mask_shuffle_pd:2865; X64:       # %bb.0: # %entry2866; X64-NEXT:    kmovw %edi, %k12867; X64-NEXT:    vunpckhpd {{.*#+}} xmm0 {%k1} = xmm1[1],xmm2[1]2868; X64-NEXT:    retq2869entry:2870  %shufp = shufflevector <2 x double> %__A, <2 x double> %__B, <2 x i32> <i32 1, i32 3>2871  %0 = bitcast i8 %__U to <8 x i1>2872  %extract = shufflevector <8 x i1> %0, <8 x i1> undef, <2 x i32> <i32 0, i32 1>2873  %1 = select <2 x i1> %extract, <2 x double> %shufp, <2 x double> %__W2874  ret <2 x double> %12875}2876 2877define <2 x double> @test_mm_maskz_shuffle_pd(i8 zeroext %__U, <2 x double> %__A, <2 x double> %__B) {2878; X86-LABEL: test_mm_maskz_shuffle_pd:2879; X86:       # %bb.0: # %entry2880; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2881; X86-NEXT:    kmovw %eax, %k12882; X86-NEXT:    vunpckhpd {{.*#+}} xmm0 {%k1} {z} = xmm0[1],xmm1[1]2883; X86-NEXT:    retl2884;2885; X64-LABEL: test_mm_maskz_shuffle_pd:2886; X64:       # %bb.0: # %entry2887; X64-NEXT:    kmovw %edi, %k12888; X64-NEXT:    vunpckhpd {{.*#+}} xmm0 {%k1} {z} = xmm0[1],xmm1[1]2889; X64-NEXT:    retq2890entry:2891  %shufp = shufflevector <2 x double> %__A, <2 x double> %__B, <2 x i32> <i32 1, i32 3>2892  %0 = bitcast i8 %__U to <8 x i1>2893  %extract = shufflevector <8 x i1> %0, <8 x i1> undef, <2 x i32> <i32 0, i32 1>2894  %1 = select <2 x i1> %extract, <2 x double> %shufp, <2 x double> zeroinitializer2895  ret <2 x double> %12896}2897 2898define <4 x double> @test_mm256_shuffle_pd(<4 x double> %a0, <4 x double> %a1) {2899; CHECK-LABEL: test_mm256_shuffle_pd:2900; CHECK:       # %bb.0:2901; CHECK-NEXT:    vshufpd {{.*#+}} ymm0 = ymm0[1],ymm1[1],ymm0[2],ymm1[2]2902; CHECK-NEXT:    ret{{[l|q]}}2903  %res = shufflevector <4 x double> %a0, <4 x double> %a1, <4 x i32> <i32 1, i32 5, i32 2, i32 6>2904  ret <4 x double> %res2905}2906 2907define <4 x double> @test_mm256_mask_shuffle_pd(<4 x double> %__W, i8 zeroext %__U, <4 x double> %__A, <4 x double> %__B) {2908; X86-LABEL: test_mm256_mask_shuffle_pd:2909; X86:       # %bb.0: # %entry2910; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2911; X86-NEXT:    kmovw %eax, %k12912; X86-NEXT:    vshufpd {{.*#+}} ymm0 {%k1} = ymm1[1],ymm2[1],ymm1[2],ymm2[2]2913; X86-NEXT:    retl2914;2915; X64-LABEL: test_mm256_mask_shuffle_pd:2916; X64:       # %bb.0: # %entry2917; X64-NEXT:    kmovw %edi, %k12918; X64-NEXT:    vshufpd {{.*#+}} ymm0 {%k1} = ymm1[1],ymm2[1],ymm1[2],ymm2[2]2919; X64-NEXT:    retq2920entry:2921  %shufp = shufflevector <4 x double> %__A, <4 x double> %__B, <4 x i32> <i32 1, i32 5, i32 2, i32 6>2922  %0 = bitcast i8 %__U to <8 x i1>2923  %extract = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>2924  %1 = select <4 x i1> %extract, <4 x double> %shufp, <4 x double> %__W2925  ret <4 x double> %12926}2927 2928define <4 x double> @test_mm256_maskz_shuffle_pd(i8 zeroext %__U, <4 x double> %__A, <4 x double> %__B) {2929; X86-LABEL: test_mm256_maskz_shuffle_pd:2930; X86:       # %bb.0: # %entry2931; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2932; X86-NEXT:    kmovw %eax, %k12933; X86-NEXT:    vshufpd {{.*#+}} ymm0 {%k1} {z} = ymm0[1],ymm1[1],ymm0[2],ymm1[2]2934; X86-NEXT:    retl2935;2936; X64-LABEL: test_mm256_maskz_shuffle_pd:2937; X64:       # %bb.0: # %entry2938; X64-NEXT:    kmovw %edi, %k12939; X64-NEXT:    vshufpd {{.*#+}} ymm0 {%k1} {z} = ymm0[1],ymm1[1],ymm0[2],ymm1[2]2940; X64-NEXT:    retq2941entry:2942  %shufp = shufflevector <4 x double> %__A, <4 x double> %__B, <4 x i32> <i32 1, i32 5, i32 2, i32 6>2943  %0 = bitcast i8 %__U to <8 x i1>2944  %extract = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>2945  %1 = select <4 x i1> %extract, <4 x double> %shufp, <4 x double> zeroinitializer2946  ret <4 x double> %12947}2948 2949define <4 x float> @test_mm_shuffle_ps(<4 x float> %a0, <4 x float> %a1) {2950; CHECK-LABEL: test_mm_shuffle_ps:2951; CHECK:       # %bb.0:2952; CHECK-NEXT:    vshufps {{.*#+}} xmm0 = xmm0[0,1],xmm1[0,0]2953; CHECK-NEXT:    ret{{[l|q]}}2954  %res = shufflevector <4 x float> %a0, <4 x float> %a1, <4 x i32> <i32 0, i32 1, i32 4, i32 4>2955  ret <4 x float> %res2956}2957 2958define <4 x float> @test_mm_mask_shuffle_ps(<4 x float> %__W, i8 zeroext %__U, <4 x float> %__A, <4 x float> %__B) {2959; X86-LABEL: test_mm_mask_shuffle_ps:2960; X86:       # %bb.0: # %entry2961; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2962; X86-NEXT:    kmovw %eax, %k12963; X86-NEXT:    vshufps {{.*#+}} xmm0 {%k1} = xmm1[0,1],xmm2[0,0]2964; X86-NEXT:    retl2965;2966; X64-LABEL: test_mm_mask_shuffle_ps:2967; X64:       # %bb.0: # %entry2968; X64-NEXT:    kmovw %edi, %k12969; X64-NEXT:    vshufps {{.*#+}} xmm0 {%k1} = xmm1[0,1],xmm2[0,0]2970; X64-NEXT:    retq2971entry:2972  %shufp = shufflevector <4 x float> %__A, <4 x float> %__B, <4 x i32> <i32 0, i32 1, i32 4, i32 4>2973  %0 = bitcast i8 %__U to <8 x i1>2974  %extract = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>2975  %1 = select <4 x i1> %extract, <4 x float> %shufp, <4 x float> %__W2976  ret <4 x float> %12977}2978 2979define <4 x float> @test_mm_maskz_shuffle_ps(i8 zeroext %__U, <4 x float> %__A, <4 x float> %__B) {2980; X86-LABEL: test_mm_maskz_shuffle_ps:2981; X86:       # %bb.0: # %entry2982; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax2983; X86-NEXT:    kmovw %eax, %k12984; X86-NEXT:    vshufps {{.*#+}} xmm0 {%k1} {z} = xmm0[0,1],xmm1[0,0]2985; X86-NEXT:    retl2986;2987; X64-LABEL: test_mm_maskz_shuffle_ps:2988; X64:       # %bb.0: # %entry2989; X64-NEXT:    kmovw %edi, %k12990; X64-NEXT:    vshufps {{.*#+}} xmm0 {%k1} {z} = xmm0[0,1],xmm1[0,0]2991; X64-NEXT:    retq2992entry:2993  %shufp = shufflevector <4 x float> %__A, <4 x float> %__B, <4 x i32> <i32 0, i32 1, i32 4, i32 4>2994  %0 = bitcast i8 %__U to <8 x i1>2995  %extract = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>2996  %1 = select <4 x i1> %extract, <4 x float> %shufp, <4 x float> zeroinitializer2997  ret <4 x float> %12998}2999 3000define <8 x float> @test_mm256_shuffle_ps(<8 x float> %a0, <8 x float> %a1) {3001; CHECK-LABEL: test_mm256_shuffle_ps:3002; CHECK:       # %bb.0:3003; CHECK-NEXT:    vshufps {{.*#+}} ymm0 = ymm0[0,1],ymm1[0,0],ymm0[4,5],ymm1[4,4]3004; CHECK-NEXT:    ret{{[l|q]}}3005  %res = shufflevector <8 x float> %a0, <8 x float> %a1, <8 x i32> <i32 0, i32 1, i32 8, i32 8, i32 4, i32 5, i32 12, i32 12>3006  ret <8 x float> %res3007}3008 3009define <8 x float> @test_mm256_mask_shuffle_ps(<8 x float> %a0, i8 %a1, <8 x float> %a2, <8 x float> %a3) {3010; X86-LABEL: test_mm256_mask_shuffle_ps:3011; X86:       # %bb.0:3012; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax3013; X86-NEXT:    kmovw %eax, %k13014; X86-NEXT:    vshufps {{.*#+}} ymm0 {%k1} = ymm1[0,1],ymm2[0,0],ymm1[4,5],ymm2[4,4]3015; X86-NEXT:    retl3016;3017; X64-LABEL: test_mm256_mask_shuffle_ps:3018; X64:       # %bb.0:3019; X64-NEXT:    kmovw %edi, %k13020; X64-NEXT:    vshufps {{.*#+}} ymm0 {%k1} = ymm1[0,1],ymm2[0,0],ymm1[4,5],ymm2[4,4]3021; X64-NEXT:    retq3022  %arg1 = bitcast i8 %a1 to <8 x i1>3023  %res0 = shufflevector <8 x float> %a2, <8 x float> %a3, <8 x i32> <i32 0, i32 1, i32 8, i32 8, i32 4, i32 5, i32 12, i32 12>3024  %res1 = select <8 x i1> %arg1, <8 x float> %res0, <8 x float> %a03025  ret <8 x float> %res13026}3027 3028define <8 x float> @test_mm256_maskz_shuffle_ps(i8 %a0, <8 x float> %a1, <8 x float> %a2) {3029; X86-LABEL: test_mm256_maskz_shuffle_ps:3030; X86:       # %bb.0:3031; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax3032; X86-NEXT:    kmovw %eax, %k13033; X86-NEXT:    vshufps {{.*#+}} ymm0 {%k1} {z} = ymm0[0,1],ymm1[0,0],ymm0[4,5],ymm1[4,4]3034; X86-NEXT:    retl3035;3036; X64-LABEL: test_mm256_maskz_shuffle_ps:3037; X64:       # %bb.0:3038; X64-NEXT:    kmovw %edi, %k13039; X64-NEXT:    vshufps {{.*#+}} ymm0 {%k1} {z} = ymm0[0,1],ymm1[0,0],ymm0[4,5],ymm1[4,4]3040; X64-NEXT:    retq3041  %arg0 = bitcast i8 %a0 to <8 x i1>3042  %res0 = shufflevector <8 x float> %a1, <8 x float> %a2, <8 x i32> <i32 0, i32 1, i32 8, i32 8, i32 4, i32 5, i32 12, i32 12>3043  %res1 = select <8 x i1> %arg0, <8 x float> %res0, <8 x float> zeroinitializer3044  ret <8 x float> %res13045}3046 3047define <4 x i64> @test_mm256_mask_mul_epi32(<4 x i64> %__W, i8 zeroext %__M, <4 x i64> %__X, <4 x i64> %__Y) nounwind {3048; X86-LABEL: test_mm256_mask_mul_epi32:3049; X86:       # %bb.0: # %entry3050; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax3051; X86-NEXT:    kmovw %eax, %k13052; X86-NEXT:    vpmuldq %ymm1, %ymm2, %ymm0 {%k1}3053; X86-NEXT:    retl3054;3055; X64-LABEL: test_mm256_mask_mul_epi32:3056; X64:       # %bb.0: # %entry3057; X64-NEXT:    kmovw %edi, %k13058; X64-NEXT:    vpmuldq %ymm1, %ymm2, %ymm0 {%k1}3059; X64-NEXT:    retq3060entry:3061  %tmp = shl <4 x i64> %__X, <i64 32, i64 32, i64 32, i64 32>3062  %tmp1 = ashr exact <4 x i64> %tmp, <i64 32, i64 32, i64 32, i64 32>3063  %tmp2 = shl <4 x i64> %__Y, <i64 32, i64 32, i64 32, i64 32>3064  %tmp3 = ashr exact <4 x i64> %tmp2, <i64 32, i64 32, i64 32, i64 32>3065  %tmp4 = mul nsw <4 x i64> %tmp3, %tmp13066  %tmp5 = bitcast i8 %__M to <8 x i1>3067  %extract.i = shufflevector <8 x i1> %tmp5, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3068  %tmp6 = select <4 x i1> %extract.i, <4 x i64> %tmp4, <4 x i64> %__W3069  ret <4 x i64> %tmp63070}3071 3072define <4 x i64> @test_mm256_maskz_mul_epi32(i8 zeroext %__M, <4 x i64> %__X, <4 x i64> %__Y) nounwind {3073; X86-LABEL: test_mm256_maskz_mul_epi32:3074; X86:       # %bb.0:3075; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax3076; X86-NEXT:    kmovw %eax, %k13077; X86-NEXT:    vpmuldq %ymm0, %ymm1, %ymm0 {%k1} {z}3078; X86-NEXT:    retl3079;3080; X64-LABEL: test_mm256_maskz_mul_epi32:3081; X64:       # %bb.0:3082; X64-NEXT:    kmovw %edi, %k13083; X64-NEXT:    vpmuldq %ymm0, %ymm1, %ymm0 {%k1} {z}3084; X64-NEXT:    retq3085  %tmp = shl <4 x i64> %__X, <i64 32, i64 32, i64 32, i64 32>3086  %tmp1 = ashr exact <4 x i64> %tmp, <i64 32, i64 32, i64 32, i64 32>3087  %tmp2 = shl <4 x i64> %__Y, <i64 32, i64 32, i64 32, i64 32>3088  %tmp3 = ashr exact <4 x i64> %tmp2, <i64 32, i64 32, i64 32, i64 32>3089  %tmp4 = mul nsw <4 x i64> %tmp3, %tmp13090  %tmp5 = bitcast i8 %__M to <8 x i1>3091  %extract.i = shufflevector <8 x i1> %tmp5, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3092  %tmp6 = select <4 x i1> %extract.i, <4 x i64> %tmp4, <4 x i64> zeroinitializer3093  ret <4 x i64> %tmp63094}3095 3096define <2 x i64> @test_mm_mask_mul_epi32(<2 x i64> %__W, i8 zeroext %__M, <2 x i64> %__X, <2 x i64> %__Y) nounwind {3097; X86-LABEL: test_mm_mask_mul_epi32:3098; X86:       # %bb.0:3099; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax3100; X86-NEXT:    kmovw %eax, %k13101; X86-NEXT:    vpmuldq %xmm1, %xmm2, %xmm0 {%k1}3102; X86-NEXT:    retl3103;3104; X64-LABEL: test_mm_mask_mul_epi32:3105; X64:       # %bb.0:3106; X64-NEXT:    kmovw %edi, %k13107; X64-NEXT:    vpmuldq %xmm1, %xmm2, %xmm0 {%k1}3108; X64-NEXT:    retq3109  %tmp = shl <2 x i64> %__X, <i64 32, i64 32>3110  %tmp1 = ashr exact <2 x i64> %tmp, <i64 32, i64 32>3111  %tmp2 = shl <2 x i64> %__Y, <i64 32, i64 32>3112  %tmp3 = ashr exact <2 x i64> %tmp2, <i64 32, i64 32>3113  %tmp4 = mul nsw <2 x i64> %tmp3, %tmp13114  %tmp5 = bitcast i8 %__M to <8 x i1>3115  %extract.i = shufflevector <8 x i1> %tmp5, <8 x i1> undef, <2 x i32> <i32 0, i32 1>3116  %tmp6 = select <2 x i1> %extract.i, <2 x i64> %tmp4, <2 x i64> %__W3117  ret <2 x i64> %tmp63118}3119 3120define <2 x i64> @test_mm_maskz_mul_epi32(i8 zeroext %__M, <2 x i64> %__X, <2 x i64> %__Y) nounwind {3121; X86-LABEL: test_mm_maskz_mul_epi32:3122; X86:       # %bb.0:3123; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax3124; X86-NEXT:    kmovw %eax, %k13125; X86-NEXT:    vpmuldq %xmm0, %xmm1, %xmm0 {%k1} {z}3126; X86-NEXT:    retl3127;3128; X64-LABEL: test_mm_maskz_mul_epi32:3129; X64:       # %bb.0:3130; X64-NEXT:    kmovw %edi, %k13131; X64-NEXT:    vpmuldq %xmm0, %xmm1, %xmm0 {%k1} {z}3132; X64-NEXT:    retq3133  %tmp = shl <2 x i64> %__X, <i64 32, i64 32>3134  %tmp1 = ashr exact <2 x i64> %tmp, <i64 32, i64 32>3135  %tmp2 = shl <2 x i64> %__Y, <i64 32, i64 32>3136  %tmp3 = ashr exact <2 x i64> %tmp2, <i64 32, i64 32>3137  %tmp4 = mul nsw <2 x i64> %tmp3, %tmp13138  %tmp5 = bitcast i8 %__M to <8 x i1>3139  %extract.i = shufflevector <8 x i1> %tmp5, <8 x i1> undef, <2 x i32> <i32 0, i32 1>3140  %tmp6 = select <2 x i1> %extract.i, <2 x i64> %tmp4, <2 x i64> zeroinitializer3141  ret <2 x i64> %tmp63142}3143 3144define <4 x i64> @test_mm256_mask_mul_epu32(<4 x i64> %__W, i8 zeroext %__M, <4 x i64> %__X, <4 x i64> %__Y) nounwind {3145; X86-LABEL: test_mm256_mask_mul_epu32:3146; X86:       # %bb.0: # %entry3147; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax3148; X86-NEXT:    kmovw %eax, %k13149; X86-NEXT:    vpmuludq %ymm1, %ymm2, %ymm0 {%k1}3150; X86-NEXT:    retl3151;3152; X64-LABEL: test_mm256_mask_mul_epu32:3153; X64:       # %bb.0: # %entry3154; X64-NEXT:    kmovw %edi, %k13155; X64-NEXT:    vpmuludq %ymm1, %ymm2, %ymm0 {%k1}3156; X64-NEXT:    retq3157entry:3158  %tmp = and <4 x i64> %__X, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>3159  %tmp1 = and <4 x i64> %__Y, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>3160  %tmp2 = mul nuw <4 x i64> %tmp1, %tmp3161  %tmp3 = bitcast i8 %__M to <8 x i1>3162  %extract.i = shufflevector <8 x i1> %tmp3, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3163  %tmp4 = select <4 x i1> %extract.i, <4 x i64> %tmp2, <4 x i64> %__W3164  ret <4 x i64> %tmp43165}3166 3167define <4 x i64> @test_mm256_maskz_mul_epu32(i8 zeroext %__M, <4 x i64> %__X, <4 x i64> %__Y) nounwind {3168; X86-LABEL: test_mm256_maskz_mul_epu32:3169; X86:       # %bb.0: # %entry3170; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax3171; X86-NEXT:    kmovw %eax, %k13172; X86-NEXT:    vpmuludq %ymm0, %ymm1, %ymm0 {%k1} {z}3173; X86-NEXT:    retl3174;3175; X64-LABEL: test_mm256_maskz_mul_epu32:3176; X64:       # %bb.0: # %entry3177; X64-NEXT:    kmovw %edi, %k13178; X64-NEXT:    vpmuludq %ymm0, %ymm1, %ymm0 {%k1} {z}3179; X64-NEXT:    retq3180entry:3181  %tmp = and <4 x i64> %__X, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>3182  %tmp1 = and <4 x i64> %__Y, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>3183  %tmp2 = mul nuw <4 x i64> %tmp1, %tmp3184  %tmp3 = bitcast i8 %__M to <8 x i1>3185  %extract.i = shufflevector <8 x i1> %tmp3, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3186  %tmp4 = select <4 x i1> %extract.i, <4 x i64> %tmp2, <4 x i64> zeroinitializer3187  ret <4 x i64> %tmp43188}3189 3190define <2 x i64> @test_mm_mask_mul_epu32(<2 x i64> %__W, i8 zeroext %__M, <2 x i64> %__X, <2 x i64> %__Y) nounwind {3191; X86-LABEL: test_mm_mask_mul_epu32:3192; X86:       # %bb.0: # %entry3193; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax3194; X86-NEXT:    kmovw %eax, %k13195; X86-NEXT:    vpmuludq %xmm1, %xmm2, %xmm0 {%k1}3196; X86-NEXT:    retl3197;3198; X64-LABEL: test_mm_mask_mul_epu32:3199; X64:       # %bb.0: # %entry3200; X64-NEXT:    kmovw %edi, %k13201; X64-NEXT:    vpmuludq %xmm1, %xmm2, %xmm0 {%k1}3202; X64-NEXT:    retq3203entry:3204  %tmp = and <2 x i64> %__X, <i64 4294967295, i64 4294967295>3205  %tmp1 = and <2 x i64> %__Y, <i64 4294967295, i64 4294967295>3206  %tmp2 = mul nuw <2 x i64> %tmp1, %tmp3207  %tmp3 = bitcast i8 %__M to <8 x i1>3208  %extract.i = shufflevector <8 x i1> %tmp3, <8 x i1> undef, <2 x i32> <i32 0, i32 1>3209  %tmp4 = select <2 x i1> %extract.i, <2 x i64> %tmp2, <2 x i64> %__W3210  ret <2 x i64> %tmp43211}3212 3213define <2 x i64> @test_mm_maskz_mul_epu32(i8 zeroext %__M, <2 x i64> %__X, <2 x i64> %__Y) nounwind {3214; X86-LABEL: test_mm_maskz_mul_epu32:3215; X86:       # %bb.0: # %entry3216; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax3217; X86-NEXT:    kmovw %eax, %k13218; X86-NEXT:    vpmuludq %xmm0, %xmm1, %xmm0 {%k1} {z}3219; X86-NEXT:    retl3220;3221; X64-LABEL: test_mm_maskz_mul_epu32:3222; X64:       # %bb.0: # %entry3223; X64-NEXT:    kmovw %edi, %k13224; X64-NEXT:    vpmuludq %xmm0, %xmm1, %xmm0 {%k1} {z}3225; X64-NEXT:    retq3226entry:3227  %tmp = and <2 x i64> %__X, <i64 4294967295, i64 4294967295>3228  %tmp1 = and <2 x i64> %__Y, <i64 4294967295, i64 4294967295>3229  %tmp2 = mul nuw <2 x i64> %tmp1, %tmp3230  %tmp3 = bitcast i8 %__M to <8 x i1>3231  %extract.i = shufflevector <8 x i1> %tmp3, <8 x i1> undef, <2 x i32> <i32 0, i32 1>3232  %tmp4 = select <2 x i1> %extract.i, <2 x i64> %tmp2, <2 x i64> zeroinitializer3233  ret <2 x i64> %tmp43234}3235 3236define <2 x i64> @test_mm_cvtepi32_epi8(<2 x i64> %__A) {3237; CHECK-LABEL: test_mm_cvtepi32_epi8:3238; CHECK:       # %bb.0: # %entry3239; CHECK-NEXT:    vpmovdb %xmm0, %xmm03240; CHECK-NEXT:    ret{{[l|q]}}3241entry:3242  %0 = bitcast <2 x i64> %__A to <4 x i32>3243  %conv.i = trunc <4 x i32> %0 to <4 x i8>3244  %shuf.i = shufflevector <4 x i8> %conv.i, <4 x i8> zeroinitializer, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 4, i32 5, i32 6, i32 7, i32 4, i32 5, i32 6, i32 7>3245  %1 = bitcast <16 x i8> %shuf.i to <2 x i64>3246  ret <2 x i64> %13247}3248 3249define <2 x i64> @test_mm_cvtepi32_epi16(<2 x i64> %__A) {3250; CHECK-LABEL: test_mm_cvtepi32_epi16:3251; CHECK:       # %bb.0: # %entry3252; CHECK-NEXT:    vpmovdw %xmm0, %xmm03253; CHECK-NEXT:    ret{{[l|q]}}3254entry:3255  %0 = bitcast <2 x i64> %__A to <4 x i32>3256  %conv.i = trunc <4 x i32> %0 to <4 x i16>3257  %shuf.i = shufflevector <4 x i16> %conv.i, <4 x i16> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>3258  %1 = bitcast <8 x i16> %shuf.i to <2 x i64>3259  ret <2 x i64> %13260}3261 3262define <2 x i64> @test_mm_cvtepi64_epi8(<2 x i64> %__A) {3263; CHECK-LABEL: test_mm_cvtepi64_epi8:3264; CHECK:       # %bb.0: # %entry3265; CHECK-NEXT:    vpmovqb %xmm0, %xmm03266; CHECK-NEXT:    ret{{[l|q]}}3267entry:3268  %conv.i = trunc <2 x i64> %__A to <2 x i8>3269  %shuf.i = shufflevector <2 x i8> %conv.i, <2 x i8> zeroinitializer, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3>3270  %0 = bitcast <16 x i8> %shuf.i to <2 x i64>3271  ret <2 x i64> %03272}3273 3274define <2 x i64> @test_mm_cvtepi64_epi16(<2 x i64> %__A) {3275; CHECK-LABEL: test_mm_cvtepi64_epi16:3276; CHECK:       # %bb.0: # %entry3277; CHECK-NEXT:    vpmovqw %xmm0, %xmm03278; CHECK-NEXT:    ret{{[l|q]}}3279entry:3280  %conv.i = trunc <2 x i64> %__A to <2 x i16>3281  %shuf.i = shufflevector <2 x i16> %conv.i, <2 x i16> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3>3282  %0 = bitcast <8 x i16> %shuf.i to <2 x i64>3283  ret <2 x i64> %03284}3285 3286define <2 x i64> @test_mm_cvtepi64_epi32(<2 x i64> %__A) {3287; CHECK-LABEL: test_mm_cvtepi64_epi32:3288; CHECK:       # %bb.0: # %entry3289; CHECK-NEXT:    vpmovqd %xmm0, %xmm03290; CHECK-NEXT:    ret{{[l|q]}}3291entry:3292  %conv.i = trunc <2 x i64> %__A to <2 x i32>3293  %shuf.i = shufflevector <2 x i32> %conv.i, <2 x i32> zeroinitializer, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3294  %0 = bitcast <4 x i32> %shuf.i to <2 x i64>3295  ret <2 x i64> %03296}3297 3298define <2 x i64> @test_mm256_cvtepi32_epi16(<4 x i64> %__A) local_unnamed_addr #0 {3299; CHECK-LABEL: test_mm256_cvtepi32_epi16:3300; CHECK:       # %bb.0: # %entry3301; CHECK-NEXT:    vpmovdw %ymm0, %xmm03302; CHECK-NEXT:    vzeroupper3303; CHECK-NEXT:    ret{{[l|q]}}3304entry:3305  %0 = bitcast <4 x i64> %__A to <8 x i32>3306  %conv.i = trunc <8 x i32> %0 to <8 x i16>3307  %1 = bitcast <8 x i16> %conv.i to <2 x i64>3308  ret <2 x i64> %13309}3310 3311define <2 x i64> @test_mm256_mask_cvtepi32_epi16(<2 x i64> %__O, i8 zeroext %__M, <4 x i64> %__A) {3312; X86-LABEL: test_mm256_mask_cvtepi32_epi16:3313; X86:       # %bb.0: # %entry3314; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax3315; X86-NEXT:    kmovw %eax, %k13316; X86-NEXT:    vpmovdw %ymm1, %xmm0 {%k1}3317; X86-NEXT:    vzeroupper3318; X86-NEXT:    retl3319;3320; X64-LABEL: test_mm256_mask_cvtepi32_epi16:3321; X64:       # %bb.0: # %entry3322; X64-NEXT:    kmovw %edi, %k13323; X64-NEXT:    vpmovdw %ymm1, %xmm0 {%k1}3324; X64-NEXT:    vzeroupper3325; X64-NEXT:    retq3326entry:3327  %0 = bitcast <4 x i64> %__A to <8 x i32>3328  %1 = bitcast <2 x i64> %__O to <8 x i16>3329  %2 = tail call <8 x i16> @llvm.x86.avx512.mask.pmov.dw.256(<8 x i32> %0, <8 x i16> %1, i8 %__M)3330  %3 = bitcast <8 x i16> %2 to <2 x i64>3331  ret <2 x i64> %33332}3333 3334define <2 x i64> @test_mm256_maskz_cvtepi32_epi16(i8 zeroext %__M, <4 x i64> %__A) {3335; X86-LABEL: test_mm256_maskz_cvtepi32_epi16:3336; X86:       # %bb.0: # %entry3337; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax3338; X86-NEXT:    kmovw %eax, %k13339; X86-NEXT:    vpmovdw %ymm0, %xmm0 {%k1} {z}3340; X86-NEXT:    vzeroupper3341; X86-NEXT:    retl3342;3343; X64-LABEL: test_mm256_maskz_cvtepi32_epi16:3344; X64:       # %bb.0: # %entry3345; X64-NEXT:    kmovw %edi, %k13346; X64-NEXT:    vpmovdw %ymm0, %xmm0 {%k1} {z}3347; X64-NEXT:    vzeroupper3348; X64-NEXT:    retq3349entry:3350  %0 = bitcast <4 x i64> %__A to <8 x i32>3351  %1 = tail call <8 x i16> @llvm.x86.avx512.mask.pmov.dw.256(<8 x i32> %0, <8 x i16> zeroinitializer, i8 %__M)3352  %2 = bitcast <8 x i16> %1 to <2 x i64>3353  ret <2 x i64> %23354}3355 3356define <2 x i64> @test_mm256_cvtepi64_epi32(<4 x i64> %__A) local_unnamed_addr #0 {3357; CHECK-LABEL: test_mm256_cvtepi64_epi32:3358; CHECK:       # %bb.0: # %entry3359; CHECK-NEXT:    vpmovqd %ymm0, %xmm03360; CHECK-NEXT:    vzeroupper3361; CHECK-NEXT:    ret{{[l|q]}}3362entry:3363  %conv.i = trunc <4 x i64> %__A to <4 x i32>3364  %0 = bitcast <4 x i32> %conv.i to <2 x i64>3365  ret <2 x i64> %03366}3367 3368define <2 x i64> @test_mm256_mask_cvtepi64_epi32(<2 x i64> %__O, i8 zeroext %__M, <4 x i64> %__A) {3369; X86-LABEL: test_mm256_mask_cvtepi64_epi32:3370; X86:       # %bb.0: # %entry3371; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax3372; X86-NEXT:    kmovw %eax, %k13373; X86-NEXT:    vpmovqd %ymm1, %xmm0 {%k1}3374; X86-NEXT:    vzeroupper3375; X86-NEXT:    retl3376;3377; X64-LABEL: test_mm256_mask_cvtepi64_epi32:3378; X64:       # %bb.0: # %entry3379; X64-NEXT:    kmovw %edi, %k13380; X64-NEXT:    vpmovqd %ymm1, %xmm0 {%k1}3381; X64-NEXT:    vzeroupper3382; X64-NEXT:    retq3383entry:3384  %conv.i.i = trunc <4 x i64> %__A to <4 x i32>3385  %0 = bitcast <2 x i64> %__O to <4 x i32>3386  %1 = bitcast i8 %__M to <8 x i1>3387  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3388  %2 = select <4 x i1> %extract.i, <4 x i32> %conv.i.i, <4 x i32> %03389  %3 = bitcast <4 x i32> %2 to <2 x i64>3390  ret <2 x i64> %33391}3392 3393define <2 x i64> @test_mm256_maskz_cvtepi64_epi32(i8 zeroext %__M, <4 x i64> %__A) {3394; X86-LABEL: test_mm256_maskz_cvtepi64_epi32:3395; X86:       # %bb.0: # %entry3396; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax3397; X86-NEXT:    kmovw %eax, %k13398; X86-NEXT:    vpmovqd %ymm0, %xmm0 {%k1} {z}3399; X86-NEXT:    vzeroupper3400; X86-NEXT:    retl3401;3402; X64-LABEL: test_mm256_maskz_cvtepi64_epi32:3403; X64:       # %bb.0: # %entry3404; X64-NEXT:    kmovw %edi, %k13405; X64-NEXT:    vpmovqd %ymm0, %xmm0 {%k1} {z}3406; X64-NEXT:    vzeroupper3407; X64-NEXT:    retq3408entry:3409  %conv.i.i = trunc <4 x i64> %__A to <4 x i32>3410  %0 = bitcast i8 %__M to <8 x i1>3411  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3412  %1 = select <4 x i1> %extract.i, <4 x i32> %conv.i.i, <4 x i32> zeroinitializer3413  %2 = bitcast <4 x i32> %1 to <2 x i64>3414  ret <2 x i64> %23415}3416 3417define <2 x i64> @test_mm256_cvtepi64_epi8(<4 x i64> %__A) {3418; CHECK-LABEL: test_mm256_cvtepi64_epi8:3419; CHECK:       # %bb.0: # %entry3420; CHECK-NEXT:    vpmovqb %ymm0, %xmm03421; CHECK-NEXT:    vzeroupper3422; CHECK-NEXT:    ret{{[l|q]}}3423entry:3424  %conv.i = trunc <4 x i64> %__A to <4 x i8>3425  %shuf.i = shufflevector <4 x i8> %conv.i, <4 x i8> zeroinitializer, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 4, i32 5, i32 6, i32 7, i32 4, i32 5, i32 6, i32 7>3426  %0 = bitcast <16 x i8> %shuf.i to <2 x i64>3427  ret <2 x i64> %03428}3429 3430define <2 x i64> @test_mm256_cvtepi64_epi16(<4 x i64> %__A) {3431; CHECK-LABEL: test_mm256_cvtepi64_epi16:3432; CHECK:       # %bb.0: # %entry3433; CHECK-NEXT:    vpmovqw %ymm0, %xmm03434; CHECK-NEXT:    vzeroupper3435; CHECK-NEXT:    ret{{[l|q]}}3436entry:3437  %conv.i = trunc <4 x i64> %__A to <4 x i16>3438  %shuf.i = shufflevector <4 x i16> %conv.i, <4 x i16> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>3439  %0 = bitcast <8 x i16> %shuf.i to <2 x i64>3440  ret <2 x i64> %03441}3442 3443define <2 x i64> @test_mm256_cvtepi32_epi8(<4 x i64> %__A) {3444; CHECK-LABEL: test_mm256_cvtepi32_epi8:3445; CHECK:       # %bb.0: # %entry3446; CHECK-NEXT:    vpmovdb %ymm0, %xmm03447; CHECK-NEXT:    vzeroupper3448; CHECK-NEXT:    ret{{[l|q]}}3449entry:3450  %0 = bitcast <4 x i64> %__A to <8 x i32>3451  %conv.i = trunc <8 x i32> %0 to <8 x i8>3452  %shuf.i = shufflevector <8 x i8> %conv.i, <8 x i8> 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 12, i32 13, i32 14, i32 15>3453  %1 = bitcast <16 x i8> %shuf.i to <2 x i64>3454  ret <2 x i64> %13455}3456 3457define <2 x i64> @test_mm_ternarylogic_epi32(<2 x i64> %__A, <2 x i64> %__B, <2 x i64> %__C) {3458; CHECK-LABEL: test_mm_ternarylogic_epi32:3459; CHECK:       # %bb.0: # %entry3460; CHECK-NEXT:    vpternlogd {{.*#+}} xmm0 = xmm1 & ~(xmm0 | xmm2)3461; CHECK-NEXT:    ret{{[l|q]}}3462entry:3463  %0 = bitcast <2 x i64> %__A to <4 x i32>3464  %1 = bitcast <2 x i64> %__B to <4 x i32>3465  %2 = bitcast <2 x i64> %__C to <4 x i32>3466  %3 = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %0, <4 x i32> %1, <4 x i32> %2, i32 4)3467  %4 = bitcast <4 x i32> %3 to <2 x i64>3468  ret <2 x i64> %43469}3470 3471declare <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32>, <4 x i32>, <4 x i32>, i32) #23472 3473define <2 x i64> @test_mm_mask_ternarylogic_epi32(<2 x i64> %__A, i8 zeroext %__U, <2 x i64> %__B, <2 x i64> %__C) {3474; X86-LABEL: test_mm_mask_ternarylogic_epi32:3475; X86:       # %bb.0: # %entry3476; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax3477; X86-NEXT:    kmovw %eax, %k13478; X86-NEXT:    vpternlogd {{.*#+}} xmm0 {%k1} = xmm1 & ~(xmm0 | xmm2)3479; X86-NEXT:    retl3480;3481; X64-LABEL: test_mm_mask_ternarylogic_epi32:3482; X64:       # %bb.0: # %entry3483; X64-NEXT:    kmovw %edi, %k13484; X64-NEXT:    vpternlogd {{.*#+}} xmm0 {%k1} = xmm1 & ~(xmm0 | xmm2)3485; X64-NEXT:    retq3486entry:3487  %0 = bitcast <2 x i64> %__A to <4 x i32>3488  %1 = bitcast <2 x i64> %__B to <4 x i32>3489  %2 = bitcast <2 x i64> %__C to <4 x i32>3490  %3 = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %0, <4 x i32> %1, <4 x i32> %2, i32 4)3491  %4 = bitcast i8 %__U to <8 x i1>3492  %extract = shufflevector <8 x i1> %4, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3493  %5 = select <4 x i1> %extract, <4 x i32> %3, <4 x i32> %03494  %6 = bitcast <4 x i32> %5 to <2 x i64>3495  ret <2 x i64> %63496}3497 3498define <2 x i64> @test_mm_maskz_ternarylogic_epi32(i8 zeroext %__U, <2 x i64> %__A, <2 x i64> %__B, <2 x i64> %__C) {3499; X86-LABEL: test_mm_maskz_ternarylogic_epi32:3500; X86:       # %bb.0: # %entry3501; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax3502; X86-NEXT:    kmovw %eax, %k13503; X86-NEXT:    vpternlogd {{.*#+}} xmm0 {%k1} {z} = xmm1 & ~(xmm0 | xmm2)3504; X86-NEXT:    retl3505;3506; X64-LABEL: test_mm_maskz_ternarylogic_epi32:3507; X64:       # %bb.0: # %entry3508; X64-NEXT:    kmovw %edi, %k13509; X64-NEXT:    vpternlogd {{.*#+}} xmm0 {%k1} {z} = xmm1 & ~(xmm0 | xmm2)3510; X64-NEXT:    retq3511entry:3512  %0 = bitcast <2 x i64> %__A to <4 x i32>3513  %1 = bitcast <2 x i64> %__B to <4 x i32>3514  %2 = bitcast <2 x i64> %__C to <4 x i32>3515  %3 = tail call <4 x i32> @llvm.x86.avx512.pternlog.d.128(<4 x i32> %0, <4 x i32> %1, <4 x i32> %2, i32 4)3516  %4 = bitcast i8 %__U to <8 x i1>3517  %extract = shufflevector <8 x i1> %4, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3518  %5 = select <4 x i1> %extract, <4 x i32> %3, <4 x i32> zeroinitializer3519  %6 = bitcast <4 x i32> %5 to <2 x i64>3520  ret <2 x i64> %63521}3522 3523define <4 x i64> @test_mm256_ternarylogic_epi32(<4 x i64> %__A, <4 x i64> %__B, <4 x i64> %__C) {3524; CHECK-LABEL: test_mm256_ternarylogic_epi32:3525; CHECK:       # %bb.0: # %entry3526; CHECK-NEXT:    vpternlogd {{.*#+}} ymm0 = ymm1 & ~(ymm0 | ymm2)3527; CHECK-NEXT:    ret{{[l|q]}}3528entry:3529  %0 = bitcast <4 x i64> %__A to <8 x i32>3530  %1 = bitcast <4 x i64> %__B to <8 x i32>3531  %2 = bitcast <4 x i64> %__C to <8 x i32>3532  %3 = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %0, <8 x i32> %1, <8 x i32> %2, i32 4)3533  %4 = bitcast <8 x i32> %3 to <4 x i64>3534  ret <4 x i64> %43535}3536 3537declare <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32>, <8 x i32>, <8 x i32>, i32) #23538 3539define <4 x i64> @test_mm256_mask_ternarylogic_epi32(<4 x i64> %__A, i8 zeroext %__U, <4 x i64> %__B, <4 x i64> %__C) {3540; X86-LABEL: test_mm256_mask_ternarylogic_epi32:3541; X86:       # %bb.0: # %entry3542; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax3543; X86-NEXT:    kmovw %eax, %k13544; X86-NEXT:    vpternlogd {{.*#+}} ymm0 {%k1} = ymm1 & ~(ymm0 | ymm2)3545; X86-NEXT:    retl3546;3547; X64-LABEL: test_mm256_mask_ternarylogic_epi32:3548; X64:       # %bb.0: # %entry3549; X64-NEXT:    kmovw %edi, %k13550; X64-NEXT:    vpternlogd {{.*#+}} ymm0 {%k1} = ymm1 & ~(ymm0 | ymm2)3551; X64-NEXT:    retq3552entry:3553  %0 = bitcast <4 x i64> %__A to <8 x i32>3554  %1 = bitcast <4 x i64> %__B to <8 x i32>3555  %2 = bitcast <4 x i64> %__C to <8 x i32>3556  %3 = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %0, <8 x i32> %1, <8 x i32> %2, i32 4)3557  %4 = bitcast i8 %__U to <8 x i1>3558  %5 = select <8 x i1> %4, <8 x i32> %3, <8 x i32> %03559  %6 = bitcast <8 x i32> %5 to <4 x i64>3560  ret <4 x i64> %63561}3562 3563define <4 x i64> @test_mm256_maskz_ternarylogic_epi32(i8 zeroext %__U, <4 x i64> %__A, <4 x i64> %__B, <4 x i64> %__C) {3564; X86-LABEL: test_mm256_maskz_ternarylogic_epi32:3565; X86:       # %bb.0: # %entry3566; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax3567; X86-NEXT:    kmovw %eax, %k13568; X86-NEXT:    vpternlogd {{.*#+}} ymm0 {%k1} {z} = ymm1 & ~(ymm0 | ymm2)3569; X86-NEXT:    retl3570;3571; X64-LABEL: test_mm256_maskz_ternarylogic_epi32:3572; X64:       # %bb.0: # %entry3573; X64-NEXT:    kmovw %edi, %k13574; X64-NEXT:    vpternlogd {{.*#+}} ymm0 {%k1} {z} = ymm1 & ~(ymm0 | ymm2)3575; X64-NEXT:    retq3576entry:3577  %0 = bitcast <4 x i64> %__A to <8 x i32>3578  %1 = bitcast <4 x i64> %__B to <8 x i32>3579  %2 = bitcast <4 x i64> %__C to <8 x i32>3580  %3 = tail call <8 x i32> @llvm.x86.avx512.pternlog.d.256(<8 x i32> %0, <8 x i32> %1, <8 x i32> %2, i32 4)3581  %4 = bitcast i8 %__U to <8 x i1>3582  %5 = select <8 x i1> %4, <8 x i32> %3, <8 x i32> zeroinitializer3583  %6 = bitcast <8 x i32> %5 to <4 x i64>3584  ret <4 x i64> %63585}3586 3587define <2 x i64> @test_mm_ternarylogic_epi64(<2 x i64> %__A, <2 x i64> %__B, <2 x i64> %__C) {3588; CHECK-LABEL: test_mm_ternarylogic_epi64:3589; CHECK:       # %bb.0: # %entry3590; CHECK-NEXT:    vpternlogq {{.*#+}} xmm0 = xmm1 & ~(xmm0 | xmm2)3591; CHECK-NEXT:    ret{{[l|q]}}3592entry:3593  %0 = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %__A, <2 x i64> %__B, <2 x i64> %__C, i32 4)3594  ret <2 x i64> %03595}3596 3597declare <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64>, <2 x i64>, <2 x i64>, i32) #23598 3599define <2 x i64> @test_mm_mask_ternarylogic_epi64(<2 x i64> %__A, i8 zeroext %__U, <2 x i64> %__B, <2 x i64> %__C) {3600; X86-LABEL: test_mm_mask_ternarylogic_epi64:3601; X86:       # %bb.0: # %entry3602; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax3603; X86-NEXT:    kmovw %eax, %k13604; X86-NEXT:    vpternlogq {{.*#+}} xmm0 {%k1} = xmm1 & ~(xmm0 | xmm2)3605; X86-NEXT:    retl3606;3607; X64-LABEL: test_mm_mask_ternarylogic_epi64:3608; X64:       # %bb.0: # %entry3609; X64-NEXT:    kmovw %edi, %k13610; X64-NEXT:    vpternlogq {{.*#+}} xmm0 {%k1} = xmm1 & ~(xmm0 | xmm2)3611; X64-NEXT:    retq3612entry:3613  %0 = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %__A, <2 x i64> %__B, <2 x i64> %__C, i32 4)3614  %1 = bitcast i8 %__U to <8 x i1>3615  %extract = shufflevector <8 x i1> %1, <8 x i1> undef, <2 x i32> <i32 0, i32 1>3616  %2 = select <2 x i1> %extract, <2 x i64> %0, <2 x i64> %__A3617  ret <2 x i64> %23618}3619 3620define <2 x i64> @test_mm_maskz_ternarylogic_epi64(i8 zeroext %__U, <2 x i64> %__A, <2 x i64> %__B, <2 x i64> %__C) {3621; X86-LABEL: test_mm_maskz_ternarylogic_epi64:3622; X86:       # %bb.0: # %entry3623; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax3624; X86-NEXT:    kmovw %eax, %k13625; X86-NEXT:    vpternlogq {{.*#+}} xmm0 {%k1} {z} = xmm1 & ~(xmm0 | xmm2)3626; X86-NEXT:    retl3627;3628; X64-LABEL: test_mm_maskz_ternarylogic_epi64:3629; X64:       # %bb.0: # %entry3630; X64-NEXT:    kmovw %edi, %k13631; X64-NEXT:    vpternlogq {{.*#+}} xmm0 {%k1} {z} = xmm1 & ~(xmm0 | xmm2)3632; X64-NEXT:    retq3633entry:3634  %0 = tail call <2 x i64> @llvm.x86.avx512.pternlog.q.128(<2 x i64> %__A, <2 x i64> %__B, <2 x i64> %__C, i32 4)3635  %1 = bitcast i8 %__U to <8 x i1>3636  %extract = shufflevector <8 x i1> %1, <8 x i1> undef, <2 x i32> <i32 0, i32 1>3637  %2 = select <2 x i1> %extract, <2 x i64> %0, <2 x i64> zeroinitializer3638  ret <2 x i64> %23639}3640 3641define <4 x i64> @test_mm256_ternarylogic_epi64(<4 x i64> %__A, <4 x i64> %__B, <4 x i64> %__C) {3642; CHECK-LABEL: test_mm256_ternarylogic_epi64:3643; CHECK:       # %bb.0: # %entry3644; CHECK-NEXT:    vpternlogq {{.*#+}} ymm0 = ymm1 & ~(ymm0 | ymm2)3645; CHECK-NEXT:    ret{{[l|q]}}3646entry:3647  %0 = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %__A, <4 x i64> %__B, <4 x i64> %__C, i32 4)3648  ret <4 x i64> %03649}3650 3651declare <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64>, <4 x i64>, <4 x i64>, i32) #23652 3653define <4 x i64> @test_mm256_mask_ternarylogic_epi64(<4 x i64> %__A, i8 zeroext %__U, <4 x i64> %__B, <4 x i64> %__C) {3654; X86-LABEL: test_mm256_mask_ternarylogic_epi64:3655; X86:       # %bb.0: # %entry3656; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax3657; X86-NEXT:    kmovw %eax, %k13658; X86-NEXT:    vpternlogq {{.*#+}} ymm0 {%k1} = ymm1 & ~(ymm0 | ymm2)3659; X86-NEXT:    retl3660;3661; X64-LABEL: test_mm256_mask_ternarylogic_epi64:3662; X64:       # %bb.0: # %entry3663; X64-NEXT:    kmovw %edi, %k13664; X64-NEXT:    vpternlogq {{.*#+}} ymm0 {%k1} = ymm1 & ~(ymm0 | ymm2)3665; X64-NEXT:    retq3666entry:3667  %0 = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %__A, <4 x i64> %__B, <4 x i64> %__C, i32 4)3668  %1 = bitcast i8 %__U to <8 x i1>3669  %extract = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3670  %2 = select <4 x i1> %extract, <4 x i64> %0, <4 x i64> %__A3671  ret <4 x i64> %23672}3673 3674define <4 x i64> @test_mm256_maskz_ternarylogic_epi64(i8 zeroext %__U, <4 x i64> %__A, <4 x i64> %__B, <4 x i64> %__C) {3675; X86-LABEL: test_mm256_maskz_ternarylogic_epi64:3676; X86:       # %bb.0: # %entry3677; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax3678; X86-NEXT:    kmovw %eax, %k13679; X86-NEXT:    vpternlogq {{.*#+}} ymm0 {%k1} {z} = ymm1 & ~(ymm0 | ymm2)3680; X86-NEXT:    retl3681;3682; X64-LABEL: test_mm256_maskz_ternarylogic_epi64:3683; X64:       # %bb.0: # %entry3684; X64-NEXT:    kmovw %edi, %k13685; X64-NEXT:    vpternlogq {{.*#+}} ymm0 {%k1} {z} = ymm1 & ~(ymm0 | ymm2)3686; X64-NEXT:    retq3687entry:3688  %0 = tail call <4 x i64> @llvm.x86.avx512.pternlog.q.256(<4 x i64> %__A, <4 x i64> %__B, <4 x i64> %__C, i32 4)3689  %1 = bitcast i8 %__U to <8 x i1>3690  %extract = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3691  %2 = select <4 x i1> %extract, <4 x i64> %0, <4 x i64> zeroinitializer3692  ret <4 x i64> %23693}3694 3695define <2 x i64> @test_mm_mask2_permutex2var_epi32(<2 x i64> %__A, <2 x i64> %__I, i8 zeroext %__U, <2 x i64> %__B) {3696; X86-LABEL: test_mm_mask2_permutex2var_epi32:3697; X86:       # %bb.0: # %entry3698; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax3699; X86-NEXT:    kmovw %eax, %k13700; X86-NEXT:    vpermi2d %xmm2, %xmm0, %xmm1 {%k1}3701; X86-NEXT:    vmovdqa %xmm1, %xmm03702; X86-NEXT:    retl3703;3704; X64-LABEL: test_mm_mask2_permutex2var_epi32:3705; X64:       # %bb.0: # %entry3706; X64-NEXT:    kmovw %edi, %k13707; X64-NEXT:    vpermi2d %xmm2, %xmm0, %xmm1 {%k1}3708; X64-NEXT:    vmovdqa %xmm1, %xmm03709; X64-NEXT:    retq3710entry:3711  %0 = bitcast <2 x i64> %__A to <4 x i32>3712  %1 = bitcast <2 x i64> %__I to <4 x i32>3713  %2 = bitcast <2 x i64> %__B to <4 x i32>3714  %3 = tail call <4 x i32> @llvm.x86.avx512.vpermi2var.d.128(<4 x i32> %0, <4 x i32> %1, <4 x i32> %2)3715  %4 = bitcast i8 %__U to <8 x i1>3716  %extract.i = shufflevector <8 x i1> %4, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3717  %5 = select <4 x i1> %extract.i, <4 x i32> %3, <4 x i32> %13718  %6 = bitcast <4 x i32> %5 to <2 x i64>3719  ret <2 x i64> %63720}3721 3722define <4 x i64> @test_mm256_mask2_permutex2var_epi32(<4 x i64> %__A, <4 x i64> %__I, i8 zeroext %__U, <4 x i64> %__B) {3723; X86-LABEL: test_mm256_mask2_permutex2var_epi32:3724; X86:       # %bb.0: # %entry3725; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax3726; X86-NEXT:    kmovw %eax, %k13727; X86-NEXT:    vpermi2d %ymm2, %ymm0, %ymm1 {%k1}3728; X86-NEXT:    vmovdqa %ymm1, %ymm03729; X86-NEXT:    retl3730;3731; X64-LABEL: test_mm256_mask2_permutex2var_epi32:3732; X64:       # %bb.0: # %entry3733; X64-NEXT:    kmovw %edi, %k13734; X64-NEXT:    vpermi2d %ymm2, %ymm0, %ymm1 {%k1}3735; X64-NEXT:    vmovdqa %ymm1, %ymm03736; X64-NEXT:    retq3737entry:3738  %0 = bitcast <4 x i64> %__A to <8 x i32>3739  %1 = bitcast <4 x i64> %__I to <8 x i32>3740  %2 = bitcast <4 x i64> %__B to <8 x i32>3741  %3 = tail call <8 x i32> @llvm.x86.avx512.vpermi2var.d.256(<8 x i32> %0, <8 x i32> %1, <8 x i32> %2)3742  %4 = bitcast i8 %__U to <8 x i1>3743  %5 = select <8 x i1> %4, <8 x i32> %3, <8 x i32> %13744  %6 = bitcast <8 x i32> %5 to <4 x i64>3745  ret <4 x i64> %63746}3747 3748define <2 x double> @test_mm_mask2_permutex2var_pd(<2 x double> %__A, <2 x i64> %__I, i8 zeroext %__U, <2 x double> %__B) {3749; X86-LABEL: test_mm_mask2_permutex2var_pd:3750; X86:       # %bb.0: # %entry3751; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax3752; X86-NEXT:    kmovw %eax, %k13753; X86-NEXT:    vpermi2pd %xmm2, %xmm0, %xmm1 {%k1}3754; X86-NEXT:    vmovapd %xmm1, %xmm03755; X86-NEXT:    retl3756;3757; X64-LABEL: test_mm_mask2_permutex2var_pd:3758; X64:       # %bb.0: # %entry3759; X64-NEXT:    kmovw %edi, %k13760; X64-NEXT:    vpermi2pd %xmm2, %xmm0, %xmm1 {%k1}3761; X64-NEXT:    vmovapd %xmm1, %xmm03762; X64-NEXT:    retq3763entry:3764  %0 = tail call <2 x double> @llvm.x86.avx512.vpermi2var.pd.128(<2 x double> %__A, <2 x i64> %__I, <2 x double> %__B)3765  %1 = bitcast <2 x i64> %__I to <2 x double>3766  %2 = bitcast i8 %__U to <8 x i1>3767  %extract.i = shufflevector <8 x i1> %2, <8 x i1> undef, <2 x i32> <i32 0, i32 1>3768  %3 = select <2 x i1> %extract.i, <2 x double> %0, <2 x double> %13769  ret <2 x double> %33770}3771 3772define <4 x double> @test_mm256_mask2_permutex2var_pd(<4 x double> %__A, <4 x i64> %__I, i8 zeroext %__U, <4 x double> %__B) {3773; X86-LABEL: test_mm256_mask2_permutex2var_pd:3774; X86:       # %bb.0: # %entry3775; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax3776; X86-NEXT:    kmovw %eax, %k13777; X86-NEXT:    vpermi2pd %ymm2, %ymm0, %ymm1 {%k1}3778; X86-NEXT:    vmovapd %ymm1, %ymm03779; X86-NEXT:    retl3780;3781; X64-LABEL: test_mm256_mask2_permutex2var_pd:3782; X64:       # %bb.0: # %entry3783; X64-NEXT:    kmovw %edi, %k13784; X64-NEXT:    vpermi2pd %ymm2, %ymm0, %ymm1 {%k1}3785; X64-NEXT:    vmovapd %ymm1, %ymm03786; X64-NEXT:    retq3787entry:3788  %0 = tail call <4 x double> @llvm.x86.avx512.vpermi2var.pd.256(<4 x double> %__A, <4 x i64> %__I, <4 x double> %__B)3789  %1 = bitcast <4 x i64> %__I to <4 x double>3790  %2 = bitcast i8 %__U to <8 x i1>3791  %extract.i = shufflevector <8 x i1> %2, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3792  %3 = select <4 x i1> %extract.i, <4 x double> %0, <4 x double> %13793  ret <4 x double> %33794}3795 3796define <4 x float> @test_mm_mask2_permutex2var_ps(<4 x float> %__A, <2 x i64> %__I, i8 zeroext %__U, <4 x float> %__B) {3797; X86-LABEL: test_mm_mask2_permutex2var_ps:3798; X86:       # %bb.0: # %entry3799; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax3800; X86-NEXT:    kmovw %eax, %k13801; X86-NEXT:    vpermi2ps %xmm2, %xmm0, %xmm1 {%k1}3802; X86-NEXT:    vmovaps %xmm1, %xmm03803; X86-NEXT:    retl3804;3805; X64-LABEL: test_mm_mask2_permutex2var_ps:3806; X64:       # %bb.0: # %entry3807; X64-NEXT:    kmovw %edi, %k13808; X64-NEXT:    vpermi2ps %xmm2, %xmm0, %xmm1 {%k1}3809; X64-NEXT:    vmovaps %xmm1, %xmm03810; X64-NEXT:    retq3811entry:3812  %0 = bitcast <2 x i64> %__I to <4 x i32>3813  %1 = tail call <4 x float> @llvm.x86.avx512.vpermi2var.ps.128(<4 x float> %__A, <4 x i32> %0, <4 x float> %__B)3814  %2 = bitcast <2 x i64> %__I to <4 x float>3815  %3 = bitcast i8 %__U to <8 x i1>3816  %extract.i = shufflevector <8 x i1> %3, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3817  %4 = select <4 x i1> %extract.i, <4 x float> %1, <4 x float> %23818  ret <4 x float> %43819}3820 3821define <8 x float> @test_mm256_mask2_permutex2var_ps(<8 x float> %__A, <4 x i64> %__I, i8 zeroext %__U, <8 x float> %__B) {3822; X86-LABEL: test_mm256_mask2_permutex2var_ps:3823; X86:       # %bb.0: # %entry3824; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax3825; X86-NEXT:    kmovw %eax, %k13826; X86-NEXT:    vpermi2ps %ymm2, %ymm0, %ymm1 {%k1}3827; X86-NEXT:    vmovaps %ymm1, %ymm03828; X86-NEXT:    retl3829;3830; X64-LABEL: test_mm256_mask2_permutex2var_ps:3831; X64:       # %bb.0: # %entry3832; X64-NEXT:    kmovw %edi, %k13833; X64-NEXT:    vpermi2ps %ymm2, %ymm0, %ymm1 {%k1}3834; X64-NEXT:    vmovaps %ymm1, %ymm03835; X64-NEXT:    retq3836entry:3837  %0 = bitcast <4 x i64> %__I to <8 x i32>3838  %1 = tail call <8 x float> @llvm.x86.avx512.vpermi2var.ps.256(<8 x float> %__A, <8 x i32> %0, <8 x float> %__B)3839  %2 = bitcast <4 x i64> %__I to <8 x float>3840  %3 = bitcast i8 %__U to <8 x i1>3841  %4 = select <8 x i1> %3, <8 x float> %1, <8 x float> %23842  ret <8 x float> %43843}3844 3845define <2 x i64> @test_mm_mask2_permutex2var_epi64(<2 x i64> %__A, <2 x i64> %__I, i8 zeroext %__U, <2 x i64> %__B) {3846; X86-LABEL: test_mm_mask2_permutex2var_epi64:3847; X86:       # %bb.0: # %entry3848; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax3849; X86-NEXT:    kmovw %eax, %k13850; X86-NEXT:    vpermi2q %xmm2, %xmm0, %xmm1 {%k1}3851; X86-NEXT:    vmovdqa %xmm1, %xmm03852; X86-NEXT:    retl3853;3854; X64-LABEL: test_mm_mask2_permutex2var_epi64:3855; X64:       # %bb.0: # %entry3856; X64-NEXT:    kmovw %edi, %k13857; X64-NEXT:    vpermi2q %xmm2, %xmm0, %xmm1 {%k1}3858; X64-NEXT:    vmovdqa %xmm1, %xmm03859; X64-NEXT:    retq3860entry:3861  %0 = tail call <2 x i64> @llvm.x86.avx512.vpermi2var.q.128(<2 x i64> %__A, <2 x i64> %__I, <2 x i64> %__B)3862  %1 = bitcast i8 %__U to <8 x i1>3863  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <2 x i32> <i32 0, i32 1>3864  %2 = select <2 x i1> %extract.i, <2 x i64> %0, <2 x i64> %__I3865  ret <2 x i64> %23866}3867 3868define <4 x i64> @test_mm256_mask2_permutex2var_epi64(<4 x i64> %__A, <4 x i64> %__I, i8 zeroext %__U, <4 x i64> %__B) {3869; X86-LABEL: test_mm256_mask2_permutex2var_epi64:3870; X86:       # %bb.0: # %entry3871; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax3872; X86-NEXT:    kmovw %eax, %k13873; X86-NEXT:    vpermi2q %ymm2, %ymm0, %ymm1 {%k1}3874; X86-NEXT:    vmovdqa %ymm1, %ymm03875; X86-NEXT:    retl3876;3877; X64-LABEL: test_mm256_mask2_permutex2var_epi64:3878; X64:       # %bb.0: # %entry3879; X64-NEXT:    kmovw %edi, %k13880; X64-NEXT:    vpermi2q %ymm2, %ymm0, %ymm1 {%k1}3881; X64-NEXT:    vmovdqa %ymm1, %ymm03882; X64-NEXT:    retq3883entry:3884  %0 = tail call <4 x i64> @llvm.x86.avx512.vpermi2var.q.256(<4 x i64> %__A, <4 x i64> %__I, <4 x i64> %__B)3885  %1 = bitcast i8 %__U to <8 x i1>3886  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3887  %2 = select <4 x i1> %extract.i, <4 x i64> %0, <4 x i64> %__I3888  ret <4 x i64> %23889}3890 3891define <2 x i64> @test_mm_permutex2var_epi32(<2 x i64> %__A, <2 x i64> %__I, <2 x i64> %__B) {3892; CHECK-LABEL: test_mm_permutex2var_epi32:3893; CHECK:       # %bb.0: # %entry3894; CHECK-NEXT:    vpermt2d %xmm2, %xmm1, %xmm03895; CHECK-NEXT:    ret{{[l|q]}}3896entry:3897  %0 = bitcast <2 x i64> %__A to <4 x i32>3898  %1 = bitcast <2 x i64> %__I to <4 x i32>3899  %2 = bitcast <2 x i64> %__B to <4 x i32>3900  %3 = tail call <4 x i32> @llvm.x86.avx512.vpermi2var.d.128(<4 x i32> %0, <4 x i32> %1, <4 x i32> %2)3901  %4 = bitcast <4 x i32> %3 to <2 x i64>3902  ret <2 x i64> %43903}3904 3905define <2 x i64> @test_mm_mask_permutex2var_epi32(<2 x i64> %__A, i8 zeroext %__U, <2 x i64> %__I, <2 x i64> %__B) {3906; X86-LABEL: test_mm_mask_permutex2var_epi32:3907; X86:       # %bb.0: # %entry3908; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax3909; X86-NEXT:    kmovw %eax, %k13910; X86-NEXT:    vpermt2d %xmm2, %xmm1, %xmm0 {%k1}3911; X86-NEXT:    retl3912;3913; X64-LABEL: test_mm_mask_permutex2var_epi32:3914; X64:       # %bb.0: # %entry3915; X64-NEXT:    kmovw %edi, %k13916; X64-NEXT:    vpermt2d %xmm2, %xmm1, %xmm0 {%k1}3917; X64-NEXT:    retq3918entry:3919  %0 = bitcast <2 x i64> %__A to <4 x i32>3920  %1 = bitcast <2 x i64> %__I to <4 x i32>3921  %2 = bitcast <2 x i64> %__B to <4 x i32>3922  %3 = tail call <4 x i32> @llvm.x86.avx512.vpermi2var.d.128(<4 x i32> %0, <4 x i32> %1, <4 x i32> %2)3923  %4 = bitcast i8 %__U to <8 x i1>3924  %extract.i = shufflevector <8 x i1> %4, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3925  %5 = select <4 x i1> %extract.i, <4 x i32> %3, <4 x i32> %03926  %6 = bitcast <4 x i32> %5 to <2 x i64>3927  ret <2 x i64> %63928}3929 3930define <2 x i64> @test_mm_maskz_permutex2var_epi32(i8 zeroext %__U, <2 x i64> %__A, <2 x i64> %__I, <2 x i64> %__B) {3931; X86-LABEL: test_mm_maskz_permutex2var_epi32:3932; X86:       # %bb.0: # %entry3933; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax3934; X86-NEXT:    kmovw %eax, %k13935; X86-NEXT:    vpermt2d %xmm2, %xmm1, %xmm0 {%k1} {z}3936; X86-NEXT:    retl3937;3938; X64-LABEL: test_mm_maskz_permutex2var_epi32:3939; X64:       # %bb.0: # %entry3940; X64-NEXT:    kmovw %edi, %k13941; X64-NEXT:    vpermt2d %xmm2, %xmm1, %xmm0 {%k1} {z}3942; X64-NEXT:    retq3943entry:3944  %0 = bitcast <2 x i64> %__A to <4 x i32>3945  %1 = bitcast <2 x i64> %__I to <4 x i32>3946  %2 = bitcast <2 x i64> %__B to <4 x i32>3947  %3 = tail call <4 x i32> @llvm.x86.avx512.vpermi2var.d.128(<4 x i32> %0, <4 x i32> %1, <4 x i32> %2)3948  %4 = bitcast i8 %__U to <8 x i1>3949  %extract.i = shufflevector <8 x i1> %4, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3950  %5 = select <4 x i1> %extract.i, <4 x i32> %3, <4 x i32> zeroinitializer3951  %6 = bitcast <4 x i32> %5 to <2 x i64>3952  ret <2 x i64> %63953}3954 3955define <4 x i64> @test_mm256_permutex2var_epi32(<4 x i64> %__A, <4 x i64> %__I, <4 x i64> %__B) {3956; CHECK-LABEL: test_mm256_permutex2var_epi32:3957; CHECK:       # %bb.0: # %entry3958; CHECK-NEXT:    vpermt2d %ymm2, %ymm1, %ymm03959; CHECK-NEXT:    ret{{[l|q]}}3960entry:3961  %0 = bitcast <4 x i64> %__A to <8 x i32>3962  %1 = bitcast <4 x i64> %__I to <8 x i32>3963  %2 = bitcast <4 x i64> %__B to <8 x i32>3964  %3 = tail call <8 x i32> @llvm.x86.avx512.vpermi2var.d.256(<8 x i32> %0, <8 x i32> %1, <8 x i32> %2)3965  %4 = bitcast <8 x i32> %3 to <4 x i64>3966  ret <4 x i64> %43967}3968 3969define <4 x i64> @test_mm256_mask_permutex2var_epi32(<4 x i64> %__A, i8 zeroext %__U, <4 x i64> %__I, <4 x i64> %__B) {3970; X86-LABEL: test_mm256_mask_permutex2var_epi32:3971; X86:       # %bb.0: # %entry3972; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax3973; X86-NEXT:    kmovw %eax, %k13974; X86-NEXT:    vpermt2d %ymm2, %ymm1, %ymm0 {%k1}3975; X86-NEXT:    retl3976;3977; X64-LABEL: test_mm256_mask_permutex2var_epi32:3978; X64:       # %bb.0: # %entry3979; X64-NEXT:    kmovw %edi, %k13980; X64-NEXT:    vpermt2d %ymm2, %ymm1, %ymm0 {%k1}3981; X64-NEXT:    retq3982entry:3983  %0 = bitcast <4 x i64> %__A to <8 x i32>3984  %1 = bitcast <4 x i64> %__I to <8 x i32>3985  %2 = bitcast <4 x i64> %__B to <8 x i32>3986  %3 = tail call <8 x i32> @llvm.x86.avx512.vpermi2var.d.256(<8 x i32> %0, <8 x i32> %1, <8 x i32> %2)3987  %4 = bitcast i8 %__U to <8 x i1>3988  %5 = select <8 x i1> %4, <8 x i32> %3, <8 x i32> %03989  %6 = bitcast <8 x i32> %5 to <4 x i64>3990  ret <4 x i64> %63991}3992 3993define <4 x i64> @test_mm256_maskz_permutex2var_epi32(i8 zeroext %__U, <4 x i64> %__A, <4 x i64> %__I, <4 x i64> %__B) {3994; X86-LABEL: test_mm256_maskz_permutex2var_epi32:3995; X86:       # %bb.0: # %entry3996; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax3997; X86-NEXT:    kmovw %eax, %k13998; X86-NEXT:    vpermt2d %ymm2, %ymm1, %ymm0 {%k1} {z}3999; X86-NEXT:    retl4000;4001; X64-LABEL: test_mm256_maskz_permutex2var_epi32:4002; X64:       # %bb.0: # %entry4003; X64-NEXT:    kmovw %edi, %k14004; X64-NEXT:    vpermt2d %ymm2, %ymm1, %ymm0 {%k1} {z}4005; X64-NEXT:    retq4006entry:4007  %0 = bitcast <4 x i64> %__A to <8 x i32>4008  %1 = bitcast <4 x i64> %__I to <8 x i32>4009  %2 = bitcast <4 x i64> %__B to <8 x i32>4010  %3 = tail call <8 x i32> @llvm.x86.avx512.vpermi2var.d.256(<8 x i32> %0, <8 x i32> %1, <8 x i32> %2)4011  %4 = bitcast i8 %__U to <8 x i1>4012  %5 = select <8 x i1> %4, <8 x i32> %3, <8 x i32> zeroinitializer4013  %6 = bitcast <8 x i32> %5 to <4 x i64>4014  ret <4 x i64> %64015}4016 4017define <2 x double> @test_mm_permutex2var_pd(<2 x double> %__A, <2 x i64> %__I, <2 x double> %__B) {4018; CHECK-LABEL: test_mm_permutex2var_pd:4019; CHECK:       # %bb.0: # %entry4020; CHECK-NEXT:    vpermt2pd %xmm2, %xmm1, %xmm04021; CHECK-NEXT:    ret{{[l|q]}}4022entry:4023  %0 = tail call <2 x double> @llvm.x86.avx512.vpermi2var.pd.128(<2 x double> %__A, <2 x i64> %__I, <2 x double> %__B)4024  ret <2 x double> %04025}4026 4027define <2 x double> @test_mm_mask_permutex2var_pd(<2 x double> %__A, i8 zeroext %__U, <2 x i64> %__I, <2 x double> %__B) {4028; X86-LABEL: test_mm_mask_permutex2var_pd:4029; X86:       # %bb.0: # %entry4030; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4031; X86-NEXT:    kmovw %eax, %k14032; X86-NEXT:    vpermt2pd %xmm2, %xmm1, %xmm0 {%k1}4033; X86-NEXT:    retl4034;4035; X64-LABEL: test_mm_mask_permutex2var_pd:4036; X64:       # %bb.0: # %entry4037; X64-NEXT:    kmovw %edi, %k14038; X64-NEXT:    vpermt2pd %xmm2, %xmm1, %xmm0 {%k1}4039; X64-NEXT:    retq4040entry:4041  %0 = tail call <2 x double> @llvm.x86.avx512.vpermi2var.pd.128(<2 x double> %__A, <2 x i64> %__I, <2 x double> %__B)4042  %1 = bitcast i8 %__U to <8 x i1>4043  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <2 x i32> <i32 0, i32 1>4044  %2 = select <2 x i1> %extract.i, <2 x double> %0, <2 x double> %__A4045  ret <2 x double> %24046}4047 4048define <2 x double> @test_mm_maskz_permutex2var_pd(i8 zeroext %__U, <2 x double> %__A, <2 x i64> %__I, <2 x double> %__B) {4049; X86-LABEL: test_mm_maskz_permutex2var_pd:4050; X86:       # %bb.0: # %entry4051; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4052; X86-NEXT:    kmovw %eax, %k14053; X86-NEXT:    vpermt2pd %xmm2, %xmm1, %xmm0 {%k1} {z}4054; X86-NEXT:    retl4055;4056; X64-LABEL: test_mm_maskz_permutex2var_pd:4057; X64:       # %bb.0: # %entry4058; X64-NEXT:    kmovw %edi, %k14059; X64-NEXT:    vpermt2pd %xmm2, %xmm1, %xmm0 {%k1} {z}4060; X64-NEXT:    retq4061entry:4062  %0 = tail call <2 x double> @llvm.x86.avx512.vpermi2var.pd.128(<2 x double> %__A, <2 x i64> %__I, <2 x double> %__B)4063  %1 = bitcast i8 %__U to <8 x i1>4064  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <2 x i32> <i32 0, i32 1>4065  %2 = select <2 x i1> %extract.i, <2 x double> %0, <2 x double> zeroinitializer4066  ret <2 x double> %24067}4068 4069define <4 x double> @test_mm256_permutex2var_pd(<4 x double> %__A, <4 x i64> %__I, <4 x double> %__B) {4070; CHECK-LABEL: test_mm256_permutex2var_pd:4071; CHECK:       # %bb.0: # %entry4072; CHECK-NEXT:    vpermt2pd %ymm2, %ymm1, %ymm04073; CHECK-NEXT:    ret{{[l|q]}}4074entry:4075  %0 = tail call <4 x double> @llvm.x86.avx512.vpermi2var.pd.256(<4 x double> %__A, <4 x i64> %__I, <4 x double> %__B)4076  ret <4 x double> %04077}4078 4079define <4 x double> @test_mm256_mask_permutex2var_pd(<4 x double> %__A, i8 zeroext %__U, <4 x i64> %__I, <4 x double> %__B) {4080; X86-LABEL: test_mm256_mask_permutex2var_pd:4081; X86:       # %bb.0: # %entry4082; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4083; X86-NEXT:    kmovw %eax, %k14084; X86-NEXT:    vpermt2pd %ymm2, %ymm1, %ymm0 {%k1}4085; X86-NEXT:    retl4086;4087; X64-LABEL: test_mm256_mask_permutex2var_pd:4088; X64:       # %bb.0: # %entry4089; X64-NEXT:    kmovw %edi, %k14090; X64-NEXT:    vpermt2pd %ymm2, %ymm1, %ymm0 {%k1}4091; X64-NEXT:    retq4092entry:4093  %0 = tail call <4 x double> @llvm.x86.avx512.vpermi2var.pd.256(<4 x double> %__A, <4 x i64> %__I, <4 x double> %__B)4094  %1 = bitcast i8 %__U to <8 x i1>4095  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>4096  %2 = select <4 x i1> %extract.i, <4 x double> %0, <4 x double> %__A4097  ret <4 x double> %24098}4099 4100define <4 x double> @test_mm256_maskz_permutex2var_pd(i8 zeroext %__U, <4 x double> %__A, <4 x i64> %__I, <4 x double> %__B) {4101; X86-LABEL: test_mm256_maskz_permutex2var_pd:4102; X86:       # %bb.0: # %entry4103; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4104; X86-NEXT:    kmovw %eax, %k14105; X86-NEXT:    vpermt2pd %ymm2, %ymm1, %ymm0 {%k1} {z}4106; X86-NEXT:    retl4107;4108; X64-LABEL: test_mm256_maskz_permutex2var_pd:4109; X64:       # %bb.0: # %entry4110; X64-NEXT:    kmovw %edi, %k14111; X64-NEXT:    vpermt2pd %ymm2, %ymm1, %ymm0 {%k1} {z}4112; X64-NEXT:    retq4113entry:4114  %0 = tail call <4 x double> @llvm.x86.avx512.vpermi2var.pd.256(<4 x double> %__A, <4 x i64> %__I, <4 x double> %__B)4115  %1 = bitcast i8 %__U to <8 x i1>4116  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>4117  %2 = select <4 x i1> %extract.i, <4 x double> %0, <4 x double> zeroinitializer4118  ret <4 x double> %24119}4120 4121define <4 x float> @test_mm_permutex2var_ps(<4 x float> %__A, <2 x i64> %__I, <4 x float> %__B) {4122; CHECK-LABEL: test_mm_permutex2var_ps:4123; CHECK:       # %bb.0: # %entry4124; CHECK-NEXT:    vpermt2ps %xmm2, %xmm1, %xmm04125; CHECK-NEXT:    ret{{[l|q]}}4126entry:4127  %0 = bitcast <2 x i64> %__I to <4 x i32>4128  %1 = tail call <4 x float> @llvm.x86.avx512.vpermi2var.ps.128(<4 x float> %__A, <4 x i32> %0, <4 x float> %__B)4129  ret <4 x float> %14130}4131 4132define <4 x float> @test_mm_mask_permutex2var_ps(<4 x float> %__A, i8 zeroext %__U, <2 x i64> %__I, <4 x float> %__B) {4133; X86-LABEL: test_mm_mask_permutex2var_ps:4134; X86:       # %bb.0: # %entry4135; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4136; X86-NEXT:    kmovw %eax, %k14137; X86-NEXT:    vpermt2ps %xmm2, %xmm1, %xmm0 {%k1}4138; X86-NEXT:    retl4139;4140; X64-LABEL: test_mm_mask_permutex2var_ps:4141; X64:       # %bb.0: # %entry4142; X64-NEXT:    kmovw %edi, %k14143; X64-NEXT:    vpermt2ps %xmm2, %xmm1, %xmm0 {%k1}4144; X64-NEXT:    retq4145entry:4146  %0 = bitcast <2 x i64> %__I to <4 x i32>4147  %1 = tail call <4 x float> @llvm.x86.avx512.vpermi2var.ps.128(<4 x float> %__A, <4 x i32> %0, <4 x float> %__B)4148  %2 = bitcast i8 %__U to <8 x i1>4149  %extract.i = shufflevector <8 x i1> %2, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>4150  %3 = select <4 x i1> %extract.i, <4 x float> %1, <4 x float> %__A4151  ret <4 x float> %34152}4153 4154define <4 x float> @test_mm_maskz_permutex2var_ps(i8 zeroext %__U, <4 x float> %__A, <2 x i64> %__I, <4 x float> %__B) {4155; X86-LABEL: test_mm_maskz_permutex2var_ps:4156; X86:       # %bb.0: # %entry4157; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4158; X86-NEXT:    kmovw %eax, %k14159; X86-NEXT:    vpermt2ps %xmm2, %xmm1, %xmm0 {%k1} {z}4160; X86-NEXT:    retl4161;4162; X64-LABEL: test_mm_maskz_permutex2var_ps:4163; X64:       # %bb.0: # %entry4164; X64-NEXT:    kmovw %edi, %k14165; X64-NEXT:    vpermt2ps %xmm2, %xmm1, %xmm0 {%k1} {z}4166; X64-NEXT:    retq4167entry:4168  %0 = bitcast <2 x i64> %__I to <4 x i32>4169  %1 = tail call <4 x float> @llvm.x86.avx512.vpermi2var.ps.128(<4 x float> %__A, <4 x i32> %0, <4 x float> %__B)4170  %2 = bitcast i8 %__U to <8 x i1>4171  %extract.i = shufflevector <8 x i1> %2, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>4172  %3 = select <4 x i1> %extract.i, <4 x float> %1, <4 x float> zeroinitializer4173  ret <4 x float> %34174}4175 4176define <8 x float> @test_mm256_permutex2var_ps(<8 x float> %__A, <4 x i64> %__I, <8 x float> %__B) {4177; CHECK-LABEL: test_mm256_permutex2var_ps:4178; CHECK:       # %bb.0: # %entry4179; CHECK-NEXT:    vpermt2ps %ymm2, %ymm1, %ymm04180; CHECK-NEXT:    ret{{[l|q]}}4181entry:4182  %0 = bitcast <4 x i64> %__I to <8 x i32>4183  %1 = tail call <8 x float> @llvm.x86.avx512.vpermi2var.ps.256(<8 x float> %__A, <8 x i32> %0, <8 x float> %__B)4184  ret <8 x float> %14185}4186 4187define <8 x float> @test_mm256_mask_permutex2var_ps(<8 x float> %__A, i8 zeroext %__U, <4 x i64> %__I, <8 x float> %__B) {4188; X86-LABEL: test_mm256_mask_permutex2var_ps:4189; X86:       # %bb.0: # %entry4190; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4191; X86-NEXT:    kmovw %eax, %k14192; X86-NEXT:    vpermt2ps %ymm2, %ymm1, %ymm0 {%k1}4193; X86-NEXT:    retl4194;4195; X64-LABEL: test_mm256_mask_permutex2var_ps:4196; X64:       # %bb.0: # %entry4197; X64-NEXT:    kmovw %edi, %k14198; X64-NEXT:    vpermt2ps %ymm2, %ymm1, %ymm0 {%k1}4199; X64-NEXT:    retq4200entry:4201  %0 = bitcast <4 x i64> %__I to <8 x i32>4202  %1 = tail call <8 x float> @llvm.x86.avx512.vpermi2var.ps.256(<8 x float> %__A, <8 x i32> %0, <8 x float> %__B)4203  %2 = bitcast i8 %__U to <8 x i1>4204  %3 = select <8 x i1> %2, <8 x float> %1, <8 x float> %__A4205  ret <8 x float> %34206}4207 4208define <8 x float> @test_mm256_maskz_permutex2var_ps(i8 zeroext %__U, <8 x float> %__A, <4 x i64> %__I, <8 x float> %__B) {4209; X86-LABEL: test_mm256_maskz_permutex2var_ps:4210; X86:       # %bb.0: # %entry4211; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4212; X86-NEXT:    kmovw %eax, %k14213; X86-NEXT:    vpermt2ps %ymm2, %ymm1, %ymm0 {%k1} {z}4214; X86-NEXT:    retl4215;4216; X64-LABEL: test_mm256_maskz_permutex2var_ps:4217; X64:       # %bb.0: # %entry4218; X64-NEXT:    kmovw %edi, %k14219; X64-NEXT:    vpermt2ps %ymm2, %ymm1, %ymm0 {%k1} {z}4220; X64-NEXT:    retq4221entry:4222  %0 = bitcast <4 x i64> %__I to <8 x i32>4223  %1 = tail call <8 x float> @llvm.x86.avx512.vpermi2var.ps.256(<8 x float> %__A, <8 x i32> %0, <8 x float> %__B)4224  %2 = bitcast i8 %__U to <8 x i1>4225  %3 = select <8 x i1> %2, <8 x float> %1, <8 x float> zeroinitializer4226  ret <8 x float> %34227}4228 4229define <2 x i64> @test_mm_permutex2var_epi64(<2 x i64> %__A, <2 x i64> %__I, <2 x i64> %__B) {4230; CHECK-LABEL: test_mm_permutex2var_epi64:4231; CHECK:       # %bb.0: # %entry4232; CHECK-NEXT:    vpermt2q %xmm2, %xmm1, %xmm04233; CHECK-NEXT:    ret{{[l|q]}}4234entry:4235  %0 = tail call <2 x i64> @llvm.x86.avx512.vpermi2var.q.128(<2 x i64> %__A, <2 x i64> %__I, <2 x i64> %__B)4236  ret <2 x i64> %04237}4238 4239define <2 x i64> @test_mm_mask_permutex2var_epi64(<2 x i64> %__A, i8 zeroext %__U, <2 x i64> %__I, <2 x i64> %__B) {4240; X86-LABEL: test_mm_mask_permutex2var_epi64:4241; X86:       # %bb.0: # %entry4242; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4243; X86-NEXT:    kmovw %eax, %k14244; X86-NEXT:    vpermt2q %xmm2, %xmm1, %xmm0 {%k1}4245; X86-NEXT:    retl4246;4247; X64-LABEL: test_mm_mask_permutex2var_epi64:4248; X64:       # %bb.0: # %entry4249; X64-NEXT:    kmovw %edi, %k14250; X64-NEXT:    vpermt2q %xmm2, %xmm1, %xmm0 {%k1}4251; X64-NEXT:    retq4252entry:4253  %0 = tail call <2 x i64> @llvm.x86.avx512.vpermi2var.q.128(<2 x i64> %__A, <2 x i64> %__I, <2 x i64> %__B)4254  %1 = bitcast i8 %__U to <8 x i1>4255  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <2 x i32> <i32 0, i32 1>4256  %2 = select <2 x i1> %extract.i, <2 x i64> %0, <2 x i64> %__A4257  ret <2 x i64> %24258}4259 4260define <2 x i64> @test_mm_maskz_permutex2var_epi64(i8 zeroext %__U, <2 x i64> %__A, <2 x i64> %__I, <2 x i64> %__B) {4261; X86-LABEL: test_mm_maskz_permutex2var_epi64:4262; X86:       # %bb.0: # %entry4263; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4264; X86-NEXT:    kmovw %eax, %k14265; X86-NEXT:    vpermt2q %xmm2, %xmm1, %xmm0 {%k1} {z}4266; X86-NEXT:    retl4267;4268; X64-LABEL: test_mm_maskz_permutex2var_epi64:4269; X64:       # %bb.0: # %entry4270; X64-NEXT:    kmovw %edi, %k14271; X64-NEXT:    vpermt2q %xmm2, %xmm1, %xmm0 {%k1} {z}4272; X64-NEXT:    retq4273entry:4274  %0 = tail call <2 x i64> @llvm.x86.avx512.vpermi2var.q.128(<2 x i64> %__A, <2 x i64> %__I, <2 x i64> %__B)4275  %1 = bitcast i8 %__U to <8 x i1>4276  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <2 x i32> <i32 0, i32 1>4277  %2 = select <2 x i1> %extract.i, <2 x i64> %0, <2 x i64> zeroinitializer4278  ret <2 x i64> %24279}4280 4281define <4 x i64> @test_mm256_permutex2var_epi64(<4 x i64> %__A, <4 x i64> %__I, <4 x i64> %__B) {4282; CHECK-LABEL: test_mm256_permutex2var_epi64:4283; CHECK:       # %bb.0: # %entry4284; CHECK-NEXT:    vpermt2q %ymm2, %ymm1, %ymm04285; CHECK-NEXT:    ret{{[l|q]}}4286entry:4287  %0 = tail call <4 x i64> @llvm.x86.avx512.vpermi2var.q.256(<4 x i64> %__A, <4 x i64> %__I, <4 x i64> %__B)4288  ret <4 x i64> %04289}4290 4291define <4 x i64> @test_mm256_mask_permutex2var_epi64(<4 x i64> %__A, i8 zeroext %__U, <4 x i64> %__I, <4 x i64> %__B) {4292; X86-LABEL: test_mm256_mask_permutex2var_epi64:4293; X86:       # %bb.0: # %entry4294; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4295; X86-NEXT:    kmovw %eax, %k14296; X86-NEXT:    vpermt2q %ymm2, %ymm1, %ymm0 {%k1}4297; X86-NEXT:    retl4298;4299; X64-LABEL: test_mm256_mask_permutex2var_epi64:4300; X64:       # %bb.0: # %entry4301; X64-NEXT:    kmovw %edi, %k14302; X64-NEXT:    vpermt2q %ymm2, %ymm1, %ymm0 {%k1}4303; X64-NEXT:    retq4304entry:4305  %0 = tail call <4 x i64> @llvm.x86.avx512.vpermi2var.q.256(<4 x i64> %__A, <4 x i64> %__I, <4 x i64> %__B)4306  %1 = bitcast i8 %__U to <8 x i1>4307  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>4308  %2 = select <4 x i1> %extract.i, <4 x i64> %0, <4 x i64> %__A4309  ret <4 x i64> %24310}4311 4312define <4 x i64> @test_mm256_maskz_permutex2var_epi64(i8 zeroext %__U, <4 x i64> %__A, <4 x i64> %__I, <4 x i64> %__B) {4313; X86-LABEL: test_mm256_maskz_permutex2var_epi64:4314; X86:       # %bb.0: # %entry4315; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4316; X86-NEXT:    kmovw %eax, %k14317; X86-NEXT:    vpermt2q %ymm2, %ymm1, %ymm0 {%k1} {z}4318; X86-NEXT:    retl4319;4320; X64-LABEL: test_mm256_maskz_permutex2var_epi64:4321; X64:       # %bb.0: # %entry4322; X64-NEXT:    kmovw %edi, %k14323; X64-NEXT:    vpermt2q %ymm2, %ymm1, %ymm0 {%k1} {z}4324; X64-NEXT:    retq4325entry:4326  %0 = tail call <4 x i64> @llvm.x86.avx512.vpermi2var.q.256(<4 x i64> %__A, <4 x i64> %__I, <4 x i64> %__B)4327  %1 = bitcast i8 %__U to <8 x i1>4328  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>4329  %2 = select <4 x i1> %extract.i, <4 x i64> %0, <4 x i64> zeroinitializer4330  ret <4 x i64> %24331}4332 4333 4334define <2 x double> @test_mm_mask_fmadd_pd(<2 x double> %__A, i8 zeroext %__U, <2 x double> %__B, <2 x double> %__C) {4335; X86-LABEL: test_mm_mask_fmadd_pd:4336; X86:       # %bb.0: # %entry4337; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4338; X86-NEXT:    kmovw %eax, %k14339; X86-NEXT:    vfmadd132pd {{.*#+}} xmm0 {%k1} = (xmm0 * xmm1) + xmm24340; X86-NEXT:    retl4341;4342; X64-LABEL: test_mm_mask_fmadd_pd:4343; X64:       # %bb.0: # %entry4344; X64-NEXT:    kmovw %edi, %k14345; X64-NEXT:    vfmadd132pd {{.*#+}} xmm0 {%k1} = (xmm0 * xmm1) + xmm24346; X64-NEXT:    retq4347entry:4348  %0 = tail call <2 x double> @llvm.fma.v2f64(<2 x double> %__A, <2 x double> %__B, <2 x double> %__C) #94349  %1 = bitcast i8 %__U to <8 x i1>4350  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <2 x i32> <i32 0, i32 1>4351  %2 = select <2 x i1> %extract.i, <2 x double> %0, <2 x double> %__A4352  ret <2 x double> %24353}4354 4355define <2 x double> @test_mm_mask_fmsub_pd(<2 x double> %__A, i8 zeroext %__U, <2 x double> %__B, <2 x double> %__C) {4356; X86-LABEL: test_mm_mask_fmsub_pd:4357; X86:       # %bb.0: # %entry4358; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4359; X86-NEXT:    kmovw %eax, %k14360; X86-NEXT:    vfmsub132pd {{.*#+}} xmm0 {%k1} = (xmm0 * xmm1) - xmm24361; X86-NEXT:    retl4362;4363; X64-LABEL: test_mm_mask_fmsub_pd:4364; X64:       # %bb.0: # %entry4365; X64-NEXT:    kmovw %edi, %k14366; X64-NEXT:    vfmsub132pd {{.*#+}} xmm0 {%k1} = (xmm0 * xmm1) - xmm24367; X64-NEXT:    retq4368entry:4369  %sub.i = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %__C4370  %0 = tail call <2 x double> @llvm.fma.v2f64(<2 x double> %__A, <2 x double> %__B, <2 x double> %sub.i) #94371  %1 = bitcast i8 %__U to <8 x i1>4372  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <2 x i32> <i32 0, i32 1>4373  %2 = select <2 x i1> %extract.i, <2 x double> %0, <2 x double> %__A4374  ret <2 x double> %24375}4376 4377define <2 x double> @test_mm_mask3_fmadd_pd(<2 x double> %__A, <2 x double> %__B, <2 x double> %__C, i8 zeroext %__U) {4378; X86-LABEL: test_mm_mask3_fmadd_pd:4379; X86:       # %bb.0: # %entry4380; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4381; X86-NEXT:    kmovw %eax, %k14382; X86-NEXT:    vfmadd231pd {{.*#+}} xmm2 {%k1} = (xmm0 * xmm1) + xmm24383; X86-NEXT:    vmovapd %xmm2, %xmm04384; X86-NEXT:    retl4385;4386; X64-LABEL: test_mm_mask3_fmadd_pd:4387; X64:       # %bb.0: # %entry4388; X64-NEXT:    kmovw %edi, %k14389; X64-NEXT:    vfmadd231pd {{.*#+}} xmm2 {%k1} = (xmm0 * xmm1) + xmm24390; X64-NEXT:    vmovapd %xmm2, %xmm04391; X64-NEXT:    retq4392entry:4393  %0 = tail call <2 x double> @llvm.fma.v2f64(<2 x double> %__A, <2 x double> %__B, <2 x double> %__C) #94394  %1 = bitcast i8 %__U to <8 x i1>4395  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <2 x i32> <i32 0, i32 1>4396  %2 = select <2 x i1> %extract.i, <2 x double> %0, <2 x double> %__C4397  ret <2 x double> %24398}4399 4400define <2 x double> @test_mm_mask3_fnmadd_pd(<2 x double> %__A, <2 x double> %__B, <2 x double> %__C, i8 zeroext %__U) {4401; X86-LABEL: test_mm_mask3_fnmadd_pd:4402; X86:       # %bb.0: # %entry4403; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4404; X86-NEXT:    kmovw %eax, %k14405; X86-NEXT:    vfnmadd231pd {{.*#+}} xmm2 {%k1} = -(xmm0 * xmm1) + xmm24406; X86-NEXT:    vmovapd %xmm2, %xmm04407; X86-NEXT:    retl4408;4409; X64-LABEL: test_mm_mask3_fnmadd_pd:4410; X64:       # %bb.0: # %entry4411; X64-NEXT:    kmovw %edi, %k14412; X64-NEXT:    vfnmadd231pd {{.*#+}} xmm2 {%k1} = -(xmm0 * xmm1) + xmm24413; X64-NEXT:    vmovapd %xmm2, %xmm04414; X64-NEXT:    retq4415entry:4416  %sub.i = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %__A4417  %0 = tail call <2 x double> @llvm.fma.v2f64(<2 x double> %sub.i, <2 x double> %__B, <2 x double> %__C) #94418  %1 = bitcast i8 %__U to <8 x i1>4419  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <2 x i32> <i32 0, i32 1>4420  %2 = select <2 x i1> %extract.i, <2 x double> %0, <2 x double> %__C4421  ret <2 x double> %24422}4423 4424define <2 x double> @test_mm_maskz_fmadd_pd(i8 zeroext %__U, <2 x double> %__A, <2 x double> %__B, <2 x double> %__C) {4425; X86-LABEL: test_mm_maskz_fmadd_pd:4426; X86:       # %bb.0: # %entry4427; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4428; X86-NEXT:    kmovw %eax, %k14429; X86-NEXT:    vfmadd213pd {{.*#+}} xmm0 {%k1} {z} = (xmm1 * xmm0) + xmm24430; X86-NEXT:    retl4431;4432; X64-LABEL: test_mm_maskz_fmadd_pd:4433; X64:       # %bb.0: # %entry4434; X64-NEXT:    kmovw %edi, %k14435; X64-NEXT:    vfmadd213pd {{.*#+}} xmm0 {%k1} {z} = (xmm1 * xmm0) + xmm24436; X64-NEXT:    retq4437entry:4438  %0 = tail call <2 x double> @llvm.fma.v2f64(<2 x double> %__A, <2 x double> %__B, <2 x double> %__C) #94439  %1 = bitcast i8 %__U to <8 x i1>4440  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <2 x i32> <i32 0, i32 1>4441  %2 = select <2 x i1> %extract.i, <2 x double> %0, <2 x double> zeroinitializer4442  ret <2 x double> %24443}4444 4445define <2 x double> @test_mm_maskz_fmsub_pd(i8 zeroext %__U, <2 x double> %__A, <2 x double> %__B, <2 x double> %__C) {4446; X86-LABEL: test_mm_maskz_fmsub_pd:4447; X86:       # %bb.0: # %entry4448; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4449; X86-NEXT:    kmovw %eax, %k14450; X86-NEXT:    vfmsub213pd {{.*#+}} xmm0 {%k1} {z} = (xmm1 * xmm0) - xmm24451; X86-NEXT:    retl4452;4453; X64-LABEL: test_mm_maskz_fmsub_pd:4454; X64:       # %bb.0: # %entry4455; X64-NEXT:    kmovw %edi, %k14456; X64-NEXT:    vfmsub213pd {{.*#+}} xmm0 {%k1} {z} = (xmm1 * xmm0) - xmm24457; X64-NEXT:    retq4458entry:4459  %sub.i = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %__C4460  %0 = tail call <2 x double> @llvm.fma.v2f64(<2 x double> %__A, <2 x double> %__B, <2 x double> %sub.i) #94461  %1 = bitcast i8 %__U to <8 x i1>4462  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <2 x i32> <i32 0, i32 1>4463  %2 = select <2 x i1> %extract.i, <2 x double> %0, <2 x double> zeroinitializer4464  ret <2 x double> %24465}4466 4467define <2 x double> @test_mm_maskz_fnmadd_pd(i8 zeroext %__U, <2 x double> %__A, <2 x double> %__B, <2 x double> %__C) {4468; X86-LABEL: test_mm_maskz_fnmadd_pd:4469; X86:       # %bb.0: # %entry4470; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4471; X86-NEXT:    kmovw %eax, %k14472; X86-NEXT:    vfnmadd213pd {{.*#+}} xmm0 {%k1} {z} = -(xmm1 * xmm0) + xmm24473; X86-NEXT:    retl4474;4475; X64-LABEL: test_mm_maskz_fnmadd_pd:4476; X64:       # %bb.0: # %entry4477; X64-NEXT:    kmovw %edi, %k14478; X64-NEXT:    vfnmadd213pd {{.*#+}} xmm0 {%k1} {z} = -(xmm1 * xmm0) + xmm24479; X64-NEXT:    retq4480entry:4481  %sub.i = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %__A4482  %0 = tail call <2 x double> @llvm.fma.v2f64(<2 x double> %sub.i, <2 x double> %__B, <2 x double> %__C) #94483  %1 = bitcast i8 %__U to <8 x i1>4484  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <2 x i32> <i32 0, i32 1>4485  %2 = select <2 x i1> %extract.i, <2 x double> %0, <2 x double> zeroinitializer4486  ret <2 x double> %24487}4488 4489define <2 x double> @test_mm_maskz_fnmsub_pd(i8 zeroext %__U, <2 x double> %__A, <2 x double> %__B, <2 x double> %__C) {4490; X86-LABEL: test_mm_maskz_fnmsub_pd:4491; X86:       # %bb.0: # %entry4492; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4493; X86-NEXT:    kmovw %eax, %k14494; X86-NEXT:    vfnmsub213pd {{.*#+}} xmm0 {%k1} {z} = -(xmm1 * xmm0) - xmm24495; X86-NEXT:    retl4496;4497; X64-LABEL: test_mm_maskz_fnmsub_pd:4498; X64:       # %bb.0: # %entry4499; X64-NEXT:    kmovw %edi, %k14500; X64-NEXT:    vfnmsub213pd {{.*#+}} xmm0 {%k1} {z} = -(xmm1 * xmm0) - xmm24501; X64-NEXT:    retq4502entry:4503  %sub.i = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %__A4504  %sub1.i = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %__C4505  %0 = tail call <2 x double> @llvm.fma.v2f64(<2 x double> %sub.i, <2 x double> %__B, <2 x double> %sub1.i) #94506  %1 = bitcast i8 %__U to <8 x i1>4507  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <2 x i32> <i32 0, i32 1>4508  %2 = select <2 x i1> %extract.i, <2 x double> %0, <2 x double> zeroinitializer4509  ret <2 x double> %24510}4511 4512define <4 x double> @test_mm256_mask_fmadd_pd(<4 x double> %__A, i8 zeroext %__U, <4 x double> %__B, <4 x double> %__C) {4513; X86-LABEL: test_mm256_mask_fmadd_pd:4514; X86:       # %bb.0: # %entry4515; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4516; X86-NEXT:    kmovw %eax, %k14517; X86-NEXT:    vfmadd132pd {{.*#+}} ymm0 {%k1} = (ymm0 * ymm1) + ymm24518; X86-NEXT:    retl4519;4520; X64-LABEL: test_mm256_mask_fmadd_pd:4521; X64:       # %bb.0: # %entry4522; X64-NEXT:    kmovw %edi, %k14523; X64-NEXT:    vfmadd132pd {{.*#+}} ymm0 {%k1} = (ymm0 * ymm1) + ymm24524; X64-NEXT:    retq4525entry:4526  %0 = tail call <4 x double> @llvm.fma.v4f64(<4 x double> %__A, <4 x double> %__B, <4 x double> %__C) #94527  %1 = bitcast i8 %__U to <8 x i1>4528  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>4529  %2 = select <4 x i1> %extract.i, <4 x double> %0, <4 x double> %__A4530  ret <4 x double> %24531}4532 4533define <4 x double> @test_mm256_mask_fmsub_pd(<4 x double> %__A, i8 zeroext %__U, <4 x double> %__B, <4 x double> %__C) {4534; X86-LABEL: test_mm256_mask_fmsub_pd:4535; X86:       # %bb.0: # %entry4536; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4537; X86-NEXT:    kmovw %eax, %k14538; X86-NEXT:    vfmsub132pd {{.*#+}} ymm0 {%k1} = (ymm0 * ymm1) - ymm24539; X86-NEXT:    retl4540;4541; X64-LABEL: test_mm256_mask_fmsub_pd:4542; X64:       # %bb.0: # %entry4543; X64-NEXT:    kmovw %edi, %k14544; X64-NEXT:    vfmsub132pd {{.*#+}} ymm0 {%k1} = (ymm0 * ymm1) - ymm24545; X64-NEXT:    retq4546entry:4547  %sub.i = fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C4548  %0 = tail call <4 x double> @llvm.fma.v4f64(<4 x double> %__A, <4 x double> %__B, <4 x double> %sub.i) #94549  %1 = bitcast i8 %__U to <8 x i1>4550  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>4551  %2 = select <4 x i1> %extract.i, <4 x double> %0, <4 x double> %__A4552  ret <4 x double> %24553}4554 4555define <4 x double> @test_mm256_mask3_fmadd_pd(<4 x double> %__A, <4 x double> %__B, <4 x double> %__C, i8 zeroext %__U) {4556; X86-LABEL: test_mm256_mask3_fmadd_pd:4557; X86:       # %bb.0: # %entry4558; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4559; X86-NEXT:    kmovw %eax, %k14560; X86-NEXT:    vfmadd231pd {{.*#+}} ymm2 {%k1} = (ymm0 * ymm1) + ymm24561; X86-NEXT:    vmovapd %ymm2, %ymm04562; X86-NEXT:    retl4563;4564; X64-LABEL: test_mm256_mask3_fmadd_pd:4565; X64:       # %bb.0: # %entry4566; X64-NEXT:    kmovw %edi, %k14567; X64-NEXT:    vfmadd231pd {{.*#+}} ymm2 {%k1} = (ymm0 * ymm1) + ymm24568; X64-NEXT:    vmovapd %ymm2, %ymm04569; X64-NEXT:    retq4570entry:4571  %0 = tail call <4 x double> @llvm.fma.v4f64(<4 x double> %__A, <4 x double> %__B, <4 x double> %__C) #94572  %1 = bitcast i8 %__U to <8 x i1>4573  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>4574  %2 = select <4 x i1> %extract.i, <4 x double> %0, <4 x double> %__C4575  ret <4 x double> %24576}4577 4578define <4 x double> @test_mm256_mask3_fnmadd_pd(<4 x double> %__A, <4 x double> %__B, <4 x double> %__C, i8 zeroext %__U) {4579; X86-LABEL: test_mm256_mask3_fnmadd_pd:4580; X86:       # %bb.0: # %entry4581; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4582; X86-NEXT:    kmovw %eax, %k14583; X86-NEXT:    vfnmadd231pd {{.*#+}} ymm2 {%k1} = -(ymm0 * ymm1) + ymm24584; X86-NEXT:    vmovapd %ymm2, %ymm04585; X86-NEXT:    retl4586;4587; X64-LABEL: test_mm256_mask3_fnmadd_pd:4588; X64:       # %bb.0: # %entry4589; X64-NEXT:    kmovw %edi, %k14590; X64-NEXT:    vfnmadd231pd {{.*#+}} ymm2 {%k1} = -(ymm0 * ymm1) + ymm24591; X64-NEXT:    vmovapd %ymm2, %ymm04592; X64-NEXT:    retq4593entry:4594  %sub.i = fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__A4595  %0 = tail call <4 x double> @llvm.fma.v4f64(<4 x double> %sub.i, <4 x double> %__B, <4 x double> %__C) #94596  %1 = bitcast i8 %__U to <8 x i1>4597  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>4598  %2 = select <4 x i1> %extract.i, <4 x double> %0, <4 x double> %__C4599  ret <4 x double> %24600}4601 4602define <4 x double> @test_mm256_maskz_fmadd_pd(i8 zeroext %__U, <4 x double> %__A, <4 x double> %__B, <4 x double> %__C) {4603; X86-LABEL: test_mm256_maskz_fmadd_pd:4604; X86:       # %bb.0: # %entry4605; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4606; X86-NEXT:    kmovw %eax, %k14607; X86-NEXT:    vfmadd213pd {{.*#+}} ymm0 {%k1} {z} = (ymm1 * ymm0) + ymm24608; X86-NEXT:    retl4609;4610; X64-LABEL: test_mm256_maskz_fmadd_pd:4611; X64:       # %bb.0: # %entry4612; X64-NEXT:    kmovw %edi, %k14613; X64-NEXT:    vfmadd213pd {{.*#+}} ymm0 {%k1} {z} = (ymm1 * ymm0) + ymm24614; X64-NEXT:    retq4615entry:4616  %0 = tail call <4 x double> @llvm.fma.v4f64(<4 x double> %__A, <4 x double> %__B, <4 x double> %__C) #94617  %1 = bitcast i8 %__U to <8 x i1>4618  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>4619  %2 = select <4 x i1> %extract.i, <4 x double> %0, <4 x double> zeroinitializer4620  ret <4 x double> %24621}4622 4623define <4 x double> @test_mm256_maskz_fmsub_pd(i8 zeroext %__U, <4 x double> %__A, <4 x double> %__B, <4 x double> %__C) {4624; X86-LABEL: test_mm256_maskz_fmsub_pd:4625; X86:       # %bb.0: # %entry4626; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4627; X86-NEXT:    kmovw %eax, %k14628; X86-NEXT:    vfmsub213pd {{.*#+}} ymm0 {%k1} {z} = (ymm1 * ymm0) - ymm24629; X86-NEXT:    retl4630;4631; X64-LABEL: test_mm256_maskz_fmsub_pd:4632; X64:       # %bb.0: # %entry4633; X64-NEXT:    kmovw %edi, %k14634; X64-NEXT:    vfmsub213pd {{.*#+}} ymm0 {%k1} {z} = (ymm1 * ymm0) - ymm24635; X64-NEXT:    retq4636entry:4637  %sub.i = fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C4638  %0 = tail call <4 x double> @llvm.fma.v4f64(<4 x double> %__A, <4 x double> %__B, <4 x double> %sub.i) #94639  %1 = bitcast i8 %__U to <8 x i1>4640  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>4641  %2 = select <4 x i1> %extract.i, <4 x double> %0, <4 x double> zeroinitializer4642  ret <4 x double> %24643}4644 4645define <4 x double> @test_mm256_maskz_fnmadd_pd(i8 zeroext %__U, <4 x double> %__A, <4 x double> %__B, <4 x double> %__C) {4646; X86-LABEL: test_mm256_maskz_fnmadd_pd:4647; X86:       # %bb.0: # %entry4648; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4649; X86-NEXT:    kmovw %eax, %k14650; X86-NEXT:    vfnmadd213pd {{.*#+}} ymm0 {%k1} {z} = -(ymm1 * ymm0) + ymm24651; X86-NEXT:    retl4652;4653; X64-LABEL: test_mm256_maskz_fnmadd_pd:4654; X64:       # %bb.0: # %entry4655; X64-NEXT:    kmovw %edi, %k14656; X64-NEXT:    vfnmadd213pd {{.*#+}} ymm0 {%k1} {z} = -(ymm1 * ymm0) + ymm24657; X64-NEXT:    retq4658entry:4659  %sub.i = fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__A4660  %0 = tail call <4 x double> @llvm.fma.v4f64(<4 x double> %sub.i, <4 x double> %__B, <4 x double> %__C) #94661  %1 = bitcast i8 %__U to <8 x i1>4662  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>4663  %2 = select <4 x i1> %extract.i, <4 x double> %0, <4 x double> zeroinitializer4664  ret <4 x double> %24665}4666 4667define <4 x double> @test_mm256_maskz_fnmsub_pd(i8 zeroext %__U, <4 x double> %__A, <4 x double> %__B, <4 x double> %__C) {4668; X86-LABEL: test_mm256_maskz_fnmsub_pd:4669; X86:       # %bb.0: # %entry4670; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4671; X86-NEXT:    kmovw %eax, %k14672; X86-NEXT:    vfnmsub213pd {{.*#+}} ymm0 {%k1} {z} = -(ymm1 * ymm0) - ymm24673; X86-NEXT:    retl4674;4675; X64-LABEL: test_mm256_maskz_fnmsub_pd:4676; X64:       # %bb.0: # %entry4677; X64-NEXT:    kmovw %edi, %k14678; X64-NEXT:    vfnmsub213pd {{.*#+}} ymm0 {%k1} {z} = -(ymm1 * ymm0) - ymm24679; X64-NEXT:    retq4680entry:4681  %sub.i = fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__A4682  %sub1.i = fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C4683  %0 = tail call <4 x double> @llvm.fma.v4f64(<4 x double> %sub.i, <4 x double> %__B, <4 x double> %sub1.i) #94684  %1 = bitcast i8 %__U to <8 x i1>4685  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>4686  %2 = select <4 x i1> %extract.i, <4 x double> %0, <4 x double> zeroinitializer4687  ret <4 x double> %24688}4689 4690define <4 x float> @test_mm_mask_fmadd_ps(<4 x float> %__A, i8 zeroext %__U, <4 x float> %__B, <4 x float> %__C) {4691; X86-LABEL: test_mm_mask_fmadd_ps:4692; X86:       # %bb.0: # %entry4693; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4694; X86-NEXT:    kmovw %eax, %k14695; X86-NEXT:    vfmadd132ps {{.*#+}} xmm0 {%k1} = (xmm0 * xmm1) + xmm24696; X86-NEXT:    retl4697;4698; X64-LABEL: test_mm_mask_fmadd_ps:4699; X64:       # %bb.0: # %entry4700; X64-NEXT:    kmovw %edi, %k14701; X64-NEXT:    vfmadd132ps {{.*#+}} xmm0 {%k1} = (xmm0 * xmm1) + xmm24702; X64-NEXT:    retq4703entry:4704  %0 = tail call <4 x float> @llvm.fma.v4f32(<4 x float> %__A, <4 x float> %__B, <4 x float> %__C) #94705  %1 = bitcast i8 %__U to <8 x i1>4706  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>4707  %2 = select <4 x i1> %extract.i, <4 x float> %0, <4 x float> %__A4708  ret <4 x float> %24709}4710 4711define <4 x float> @test_mm_mask_fmsub_ps(<4 x float> %__A, i8 zeroext %__U, <4 x float> %__B, <4 x float> %__C) {4712; X86-LABEL: test_mm_mask_fmsub_ps:4713; X86:       # %bb.0: # %entry4714; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4715; X86-NEXT:    kmovw %eax, %k14716; X86-NEXT:    vfmsub132ps {{.*#+}} xmm0 {%k1} = (xmm0 * xmm1) - xmm24717; X86-NEXT:    retl4718;4719; X64-LABEL: test_mm_mask_fmsub_ps:4720; X64:       # %bb.0: # %entry4721; X64-NEXT:    kmovw %edi, %k14722; X64-NEXT:    vfmsub132ps {{.*#+}} xmm0 {%k1} = (xmm0 * xmm1) - xmm24723; X64-NEXT:    retq4724entry:4725  %sub.i = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__C4726  %0 = tail call <4 x float> @llvm.fma.v4f32(<4 x float> %__A, <4 x float> %__B, <4 x float> %sub.i) #94727  %1 = bitcast i8 %__U to <8 x i1>4728  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>4729  %2 = select <4 x i1> %extract.i, <4 x float> %0, <4 x float> %__A4730  ret <4 x float> %24731}4732 4733define <4 x float> @test_mm_mask3_fmadd_ps(<4 x float> %__A, <4 x float> %__B, <4 x float> %__C, i8 zeroext %__U) {4734; X86-LABEL: test_mm_mask3_fmadd_ps:4735; X86:       # %bb.0: # %entry4736; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4737; X86-NEXT:    kmovw %eax, %k14738; X86-NEXT:    vfmadd231ps {{.*#+}} xmm2 {%k1} = (xmm0 * xmm1) + xmm24739; X86-NEXT:    vmovaps %xmm2, %xmm04740; X86-NEXT:    retl4741;4742; X64-LABEL: test_mm_mask3_fmadd_ps:4743; X64:       # %bb.0: # %entry4744; X64-NEXT:    kmovw %edi, %k14745; X64-NEXT:    vfmadd231ps {{.*#+}} xmm2 {%k1} = (xmm0 * xmm1) + xmm24746; X64-NEXT:    vmovaps %xmm2, %xmm04747; X64-NEXT:    retq4748entry:4749  %0 = tail call <4 x float> @llvm.fma.v4f32(<4 x float> %__A, <4 x float> %__B, <4 x float> %__C) #94750  %1 = bitcast i8 %__U to <8 x i1>4751  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>4752  %2 = select <4 x i1> %extract.i, <4 x float> %0, <4 x float> %__C4753  ret <4 x float> %24754}4755 4756define <4 x float> @test_mm_mask3_fnmadd_ps(<4 x float> %__A, <4 x float> %__B, <4 x float> %__C, i8 zeroext %__U) {4757; X86-LABEL: test_mm_mask3_fnmadd_ps:4758; X86:       # %bb.0: # %entry4759; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4760; X86-NEXT:    kmovw %eax, %k14761; X86-NEXT:    vfnmadd231ps {{.*#+}} xmm2 {%k1} = -(xmm0 * xmm1) + xmm24762; X86-NEXT:    vmovaps %xmm2, %xmm04763; X86-NEXT:    retl4764;4765; X64-LABEL: test_mm_mask3_fnmadd_ps:4766; X64:       # %bb.0: # %entry4767; X64-NEXT:    kmovw %edi, %k14768; X64-NEXT:    vfnmadd231ps {{.*#+}} xmm2 {%k1} = -(xmm0 * xmm1) + xmm24769; X64-NEXT:    vmovaps %xmm2, %xmm04770; X64-NEXT:    retq4771entry:4772  %sub.i = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__A4773  %0 = tail call <4 x float> @llvm.fma.v4f32(<4 x float> %sub.i, <4 x float> %__B, <4 x float> %__C) #94774  %1 = bitcast i8 %__U to <8 x i1>4775  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>4776  %2 = select <4 x i1> %extract.i, <4 x float> %0, <4 x float> %__C4777  ret <4 x float> %24778}4779 4780define <4 x float> @test_mm_maskz_fmadd_ps(i8 zeroext %__U, <4 x float> %__A, <4 x float> %__B, <4 x float> %__C) {4781; X86-LABEL: test_mm_maskz_fmadd_ps:4782; X86:       # %bb.0: # %entry4783; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4784; X86-NEXT:    kmovw %eax, %k14785; X86-NEXT:    vfmadd213ps {{.*#+}} xmm0 {%k1} {z} = (xmm1 * xmm0) + xmm24786; X86-NEXT:    retl4787;4788; X64-LABEL: test_mm_maskz_fmadd_ps:4789; X64:       # %bb.0: # %entry4790; X64-NEXT:    kmovw %edi, %k14791; X64-NEXT:    vfmadd213ps {{.*#+}} xmm0 {%k1} {z} = (xmm1 * xmm0) + xmm24792; X64-NEXT:    retq4793entry:4794  %0 = tail call <4 x float> @llvm.fma.v4f32(<4 x float> %__A, <4 x float> %__B, <4 x float> %__C) #94795  %1 = bitcast i8 %__U to <8 x i1>4796  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>4797  %2 = select <4 x i1> %extract.i, <4 x float> %0, <4 x float> zeroinitializer4798  ret <4 x float> %24799}4800 4801define <4 x float> @test_mm_maskz_fmsub_ps(i8 zeroext %__U, <4 x float> %__A, <4 x float> %__B, <4 x float> %__C) {4802; X86-LABEL: test_mm_maskz_fmsub_ps:4803; X86:       # %bb.0: # %entry4804; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4805; X86-NEXT:    kmovw %eax, %k14806; X86-NEXT:    vfmsub213ps {{.*#+}} xmm0 {%k1} {z} = (xmm1 * xmm0) - xmm24807; X86-NEXT:    retl4808;4809; X64-LABEL: test_mm_maskz_fmsub_ps:4810; X64:       # %bb.0: # %entry4811; X64-NEXT:    kmovw %edi, %k14812; X64-NEXT:    vfmsub213ps {{.*#+}} xmm0 {%k1} {z} = (xmm1 * xmm0) - xmm24813; X64-NEXT:    retq4814entry:4815  %sub.i = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__C4816  %0 = tail call <4 x float> @llvm.fma.v4f32(<4 x float> %__A, <4 x float> %__B, <4 x float> %sub.i) #94817  %1 = bitcast i8 %__U to <8 x i1>4818  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>4819  %2 = select <4 x i1> %extract.i, <4 x float> %0, <4 x float> zeroinitializer4820  ret <4 x float> %24821}4822 4823define <4 x float> @test_mm_maskz_fnmadd_ps(i8 zeroext %__U, <4 x float> %__A, <4 x float> %__B, <4 x float> %__C) {4824; X86-LABEL: test_mm_maskz_fnmadd_ps:4825; X86:       # %bb.0: # %entry4826; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4827; X86-NEXT:    kmovw %eax, %k14828; X86-NEXT:    vfnmadd213ps {{.*#+}} xmm0 {%k1} {z} = -(xmm1 * xmm0) + xmm24829; X86-NEXT:    retl4830;4831; X64-LABEL: test_mm_maskz_fnmadd_ps:4832; X64:       # %bb.0: # %entry4833; X64-NEXT:    kmovw %edi, %k14834; X64-NEXT:    vfnmadd213ps {{.*#+}} xmm0 {%k1} {z} = -(xmm1 * xmm0) + xmm24835; X64-NEXT:    retq4836entry:4837  %sub.i = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__A4838  %0 = tail call <4 x float> @llvm.fma.v4f32(<4 x float> %sub.i, <4 x float> %__B, <4 x float> %__C) #94839  %1 = bitcast i8 %__U to <8 x i1>4840  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>4841  %2 = select <4 x i1> %extract.i, <4 x float> %0, <4 x float> zeroinitializer4842  ret <4 x float> %24843}4844 4845define <4 x float> @test_mm_maskz_fnmsub_ps(i8 zeroext %__U, <4 x float> %__A, <4 x float> %__B, <4 x float> %__C) {4846; X86-LABEL: test_mm_maskz_fnmsub_ps:4847; X86:       # %bb.0: # %entry4848; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4849; X86-NEXT:    kmovw %eax, %k14850; X86-NEXT:    vfnmsub213ps {{.*#+}} xmm0 {%k1} {z} = -(xmm1 * xmm0) - xmm24851; X86-NEXT:    retl4852;4853; X64-LABEL: test_mm_maskz_fnmsub_ps:4854; X64:       # %bb.0: # %entry4855; X64-NEXT:    kmovw %edi, %k14856; X64-NEXT:    vfnmsub213ps {{.*#+}} xmm0 {%k1} {z} = -(xmm1 * xmm0) - xmm24857; X64-NEXT:    retq4858entry:4859  %sub.i = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__A4860  %sub1.i = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__C4861  %0 = tail call <4 x float> @llvm.fma.v4f32(<4 x float> %sub.i, <4 x float> %__B, <4 x float> %sub1.i) #94862  %1 = bitcast i8 %__U to <8 x i1>4863  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>4864  %2 = select <4 x i1> %extract.i, <4 x float> %0, <4 x float> zeroinitializer4865  ret <4 x float> %24866}4867 4868define <8 x float> @test_mm256_mask_fmadd_ps(<8 x float> %__A, i8 zeroext %__U, <8 x float> %__B, <8 x float> %__C) {4869; X86-LABEL: test_mm256_mask_fmadd_ps:4870; X86:       # %bb.0: # %entry4871; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4872; X86-NEXT:    kmovw %eax, %k14873; X86-NEXT:    vfmadd132ps {{.*#+}} ymm0 {%k1} = (ymm0 * ymm1) + ymm24874; X86-NEXT:    retl4875;4876; X64-LABEL: test_mm256_mask_fmadd_ps:4877; X64:       # %bb.0: # %entry4878; X64-NEXT:    kmovw %edi, %k14879; X64-NEXT:    vfmadd132ps {{.*#+}} ymm0 {%k1} = (ymm0 * ymm1) + ymm24880; X64-NEXT:    retq4881entry:4882  %0 = tail call <8 x float> @llvm.fma.v8f32(<8 x float> %__A, <8 x float> %__B, <8 x float> %__C) #94883  %1 = bitcast i8 %__U to <8 x i1>4884  %2 = select <8 x i1> %1, <8 x float> %0, <8 x float> %__A4885  ret <8 x float> %24886}4887 4888define <8 x float> @test_mm256_mask_fmsub_ps(<8 x float> %__A, i8 zeroext %__U, <8 x float> %__B, <8 x float> %__C) {4889; X86-LABEL: test_mm256_mask_fmsub_ps:4890; X86:       # %bb.0: # %entry4891; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4892; X86-NEXT:    kmovw %eax, %k14893; X86-NEXT:    vfmsub132ps {{.*#+}} ymm0 {%k1} = (ymm0 * ymm1) - ymm24894; X86-NEXT:    retl4895;4896; X64-LABEL: test_mm256_mask_fmsub_ps:4897; X64:       # %bb.0: # %entry4898; X64-NEXT:    kmovw %edi, %k14899; X64-NEXT:    vfmsub132ps {{.*#+}} ymm0 {%k1} = (ymm0 * ymm1) - ymm24900; X64-NEXT:    retq4901entry:4902  %sub.i = fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__C4903  %0 = tail call <8 x float> @llvm.fma.v8f32(<8 x float> %__A, <8 x float> %__B, <8 x float> %sub.i) #94904  %1 = bitcast i8 %__U to <8 x i1>4905  %2 = select <8 x i1> %1, <8 x float> %0, <8 x float> %__A4906  ret <8 x float> %24907}4908 4909define <8 x float> @test_mm256_mask3_fmadd_ps(<8 x float> %__A, <8 x float> %__B, <8 x float> %__C, i8 zeroext %__U) {4910; X86-LABEL: test_mm256_mask3_fmadd_ps:4911; X86:       # %bb.0: # %entry4912; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4913; X86-NEXT:    kmovw %eax, %k14914; X86-NEXT:    vfmadd231ps {{.*#+}} ymm2 {%k1} = (ymm0 * ymm1) + ymm24915; X86-NEXT:    vmovaps %ymm2, %ymm04916; X86-NEXT:    retl4917;4918; X64-LABEL: test_mm256_mask3_fmadd_ps:4919; X64:       # %bb.0: # %entry4920; X64-NEXT:    kmovw %edi, %k14921; X64-NEXT:    vfmadd231ps {{.*#+}} ymm2 {%k1} = (ymm0 * ymm1) + ymm24922; X64-NEXT:    vmovaps %ymm2, %ymm04923; X64-NEXT:    retq4924entry:4925  %0 = tail call <8 x float> @llvm.fma.v8f32(<8 x float> %__A, <8 x float> %__B, <8 x float> %__C) #94926  %1 = bitcast i8 %__U to <8 x i1>4927  %2 = select <8 x i1> %1, <8 x float> %0, <8 x float> %__C4928  ret <8 x float> %24929}4930 4931define <8 x float> @test_mm256_mask3_fnmadd_ps(<8 x float> %__A, <8 x float> %__B, <8 x float> %__C, i8 zeroext %__U) {4932; X86-LABEL: test_mm256_mask3_fnmadd_ps:4933; X86:       # %bb.0: # %entry4934; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4935; X86-NEXT:    kmovw %eax, %k14936; X86-NEXT:    vfnmadd231ps {{.*#+}} ymm2 {%k1} = -(ymm0 * ymm1) + ymm24937; X86-NEXT:    vmovaps %ymm2, %ymm04938; X86-NEXT:    retl4939;4940; X64-LABEL: test_mm256_mask3_fnmadd_ps:4941; X64:       # %bb.0: # %entry4942; X64-NEXT:    kmovw %edi, %k14943; X64-NEXT:    vfnmadd231ps {{.*#+}} ymm2 {%k1} = -(ymm0 * ymm1) + ymm24944; X64-NEXT:    vmovaps %ymm2, %ymm04945; X64-NEXT:    retq4946entry:4947  %sub.i = fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__A4948  %0 = tail call <8 x float> @llvm.fma.v8f32(<8 x float> %sub.i, <8 x float> %__B, <8 x float> %__C) #94949  %1 = bitcast i8 %__U to <8 x i1>4950  %2 = select <8 x i1> %1, <8 x float> %0, <8 x float> %__C4951  ret <8 x float> %24952}4953 4954define <8 x float> @test_mm256_maskz_fmadd_ps(i8 zeroext %__U, <8 x float> %__A, <8 x float> %__B, <8 x float> %__C) {4955; X86-LABEL: test_mm256_maskz_fmadd_ps:4956; X86:       # %bb.0: # %entry4957; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4958; X86-NEXT:    kmovw %eax, %k14959; X86-NEXT:    vfmadd213ps {{.*#+}} ymm0 {%k1} {z} = (ymm1 * ymm0) + ymm24960; X86-NEXT:    retl4961;4962; X64-LABEL: test_mm256_maskz_fmadd_ps:4963; X64:       # %bb.0: # %entry4964; X64-NEXT:    kmovw %edi, %k14965; X64-NEXT:    vfmadd213ps {{.*#+}} ymm0 {%k1} {z} = (ymm1 * ymm0) + ymm24966; X64-NEXT:    retq4967entry:4968  %0 = tail call <8 x float> @llvm.fma.v8f32(<8 x float> %__A, <8 x float> %__B, <8 x float> %__C) #94969  %1 = bitcast i8 %__U to <8 x i1>4970  %2 = select <8 x i1> %1, <8 x float> %0, <8 x float> zeroinitializer4971  ret <8 x float> %24972}4973 4974define <8 x float> @test_mm256_maskz_fmsub_ps(i8 zeroext %__U, <8 x float> %__A, <8 x float> %__B, <8 x float> %__C) {4975; X86-LABEL: test_mm256_maskz_fmsub_ps:4976; X86:       # %bb.0: # %entry4977; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4978; X86-NEXT:    kmovw %eax, %k14979; X86-NEXT:    vfmsub213ps {{.*#+}} ymm0 {%k1} {z} = (ymm1 * ymm0) - ymm24980; X86-NEXT:    retl4981;4982; X64-LABEL: test_mm256_maskz_fmsub_ps:4983; X64:       # %bb.0: # %entry4984; X64-NEXT:    kmovw %edi, %k14985; X64-NEXT:    vfmsub213ps {{.*#+}} ymm0 {%k1} {z} = (ymm1 * ymm0) - ymm24986; X64-NEXT:    retq4987entry:4988  %sub.i = fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__C4989  %0 = tail call <8 x float> @llvm.fma.v8f32(<8 x float> %__A, <8 x float> %__B, <8 x float> %sub.i) #94990  %1 = bitcast i8 %__U to <8 x i1>4991  %2 = select <8 x i1> %1, <8 x float> %0, <8 x float> zeroinitializer4992  ret <8 x float> %24993}4994 4995define <8 x float> @test_mm256_maskz_fnmadd_ps(i8 zeroext %__U, <8 x float> %__A, <8 x float> %__B, <8 x float> %__C) {4996; X86-LABEL: test_mm256_maskz_fnmadd_ps:4997; X86:       # %bb.0: # %entry4998; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax4999; X86-NEXT:    kmovw %eax, %k15000; X86-NEXT:    vfnmadd213ps {{.*#+}} ymm0 {%k1} {z} = -(ymm1 * ymm0) + ymm25001; X86-NEXT:    retl5002;5003; X64-LABEL: test_mm256_maskz_fnmadd_ps:5004; X64:       # %bb.0: # %entry5005; X64-NEXT:    kmovw %edi, %k15006; X64-NEXT:    vfnmadd213ps {{.*#+}} ymm0 {%k1} {z} = -(ymm1 * ymm0) + ymm25007; X64-NEXT:    retq5008entry:5009  %sub.i = fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__A5010  %0 = tail call <8 x float> @llvm.fma.v8f32(<8 x float> %sub.i, <8 x float> %__B, <8 x float> %__C) #95011  %1 = bitcast i8 %__U to <8 x i1>5012  %2 = select <8 x i1> %1, <8 x float> %0, <8 x float> zeroinitializer5013  ret <8 x float> %25014}5015 5016define <8 x float> @test_mm256_maskz_fnmsub_ps(i8 zeroext %__U, <8 x float> %__A, <8 x float> %__B, <8 x float> %__C) {5017; X86-LABEL: test_mm256_maskz_fnmsub_ps:5018; X86:       # %bb.0: # %entry5019; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5020; X86-NEXT:    kmovw %eax, %k15021; X86-NEXT:    vfnmsub213ps {{.*#+}} ymm0 {%k1} {z} = -(ymm1 * ymm0) - ymm25022; X86-NEXT:    retl5023;5024; X64-LABEL: test_mm256_maskz_fnmsub_ps:5025; X64:       # %bb.0: # %entry5026; X64-NEXT:    kmovw %edi, %k15027; X64-NEXT:    vfnmsub213ps {{.*#+}} ymm0 {%k1} {z} = -(ymm1 * ymm0) - ymm25028; X64-NEXT:    retq5029entry:5030  %sub.i = fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__A5031  %sub1.i = fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__C5032  %0 = tail call <8 x float> @llvm.fma.v8f32(<8 x float> %sub.i, <8 x float> %__B, <8 x float> %sub1.i) #95033  %1 = bitcast i8 %__U to <8 x i1>5034  %2 = select <8 x i1> %1, <8 x float> %0, <8 x float> zeroinitializer5035  ret <8 x float> %25036}5037 5038define <2 x double> @test_mm_mask_fmaddsub_pd(<2 x double> %__A, i8 zeroext %__U, <2 x double> %__B, <2 x double> %__C) {5039; X86-LABEL: test_mm_mask_fmaddsub_pd:5040; X86:       # %bb.0: # %entry5041; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5042; X86-NEXT:    kmovw %eax, %k15043; X86-NEXT:    vfmaddsub132pd {{.*#+}} xmm0 {%k1} = (xmm0 * xmm1) +/- xmm25044; X86-NEXT:    retl5045;5046; X64-LABEL: test_mm_mask_fmaddsub_pd:5047; X64:       # %bb.0: # %entry5048; X64-NEXT:    kmovw %edi, %k15049; X64-NEXT:    vfmaddsub132pd {{.*#+}} xmm0 {%k1} = (xmm0 * xmm1) +/- xmm25050; X64-NEXT:    retq5051entry:5052  %0 = tail call <2 x double> @llvm.fma.v2f64(<2 x double> %__A, <2 x double> %__B, <2 x double> %__C) #95053  %1 = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %__C5054  %2 = tail call <2 x double> @llvm.fma.v2f64(<2 x double> %__A, <2 x double> %__B, <2 x double> %1) #95055  %3 = shufflevector <2 x double> %2, <2 x double> %0, <2 x i32> <i32 0, i32 3>5056  %4 = bitcast i8 %__U to <8 x i1>5057  %extract.i = shufflevector <8 x i1> %4, <8 x i1> undef, <2 x i32> <i32 0, i32 1>5058  %5 = select <2 x i1> %extract.i, <2 x double> %3, <2 x double> %__A5059  ret <2 x double> %55060}5061 5062define <2 x double> @test_mm_mask_fmsubadd_pd(<2 x double> %__A, i8 zeroext %__U, <2 x double> %__B, <2 x double> %__C) {5063; X86-LABEL: test_mm_mask_fmsubadd_pd:5064; X86:       # %bb.0: # %entry5065; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5066; X86-NEXT:    kmovw %eax, %k15067; X86-NEXT:    vfmsubadd132pd {{.*#+}} xmm0 {%k1} = (xmm0 * xmm1) -/+ xmm25068; X86-NEXT:    retl5069;5070; X64-LABEL: test_mm_mask_fmsubadd_pd:5071; X64:       # %bb.0: # %entry5072; X64-NEXT:    kmovw %edi, %k15073; X64-NEXT:    vfmsubadd132pd {{.*#+}} xmm0 {%k1} = (xmm0 * xmm1) -/+ xmm25074; X64-NEXT:    retq5075entry:5076  %sub.i = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %__C5077  %0 = tail call <2 x double> @llvm.fma.v2f64(<2 x double> %__A, <2 x double> %__B, <2 x double> %sub.i) #95078  %1 = tail call <2 x double> @llvm.fma.v2f64(<2 x double> %__A, <2 x double> %__B, <2 x double> %__C) #95079  %2 = shufflevector <2 x double> %1, <2 x double> %0, <2 x i32> <i32 0, i32 3>5080  %3 = bitcast i8 %__U to <8 x i1>5081  %extract.i = shufflevector <8 x i1> %3, <8 x i1> undef, <2 x i32> <i32 0, i32 1>5082  %4 = select <2 x i1> %extract.i, <2 x double> %2, <2 x double> %__A5083  ret <2 x double> %45084}5085 5086define <2 x double> @test_mm_mask3_fmaddsub_pd(<2 x double> %__A, <2 x double> %__B, <2 x double> %__C, i8 zeroext %__U) {5087; X86-LABEL: test_mm_mask3_fmaddsub_pd:5088; X86:       # %bb.0: # %entry5089; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5090; X86-NEXT:    kmovw %eax, %k15091; X86-NEXT:    vfmaddsub231pd {{.*#+}} xmm2 {%k1} = (xmm0 * xmm1) +/- xmm25092; X86-NEXT:    vmovapd %xmm2, %xmm05093; X86-NEXT:    retl5094;5095; X64-LABEL: test_mm_mask3_fmaddsub_pd:5096; X64:       # %bb.0: # %entry5097; X64-NEXT:    kmovw %edi, %k15098; X64-NEXT:    vfmaddsub231pd {{.*#+}} xmm2 {%k1} = (xmm0 * xmm1) +/- xmm25099; X64-NEXT:    vmovapd %xmm2, %xmm05100; X64-NEXT:    retq5101entry:5102  %0 = tail call <2 x double> @llvm.fma.v2f64(<2 x double> %__A, <2 x double> %__B, <2 x double> %__C) #95103  %1 = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %__C5104  %2 = tail call <2 x double> @llvm.fma.v2f64(<2 x double> %__A, <2 x double> %__B, <2 x double> %1) #95105  %3 = shufflevector <2 x double> %2, <2 x double> %0, <2 x i32> <i32 0, i32 3>5106  %4 = bitcast i8 %__U to <8 x i1>5107  %extract.i = shufflevector <8 x i1> %4, <8 x i1> undef, <2 x i32> <i32 0, i32 1>5108  %5 = select <2 x i1> %extract.i, <2 x double> %3, <2 x double> %__C5109  ret <2 x double> %55110}5111 5112define <2 x double> @test_mm_maskz_fmaddsub_pd(i8 zeroext %__U, <2 x double> %__A, <2 x double> %__B, <2 x double> %__C) {5113; X86-LABEL: test_mm_maskz_fmaddsub_pd:5114; X86:       # %bb.0: # %entry5115; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5116; X86-NEXT:    kmovw %eax, %k15117; X86-NEXT:    vfmaddsub213pd {{.*#+}} xmm0 {%k1} {z} = (xmm1 * xmm0) +/- xmm25118; X86-NEXT:    retl5119;5120; X64-LABEL: test_mm_maskz_fmaddsub_pd:5121; X64:       # %bb.0: # %entry5122; X64-NEXT:    kmovw %edi, %k15123; X64-NEXT:    vfmaddsub213pd {{.*#+}} xmm0 {%k1} {z} = (xmm1 * xmm0) +/- xmm25124; X64-NEXT:    retq5125entry:5126  %0 = tail call <2 x double> @llvm.fma.v2f64(<2 x double> %__A, <2 x double> %__B, <2 x double> %__C) #95127  %1 = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %__C5128  %2 = tail call <2 x double> @llvm.fma.v2f64(<2 x double> %__A, <2 x double> %__B, <2 x double> %1) #95129  %3 = shufflevector <2 x double> %2, <2 x double> %0, <2 x i32> <i32 0, i32 3>5130  %4 = bitcast i8 %__U to <8 x i1>5131  %extract.i = shufflevector <8 x i1> %4, <8 x i1> undef, <2 x i32> <i32 0, i32 1>5132  %5 = select <2 x i1> %extract.i, <2 x double> %3, <2 x double> zeroinitializer5133  ret <2 x double> %55134}5135 5136define <2 x double> @test_mm_maskz_fmsubadd_pd(i8 zeroext %__U, <2 x double> %__A, <2 x double> %__B, <2 x double> %__C) {5137; X86-LABEL: test_mm_maskz_fmsubadd_pd:5138; X86:       # %bb.0: # %entry5139; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5140; X86-NEXT:    kmovw %eax, %k15141; X86-NEXT:    vfmsubadd213pd {{.*#+}} xmm0 {%k1} {z} = (xmm1 * xmm0) -/+ xmm25142; X86-NEXT:    retl5143;5144; X64-LABEL: test_mm_maskz_fmsubadd_pd:5145; X64:       # %bb.0: # %entry5146; X64-NEXT:    kmovw %edi, %k15147; X64-NEXT:    vfmsubadd213pd {{.*#+}} xmm0 {%k1} {z} = (xmm1 * xmm0) -/+ xmm25148; X64-NEXT:    retq5149entry:5150  %sub.i = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %__C5151  %0 = tail call <2 x double> @llvm.fma.v2f64(<2 x double> %__A, <2 x double> %__B, <2 x double> %sub.i) #95152  %1 = tail call <2 x double> @llvm.fma.v2f64(<2 x double> %__A, <2 x double> %__B, <2 x double> %__C) #95153  %2 = shufflevector <2 x double> %1, <2 x double> %0, <2 x i32> <i32 0, i32 3>5154  %3 = bitcast i8 %__U to <8 x i1>5155  %extract.i = shufflevector <8 x i1> %3, <8 x i1> undef, <2 x i32> <i32 0, i32 1>5156  %4 = select <2 x i1> %extract.i, <2 x double> %2, <2 x double> zeroinitializer5157  ret <2 x double> %45158}5159 5160define <4 x double> @test_mm256_mask_fmaddsub_pd(<4 x double> %__A, i8 zeroext %__U, <4 x double> %__B, <4 x double> %__C) {5161; X86-LABEL: test_mm256_mask_fmaddsub_pd:5162; X86:       # %bb.0: # %entry5163; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5164; X86-NEXT:    kmovw %eax, %k15165; X86-NEXT:    vfmaddsub132pd {{.*#+}} ymm0 {%k1} = (ymm0 * ymm1) +/- ymm25166; X86-NEXT:    retl5167;5168; X64-LABEL: test_mm256_mask_fmaddsub_pd:5169; X64:       # %bb.0: # %entry5170; X64-NEXT:    kmovw %edi, %k15171; X64-NEXT:    vfmaddsub132pd {{.*#+}} ymm0 {%k1} = (ymm0 * ymm1) +/- ymm25172; X64-NEXT:    retq5173entry:5174  %0 = tail call <4 x double> @llvm.fma.v4f64(<4 x double> %__A, <4 x double> %__B, <4 x double> %__C) #95175  %1 = fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C5176  %2 = tail call <4 x double> @llvm.fma.v4f64(<4 x double> %__A, <4 x double> %__B, <4 x double> %1) #95177  %3 = shufflevector <4 x double> %2, <4 x double> %0, <4 x i32> <i32 0, i32 5, i32 2, i32 7>5178  %4 = bitcast i8 %__U to <8 x i1>5179  %extract.i = shufflevector <8 x i1> %4, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>5180  %5 = select <4 x i1> %extract.i, <4 x double> %3, <4 x double> %__A5181  ret <4 x double> %55182}5183 5184define <4 x double> @test_mm256_mask_fmsubadd_pd(<4 x double> %__A, i8 zeroext %__U, <4 x double> %__B, <4 x double> %__C) {5185; X86-LABEL: test_mm256_mask_fmsubadd_pd:5186; X86:       # %bb.0: # %entry5187; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5188; X86-NEXT:    kmovw %eax, %k15189; X86-NEXT:    vfmsubadd132pd {{.*#+}} ymm0 {%k1} = (ymm0 * ymm1) -/+ ymm25190; X86-NEXT:    retl5191;5192; X64-LABEL: test_mm256_mask_fmsubadd_pd:5193; X64:       # %bb.0: # %entry5194; X64-NEXT:    kmovw %edi, %k15195; X64-NEXT:    vfmsubadd132pd {{.*#+}} ymm0 {%k1} = (ymm0 * ymm1) -/+ ymm25196; X64-NEXT:    retq5197entry:5198  %sub.i = fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C5199  %0 = tail call <4 x double> @llvm.fma.v4f64(<4 x double> %__A, <4 x double> %__B, <4 x double> %sub.i) #95200  %1 = tail call <4 x double> @llvm.fma.v4f64(<4 x double> %__A, <4 x double> %__B, <4 x double> %__C) #95201  %2 = shufflevector <4 x double> %1, <4 x double> %0, <4 x i32> <i32 0, i32 5, i32 2, i32 7>5202  %3 = bitcast i8 %__U to <8 x i1>5203  %extract.i = shufflevector <8 x i1> %3, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>5204  %4 = select <4 x i1> %extract.i, <4 x double> %2, <4 x double> %__A5205  ret <4 x double> %45206}5207 5208define <4 x double> @test_mm256_mask3_fmaddsub_pd(<4 x double> %__A, <4 x double> %__B, <4 x double> %__C, i8 zeroext %__U) {5209; X86-LABEL: test_mm256_mask3_fmaddsub_pd:5210; X86:       # %bb.0: # %entry5211; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5212; X86-NEXT:    kmovw %eax, %k15213; X86-NEXT:    vfmaddsub231pd {{.*#+}} ymm2 {%k1} = (ymm0 * ymm1) +/- ymm25214; X86-NEXT:    vmovapd %ymm2, %ymm05215; X86-NEXT:    retl5216;5217; X64-LABEL: test_mm256_mask3_fmaddsub_pd:5218; X64:       # %bb.0: # %entry5219; X64-NEXT:    kmovw %edi, %k15220; X64-NEXT:    vfmaddsub231pd {{.*#+}} ymm2 {%k1} = (ymm0 * ymm1) +/- ymm25221; X64-NEXT:    vmovapd %ymm2, %ymm05222; X64-NEXT:    retq5223entry:5224  %0 = tail call <4 x double> @llvm.fma.v4f64(<4 x double> %__A, <4 x double> %__B, <4 x double> %__C) #95225  %1 = fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C5226  %2 = tail call <4 x double> @llvm.fma.v4f64(<4 x double> %__A, <4 x double> %__B, <4 x double> %1) #95227  %3 = shufflevector <4 x double> %2, <4 x double> %0, <4 x i32> <i32 0, i32 5, i32 2, i32 7>5228  %4 = bitcast i8 %__U to <8 x i1>5229  %extract.i = shufflevector <8 x i1> %4, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>5230  %5 = select <4 x i1> %extract.i, <4 x double> %3, <4 x double> %__C5231  ret <4 x double> %55232}5233 5234define <4 x double> @test_mm256_maskz_fmaddsub_pd(i8 zeroext %__U, <4 x double> %__A, <4 x double> %__B, <4 x double> %__C) {5235; X86-LABEL: test_mm256_maskz_fmaddsub_pd:5236; X86:       # %bb.0: # %entry5237; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5238; X86-NEXT:    kmovw %eax, %k15239; X86-NEXT:    vfmaddsub213pd {{.*#+}} ymm0 {%k1} {z} = (ymm1 * ymm0) +/- ymm25240; X86-NEXT:    retl5241;5242; X64-LABEL: test_mm256_maskz_fmaddsub_pd:5243; X64:       # %bb.0: # %entry5244; X64-NEXT:    kmovw %edi, %k15245; X64-NEXT:    vfmaddsub213pd {{.*#+}} ymm0 {%k1} {z} = (ymm1 * ymm0) +/- ymm25246; X64-NEXT:    retq5247entry:5248  %0 = tail call <4 x double> @llvm.fma.v4f64(<4 x double> %__A, <4 x double> %__B, <4 x double> %__C) #95249  %1 = fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C5250  %2 = tail call <4 x double> @llvm.fma.v4f64(<4 x double> %__A, <4 x double> %__B, <4 x double> %1) #95251  %3 = shufflevector <4 x double> %2, <4 x double> %0, <4 x i32> <i32 0, i32 5, i32 2, i32 7>5252  %4 = bitcast i8 %__U to <8 x i1>5253  %extract.i = shufflevector <8 x i1> %4, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>5254  %5 = select <4 x i1> %extract.i, <4 x double> %3, <4 x double> zeroinitializer5255  ret <4 x double> %55256}5257 5258define <4 x double> @test_mm256_maskz_fmsubadd_pd(i8 zeroext %__U, <4 x double> %__A, <4 x double> %__B, <4 x double> %__C) {5259; X86-LABEL: test_mm256_maskz_fmsubadd_pd:5260; X86:       # %bb.0: # %entry5261; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5262; X86-NEXT:    kmovw %eax, %k15263; X86-NEXT:    vfmsubadd213pd {{.*#+}} ymm0 {%k1} {z} = (ymm1 * ymm0) -/+ ymm25264; X86-NEXT:    retl5265;5266; X64-LABEL: test_mm256_maskz_fmsubadd_pd:5267; X64:       # %bb.0: # %entry5268; X64-NEXT:    kmovw %edi, %k15269; X64-NEXT:    vfmsubadd213pd {{.*#+}} ymm0 {%k1} {z} = (ymm1 * ymm0) -/+ ymm25270; X64-NEXT:    retq5271entry:5272  %sub.i = fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C5273  %0 = tail call <4 x double> @llvm.fma.v4f64(<4 x double> %__A, <4 x double> %__B, <4 x double> %sub.i) #95274  %1 = tail call <4 x double> @llvm.fma.v4f64(<4 x double> %__A, <4 x double> %__B, <4 x double> %__C) #95275  %2 = shufflevector <4 x double> %1, <4 x double> %0, <4 x i32> <i32 0, i32 5, i32 2, i32 7>5276  %3 = bitcast i8 %__U to <8 x i1>5277  %extract.i = shufflevector <8 x i1> %3, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>5278  %4 = select <4 x i1> %extract.i, <4 x double> %2, <4 x double> zeroinitializer5279  ret <4 x double> %45280}5281 5282define <4 x float> @test_mm_mask_fmaddsub_ps(<4 x float> %__A, i8 zeroext %__U, <4 x float> %__B, <4 x float> %__C) {5283; X86-LABEL: test_mm_mask_fmaddsub_ps:5284; X86:       # %bb.0: # %entry5285; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5286; X86-NEXT:    kmovw %eax, %k15287; X86-NEXT:    vfmaddsub132ps {{.*#+}} xmm0 {%k1} = (xmm0 * xmm1) +/- xmm25288; X86-NEXT:    retl5289;5290; X64-LABEL: test_mm_mask_fmaddsub_ps:5291; X64:       # %bb.0: # %entry5292; X64-NEXT:    kmovw %edi, %k15293; X64-NEXT:    vfmaddsub132ps {{.*#+}} xmm0 {%k1} = (xmm0 * xmm1) +/- xmm25294; X64-NEXT:    retq5295entry:5296  %0 = tail call <4 x float> @llvm.fma.v4f32(<4 x float> %__A, <4 x float> %__B, <4 x float> %__C) #95297  %1 = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__C5298  %2 = tail call <4 x float> @llvm.fma.v4f32(<4 x float> %__A, <4 x float> %__B, <4 x float> %1) #95299  %3 = shufflevector <4 x float> %2, <4 x float> %0, <4 x i32> <i32 0, i32 5, i32 2, i32 7>5300  %4 = bitcast i8 %__U to <8 x i1>5301  %extract.i = shufflevector <8 x i1> %4, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>5302  %5 = select <4 x i1> %extract.i, <4 x float> %3, <4 x float> %__A5303  ret <4 x float> %55304}5305 5306define <4 x float> @test_mm_mask_fmsubadd_ps(<4 x float> %__A, i8 zeroext %__U, <4 x float> %__B, <4 x float> %__C) {5307; X86-LABEL: test_mm_mask_fmsubadd_ps:5308; X86:       # %bb.0: # %entry5309; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5310; X86-NEXT:    kmovw %eax, %k15311; X86-NEXT:    vfmsubadd132ps {{.*#+}} xmm0 {%k1} = (xmm0 * xmm1) -/+ xmm25312; X86-NEXT:    retl5313;5314; X64-LABEL: test_mm_mask_fmsubadd_ps:5315; X64:       # %bb.0: # %entry5316; X64-NEXT:    kmovw %edi, %k15317; X64-NEXT:    vfmsubadd132ps {{.*#+}} xmm0 {%k1} = (xmm0 * xmm1) -/+ xmm25318; X64-NEXT:    retq5319entry:5320  %sub.i = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__C5321  %0 = tail call <4 x float> @llvm.fma.v4f32(<4 x float> %__A, <4 x float> %__B, <4 x float> %sub.i) #95322  %1 = tail call <4 x float> @llvm.fma.v4f32(<4 x float> %__A, <4 x float> %__B, <4 x float> %__C) #95323  %2 = shufflevector <4 x float> %1, <4 x float> %0, <4 x i32> <i32 0, i32 5, i32 2, i32 7>5324  %3 = bitcast i8 %__U to <8 x i1>5325  %extract.i = shufflevector <8 x i1> %3, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>5326  %4 = select <4 x i1> %extract.i, <4 x float> %2, <4 x float> %__A5327  ret <4 x float> %45328}5329 5330define <4 x float> @test_mm_mask3_fmaddsub_ps(<4 x float> %__A, <4 x float> %__B, <4 x float> %__C, i8 zeroext %__U) {5331; X86-LABEL: test_mm_mask3_fmaddsub_ps:5332; X86:       # %bb.0: # %entry5333; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5334; X86-NEXT:    kmovw %eax, %k15335; X86-NEXT:    vfmaddsub231ps {{.*#+}} xmm2 {%k1} = (xmm0 * xmm1) +/- xmm25336; X86-NEXT:    vmovaps %xmm2, %xmm05337; X86-NEXT:    retl5338;5339; X64-LABEL: test_mm_mask3_fmaddsub_ps:5340; X64:       # %bb.0: # %entry5341; X64-NEXT:    kmovw %edi, %k15342; X64-NEXT:    vfmaddsub231ps {{.*#+}} xmm2 {%k1} = (xmm0 * xmm1) +/- xmm25343; X64-NEXT:    vmovaps %xmm2, %xmm05344; X64-NEXT:    retq5345entry:5346  %0 = tail call <4 x float> @llvm.fma.v4f32(<4 x float> %__A, <4 x float> %__B, <4 x float> %__C) #95347  %1 = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__C5348  %2 = tail call <4 x float> @llvm.fma.v4f32(<4 x float> %__A, <4 x float> %__B, <4 x float> %1) #95349  %3 = shufflevector <4 x float> %2, <4 x float> %0, <4 x i32> <i32 0, i32 5, i32 2, i32 7>5350  %4 = bitcast i8 %__U to <8 x i1>5351  %extract.i = shufflevector <8 x i1> %4, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>5352  %5 = select <4 x i1> %extract.i, <4 x float> %3, <4 x float> %__C5353  ret <4 x float> %55354}5355 5356define <4 x float> @test_mm_maskz_fmaddsub_ps(i8 zeroext %__U, <4 x float> %__A, <4 x float> %__B, <4 x float> %__C) {5357; X86-LABEL: test_mm_maskz_fmaddsub_ps:5358; X86:       # %bb.0: # %entry5359; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5360; X86-NEXT:    kmovw %eax, %k15361; X86-NEXT:    vfmaddsub213ps {{.*#+}} xmm0 {%k1} {z} = (xmm1 * xmm0) +/- xmm25362; X86-NEXT:    retl5363;5364; X64-LABEL: test_mm_maskz_fmaddsub_ps:5365; X64:       # %bb.0: # %entry5366; X64-NEXT:    kmovw %edi, %k15367; X64-NEXT:    vfmaddsub213ps {{.*#+}} xmm0 {%k1} {z} = (xmm1 * xmm0) +/- xmm25368; X64-NEXT:    retq5369entry:5370  %0 = tail call <4 x float> @llvm.fma.v4f32(<4 x float> %__A, <4 x float> %__B, <4 x float> %__C) #95371  %1 = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__C5372  %2 = tail call <4 x float> @llvm.fma.v4f32(<4 x float> %__A, <4 x float> %__B, <4 x float> %1) #95373  %3 = shufflevector <4 x float> %2, <4 x float> %0, <4 x i32> <i32 0, i32 5, i32 2, i32 7>5374  %4 = bitcast i8 %__U to <8 x i1>5375  %extract.i = shufflevector <8 x i1> %4, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>5376  %5 = select <4 x i1> %extract.i, <4 x float> %3, <4 x float> zeroinitializer5377  ret <4 x float> %55378}5379 5380define <4 x float> @test_mm_maskz_fmsubadd_ps(i8 zeroext %__U, <4 x float> %__A, <4 x float> %__B, <4 x float> %__C) {5381; X86-LABEL: test_mm_maskz_fmsubadd_ps:5382; X86:       # %bb.0: # %entry5383; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5384; X86-NEXT:    kmovw %eax, %k15385; X86-NEXT:    vfmsubadd213ps {{.*#+}} xmm0 {%k1} {z} = (xmm1 * xmm0) -/+ xmm25386; X86-NEXT:    retl5387;5388; X64-LABEL: test_mm_maskz_fmsubadd_ps:5389; X64:       # %bb.0: # %entry5390; X64-NEXT:    kmovw %edi, %k15391; X64-NEXT:    vfmsubadd213ps {{.*#+}} xmm0 {%k1} {z} = (xmm1 * xmm0) -/+ xmm25392; X64-NEXT:    retq5393entry:5394  %sub.i = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__C5395  %0 = tail call <4 x float> @llvm.fma.v4f32(<4 x float> %__A, <4 x float> %__B, <4 x float> %sub.i) #95396  %1 = tail call <4 x float> @llvm.fma.v4f32(<4 x float> %__A, <4 x float> %__B, <4 x float> %__C) #95397  %2 = shufflevector <4 x float> %1, <4 x float> %0, <4 x i32> <i32 0, i32 5, i32 2, i32 7>5398  %3 = bitcast i8 %__U to <8 x i1>5399  %extract.i = shufflevector <8 x i1> %3, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>5400  %4 = select <4 x i1> %extract.i, <4 x float> %2, <4 x float> zeroinitializer5401  ret <4 x float> %45402}5403 5404define <8 x float> @test_mm256_mask_fmaddsub_ps(<8 x float> %__A, i8 zeroext %__U, <8 x float> %__B, <8 x float> %__C) {5405; X86-LABEL: test_mm256_mask_fmaddsub_ps:5406; X86:       # %bb.0: # %entry5407; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5408; X86-NEXT:    kmovw %eax, %k15409; X86-NEXT:    vfmaddsub132ps {{.*#+}} ymm0 {%k1} = (ymm0 * ymm1) +/- ymm25410; X86-NEXT:    retl5411;5412; X64-LABEL: test_mm256_mask_fmaddsub_ps:5413; X64:       # %bb.0: # %entry5414; X64-NEXT:    kmovw %edi, %k15415; X64-NEXT:    vfmaddsub132ps {{.*#+}} ymm0 {%k1} = (ymm0 * ymm1) +/- ymm25416; X64-NEXT:    retq5417entry:5418  %0 = tail call <8 x float> @llvm.fma.v8f32(<8 x float> %__A, <8 x float> %__B, <8 x float> %__C) #95419  %1 = fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__C5420  %2 = tail call <8 x float> @llvm.fma.v8f32(<8 x float> %__A, <8 x float> %__B, <8 x float> %1) #95421  %3 = shufflevector <8 x float> %2, <8 x float> %0, <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>5422  %4 = bitcast i8 %__U to <8 x i1>5423  %5 = select <8 x i1> %4, <8 x float> %3, <8 x float> %__A5424  ret <8 x float> %55425}5426 5427define <8 x float> @test_mm256_mask_fmsubadd_ps(<8 x float> %__A, i8 zeroext %__U, <8 x float> %__B, <8 x float> %__C) {5428; X86-LABEL: test_mm256_mask_fmsubadd_ps:5429; X86:       # %bb.0: # %entry5430; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5431; X86-NEXT:    kmovw %eax, %k15432; X86-NEXT:    vfmsubadd132ps {{.*#+}} ymm0 {%k1} = (ymm0 * ymm1) -/+ ymm25433; X86-NEXT:    retl5434;5435; X64-LABEL: test_mm256_mask_fmsubadd_ps:5436; X64:       # %bb.0: # %entry5437; X64-NEXT:    kmovw %edi, %k15438; X64-NEXT:    vfmsubadd132ps {{.*#+}} ymm0 {%k1} = (ymm0 * ymm1) -/+ ymm25439; X64-NEXT:    retq5440entry:5441  %sub.i = fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__C5442  %0 = tail call <8 x float> @llvm.fma.v8f32(<8 x float> %__A, <8 x float> %__B, <8 x float> %sub.i) #95443  %1 = tail call <8 x float> @llvm.fma.v8f32(<8 x float> %__A, <8 x float> %__B, <8 x float> %__C) #95444  %2 = shufflevector <8 x float> %1, <8 x float> %0, <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>5445  %3 = bitcast i8 %__U to <8 x i1>5446  %4 = select <8 x i1> %3, <8 x float> %2, <8 x float> %__A5447  ret <8 x float> %45448}5449 5450define <8 x float> @test_mm256_mask3_fmaddsub_ps(<8 x float> %__A, <8 x float> %__B, <8 x float> %__C, i8 zeroext %__U) {5451; X86-LABEL: test_mm256_mask3_fmaddsub_ps:5452; X86:       # %bb.0: # %entry5453; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5454; X86-NEXT:    kmovw %eax, %k15455; X86-NEXT:    vfmaddsub231ps {{.*#+}} ymm2 {%k1} = (ymm0 * ymm1) +/- ymm25456; X86-NEXT:    vmovaps %ymm2, %ymm05457; X86-NEXT:    retl5458;5459; X64-LABEL: test_mm256_mask3_fmaddsub_ps:5460; X64:       # %bb.0: # %entry5461; X64-NEXT:    kmovw %edi, %k15462; X64-NEXT:    vfmaddsub231ps {{.*#+}} ymm2 {%k1} = (ymm0 * ymm1) +/- ymm25463; X64-NEXT:    vmovaps %ymm2, %ymm05464; X64-NEXT:    retq5465entry:5466  %0 = tail call <8 x float> @llvm.fma.v8f32(<8 x float> %__A, <8 x float> %__B, <8 x float> %__C) #95467  %1 = fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__C5468  %2 = tail call <8 x float> @llvm.fma.v8f32(<8 x float> %__A, <8 x float> %__B, <8 x float> %1) #95469  %3 = shufflevector <8 x float> %2, <8 x float> %0, <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>5470  %4 = bitcast i8 %__U to <8 x i1>5471  %5 = select <8 x i1> %4, <8 x float> %3, <8 x float> %__C5472  ret <8 x float> %55473}5474 5475define <8 x float> @test_mm256_maskz_fmaddsub_ps(i8 zeroext %__U, <8 x float> %__A, <8 x float> %__B, <8 x float> %__C) {5476; X86-LABEL: test_mm256_maskz_fmaddsub_ps:5477; X86:       # %bb.0: # %entry5478; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5479; X86-NEXT:    kmovw %eax, %k15480; X86-NEXT:    vfmaddsub213ps {{.*#+}} ymm0 {%k1} {z} = (ymm1 * ymm0) +/- ymm25481; X86-NEXT:    retl5482;5483; X64-LABEL: test_mm256_maskz_fmaddsub_ps:5484; X64:       # %bb.0: # %entry5485; X64-NEXT:    kmovw %edi, %k15486; X64-NEXT:    vfmaddsub213ps {{.*#+}} ymm0 {%k1} {z} = (ymm1 * ymm0) +/- ymm25487; X64-NEXT:    retq5488entry:5489  %0 = tail call <8 x float> @llvm.fma.v8f32(<8 x float> %__A, <8 x float> %__B, <8 x float> %__C) #95490  %1 = fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__C5491  %2 = tail call <8 x float> @llvm.fma.v8f32(<8 x float> %__A, <8 x float> %__B, <8 x float> %1) #95492  %3 = shufflevector <8 x float> %2, <8 x float> %0, <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>5493  %4 = bitcast i8 %__U to <8 x i1>5494  %5 = select <8 x i1> %4, <8 x float> %3, <8 x float> zeroinitializer5495  ret <8 x float> %55496}5497 5498define <8 x float> @test_mm256_maskz_fmsubadd_ps(i8 zeroext %__U, <8 x float> %__A, <8 x float> %__B, <8 x float> %__C) {5499; X86-LABEL: test_mm256_maskz_fmsubadd_ps:5500; X86:       # %bb.0: # %entry5501; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5502; X86-NEXT:    kmovw %eax, %k15503; X86-NEXT:    vfmsubadd213ps {{.*#+}} ymm0 {%k1} {z} = (ymm1 * ymm0) -/+ ymm25504; X86-NEXT:    retl5505;5506; X64-LABEL: test_mm256_maskz_fmsubadd_ps:5507; X64:       # %bb.0: # %entry5508; X64-NEXT:    kmovw %edi, %k15509; X64-NEXT:    vfmsubadd213ps {{.*#+}} ymm0 {%k1} {z} = (ymm1 * ymm0) -/+ ymm25510; X64-NEXT:    retq5511entry:5512  %sub.i = fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__C5513  %0 = tail call <8 x float> @llvm.fma.v8f32(<8 x float> %__A, <8 x float> %__B, <8 x float> %sub.i) #95514  %1 = tail call <8 x float> @llvm.fma.v8f32(<8 x float> %__A, <8 x float> %__B, <8 x float> %__C) #95515  %2 = shufflevector <8 x float> %1, <8 x float> %0, <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>5516  %3 = bitcast i8 %__U to <8 x i1>5517  %4 = select <8 x i1> %3, <8 x float> %2, <8 x float> zeroinitializer5518  ret <8 x float> %45519}5520 5521define <2 x double> @test_mm_mask3_fmsub_pd(<2 x double> %__A, <2 x double> %__B, <2 x double> %__C, i8 zeroext %__U) {5522; X86-LABEL: test_mm_mask3_fmsub_pd:5523; X86:       # %bb.0: # %entry5524; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5525; X86-NEXT:    kmovw %eax, %k15526; X86-NEXT:    vfmsub231pd {{.*#+}} xmm2 {%k1} = (xmm0 * xmm1) - xmm25527; X86-NEXT:    vmovapd %xmm2, %xmm05528; X86-NEXT:    retl5529;5530; X64-LABEL: test_mm_mask3_fmsub_pd:5531; X64:       # %bb.0: # %entry5532; X64-NEXT:    kmovw %edi, %k15533; X64-NEXT:    vfmsub231pd {{.*#+}} xmm2 {%k1} = (xmm0 * xmm1) - xmm25534; X64-NEXT:    vmovapd %xmm2, %xmm05535; X64-NEXT:    retq5536entry:5537  %sub.i = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %__C5538  %0 = tail call <2 x double> @llvm.fma.v2f64(<2 x double> %__A, <2 x double> %__B, <2 x double> %sub.i) #95539  %1 = bitcast i8 %__U to <8 x i1>5540  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <2 x i32> <i32 0, i32 1>5541  %2 = select <2 x i1> %extract.i, <2 x double> %0, <2 x double> %__C5542  ret <2 x double> %25543}5544 5545define <4 x double> @test_mm256_mask3_fmsub_pd(<4 x double> %__A, <4 x double> %__B, <4 x double> %__C, i8 zeroext %__U) {5546; X86-LABEL: test_mm256_mask3_fmsub_pd:5547; X86:       # %bb.0: # %entry5548; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5549; X86-NEXT:    kmovw %eax, %k15550; X86-NEXT:    vfmsub231pd {{.*#+}} ymm2 {%k1} = (ymm0 * ymm1) - ymm25551; X86-NEXT:    vmovapd %ymm2, %ymm05552; X86-NEXT:    retl5553;5554; X64-LABEL: test_mm256_mask3_fmsub_pd:5555; X64:       # %bb.0: # %entry5556; X64-NEXT:    kmovw %edi, %k15557; X64-NEXT:    vfmsub231pd {{.*#+}} ymm2 {%k1} = (ymm0 * ymm1) - ymm25558; X64-NEXT:    vmovapd %ymm2, %ymm05559; X64-NEXT:    retq5560entry:5561  %sub.i = fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C5562  %0 = tail call <4 x double> @llvm.fma.v4f64(<4 x double> %__A, <4 x double> %__B, <4 x double> %sub.i) #95563  %1 = bitcast i8 %__U to <8 x i1>5564  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>5565  %2 = select <4 x i1> %extract.i, <4 x double> %0, <4 x double> %__C5566  ret <4 x double> %25567}5568 5569define <4 x float> @test_mm_mask3_fmsub_ps(<4 x float> %__A, <4 x float> %__B, <4 x float> %__C, i8 zeroext %__U) {5570; X86-LABEL: test_mm_mask3_fmsub_ps:5571; X86:       # %bb.0: # %entry5572; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5573; X86-NEXT:    kmovw %eax, %k15574; X86-NEXT:    vfmsub231ps {{.*#+}} xmm2 {%k1} = (xmm0 * xmm1) - xmm25575; X86-NEXT:    vmovaps %xmm2, %xmm05576; X86-NEXT:    retl5577;5578; X64-LABEL: test_mm_mask3_fmsub_ps:5579; X64:       # %bb.0: # %entry5580; X64-NEXT:    kmovw %edi, %k15581; X64-NEXT:    vfmsub231ps {{.*#+}} xmm2 {%k1} = (xmm0 * xmm1) - xmm25582; X64-NEXT:    vmovaps %xmm2, %xmm05583; X64-NEXT:    retq5584entry:5585  %sub.i = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__C5586  %0 = tail call <4 x float> @llvm.fma.v4f32(<4 x float> %__A, <4 x float> %__B, <4 x float> %sub.i) #95587  %1 = bitcast i8 %__U to <8 x i1>5588  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>5589  %2 = select <4 x i1> %extract.i, <4 x float> %0, <4 x float> %__C5590  ret <4 x float> %25591}5592 5593define <8 x float> @test_mm256_mask3_fmsub_ps(<8 x float> %__A, <8 x float> %__B, <8 x float> %__C, i8 zeroext %__U) {5594; X86-LABEL: test_mm256_mask3_fmsub_ps:5595; X86:       # %bb.0: # %entry5596; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5597; X86-NEXT:    kmovw %eax, %k15598; X86-NEXT:    vfmsub231ps {{.*#+}} ymm2 {%k1} = (ymm0 * ymm1) - ymm25599; X86-NEXT:    vmovaps %ymm2, %ymm05600; X86-NEXT:    retl5601;5602; X64-LABEL: test_mm256_mask3_fmsub_ps:5603; X64:       # %bb.0: # %entry5604; X64-NEXT:    kmovw %edi, %k15605; X64-NEXT:    vfmsub231ps {{.*#+}} ymm2 {%k1} = (ymm0 * ymm1) - ymm25606; X64-NEXT:    vmovaps %ymm2, %ymm05607; X64-NEXT:    retq5608entry:5609  %sub.i = fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__C5610  %0 = tail call <8 x float> @llvm.fma.v8f32(<8 x float> %__A, <8 x float> %__B, <8 x float> %sub.i) #95611  %1 = bitcast i8 %__U to <8 x i1>5612  %2 = select <8 x i1> %1, <8 x float> %0, <8 x float> %__C5613  ret <8 x float> %25614}5615 5616define <2 x double> @test_mm_mask3_fmsubadd_pd(<2 x double> %__A, <2 x double> %__B, <2 x double> %__C, i8 zeroext %__U) {5617; X86-LABEL: test_mm_mask3_fmsubadd_pd:5618; X86:       # %bb.0: # %entry5619; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5620; X86-NEXT:    kmovw %eax, %k15621; X86-NEXT:    vfmsubadd231pd {{.*#+}} xmm2 {%k1} = (xmm0 * xmm1) -/+ xmm25622; X86-NEXT:    vmovapd %xmm2, %xmm05623; X86-NEXT:    retl5624;5625; X64-LABEL: test_mm_mask3_fmsubadd_pd:5626; X64:       # %bb.0: # %entry5627; X64-NEXT:    kmovw %edi, %k15628; X64-NEXT:    vfmsubadd231pd {{.*#+}} xmm2 {%k1} = (xmm0 * xmm1) -/+ xmm25629; X64-NEXT:    vmovapd %xmm2, %xmm05630; X64-NEXT:    retq5631entry:5632  %sub.i = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %__C5633  %0 = tail call <2 x double> @llvm.fma.v2f64(<2 x double> %__A, <2 x double> %__B, <2 x double> %sub.i) #95634  %1 = tail call <2 x double> @llvm.fma.v2f64(<2 x double> %__A, <2 x double> %__B, <2 x double> %__C) #95635  %2 = shufflevector <2 x double> %1, <2 x double> %0, <2 x i32> <i32 0, i32 3>5636  %3 = bitcast i8 %__U to <8 x i1>5637  %extract.i = shufflevector <8 x i1> %3, <8 x i1> undef, <2 x i32> <i32 0, i32 1>5638  %4 = select <2 x i1> %extract.i, <2 x double> %2, <2 x double> %__C5639  ret <2 x double> %45640}5641 5642define <4 x double> @test_mm256_mask3_fmsubadd_pd(<4 x double> %__A, <4 x double> %__B, <4 x double> %__C, i8 zeroext %__U) {5643; X86-LABEL: test_mm256_mask3_fmsubadd_pd:5644; X86:       # %bb.0: # %entry5645; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5646; X86-NEXT:    kmovw %eax, %k15647; X86-NEXT:    vfmsubadd231pd {{.*#+}} ymm2 {%k1} = (ymm0 * ymm1) -/+ ymm25648; X86-NEXT:    vmovapd %ymm2, %ymm05649; X86-NEXT:    retl5650;5651; X64-LABEL: test_mm256_mask3_fmsubadd_pd:5652; X64:       # %bb.0: # %entry5653; X64-NEXT:    kmovw %edi, %k15654; X64-NEXT:    vfmsubadd231pd {{.*#+}} ymm2 {%k1} = (ymm0 * ymm1) -/+ ymm25655; X64-NEXT:    vmovapd %ymm2, %ymm05656; X64-NEXT:    retq5657entry:5658  %sub.i = fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C5659  %0 = tail call <4 x double> @llvm.fma.v4f64(<4 x double> %__A, <4 x double> %__B, <4 x double> %sub.i) #95660  %1 = tail call <4 x double> @llvm.fma.v4f64(<4 x double> %__A, <4 x double> %__B, <4 x double> %__C) #95661  %2 = shufflevector <4 x double> %1, <4 x double> %0, <4 x i32> <i32 0, i32 5, i32 2, i32 7>5662  %3 = bitcast i8 %__U to <8 x i1>5663  %extract.i = shufflevector <8 x i1> %3, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>5664  %4 = select <4 x i1> %extract.i, <4 x double> %2, <4 x double> %__C5665  ret <4 x double> %45666}5667 5668define <4 x float> @test_mm_mask3_fmsubadd_ps(<4 x float> %__A, <4 x float> %__B, <4 x float> %__C, i8 zeroext %__U) {5669; X86-LABEL: test_mm_mask3_fmsubadd_ps:5670; X86:       # %bb.0: # %entry5671; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5672; X86-NEXT:    kmovw %eax, %k15673; X86-NEXT:    vfmsubadd231ps {{.*#+}} xmm2 {%k1} = (xmm0 * xmm1) -/+ xmm25674; X86-NEXT:    vmovaps %xmm2, %xmm05675; X86-NEXT:    retl5676;5677; X64-LABEL: test_mm_mask3_fmsubadd_ps:5678; X64:       # %bb.0: # %entry5679; X64-NEXT:    kmovw %edi, %k15680; X64-NEXT:    vfmsubadd231ps {{.*#+}} xmm2 {%k1} = (xmm0 * xmm1) -/+ xmm25681; X64-NEXT:    vmovaps %xmm2, %xmm05682; X64-NEXT:    retq5683entry:5684  %sub.i = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__C5685  %0 = tail call <4 x float> @llvm.fma.v4f32(<4 x float> %__A, <4 x float> %__B, <4 x float> %sub.i) #95686  %1 = tail call <4 x float> @llvm.fma.v4f32(<4 x float> %__A, <4 x float> %__B, <4 x float> %__C) #95687  %2 = shufflevector <4 x float> %1, <4 x float> %0, <4 x i32> <i32 0, i32 5, i32 2, i32 7>5688  %3 = bitcast i8 %__U to <8 x i1>5689  %extract.i = shufflevector <8 x i1> %3, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>5690  %4 = select <4 x i1> %extract.i, <4 x float> %2, <4 x float> %__C5691  ret <4 x float> %45692}5693 5694define <8 x float> @test_mm256_mask3_fmsubadd_ps(<8 x float> %__A, <8 x float> %__B, <8 x float> %__C, i8 zeroext %__U) {5695; X86-LABEL: test_mm256_mask3_fmsubadd_ps:5696; X86:       # %bb.0: # %entry5697; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5698; X86-NEXT:    kmovw %eax, %k15699; X86-NEXT:    vfmsubadd231ps {{.*#+}} ymm2 {%k1} = (ymm0 * ymm1) -/+ ymm25700; X86-NEXT:    vmovaps %ymm2, %ymm05701; X86-NEXT:    retl5702;5703; X64-LABEL: test_mm256_mask3_fmsubadd_ps:5704; X64:       # %bb.0: # %entry5705; X64-NEXT:    kmovw %edi, %k15706; X64-NEXT:    vfmsubadd231ps {{.*#+}} ymm2 {%k1} = (ymm0 * ymm1) -/+ ymm25707; X64-NEXT:    vmovaps %ymm2, %ymm05708; X64-NEXT:    retq5709entry:5710  %sub.i = fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__C5711  %0 = tail call <8 x float> @llvm.fma.v8f32(<8 x float> %__A, <8 x float> %__B, <8 x float> %sub.i) #95712  %1 = tail call <8 x float> @llvm.fma.v8f32(<8 x float> %__A, <8 x float> %__B, <8 x float> %__C) #95713  %2 = shufflevector <8 x float> %1, <8 x float> %0, <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>5714  %3 = bitcast i8 %__U to <8 x i1>5715  %4 = select <8 x i1> %3, <8 x float> %2, <8 x float> %__C5716  ret <8 x float> %45717}5718 5719define <2 x double> @test_mm_mask_fnmadd_pd(<2 x double> %__A, i8 zeroext %__U, <2 x double> %__B, <2 x double> %__C) {5720; X86-LABEL: test_mm_mask_fnmadd_pd:5721; X86:       # %bb.0: # %entry5722; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5723; X86-NEXT:    kmovw %eax, %k15724; X86-NEXT:    vfnmadd132pd {{.*#+}} xmm0 {%k1} = -(xmm0 * xmm1) + xmm25725; X86-NEXT:    retl5726;5727; X64-LABEL: test_mm_mask_fnmadd_pd:5728; X64:       # %bb.0: # %entry5729; X64-NEXT:    kmovw %edi, %k15730; X64-NEXT:    vfnmadd132pd {{.*#+}} xmm0 {%k1} = -(xmm0 * xmm1) + xmm25731; X64-NEXT:    retq5732entry:5733  %sub.i = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %__B5734  %0 = tail call <2 x double> @llvm.fma.v2f64(<2 x double> %__A, <2 x double> %sub.i, <2 x double> %__C) #95735  %1 = bitcast i8 %__U to <8 x i1>5736  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <2 x i32> <i32 0, i32 1>5737  %2 = select <2 x i1> %extract.i, <2 x double> %0, <2 x double> %__A5738  ret <2 x double> %25739}5740 5741define <4 x double> @test_mm256_mask_fnmadd_pd(<4 x double> %__A, i8 zeroext %__U, <4 x double> %__B, <4 x double> %__C) {5742; X86-LABEL: test_mm256_mask_fnmadd_pd:5743; X86:       # %bb.0: # %entry5744; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5745; X86-NEXT:    kmovw %eax, %k15746; X86-NEXT:    vfnmadd132pd {{.*#+}} ymm0 {%k1} = -(ymm0 * ymm1) + ymm25747; X86-NEXT:    retl5748;5749; X64-LABEL: test_mm256_mask_fnmadd_pd:5750; X64:       # %bb.0: # %entry5751; X64-NEXT:    kmovw %edi, %k15752; X64-NEXT:    vfnmadd132pd {{.*#+}} ymm0 {%k1} = -(ymm0 * ymm1) + ymm25753; X64-NEXT:    retq5754entry:5755  %sub.i = fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__B5756  %0 = tail call <4 x double> @llvm.fma.v4f64(<4 x double> %__A, <4 x double> %sub.i, <4 x double> %__C) #95757  %1 = bitcast i8 %__U to <8 x i1>5758  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>5759  %2 = select <4 x i1> %extract.i, <4 x double> %0, <4 x double> %__A5760  ret <4 x double> %25761}5762 5763define <4 x float> @test_mm_mask_fnmadd_ps(<4 x float> %__A, i8 zeroext %__U, <4 x float> %__B, <4 x float> %__C) {5764; X86-LABEL: test_mm_mask_fnmadd_ps:5765; X86:       # %bb.0: # %entry5766; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5767; X86-NEXT:    kmovw %eax, %k15768; X86-NEXT:    vfnmadd132ps {{.*#+}} xmm0 {%k1} = -(xmm0 * xmm1) + xmm25769; X86-NEXT:    retl5770;5771; X64-LABEL: test_mm_mask_fnmadd_ps:5772; X64:       # %bb.0: # %entry5773; X64-NEXT:    kmovw %edi, %k15774; X64-NEXT:    vfnmadd132ps {{.*#+}} xmm0 {%k1} = -(xmm0 * xmm1) + xmm25775; X64-NEXT:    retq5776entry:5777  %sub.i = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__B5778  %0 = tail call <4 x float> @llvm.fma.v4f32(<4 x float> %__A, <4 x float> %sub.i, <4 x float> %__C) #95779  %1 = bitcast i8 %__U to <8 x i1>5780  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>5781  %2 = select <4 x i1> %extract.i, <4 x float> %0, <4 x float> %__A5782  ret <4 x float> %25783}5784 5785define <8 x float> @test_mm256_mask_fnmadd_ps(<8 x float> %__A, i8 zeroext %__U, <8 x float> %__B, <8 x float> %__C) {5786; X86-LABEL: test_mm256_mask_fnmadd_ps:5787; X86:       # %bb.0: # %entry5788; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5789; X86-NEXT:    kmovw %eax, %k15790; X86-NEXT:    vfnmadd132ps {{.*#+}} ymm0 {%k1} = -(ymm0 * ymm1) + ymm25791; X86-NEXT:    retl5792;5793; X64-LABEL: test_mm256_mask_fnmadd_ps:5794; X64:       # %bb.0: # %entry5795; X64-NEXT:    kmovw %edi, %k15796; X64-NEXT:    vfnmadd132ps {{.*#+}} ymm0 {%k1} = -(ymm0 * ymm1) + ymm25797; X64-NEXT:    retq5798entry:5799  %sub.i = fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__B5800  %0 = tail call <8 x float> @llvm.fma.v8f32(<8 x float> %__A, <8 x float> %sub.i, <8 x float> %__C) #95801  %1 = bitcast i8 %__U to <8 x i1>5802  %2 = select <8 x i1> %1, <8 x float> %0, <8 x float> %__A5803  ret <8 x float> %25804}5805 5806define <2 x double> @test_mm_mask_fnmsub_pd(<2 x double> %__A, i8 zeroext %__U, <2 x double> %__B, <2 x double> %__C) {5807; X86-LABEL: test_mm_mask_fnmsub_pd:5808; X86:       # %bb.0: # %entry5809; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5810; X86-NEXT:    kmovw %eax, %k15811; X86-NEXT:    vfnmsub132pd {{.*#+}} xmm0 {%k1} = -(xmm0 * xmm1) - xmm25812; X86-NEXT:    retl5813;5814; X64-LABEL: test_mm_mask_fnmsub_pd:5815; X64:       # %bb.0: # %entry5816; X64-NEXT:    kmovw %edi, %k15817; X64-NEXT:    vfnmsub132pd {{.*#+}} xmm0 {%k1} = -(xmm0 * xmm1) - xmm25818; X64-NEXT:    retq5819entry:5820  %sub.i = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %__B5821  %sub1.i = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %__C5822  %0 = tail call <2 x double> @llvm.fma.v2f64(<2 x double> %__A, <2 x double> %sub.i, <2 x double> %sub1.i) #95823  %1 = bitcast i8 %__U to <8 x i1>5824  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <2 x i32> <i32 0, i32 1>5825  %2 = select <2 x i1> %extract.i, <2 x double> %0, <2 x double> %__A5826  ret <2 x double> %25827}5828 5829define <2 x double> @test_mm_mask3_fnmsub_pd(<2 x double> %__A, <2 x double> %__B, <2 x double> %__C, i8 zeroext %__U) {5830; X86-LABEL: test_mm_mask3_fnmsub_pd:5831; X86:       # %bb.0: # %entry5832; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5833; X86-NEXT:    kmovw %eax, %k15834; X86-NEXT:    vfnmsub231pd {{.*#+}} xmm2 {%k1} = -(xmm0 * xmm1) - xmm25835; X86-NEXT:    vmovapd %xmm2, %xmm05836; X86-NEXT:    retl5837;5838; X64-LABEL: test_mm_mask3_fnmsub_pd:5839; X64:       # %bb.0: # %entry5840; X64-NEXT:    kmovw %edi, %k15841; X64-NEXT:    vfnmsub231pd {{.*#+}} xmm2 {%k1} = -(xmm0 * xmm1) - xmm25842; X64-NEXT:    vmovapd %xmm2, %xmm05843; X64-NEXT:    retq5844entry:5845  %sub.i = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %__B5846  %sub1.i = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %__C5847  %0 = tail call <2 x double> @llvm.fma.v2f64(<2 x double> %__A, <2 x double> %sub.i, <2 x double> %sub1.i) #95848  %1 = bitcast i8 %__U to <8 x i1>5849  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <2 x i32> <i32 0, i32 1>5850  %2 = select <2 x i1> %extract.i, <2 x double> %0, <2 x double> %__C5851  ret <2 x double> %25852}5853 5854define <4 x double> @test_mm256_mask_fnmsub_pd(<4 x double> %__A, i8 zeroext %__U, <4 x double> %__B, <4 x double> %__C) {5855; X86-LABEL: test_mm256_mask_fnmsub_pd:5856; X86:       # %bb.0: # %entry5857; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5858; X86-NEXT:    kmovw %eax, %k15859; X86-NEXT:    vfnmsub132pd {{.*#+}} ymm0 {%k1} = -(ymm0 * ymm1) - ymm25860; X86-NEXT:    retl5861;5862; X64-LABEL: test_mm256_mask_fnmsub_pd:5863; X64:       # %bb.0: # %entry5864; X64-NEXT:    kmovw %edi, %k15865; X64-NEXT:    vfnmsub132pd {{.*#+}} ymm0 {%k1} = -(ymm0 * ymm1) - ymm25866; X64-NEXT:    retq5867entry:5868  %sub.i = fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__B5869  %sub1.i = fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C5870  %0 = tail call <4 x double> @llvm.fma.v4f64(<4 x double> %__A, <4 x double> %sub.i, <4 x double> %sub1.i) #95871  %1 = bitcast i8 %__U to <8 x i1>5872  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>5873  %2 = select <4 x i1> %extract.i, <4 x double> %0, <4 x double> %__A5874  ret <4 x double> %25875}5876 5877define <4 x double> @test_mm256_mask3_fnmsub_pd(<4 x double> %__A, <4 x double> %__B, <4 x double> %__C, i8 zeroext %__U) {5878; X86-LABEL: test_mm256_mask3_fnmsub_pd:5879; X86:       # %bb.0: # %entry5880; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5881; X86-NEXT:    kmovw %eax, %k15882; X86-NEXT:    vfnmsub231pd {{.*#+}} ymm2 {%k1} = -(ymm0 * ymm1) - ymm25883; X86-NEXT:    vmovapd %ymm2, %ymm05884; X86-NEXT:    retl5885;5886; X64-LABEL: test_mm256_mask3_fnmsub_pd:5887; X64:       # %bb.0: # %entry5888; X64-NEXT:    kmovw %edi, %k15889; X64-NEXT:    vfnmsub231pd {{.*#+}} ymm2 {%k1} = -(ymm0 * ymm1) - ymm25890; X64-NEXT:    vmovapd %ymm2, %ymm05891; X64-NEXT:    retq5892entry:5893  %sub.i = fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__B5894  %sub1.i = fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C5895  %0 = tail call <4 x double> @llvm.fma.v4f64(<4 x double> %__A, <4 x double> %sub.i, <4 x double> %sub1.i) #95896  %1 = bitcast i8 %__U to <8 x i1>5897  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>5898  %2 = select <4 x i1> %extract.i, <4 x double> %0, <4 x double> %__C5899  ret <4 x double> %25900}5901 5902define <4 x float> @test_mm_mask_fnmsub_ps(<4 x float> %__A, i8 zeroext %__U, <4 x float> %__B, <4 x float> %__C) {5903; X86-LABEL: test_mm_mask_fnmsub_ps:5904; X86:       # %bb.0: # %entry5905; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5906; X86-NEXT:    kmovw %eax, %k15907; X86-NEXT:    vfnmsub132ps {{.*#+}} xmm0 {%k1} = -(xmm0 * xmm1) - xmm25908; X86-NEXT:    retl5909;5910; X64-LABEL: test_mm_mask_fnmsub_ps:5911; X64:       # %bb.0: # %entry5912; X64-NEXT:    kmovw %edi, %k15913; X64-NEXT:    vfnmsub132ps {{.*#+}} xmm0 {%k1} = -(xmm0 * xmm1) - xmm25914; X64-NEXT:    retq5915entry:5916  %sub.i = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__B5917  %sub1.i = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__C5918  %0 = tail call <4 x float> @llvm.fma.v4f32(<4 x float> %__A, <4 x float> %sub.i, <4 x float> %sub1.i) #95919  %1 = bitcast i8 %__U to <8 x i1>5920  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>5921  %2 = select <4 x i1> %extract.i, <4 x float> %0, <4 x float> %__A5922  ret <4 x float> %25923}5924 5925define <4 x float> @test_mm_mask3_fnmsub_ps(<4 x float> %__A, <4 x float> %__B, <4 x float> %__C, i8 zeroext %__U) {5926; X86-LABEL: test_mm_mask3_fnmsub_ps:5927; X86:       # %bb.0: # %entry5928; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5929; X86-NEXT:    kmovw %eax, %k15930; X86-NEXT:    vfnmsub231ps {{.*#+}} xmm2 {%k1} = -(xmm0 * xmm1) - xmm25931; X86-NEXT:    vmovaps %xmm2, %xmm05932; X86-NEXT:    retl5933;5934; X64-LABEL: test_mm_mask3_fnmsub_ps:5935; X64:       # %bb.0: # %entry5936; X64-NEXT:    kmovw %edi, %k15937; X64-NEXT:    vfnmsub231ps {{.*#+}} xmm2 {%k1} = -(xmm0 * xmm1) - xmm25938; X64-NEXT:    vmovaps %xmm2, %xmm05939; X64-NEXT:    retq5940entry:5941  %sub.i = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__B5942  %sub1.i = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__C5943  %0 = tail call <4 x float> @llvm.fma.v4f32(<4 x float> %__A, <4 x float> %sub.i, <4 x float> %sub1.i) #95944  %1 = bitcast i8 %__U to <8 x i1>5945  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>5946  %2 = select <4 x i1> %extract.i, <4 x float> %0, <4 x float> %__C5947  ret <4 x float> %25948}5949 5950define <8 x float> @test_mm256_mask_fnmsub_ps(<8 x float> %__A, i8 zeroext %__U, <8 x float> %__B, <8 x float> %__C) {5951; X86-LABEL: test_mm256_mask_fnmsub_ps:5952; X86:       # %bb.0: # %entry5953; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5954; X86-NEXT:    kmovw %eax, %k15955; X86-NEXT:    vfnmsub132ps {{.*#+}} ymm0 {%k1} = -(ymm0 * ymm1) - ymm25956; X86-NEXT:    retl5957;5958; X64-LABEL: test_mm256_mask_fnmsub_ps:5959; X64:       # %bb.0: # %entry5960; X64-NEXT:    kmovw %edi, %k15961; X64-NEXT:    vfnmsub132ps {{.*#+}} ymm0 {%k1} = -(ymm0 * ymm1) - ymm25962; X64-NEXT:    retq5963entry:5964  %sub.i = fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__B5965  %sub1.i = fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__C5966  %0 = tail call <8 x float> @llvm.fma.v8f32(<8 x float> %__A, <8 x float> %sub.i, <8 x float> %sub1.i) #95967  %1 = bitcast i8 %__U to <8 x i1>5968  %2 = select <8 x i1> %1, <8 x float> %0, <8 x float> %__A5969  ret <8 x float> %25970}5971 5972define <8 x float> @test_mm256_mask3_fnmsub_ps(<8 x float> %__A, <8 x float> %__B, <8 x float> %__C, i8 zeroext %__U) {5973; X86-LABEL: test_mm256_mask3_fnmsub_ps:5974; X86:       # %bb.0: # %entry5975; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax5976; X86-NEXT:    kmovw %eax, %k15977; X86-NEXT:    vfnmsub231ps {{.*#+}} ymm2 {%k1} = -(ymm0 * ymm1) - ymm25978; X86-NEXT:    vmovaps %ymm2, %ymm05979; X86-NEXT:    retl5980;5981; X64-LABEL: test_mm256_mask3_fnmsub_ps:5982; X64:       # %bb.0: # %entry5983; X64-NEXT:    kmovw %edi, %k15984; X64-NEXT:    vfnmsub231ps {{.*#+}} ymm2 {%k1} = -(ymm0 * ymm1) - ymm25985; X64-NEXT:    vmovaps %ymm2, %ymm05986; X64-NEXT:    retq5987entry:5988  %sub.i = fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__B5989  %sub1.i = fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__C5990  %0 = tail call <8 x float> @llvm.fma.v8f32(<8 x float> %__A, <8 x float> %sub.i, <8 x float> %sub1.i) #95991  %1 = bitcast i8 %__U to <8 x i1>5992  %2 = select <8 x i1> %1, <8 x float> %0, <8 x float> %__C5993  ret <8 x float> %25994}5995 5996define <2 x double> @test_mm_mask_expandloadu_pd(<2 x double> %__W, i8 zeroext %__U, ptr readonly %__P) {5997; X86-LABEL: test_mm_mask_expandloadu_pd:5998; X86:       # %bb.0: # %entry5999; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax6000; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx6001; X86-NEXT:    kmovw %ecx, %k16002; X86-NEXT:    vexpandpd (%eax), %xmm0 {%k1}6003; X86-NEXT:    retl6004;6005; X64-LABEL: test_mm_mask_expandloadu_pd:6006; X64:       # %bb.0: # %entry6007; X64-NEXT:    kmovw %edi, %k16008; X64-NEXT:    vexpandpd (%rsi), %xmm0 {%k1}6009; X64-NEXT:    retq6010entry:6011  %0 = bitcast i8 %__U to <8 x i1>6012  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <2 x i32> <i32 0, i32 1>6013  %1 = tail call <2 x double> @llvm.masked.expandload.v2f64(ptr %__P, <2 x i1> %extract.i, <2 x double> %__W)6014  ret <2 x double> %16015}6016 6017define <2 x double> @test_mm_maskz_expandloadu_pd(i8 zeroext %__U, ptr readonly %__P) {6018; X86-LABEL: test_mm_maskz_expandloadu_pd:6019; X86:       # %bb.0: # %entry6020; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax6021; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx6022; X86-NEXT:    kmovw %ecx, %k16023; X86-NEXT:    vexpandpd (%eax), %xmm0 {%k1} {z}6024; X86-NEXT:    retl6025;6026; X64-LABEL: test_mm_maskz_expandloadu_pd:6027; X64:       # %bb.0: # %entry6028; X64-NEXT:    kmovw %edi, %k16029; X64-NEXT:    vexpandpd (%rsi), %xmm0 {%k1} {z}6030; X64-NEXT:    retq6031entry:6032  %0 = bitcast i8 %__U to <8 x i1>6033  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <2 x i32> <i32 0, i32 1>6034  %1 = tail call <2 x double> @llvm.masked.expandload.v2f64(ptr %__P, <2 x i1> %extract.i, <2 x double> zeroinitializer)6035  ret <2 x double> %16036}6037 6038define <4 x double> @test_mm256_mask_expandloadu_pd(<4 x double> %__W, i8 zeroext %__U, ptr readonly %__P) {6039; X86-LABEL: test_mm256_mask_expandloadu_pd:6040; X86:       # %bb.0: # %entry6041; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax6042; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx6043; X86-NEXT:    kmovw %ecx, %k16044; X86-NEXT:    vexpandpd (%eax), %ymm0 {%k1}6045; X86-NEXT:    retl6046;6047; X64-LABEL: test_mm256_mask_expandloadu_pd:6048; X64:       # %bb.0: # %entry6049; X64-NEXT:    kmovw %edi, %k16050; X64-NEXT:    vexpandpd (%rsi), %ymm0 {%k1}6051; X64-NEXT:    retq6052entry:6053  %0 = bitcast i8 %__U to <8 x i1>6054  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>6055  %1 = tail call <4 x double> @llvm.masked.expandload.v4f64(ptr %__P, <4 x i1> %extract.i, <4 x double> %__W)6056  ret <4 x double> %16057}6058 6059define <4 x double> @test_mm256_maskz_expandloadu_pd(i8 zeroext %__U, ptr readonly %__P) {6060; X86-LABEL: test_mm256_maskz_expandloadu_pd:6061; X86:       # %bb.0: # %entry6062; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax6063; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx6064; X86-NEXT:    kmovw %ecx, %k16065; X86-NEXT:    vexpandpd (%eax), %ymm0 {%k1} {z}6066; X86-NEXT:    retl6067;6068; X64-LABEL: test_mm256_maskz_expandloadu_pd:6069; X64:       # %bb.0: # %entry6070; X64-NEXT:    kmovw %edi, %k16071; X64-NEXT:    vexpandpd (%rsi), %ymm0 {%k1} {z}6072; X64-NEXT:    retq6073entry:6074  %0 = bitcast i8 %__U to <8 x i1>6075  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>6076  %1 = tail call <4 x double> @llvm.masked.expandload.v4f64(ptr %__P, <4 x i1> %extract.i, <4 x double> zeroinitializer)6077  ret <4 x double> %16078}6079 6080define <2 x i64> @test_mm_mask_expandloadu_epi64(<2 x i64> %__W, i8 zeroext %__U, ptr readonly %__P) {6081; X86-LABEL: test_mm_mask_expandloadu_epi64:6082; X86:       # %bb.0: # %entry6083; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax6084; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx6085; X86-NEXT:    kmovw %ecx, %k16086; X86-NEXT:    vpexpandq (%eax), %xmm0 {%k1}6087; X86-NEXT:    retl6088;6089; X64-LABEL: test_mm_mask_expandloadu_epi64:6090; X64:       # %bb.0: # %entry6091; X64-NEXT:    kmovw %edi, %k16092; X64-NEXT:    vpexpandq (%rsi), %xmm0 {%k1}6093; X64-NEXT:    retq6094entry:6095  %0 = bitcast i8 %__U to <8 x i1>6096  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <2 x i32> <i32 0, i32 1>6097  %1 = tail call <2 x i64> @llvm.masked.expandload.v2i64(ptr %__P, <2 x i1> %extract.i, <2 x i64> %__W) #106098  ret <2 x i64> %16099}6100 6101define <2 x i64> @test_mm_maskz_expandloadu_epi64(i8 zeroext %__U, ptr readonly %__P) {6102; X86-LABEL: test_mm_maskz_expandloadu_epi64:6103; X86:       # %bb.0: # %entry6104; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax6105; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx6106; X86-NEXT:    kmovw %ecx, %k16107; X86-NEXT:    vpexpandq (%eax), %xmm0 {%k1} {z}6108; X86-NEXT:    retl6109;6110; X64-LABEL: test_mm_maskz_expandloadu_epi64:6111; X64:       # %bb.0: # %entry6112; X64-NEXT:    kmovw %edi, %k16113; X64-NEXT:    vpexpandq (%rsi), %xmm0 {%k1} {z}6114; X64-NEXT:    retq6115entry:6116  %0 = bitcast i8 %__U to <8 x i1>6117  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <2 x i32> <i32 0, i32 1>6118  %1 = tail call <2 x i64> @llvm.masked.expandload.v2i64(ptr %__P, <2 x i1> %extract.i, <2 x i64> zeroinitializer)6119  ret <2 x i64> %16120}6121 6122define <4 x i64> @test_mm256_mask_expandloadu_epi64(<4 x i64> %__W, i8 zeroext %__U, ptr readonly %__P) {6123; X86-LABEL: test_mm256_mask_expandloadu_epi64:6124; X86:       # %bb.0: # %entry6125; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax6126; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx6127; X86-NEXT:    kmovw %ecx, %k16128; X86-NEXT:    vpexpandq (%eax), %ymm0 {%k1}6129; X86-NEXT:    retl6130;6131; X64-LABEL: test_mm256_mask_expandloadu_epi64:6132; X64:       # %bb.0: # %entry6133; X64-NEXT:    kmovw %edi, %k16134; X64-NEXT:    vpexpandq (%rsi), %ymm0 {%k1}6135; X64-NEXT:    retq6136entry:6137  %0 = bitcast i8 %__U to <8 x i1>6138  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>6139  %1 = tail call <4 x i64> @llvm.masked.expandload.v4i64(ptr %__P, <4 x i1> %extract.i, <4 x i64> %__W) #106140  ret <4 x i64> %16141}6142 6143define <4 x i64> @test_mm256_maskz_expandloadu_epi64(i8 zeroext %__U, ptr readonly %__P) {6144; X86-LABEL: test_mm256_maskz_expandloadu_epi64:6145; X86:       # %bb.0: # %entry6146; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax6147; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx6148; X86-NEXT:    kmovw %ecx, %k16149; X86-NEXT:    vpexpandq (%eax), %ymm0 {%k1} {z}6150; X86-NEXT:    retl6151;6152; X64-LABEL: test_mm256_maskz_expandloadu_epi64:6153; X64:       # %bb.0: # %entry6154; X64-NEXT:    kmovw %edi, %k16155; X64-NEXT:    vpexpandq (%rsi), %ymm0 {%k1} {z}6156; X64-NEXT:    retq6157entry:6158  %0 = bitcast i8 %__U to <8 x i1>6159  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>6160  %1 = tail call <4 x i64> @llvm.masked.expandload.v4i64(ptr %__P, <4 x i1> %extract.i, <4 x i64> zeroinitializer)6161  ret <4 x i64> %16162}6163 6164define <4 x float> @test_mm_mask_expandloadu_ps(<4 x float> %__W, i8 zeroext %__U, ptr readonly %__P) {6165; X86-LABEL: test_mm_mask_expandloadu_ps:6166; X86:       # %bb.0: # %entry6167; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax6168; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx6169; X86-NEXT:    kmovw %ecx, %k16170; X86-NEXT:    vexpandps (%eax), %xmm0 {%k1}6171; X86-NEXT:    retl6172;6173; X64-LABEL: test_mm_mask_expandloadu_ps:6174; X64:       # %bb.0: # %entry6175; X64-NEXT:    kmovw %edi, %k16176; X64-NEXT:    vexpandps (%rsi), %xmm0 {%k1}6177; X64-NEXT:    retq6178entry:6179  %0 = bitcast i8 %__U to <8 x i1>6180  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>6181  %1 = tail call <4 x float> @llvm.masked.expandload.v4f32(ptr %__P, <4 x i1> %extract.i, <4 x float> %__W)6182  ret <4 x float> %16183}6184 6185define <4 x float> @test_mm_maskz_expandloadu_ps(i8 zeroext %__U, ptr readonly %__P) {6186; X86-LABEL: test_mm_maskz_expandloadu_ps:6187; X86:       # %bb.0: # %entry6188; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax6189; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx6190; X86-NEXT:    kmovw %ecx, %k16191; X86-NEXT:    vexpandps (%eax), %xmm0 {%k1} {z}6192; X86-NEXT:    retl6193;6194; X64-LABEL: test_mm_maskz_expandloadu_ps:6195; X64:       # %bb.0: # %entry6196; X64-NEXT:    kmovw %edi, %k16197; X64-NEXT:    vexpandps (%rsi), %xmm0 {%k1} {z}6198; X64-NEXT:    retq6199entry:6200  %0 = bitcast i8 %__U to <8 x i1>6201  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>6202  %1 = tail call <4 x float> @llvm.masked.expandload.v4f32(ptr %__P, <4 x i1> %extract.i, <4 x float> zeroinitializer)6203  ret <4 x float> %16204}6205 6206define <8 x float> @test_mm256_mask_expandloadu_ps(<8 x float> %__W, i8 zeroext %__U, ptr readonly %__P) {6207; X86-LABEL: test_mm256_mask_expandloadu_ps:6208; X86:       # %bb.0: # %entry6209; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax6210; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx6211; X86-NEXT:    kmovw %ecx, %k16212; X86-NEXT:    vexpandps (%eax), %ymm0 {%k1}6213; X86-NEXT:    retl6214;6215; X64-LABEL: test_mm256_mask_expandloadu_ps:6216; X64:       # %bb.0: # %entry6217; X64-NEXT:    kmovw %edi, %k16218; X64-NEXT:    vexpandps (%rsi), %ymm0 {%k1}6219; X64-NEXT:    retq6220entry:6221  %0 = bitcast i8 %__U to <8 x i1>6222  %1 = tail call <8 x float> @llvm.masked.expandload.v8f32(ptr %__P, <8 x i1> %0, <8 x float> %__W)6223  ret <8 x float> %16224}6225 6226define <8 x float> @test_mm256_maskz_expandloadu_ps(i8 zeroext %__U, ptr readonly %__P) {6227; X86-LABEL: test_mm256_maskz_expandloadu_ps:6228; X86:       # %bb.0: # %entry6229; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax6230; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx6231; X86-NEXT:    kmovw %ecx, %k16232; X86-NEXT:    vexpandps (%eax), %ymm0 {%k1} {z}6233; X86-NEXT:    retl6234;6235; X64-LABEL: test_mm256_maskz_expandloadu_ps:6236; X64:       # %bb.0: # %entry6237; X64-NEXT:    kmovw %edi, %k16238; X64-NEXT:    vexpandps (%rsi), %ymm0 {%k1} {z}6239; X64-NEXT:    retq6240entry:6241  %0 = bitcast i8 %__U to <8 x i1>6242  %1 = tail call <8 x float> @llvm.masked.expandload.v8f32(ptr %__P, <8 x i1> %0, <8 x float> zeroinitializer)6243  ret <8 x float> %16244}6245 6246define <2 x i64> @test_mm_mask_expandloadu_epi32(<2 x i64> %__W, i8 zeroext %__U, ptr readonly %__P) {6247; X86-LABEL: test_mm_mask_expandloadu_epi32:6248; X86:       # %bb.0: # %entry6249; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax6250; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx6251; X86-NEXT:    kmovw %ecx, %k16252; X86-NEXT:    vpexpandd (%eax), %xmm0 {%k1}6253; X86-NEXT:    retl6254;6255; X64-LABEL: test_mm_mask_expandloadu_epi32:6256; X64:       # %bb.0: # %entry6257; X64-NEXT:    kmovw %edi, %k16258; X64-NEXT:    vpexpandd (%rsi), %xmm0 {%k1}6259; X64-NEXT:    retq6260entry:6261  %0 = bitcast <2 x i64> %__W to <4 x i32>6262  %1 = bitcast i8 %__U to <8 x i1>6263  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>6264  %2 = tail call <4 x i32> @llvm.masked.expandload.v4i32(ptr %__P, <4 x i1> %extract.i, <4 x i32> %0)6265  %3 = bitcast <4 x i32> %2 to <2 x i64>6266  ret <2 x i64> %36267}6268 6269define <2 x i64> @test_mm_maskz_expandloadu_epi32(i8 zeroext %__U, ptr readonly %__P) {6270; X86-LABEL: test_mm_maskz_expandloadu_epi32:6271; X86:       # %bb.0: # %entry6272; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax6273; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx6274; X86-NEXT:    kmovw %ecx, %k16275; X86-NEXT:    vpexpandd (%eax), %xmm0 {%k1} {z}6276; X86-NEXT:    retl6277;6278; X64-LABEL: test_mm_maskz_expandloadu_epi32:6279; X64:       # %bb.0: # %entry6280; X64-NEXT:    kmovw %edi, %k16281; X64-NEXT:    vpexpandd (%rsi), %xmm0 {%k1} {z}6282; X64-NEXT:    retq6283entry:6284  %0 = bitcast i8 %__U to <8 x i1>6285  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>6286  %1 = tail call <4 x i32> @llvm.masked.expandload.v4i32(ptr %__P, <4 x i1> %extract.i, <4 x i32> zeroinitializer)6287  %2 = bitcast <4 x i32> %1 to <2 x i64>6288  ret <2 x i64> %26289}6290 6291define <4 x i64> @test_mm256_mask_expandloadu_epi32(<4 x i64> %__W, i8 zeroext %__U, ptr readonly %__P) {6292; X86-LABEL: test_mm256_mask_expandloadu_epi32:6293; X86:       # %bb.0: # %entry6294; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax6295; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx6296; X86-NEXT:    kmovw %ecx, %k16297; X86-NEXT:    vpexpandd (%eax), %ymm0 {%k1}6298; X86-NEXT:    retl6299;6300; X64-LABEL: test_mm256_mask_expandloadu_epi32:6301; X64:       # %bb.0: # %entry6302; X64-NEXT:    kmovw %edi, %k16303; X64-NEXT:    vpexpandd (%rsi), %ymm0 {%k1}6304; X64-NEXT:    retq6305entry:6306  %0 = bitcast <4 x i64> %__W to <8 x i32>6307  %1 = bitcast i8 %__U to <8 x i1>6308  %2 = tail call <8 x i32> @llvm.masked.expandload.v8i32(ptr %__P, <8 x i1> %1, <8 x i32> %0)6309  %3 = bitcast <8 x i32> %2 to <4 x i64>6310  ret <4 x i64> %36311}6312 6313define <4 x i64> @test_mm256_maskz_expandloadu_epi32(i8 zeroext %__U, ptr readonly %__P) {6314; X86-LABEL: test_mm256_maskz_expandloadu_epi32:6315; X86:       # %bb.0: # %entry6316; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax6317; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx6318; X86-NEXT:    kmovw %ecx, %k16319; X86-NEXT:    vpexpandd (%eax), %ymm0 {%k1} {z}6320; X86-NEXT:    retl6321;6322; X64-LABEL: test_mm256_maskz_expandloadu_epi32:6323; X64:       # %bb.0: # %entry6324; X64-NEXT:    kmovw %edi, %k16325; X64-NEXT:    vpexpandd (%rsi), %ymm0 {%k1} {z}6326; X64-NEXT:    retq6327entry:6328  %0 = bitcast i8 %__U to <8 x i1>6329  %1 = tail call <8 x i32> @llvm.masked.expandload.v8i32(ptr %__P, <8 x i1> %0, <8 x i32> zeroinitializer)6330  %2 = bitcast <8 x i32> %1 to <4 x i64>6331  ret <4 x i64> %26332}6333 6334define void @test_mm_mask_compressstoreu_pd(ptr %__P, i8 zeroext %__U, <2 x double> %__A) {6335; X86-LABEL: test_mm_mask_compressstoreu_pd:6336; X86:       # %bb.0: # %entry6337; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax6338; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx6339; X86-NEXT:    kmovw %eax, %k16340; X86-NEXT:    vcompresspd %xmm0, (%ecx) {%k1}6341; X86-NEXT:    retl6342;6343; X64-LABEL: test_mm_mask_compressstoreu_pd:6344; X64:       # %bb.0: # %entry6345; X64-NEXT:    kmovw %esi, %k16346; X64-NEXT:    vcompresspd %xmm0, (%rdi) {%k1}6347; X64-NEXT:    retq6348entry:6349  %0 = bitcast i8 %__U to <8 x i1>6350  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <2 x i32> <i32 0, i32 1>6351  tail call void @llvm.masked.compressstore.v2f64(<2 x double> %__A, ptr %__P, <2 x i1> %extract.i)6352  ret void6353}6354 6355define void @test_mm256_mask_compressstoreu_pd(ptr %__P, i8 zeroext %__U, <4 x double> %__A) {6356; X86-LABEL: test_mm256_mask_compressstoreu_pd:6357; X86:       # %bb.0: # %entry6358; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax6359; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx6360; X86-NEXT:    kmovw %eax, %k16361; X86-NEXT:    vcompresspd %ymm0, (%ecx) {%k1}6362; X86-NEXT:    vzeroupper6363; X86-NEXT:    retl6364;6365; X64-LABEL: test_mm256_mask_compressstoreu_pd:6366; X64:       # %bb.0: # %entry6367; X64-NEXT:    kmovw %esi, %k16368; X64-NEXT:    vcompresspd %ymm0, (%rdi) {%k1}6369; X64-NEXT:    vzeroupper6370; X64-NEXT:    retq6371entry:6372  %0 = bitcast i8 %__U to <8 x i1>6373  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>6374  tail call void @llvm.masked.compressstore.v4f64(<4 x double> %__A, ptr %__P, <4 x i1> %extract.i)6375  ret void6376}6377 6378define void @test_mm_mask_compressstoreu_epi64(ptr %__P, i8 zeroext %__U, <2 x i64> %__A) {6379; X86-LABEL: test_mm_mask_compressstoreu_epi64:6380; X86:       # %bb.0: # %entry6381; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax6382; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx6383; X86-NEXT:    kmovw %eax, %k16384; X86-NEXT:    vpcompressq %xmm0, (%ecx) {%k1}6385; X86-NEXT:    retl6386;6387; X64-LABEL: test_mm_mask_compressstoreu_epi64:6388; X64:       # %bb.0: # %entry6389; X64-NEXT:    kmovw %esi, %k16390; X64-NEXT:    vpcompressq %xmm0, (%rdi) {%k1}6391; X64-NEXT:    retq6392entry:6393  %0 = bitcast i8 %__U to <8 x i1>6394  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <2 x i32> <i32 0, i32 1>6395  tail call void @llvm.masked.compressstore.v2i64(<2 x i64> %__A, ptr %__P, <2 x i1> %extract.i)6396  ret void6397}6398 6399define void @test_mm256_mask_compressstoreu_epi64(ptr %__P, i8 zeroext %__U, <4 x i64> %__A) {6400; X86-LABEL: test_mm256_mask_compressstoreu_epi64:6401; X86:       # %bb.0: # %entry6402; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax6403; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx6404; X86-NEXT:    kmovw %eax, %k16405; X86-NEXT:    vpcompressq %ymm0, (%ecx) {%k1}6406; X86-NEXT:    vzeroupper6407; X86-NEXT:    retl6408;6409; X64-LABEL: test_mm256_mask_compressstoreu_epi64:6410; X64:       # %bb.0: # %entry6411; X64-NEXT:    kmovw %esi, %k16412; X64-NEXT:    vpcompressq %ymm0, (%rdi) {%k1}6413; X64-NEXT:    vzeroupper6414; X64-NEXT:    retq6415entry:6416  %0 = bitcast i8 %__U to <8 x i1>6417  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>6418  tail call void @llvm.masked.compressstore.v4i64(<4 x i64> %__A, ptr %__P, <4 x i1> %extract.i)6419  ret void6420}6421 6422define void @test_mm_mask_compressstoreu_ps(ptr %__P, i8 zeroext %__U, <4 x float> %__A) {6423; X86-LABEL: test_mm_mask_compressstoreu_ps:6424; X86:       # %bb.0: # %entry6425; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax6426; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx6427; X86-NEXT:    kmovw %eax, %k16428; X86-NEXT:    vcompressps %xmm0, (%ecx) {%k1}6429; X86-NEXT:    retl6430;6431; X64-LABEL: test_mm_mask_compressstoreu_ps:6432; X64:       # %bb.0: # %entry6433; X64-NEXT:    kmovw %esi, %k16434; X64-NEXT:    vcompressps %xmm0, (%rdi) {%k1}6435; X64-NEXT:    retq6436entry:6437  %0 = bitcast i8 %__U to <8 x i1>6438  %extract.i = shufflevector <8 x i1> %0, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>6439  tail call void @llvm.masked.compressstore.v4f32(<4 x float> %__A, ptr %__P, <4 x i1> %extract.i)6440  ret void6441}6442 6443define void @test_mm256_mask_compressstoreu_ps(ptr %__P, i8 zeroext %__U, <8 x float> %__A) {6444; X86-LABEL: test_mm256_mask_compressstoreu_ps:6445; X86:       # %bb.0: # %entry6446; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax6447; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx6448; X86-NEXT:    kmovw %eax, %k16449; X86-NEXT:    vcompressps %ymm0, (%ecx) {%k1}6450; X86-NEXT:    vzeroupper6451; X86-NEXT:    retl6452;6453; X64-LABEL: test_mm256_mask_compressstoreu_ps:6454; X64:       # %bb.0: # %entry6455; X64-NEXT:    kmovw %esi, %k16456; X64-NEXT:    vcompressps %ymm0, (%rdi) {%k1}6457; X64-NEXT:    vzeroupper6458; X64-NEXT:    retq6459entry:6460  %0 = bitcast i8 %__U to <8 x i1>6461  tail call void @llvm.masked.compressstore.v8f32(<8 x float> %__A, ptr %__P, <8 x i1> %0)6462  ret void6463}6464 6465define void @test_mm_mask_compressstoreu_epi32(ptr %__P, i8 zeroext %__U, <2 x i64> %__A) {6466; X86-LABEL: test_mm_mask_compressstoreu_epi32:6467; X86:       # %bb.0: # %entry6468; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax6469; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx6470; X86-NEXT:    kmovw %eax, %k16471; X86-NEXT:    vpcompressd %xmm0, (%ecx) {%k1}6472; X86-NEXT:    retl6473;6474; X64-LABEL: test_mm_mask_compressstoreu_epi32:6475; X64:       # %bb.0: # %entry6476; X64-NEXT:    kmovw %esi, %k16477; X64-NEXT:    vpcompressd %xmm0, (%rdi) {%k1}6478; X64-NEXT:    retq6479entry:6480  %0 = bitcast <2 x i64> %__A to <4 x i32>6481  %1 = bitcast i8 %__U to <8 x i1>6482  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>6483  tail call void @llvm.masked.compressstore.v4i32(<4 x i32> %0, ptr %__P, <4 x i1> %extract.i)6484  ret void6485}6486 6487define void @test_mm256_mask_compressstoreu_epi32(ptr %__P, i8 zeroext %__U, <4 x i64> %__A) {6488; X86-LABEL: test_mm256_mask_compressstoreu_epi32:6489; X86:       # %bb.0: # %entry6490; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax6491; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx6492; X86-NEXT:    kmovw %eax, %k16493; X86-NEXT:    vpcompressd %ymm0, (%ecx) {%k1}6494; X86-NEXT:    vzeroupper6495; X86-NEXT:    retl6496;6497; X64-LABEL: test_mm256_mask_compressstoreu_epi32:6498; X64:       # %bb.0: # %entry6499; X64-NEXT:    kmovw %esi, %k16500; X64-NEXT:    vpcompressd %ymm0, (%rdi) {%k1}6501; X64-NEXT:    vzeroupper6502; X64-NEXT:    retq6503entry:6504  %0 = bitcast <4 x i64> %__A to <8 x i32>6505  %1 = bitcast i8 %__U to <8 x i1>6506  tail call void @llvm.masked.compressstore.v8i32(<8 x i32> %0, ptr %__P, <8 x i1> %1) #106507  ret void6508}6509 6510 6511declare <2 x double> @llvm.fma.v2f64(<2 x double>, <2 x double>, <2 x double>) #86512declare <4 x double> @llvm.fma.v4f64(<4 x double>, <4 x double>, <4 x double>) #86513declare <4 x float> @llvm.fma.v4f32(<4 x float>, <4 x float>, <4 x float>) #86514declare <8 x float> @llvm.fma.v8f32(<8 x float>, <8 x float>, <8 x float>) #86515 6516define <2 x double> @test_mm_mask_sqrt_pd(<2 x double> %__W, i8 zeroext %__U, <2 x double> %__A) {6517; X86-LABEL: test_mm_mask_sqrt_pd:6518; X86:       # %bb.0: # %entry6519; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax6520; X86-NEXT:    kmovw %eax, %k16521; X86-NEXT:    vsqrtpd %xmm1, %xmm0 {%k1}6522; X86-NEXT:    retl6523;6524; X64-LABEL: test_mm_mask_sqrt_pd:6525; X64:       # %bb.0: # %entry6526; X64-NEXT:    kmovw %edi, %k16527; X64-NEXT:    vsqrtpd %xmm1, %xmm0 {%k1}6528; X64-NEXT:    retq6529entry:6530  %0 = tail call <2 x double> @llvm.sqrt.v2f64(<2 x double> %__A) #26531  %1 = bitcast i8 %__U to <8 x i1>6532  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <2 x i32> <i32 0, i32 1>6533  %2 = select <2 x i1> %extract.i, <2 x double> %0, <2 x double> %__W6534  ret <2 x double> %26535}6536 6537declare <2 x double> @llvm.sqrt.v2f64(<2 x double>)6538 6539define <2 x double> @test_mm_maskz_sqrt_pd(i8 zeroext %__U, <2 x double> %__A) {6540; X86-LABEL: test_mm_maskz_sqrt_pd:6541; X86:       # %bb.0: # %entry6542; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax6543; X86-NEXT:    kmovw %eax, %k16544; X86-NEXT:    vsqrtpd %xmm0, %xmm0 {%k1} {z}6545; X86-NEXT:    retl6546;6547; X64-LABEL: test_mm_maskz_sqrt_pd:6548; X64:       # %bb.0: # %entry6549; X64-NEXT:    kmovw %edi, %k16550; X64-NEXT:    vsqrtpd %xmm0, %xmm0 {%k1} {z}6551; X64-NEXT:    retq6552entry:6553  %0 = tail call <2 x double> @llvm.sqrt.v2f64(<2 x double> %__A) #26554  %1 = bitcast i8 %__U to <8 x i1>6555  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <2 x i32> <i32 0, i32 1>6556  %2 = select <2 x i1> %extract.i, <2 x double> %0, <2 x double> zeroinitializer6557  ret <2 x double> %26558}6559 6560define <4 x double> @test_mm256_mask_sqrt_pd(<4 x double> %__W, i8 zeroext %__U, <4 x double> %__A) {6561; X86-LABEL: test_mm256_mask_sqrt_pd:6562; X86:       # %bb.0: # %entry6563; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax6564; X86-NEXT:    kmovw %eax, %k16565; X86-NEXT:    vsqrtpd %ymm1, %ymm0 {%k1}6566; X86-NEXT:    retl6567;6568; X64-LABEL: test_mm256_mask_sqrt_pd:6569; X64:       # %bb.0: # %entry6570; X64-NEXT:    kmovw %edi, %k16571; X64-NEXT:    vsqrtpd %ymm1, %ymm0 {%k1}6572; X64-NEXT:    retq6573entry:6574  %0 = tail call <4 x double> @llvm.sqrt.v4f64(<4 x double> %__A) #26575  %1 = bitcast i8 %__U to <8 x i1>6576  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>6577  %2 = select <4 x i1> %extract.i, <4 x double> %0, <4 x double> %__W6578  ret <4 x double> %26579}6580 6581declare <4 x double> @llvm.sqrt.v4f64(<4 x double>)6582 6583define <4 x double> @test_mm256_maskz_sqrt_pd(i8 zeroext %__U, <4 x double> %__A) {6584; X86-LABEL: test_mm256_maskz_sqrt_pd:6585; X86:       # %bb.0: # %entry6586; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax6587; X86-NEXT:    kmovw %eax, %k16588; X86-NEXT:    vsqrtpd %ymm0, %ymm0 {%k1} {z}6589; X86-NEXT:    retl6590;6591; X64-LABEL: test_mm256_maskz_sqrt_pd:6592; X64:       # %bb.0: # %entry6593; X64-NEXT:    kmovw %edi, %k16594; X64-NEXT:    vsqrtpd %ymm0, %ymm0 {%k1} {z}6595; X64-NEXT:    retq6596entry:6597  %0 = tail call <4 x double> @llvm.sqrt.v4f64(<4 x double> %__A) #26598  %1 = bitcast i8 %__U to <8 x i1>6599  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>6600  %2 = select <4 x i1> %extract.i, <4 x double> %0, <4 x double> zeroinitializer6601  ret <4 x double> %26602}6603 6604define <4 x float> @test_mm_mask_sqrt_ps(<4 x float> %__W, i8 zeroext %__U, <4 x float> %__A) {6605; X86-LABEL: test_mm_mask_sqrt_ps:6606; X86:       # %bb.0: # %entry6607; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax6608; X86-NEXT:    kmovw %eax, %k16609; X86-NEXT:    vsqrtps %xmm1, %xmm0 {%k1}6610; X86-NEXT:    retl6611;6612; X64-LABEL: test_mm_mask_sqrt_ps:6613; X64:       # %bb.0: # %entry6614; X64-NEXT:    kmovw %edi, %k16615; X64-NEXT:    vsqrtps %xmm1, %xmm0 {%k1}6616; X64-NEXT:    retq6617entry:6618  %0 = tail call <4 x float> @llvm.sqrt.v4f32(<4 x float> %__A) #26619  %1 = bitcast i8 %__U to <8 x i1>6620  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>6621  %2 = select <4 x i1> %extract.i, <4 x float> %0, <4 x float> %__W6622  ret <4 x float> %26623}6624 6625declare <4 x float> @llvm.sqrt.v4f32(<4 x float>)6626 6627define <4 x float> @test_mm_maskz_sqrt_ps(i8 zeroext %__U, <4 x float> %__A) {6628; X86-LABEL: test_mm_maskz_sqrt_ps:6629; X86:       # %bb.0: # %entry6630; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax6631; X86-NEXT:    kmovw %eax, %k16632; X86-NEXT:    vsqrtps %xmm0, %xmm0 {%k1} {z}6633; X86-NEXT:    retl6634;6635; X64-LABEL: test_mm_maskz_sqrt_ps:6636; X64:       # %bb.0: # %entry6637; X64-NEXT:    kmovw %edi, %k16638; X64-NEXT:    vsqrtps %xmm0, %xmm0 {%k1} {z}6639; X64-NEXT:    retq6640entry:6641  %0 = tail call <4 x float> @llvm.sqrt.v4f32(<4 x float> %__A) #26642  %1 = bitcast i8 %__U to <8 x i1>6643  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>6644  %2 = select <4 x i1> %extract.i, <4 x float> %0, <4 x float> zeroinitializer6645  ret <4 x float> %26646}6647 6648define <8 x float> @test_mm256_mask_sqrt_ps(<8 x float> %__W, i8 zeroext %__U, <8 x float> %__A) {6649; X86-LABEL: test_mm256_mask_sqrt_ps:6650; X86:       # %bb.0: # %entry6651; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax6652; X86-NEXT:    kmovw %eax, %k16653; X86-NEXT:    vsqrtps %ymm1, %ymm0 {%k1}6654; X86-NEXT:    retl6655;6656; X64-LABEL: test_mm256_mask_sqrt_ps:6657; X64:       # %bb.0: # %entry6658; X64-NEXT:    kmovw %edi, %k16659; X64-NEXT:    vsqrtps %ymm1, %ymm0 {%k1}6660; X64-NEXT:    retq6661entry:6662  %0 = tail call <8 x float> @llvm.sqrt.v8f32(<8 x float> %__A) #26663  %1 = bitcast i8 %__U to <8 x i1>6664  %2 = select <8 x i1> %1, <8 x float> %0, <8 x float> %__W6665  ret <8 x float> %26666}6667 6668define <8 x float> @test_mm256_maskz_sqrt_ps(i8 zeroext %__U, <8 x float> %__A) {6669; X86-LABEL: test_mm256_maskz_sqrt_ps:6670; X86:       # %bb.0: # %entry6671; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax6672; X86-NEXT:    kmovw %eax, %k16673; X86-NEXT:    vsqrtps %ymm0, %ymm0 {%k1} {z}6674; X86-NEXT:    retl6675;6676; X64-LABEL: test_mm256_maskz_sqrt_ps:6677; X64:       # %bb.0: # %entry6678; X64-NEXT:    kmovw %edi, %k16679; X64-NEXT:    vsqrtps %ymm0, %ymm0 {%k1} {z}6680; X64-NEXT:    retq6681entry:6682  %0 = tail call <8 x float> @llvm.sqrt.v8f32(<8 x float> %__A) #26683  %1 = bitcast i8 %__U to <8 x i1>6684  %2 = select <8 x i1> %1, <8 x float> %0, <8 x float> zeroinitializer6685  ret <8 x float> %26686}6687 6688declare <8 x float> @llvm.sqrt.v8f32(<8 x float>)6689 6690define <2 x i64> @test_mm_rol_epi32(<2 x i64> %__A) {6691; CHECK-LABEL: test_mm_rol_epi32:6692; CHECK:       # %bb.0: # %entry6693; CHECK-NEXT:    vprold $5, %xmm0, %xmm06694; CHECK-NEXT:    ret{{[l|q]}}6695entry:6696  %0 = bitcast <2 x i64> %__A to <4 x i32>6697  %1 = tail call <4 x i32> @llvm.fshl.v4i32(<4 x i32> %0, <4 x i32> %0, <4 x i32> <i32 5, i32 5, i32 5, i32 5>)6698  %2 = bitcast <4 x i32> %1 to <2 x i64>6699  ret <2 x i64> %26700}6701 6702define <2 x i64> @test_mm_mask_rol_epi32(<2 x i64> %__W, i8 zeroext %__U, <2 x i64> %__A) {6703; X86-LABEL: test_mm_mask_rol_epi32:6704; X86:       # %bb.0: # %entry6705; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax6706; X86-NEXT:    kmovw %eax, %k16707; X86-NEXT:    vprold $5, %xmm1, %xmm0 {%k1}6708; X86-NEXT:    retl6709;6710; X64-LABEL: test_mm_mask_rol_epi32:6711; X64:       # %bb.0: # %entry6712; X64-NEXT:    kmovw %edi, %k16713; X64-NEXT:    vprold $5, %xmm1, %xmm0 {%k1}6714; X64-NEXT:    retq6715entry:6716  %0 = bitcast <2 x i64> %__A to <4 x i32>6717  %1 = tail call <4 x i32> @llvm.fshl.v4i32(<4 x i32> %0, <4 x i32> %0, <4 x i32> <i32 5, i32 5, i32 5, i32 5>)6718  %2 = bitcast <2 x i64> %__W to <4 x i32>6719  %3 = bitcast i8 %__U to <8 x i1>6720  %extract = shufflevector <8 x i1> %3, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>6721  %4 = select <4 x i1> %extract, <4 x i32> %1, <4 x i32> %26722  %5 = bitcast <4 x i32> %4 to <2 x i64>6723  ret <2 x i64> %56724}6725 6726define <2 x i64> @test_mm_maskz_rol_epi32(i8 zeroext %__U, <2 x i64> %__A) {6727; X86-LABEL: test_mm_maskz_rol_epi32:6728; X86:       # %bb.0: # %entry6729; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax6730; X86-NEXT:    kmovw %eax, %k16731; X86-NEXT:    vprold $5, %xmm0, %xmm0 {%k1} {z}6732; X86-NEXT:    retl6733;6734; X64-LABEL: test_mm_maskz_rol_epi32:6735; X64:       # %bb.0: # %entry6736; X64-NEXT:    kmovw %edi, %k16737; X64-NEXT:    vprold $5, %xmm0, %xmm0 {%k1} {z}6738; X64-NEXT:    retq6739entry:6740  %0 = bitcast <2 x i64> %__A to <4 x i32>6741  %1 = tail call <4 x i32> @llvm.fshl.v4i32(<4 x i32> %0, <4 x i32> %0, <4 x i32> <i32 5, i32 5, i32 5, i32 5>)6742  %2 = bitcast i8 %__U to <8 x i1>6743  %extract = shufflevector <8 x i1> %2, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>6744  %3 = select <4 x i1> %extract, <4 x i32> %1, <4 x i32> zeroinitializer6745  %4 = bitcast <4 x i32> %3 to <2 x i64>6746  ret <2 x i64> %46747}6748 6749define <4 x i64> @test_mm256_rol_epi32(<4 x i64> %__A) {6750; CHECK-LABEL: test_mm256_rol_epi32:6751; CHECK:       # %bb.0: # %entry6752; CHECK-NEXT:    vprold $5, %ymm0, %ymm06753; CHECK-NEXT:    ret{{[l|q]}}6754entry:6755  %0 = bitcast <4 x i64> %__A to <8 x i32>6756  %1 = tail call <8 x i32> @llvm.fshl.v8i32(<8 x i32> %0, <8 x i32> %0, <8 x i32> <i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5>)6757  %2 = bitcast <8 x i32> %1 to <4 x i64>6758  ret <4 x i64> %26759}6760 6761define <4 x i64> @test_mm256_mask_rol_epi32(<4 x i64> %__W, i8 zeroext %__U, <4 x i64> %__A) {6762; X86-LABEL: test_mm256_mask_rol_epi32:6763; X86:       # %bb.0: # %entry6764; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax6765; X86-NEXT:    kmovw %eax, %k16766; X86-NEXT:    vprold $5, %ymm1, %ymm0 {%k1}6767; X86-NEXT:    retl6768;6769; X64-LABEL: test_mm256_mask_rol_epi32:6770; X64:       # %bb.0: # %entry6771; X64-NEXT:    kmovw %edi, %k16772; X64-NEXT:    vprold $5, %ymm1, %ymm0 {%k1}6773; X64-NEXT:    retq6774entry:6775  %0 = bitcast <4 x i64> %__A to <8 x i32>6776  %1 = tail call <8 x i32> @llvm.fshl.v8i32(<8 x i32> %0, <8 x i32> %0, <8 x i32> <i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5>)6777  %2 = bitcast <4 x i64> %__W to <8 x i32>6778  %3 = bitcast i8 %__U to <8 x i1>6779  %4 = select <8 x i1> %3, <8 x i32> %1, <8 x i32> %26780  %5 = bitcast <8 x i32> %4 to <4 x i64>6781  ret <4 x i64> %56782}6783 6784define <4 x i64> @test_mm256_maskz_rol_epi32(i8 zeroext %__U, <4 x i64> %__A) {6785; X86-LABEL: test_mm256_maskz_rol_epi32:6786; X86:       # %bb.0: # %entry6787; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax6788; X86-NEXT:    kmovw %eax, %k16789; X86-NEXT:    vprold $5, %ymm0, %ymm0 {%k1} {z}6790; X86-NEXT:    retl6791;6792; X64-LABEL: test_mm256_maskz_rol_epi32:6793; X64:       # %bb.0: # %entry6794; X64-NEXT:    kmovw %edi, %k16795; X64-NEXT:    vprold $5, %ymm0, %ymm0 {%k1} {z}6796; X64-NEXT:    retq6797entry:6798  %0 = bitcast <4 x i64> %__A to <8 x i32>6799  %1 = tail call <8 x i32> @llvm.fshl.v8i32(<8 x i32> %0, <8 x i32> %0, <8 x i32> <i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5>)6800  %2 = bitcast i8 %__U to <8 x i1>6801  %3 = select <8 x i1> %2, <8 x i32> %1, <8 x i32> zeroinitializer6802  %4 = bitcast <8 x i32> %3 to <4 x i64>6803  ret <4 x i64> %46804}6805 6806define <2 x i64> @test_mm_rol_epi64(<2 x i64> %__A) {6807; CHECK-LABEL: test_mm_rol_epi64:6808; CHECK:       # %bb.0: # %entry6809; CHECK-NEXT:    vprolq $5, %xmm0, %xmm06810; CHECK-NEXT:    ret{{[l|q]}}6811entry:6812  %0 = tail call <2 x i64> @llvm.fshl.v2i64(<2 x i64> %__A, <2 x i64> %__A, <2 x i64> <i64 5, i64 5>)6813  ret <2 x i64> %06814}6815 6816define <2 x i64> @test_mm_mask_rol_epi64(<2 x i64> %__W, i8 zeroext %__U, <2 x i64> %__A) {6817; X86-LABEL: test_mm_mask_rol_epi64:6818; X86:       # %bb.0: # %entry6819; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax6820; X86-NEXT:    kmovw %eax, %k16821; X86-NEXT:    vprolq $5, %xmm1, %xmm0 {%k1}6822; X86-NEXT:    retl6823;6824; X64-LABEL: test_mm_mask_rol_epi64:6825; X64:       # %bb.0: # %entry6826; X64-NEXT:    kmovw %edi, %k16827; X64-NEXT:    vprolq $5, %xmm1, %xmm0 {%k1}6828; X64-NEXT:    retq6829entry:6830  %0 = tail call <2 x i64> @llvm.fshl.v2i64(<2 x i64> %__A, <2 x i64> %__A, <2 x i64> <i64 5, i64 5>)6831  %1 = bitcast i8 %__U to <8 x i1>6832  %extract = shufflevector <8 x i1> %1, <8 x i1> undef, <2 x i32> <i32 0, i32 1>6833  %2 = select <2 x i1> %extract, <2 x i64> %0, <2 x i64> %__W6834  ret <2 x i64> %26835}6836 6837define <2 x i64> @test_mm_maskz_rol_epi64(i8 zeroext %__U, <2 x i64> %__A) {6838; X86-LABEL: test_mm_maskz_rol_epi64:6839; X86:       # %bb.0: # %entry6840; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax6841; X86-NEXT:    kmovw %eax, %k16842; X86-NEXT:    vprolq $5, %xmm0, %xmm0 {%k1} {z}6843; X86-NEXT:    retl6844;6845; X64-LABEL: test_mm_maskz_rol_epi64:6846; X64:       # %bb.0: # %entry6847; X64-NEXT:    kmovw %edi, %k16848; X64-NEXT:    vprolq $5, %xmm0, %xmm0 {%k1} {z}6849; X64-NEXT:    retq6850entry:6851  %0 = tail call <2 x i64> @llvm.fshl.v2i64(<2 x i64> %__A, <2 x i64> %__A, <2 x i64> <i64 5, i64 5>)6852  %1 = bitcast i8 %__U to <8 x i1>6853  %extract = shufflevector <8 x i1> %1, <8 x i1> undef, <2 x i32> <i32 0, i32 1>6854  %2 = select <2 x i1> %extract, <2 x i64> %0, <2 x i64> zeroinitializer6855  ret <2 x i64> %26856}6857 6858define <4 x i64> @test_mm256_rol_epi64(<4 x i64> %__A) {6859; CHECK-LABEL: test_mm256_rol_epi64:6860; CHECK:       # %bb.0: # %entry6861; CHECK-NEXT:    vprolq $5, %ymm0, %ymm06862; CHECK-NEXT:    ret{{[l|q]}}6863entry:6864  %0 = tail call <4 x i64> @llvm.fshl.v4i64(<4 x i64> %__A, <4 x i64> %__A, <4 x i64> <i64 5, i64 5,i64 5, i64 5>)6865  ret <4 x i64> %06866}6867 6868define <4 x i64> @test_mm256_mask_rol_epi64(<4 x i64> %__W, i8 zeroext %__U, <4 x i64> %__A) {6869; X86-LABEL: test_mm256_mask_rol_epi64:6870; X86:       # %bb.0: # %entry6871; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax6872; X86-NEXT:    kmovw %eax, %k16873; X86-NEXT:    vprolq $5, %ymm1, %ymm0 {%k1}6874; X86-NEXT:    retl6875;6876; X64-LABEL: test_mm256_mask_rol_epi64:6877; X64:       # %bb.0: # %entry6878; X64-NEXT:    kmovw %edi, %k16879; X64-NEXT:    vprolq $5, %ymm1, %ymm0 {%k1}6880; X64-NEXT:    retq6881entry:6882  %0 = tail call <4 x i64> @llvm.fshl.v4i64(<4 x i64> %__A, <4 x i64> %__A, <4 x i64> <i64 5, i64 5,i64 5, i64 5>)6883  %1 = bitcast i8 %__U to <8 x i1>6884  %extract = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>6885  %2 = select <4 x i1> %extract, <4 x i64> %0, <4 x i64> %__W6886  ret <4 x i64> %26887}6888 6889define <4 x i64> @test_mm256_maskz_rol_epi64(i8 zeroext %__U, <4 x i64> %__A) {6890; X86-LABEL: test_mm256_maskz_rol_epi64:6891; X86:       # %bb.0: # %entry6892; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax6893; X86-NEXT:    kmovw %eax, %k16894; X86-NEXT:    vprolq $5, %ymm0, %ymm0 {%k1} {z}6895; X86-NEXT:    retl6896;6897; X64-LABEL: test_mm256_maskz_rol_epi64:6898; X64:       # %bb.0: # %entry6899; X64-NEXT:    kmovw %edi, %k16900; X64-NEXT:    vprolq $5, %ymm0, %ymm0 {%k1} {z}6901; X64-NEXT:    retq6902entry:6903  %0 = tail call <4 x i64> @llvm.fshl.v4i64(<4 x i64> %__A, <4 x i64> %__A, <4 x i64> <i64 5, i64 5,i64 5, i64 5>)6904  %1 = bitcast i8 %__U to <8 x i1>6905  %extract = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>6906  %2 = select <4 x i1> %extract, <4 x i64> %0, <4 x i64> zeroinitializer6907  ret <4 x i64> %26908}6909 6910define <2 x i64> @test_mm_rolv_epi32(<2 x i64> %__A, <2 x i64> %__B) {6911; CHECK-LABEL: test_mm_rolv_epi32:6912; CHECK:       # %bb.0: # %entry6913; CHECK-NEXT:    vprolvd %xmm1, %xmm0, %xmm06914; CHECK-NEXT:    ret{{[l|q]}}6915entry:6916  %0 = bitcast <2 x i64> %__A to <4 x i32>6917  %1 = bitcast <2 x i64> %__B to <4 x i32>6918  %2 = tail call <4 x i32> @llvm.fshl.v4i32(<4 x i32> %0, <4 x i32> %0, <4 x i32> %1)6919  %3 = bitcast <4 x i32> %2 to <2 x i64>6920  ret <2 x i64> %36921}6922 6923define <2 x i64> @test_mm_mask_rolv_epi32(<2 x i64> %__W, i8 zeroext %__U, <2 x i64> %__A, <2 x i64> %__B) {6924; X86-LABEL: test_mm_mask_rolv_epi32:6925; X86:       # %bb.0: # %entry6926; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax6927; X86-NEXT:    kmovw %eax, %k16928; X86-NEXT:    vprolvd %xmm2, %xmm1, %xmm0 {%k1}6929; X86-NEXT:    retl6930;6931; X64-LABEL: test_mm_mask_rolv_epi32:6932; X64:       # %bb.0: # %entry6933; X64-NEXT:    kmovw %edi, %k16934; X64-NEXT:    vprolvd %xmm2, %xmm1, %xmm0 {%k1}6935; X64-NEXT:    retq6936entry:6937  %0 = bitcast <2 x i64> %__A to <4 x i32>6938  %1 = bitcast <2 x i64> %__B to <4 x i32>6939  %2 = tail call <4 x i32> @llvm.fshl.v4i32(<4 x i32> %0, <4 x i32> %0, <4 x i32> %1)6940  %3 = bitcast <2 x i64> %__W to <4 x i32>6941  %4 = bitcast i8 %__U to <8 x i1>6942  %extract.i = shufflevector <8 x i1> %4, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>6943  %5 = select <4 x i1> %extract.i, <4 x i32> %2, <4 x i32> %36944  %6 = bitcast <4 x i32> %5 to <2 x i64>6945  ret <2 x i64> %66946}6947 6948define <2 x i64> @test_mm_maskz_rolv_epi32(i8 zeroext %__U, <2 x i64> %__A, <2 x i64> %__B) {6949; X86-LABEL: test_mm_maskz_rolv_epi32:6950; X86:       # %bb.0: # %entry6951; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax6952; X86-NEXT:    kmovw %eax, %k16953; X86-NEXT:    vprolvd %xmm1, %xmm0, %xmm0 {%k1} {z}6954; X86-NEXT:    retl6955;6956; X64-LABEL: test_mm_maskz_rolv_epi32:6957; X64:       # %bb.0: # %entry6958; X64-NEXT:    kmovw %edi, %k16959; X64-NEXT:    vprolvd %xmm1, %xmm0, %xmm0 {%k1} {z}6960; X64-NEXT:    retq6961entry:6962  %0 = bitcast <2 x i64> %__A to <4 x i32>6963  %1 = bitcast <2 x i64> %__B to <4 x i32>6964  %2 = tail call <4 x i32> @llvm.fshl.v4i32(<4 x i32> %0, <4 x i32> %0, <4 x i32> %1)6965  %3 = bitcast i8 %__U to <8 x i1>6966  %extract.i = shufflevector <8 x i1> %3, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>6967  %4 = select <4 x i1> %extract.i, <4 x i32> %2, <4 x i32> zeroinitializer6968  %5 = bitcast <4 x i32> %4 to <2 x i64>6969  ret <2 x i64> %56970}6971 6972define <4 x i64> @test_mm256_rolv_epi32(<4 x i64> %__A, <4 x i64> %__B) {6973; CHECK-LABEL: test_mm256_rolv_epi32:6974; CHECK:       # %bb.0: # %entry6975; CHECK-NEXT:    vprolvd %ymm1, %ymm0, %ymm06976; CHECK-NEXT:    ret{{[l|q]}}6977entry:6978  %0 = bitcast <4 x i64> %__A to <8 x i32>6979  %1 = bitcast <4 x i64> %__B to <8 x i32>6980  %2 = tail call <8 x i32> @llvm.fshl.v8i32(<8 x i32> %0, <8 x i32> %0, <8 x i32> %1)6981  %3 = bitcast <8 x i32> %2 to <4 x i64>6982  ret <4 x i64> %36983}6984 6985define <4 x i64> @test_mm256_mask_rolv_epi32(<4 x i64> %__W, i8 zeroext %__U, <4 x i64> %__A, <4 x i64> %__B) {6986; X86-LABEL: test_mm256_mask_rolv_epi32:6987; X86:       # %bb.0: # %entry6988; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax6989; X86-NEXT:    kmovw %eax, %k16990; X86-NEXT:    vprolvd %ymm2, %ymm1, %ymm0 {%k1}6991; X86-NEXT:    retl6992;6993; X64-LABEL: test_mm256_mask_rolv_epi32:6994; X64:       # %bb.0: # %entry6995; X64-NEXT:    kmovw %edi, %k16996; X64-NEXT:    vprolvd %ymm2, %ymm1, %ymm0 {%k1}6997; X64-NEXT:    retq6998entry:6999  %0 = bitcast <4 x i64> %__A to <8 x i32>7000  %1 = bitcast <4 x i64> %__B to <8 x i32>7001  %2 = tail call <8 x i32> @llvm.fshl.v8i32(<8 x i32> %0, <8 x i32> %0, <8 x i32> %1)7002  %3 = bitcast <4 x i64> %__W to <8 x i32>7003  %4 = bitcast i8 %__U to <8 x i1>7004  %5 = select <8 x i1> %4, <8 x i32> %2, <8 x i32> %37005  %6 = bitcast <8 x i32> %5 to <4 x i64>7006  ret <4 x i64> %67007}7008 7009define <4 x i64> @test_mm256_maskz_rolv_epi32(i8 zeroext %__U, <4 x i64> %__A, <4 x i64> %__B) {7010; X86-LABEL: test_mm256_maskz_rolv_epi32:7011; X86:       # %bb.0: # %entry7012; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax7013; X86-NEXT:    kmovw %eax, %k17014; X86-NEXT:    vprolvd %ymm1, %ymm0, %ymm0 {%k1} {z}7015; X86-NEXT:    retl7016;7017; X64-LABEL: test_mm256_maskz_rolv_epi32:7018; X64:       # %bb.0: # %entry7019; X64-NEXT:    kmovw %edi, %k17020; X64-NEXT:    vprolvd %ymm1, %ymm0, %ymm0 {%k1} {z}7021; X64-NEXT:    retq7022entry:7023  %0 = bitcast <4 x i64> %__A to <8 x i32>7024  %1 = bitcast <4 x i64> %__B to <8 x i32>7025  %2 = tail call <8 x i32> @llvm.fshl.v8i32(<8 x i32> %0, <8 x i32> %0, <8 x i32> %1)7026  %3 = bitcast i8 %__U to <8 x i1>7027  %4 = select <8 x i1> %3, <8 x i32> %2, <8 x i32> zeroinitializer7028  %5 = bitcast <8 x i32> %4 to <4 x i64>7029  ret <4 x i64> %57030}7031 7032define <2 x i64> @test_mm_rolv_epi64(<2 x i64> %__A, <2 x i64> %__B) {7033; CHECK-LABEL: test_mm_rolv_epi64:7034; CHECK:       # %bb.0: # %entry7035; CHECK-NEXT:    vprolvq %xmm1, %xmm0, %xmm07036; CHECK-NEXT:    ret{{[l|q]}}7037entry:7038  %0 = tail call <2 x i64> @llvm.fshl.v2i64(<2 x i64> %__A, <2 x i64> %__A, <2 x i64> %__B)7039  ret <2 x i64> %07040}7041 7042define <2 x i64> @test_mm_mask_rolv_epi64(<2 x i64> %__W, i8 zeroext %__U, <2 x i64> %__A, <2 x i64> %__B) {7043; X86-LABEL: test_mm_mask_rolv_epi64:7044; X86:       # %bb.0: # %entry7045; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax7046; X86-NEXT:    kmovw %eax, %k17047; X86-NEXT:    vprolvq %xmm2, %xmm1, %xmm0 {%k1}7048; X86-NEXT:    retl7049;7050; X64-LABEL: test_mm_mask_rolv_epi64:7051; X64:       # %bb.0: # %entry7052; X64-NEXT:    kmovw %edi, %k17053; X64-NEXT:    vprolvq %xmm2, %xmm1, %xmm0 {%k1}7054; X64-NEXT:    retq7055entry:7056  %0 = tail call <2 x i64> @llvm.fshl.v2i64(<2 x i64> %__A, <2 x i64> %__A, <2 x i64> %__B)7057  %1 = bitcast i8 %__U to <8 x i1>7058  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <2 x i32> <i32 0, i32 1>7059  %2 = select <2 x i1> %extract.i, <2 x i64> %0, <2 x i64> %__W7060  ret <2 x i64> %27061}7062 7063define <2 x i64> @test_mm_maskz_rolv_epi64(i8 zeroext %__U, <2 x i64> %__A, <2 x i64> %__B) {7064; X86-LABEL: test_mm_maskz_rolv_epi64:7065; X86:       # %bb.0: # %entry7066; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax7067; X86-NEXT:    kmovw %eax, %k17068; X86-NEXT:    vprolvq %xmm1, %xmm0, %xmm0 {%k1} {z}7069; X86-NEXT:    retl7070;7071; X64-LABEL: test_mm_maskz_rolv_epi64:7072; X64:       # %bb.0: # %entry7073; X64-NEXT:    kmovw %edi, %k17074; X64-NEXT:    vprolvq %xmm1, %xmm0, %xmm0 {%k1} {z}7075; X64-NEXT:    retq7076entry:7077  %0 = tail call <2 x i64> @llvm.fshl.v2i64(<2 x i64> %__A, <2 x i64> %__A, <2 x i64> %__B)7078  %1 = bitcast i8 %__U to <8 x i1>7079  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <2 x i32> <i32 0, i32 1>7080  %2 = select <2 x i1> %extract.i, <2 x i64> %0, <2 x i64> zeroinitializer7081  ret <2 x i64> %27082}7083 7084define <4 x i64> @test_mm256_rolv_epi64(<4 x i64> %__A, <4 x i64> %__B) {7085; CHECK-LABEL: test_mm256_rolv_epi64:7086; CHECK:       # %bb.0: # %entry7087; CHECK-NEXT:    vprolvq %ymm1, %ymm0, %ymm07088; CHECK-NEXT:    ret{{[l|q]}}7089entry:7090  %0 = tail call <4 x i64> @llvm.fshl.v4i64(<4 x i64> %__A, <4 x i64> %__A, <4 x i64> %__B)7091  ret <4 x i64> %07092}7093 7094define <4 x i64> @test_mm256_mask_rolv_epi64(<4 x i64> %__W, i8 zeroext %__U, <4 x i64> %__A, <4 x i64> %__B) {7095; X86-LABEL: test_mm256_mask_rolv_epi64:7096; X86:       # %bb.0: # %entry7097; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax7098; X86-NEXT:    kmovw %eax, %k17099; X86-NEXT:    vprolvq %ymm2, %ymm1, %ymm0 {%k1}7100; X86-NEXT:    retl7101;7102; X64-LABEL: test_mm256_mask_rolv_epi64:7103; X64:       # %bb.0: # %entry7104; X64-NEXT:    kmovw %edi, %k17105; X64-NEXT:    vprolvq %ymm2, %ymm1, %ymm0 {%k1}7106; X64-NEXT:    retq7107entry:7108  %0 = tail call <4 x i64> @llvm.fshl.v4i64(<4 x i64> %__A, <4 x i64> %__A, <4 x i64> %__B)7109  %1 = bitcast i8 %__U to <8 x i1>7110  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>7111  %2 = select <4 x i1> %extract.i, <4 x i64> %0, <4 x i64> %__W7112  ret <4 x i64> %27113}7114 7115define <4 x i64> @test_mm256_maskz_rolv_epi64(i8 zeroext %__U, <4 x i64> %__A, <4 x i64> %__B) {7116; X86-LABEL: test_mm256_maskz_rolv_epi64:7117; X86:       # %bb.0: # %entry7118; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax7119; X86-NEXT:    kmovw %eax, %k17120; X86-NEXT:    vprolvq %ymm1, %ymm0, %ymm0 {%k1} {z}7121; X86-NEXT:    retl7122;7123; X64-LABEL: test_mm256_maskz_rolv_epi64:7124; X64:       # %bb.0: # %entry7125; X64-NEXT:    kmovw %edi, %k17126; X64-NEXT:    vprolvq %ymm1, %ymm0, %ymm0 {%k1} {z}7127; X64-NEXT:    retq7128entry:7129  %0 = tail call <4 x i64> @llvm.fshl.v4i64(<4 x i64> %__A, <4 x i64> %__A, <4 x i64> %__B)7130  %1 = bitcast i8 %__U to <8 x i1>7131  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>7132  %2 = select <4 x i1> %extract.i, <4 x i64> %0, <4 x i64> zeroinitializer7133  ret <4 x i64> %27134}7135 7136define <2 x i64> @test_mm_ror_epi32(<2 x i64> %__A) {7137; CHECK-LABEL: test_mm_ror_epi32:7138; CHECK:       # %bb.0: # %entry7139; CHECK-NEXT:    vprord $5, %xmm0, %xmm07140; CHECK-NEXT:    ret{{[l|q]}}7141entry:7142  %0 = bitcast <2 x i64> %__A to <4 x i32>7143  %1 = tail call <4 x i32> @llvm.fshr.v4i32(<4 x i32> %0, <4 x i32> %0, <4 x i32> <i32 5, i32 5, i32 5, i32 5>)7144  %2 = bitcast <4 x i32> %1 to <2 x i64>7145  ret <2 x i64> %27146}7147 7148define <2 x i64> @test_mm_mask_ror_epi32(<2 x i64> %__W, i8 zeroext %__U, <2 x i64> %__A) {7149; X86-LABEL: test_mm_mask_ror_epi32:7150; X86:       # %bb.0: # %entry7151; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax7152; X86-NEXT:    kmovw %eax, %k17153; X86-NEXT:    vprord $5, %xmm1, %xmm0 {%k1}7154; X86-NEXT:    retl7155;7156; X64-LABEL: test_mm_mask_ror_epi32:7157; X64:       # %bb.0: # %entry7158; X64-NEXT:    kmovw %edi, %k17159; X64-NEXT:    vprord $5, %xmm1, %xmm0 {%k1}7160; X64-NEXT:    retq7161entry:7162  %0 = bitcast <2 x i64> %__A to <4 x i32>7163  %1 = tail call <4 x i32> @llvm.fshr.v4i32(<4 x i32> %0, <4 x i32> %0, <4 x i32> <i32 5, i32 5, i32 5, i32 5>)7164  %2 = bitcast <2 x i64> %__W to <4 x i32>7165  %3 = bitcast i8 %__U to <8 x i1>7166  %extract = shufflevector <8 x i1> %3, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>7167  %4 = select <4 x i1> %extract, <4 x i32> %1, <4 x i32> %27168  %5 = bitcast <4 x i32> %4 to <2 x i64>7169  ret <2 x i64> %57170}7171 7172define <2 x i64> @test_mm_maskz_ror_epi32(i8 zeroext %__U, <2 x i64> %__A) {7173; X86-LABEL: test_mm_maskz_ror_epi32:7174; X86:       # %bb.0: # %entry7175; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax7176; X86-NEXT:    kmovw %eax, %k17177; X86-NEXT:    vprord $5, %xmm0, %xmm0 {%k1} {z}7178; X86-NEXT:    retl7179;7180; X64-LABEL: test_mm_maskz_ror_epi32:7181; X64:       # %bb.0: # %entry7182; X64-NEXT:    kmovw %edi, %k17183; X64-NEXT:    vprord $5, %xmm0, %xmm0 {%k1} {z}7184; X64-NEXT:    retq7185entry:7186  %0 = bitcast <2 x i64> %__A to <4 x i32>7187  %1 = tail call <4 x i32> @llvm.fshr.v4i32(<4 x i32> %0, <4 x i32> %0, <4 x i32> <i32 5, i32 5, i32 5, i32 5>)7188  %2 = bitcast i8 %__U to <8 x i1>7189  %extract = shufflevector <8 x i1> %2, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>7190  %3 = select <4 x i1> %extract, <4 x i32> %1, <4 x i32> zeroinitializer7191  %4 = bitcast <4 x i32> %3 to <2 x i64>7192  ret <2 x i64> %47193}7194 7195define <4 x i64> @test_mm256_ror_epi32(<4 x i64> %__A) {7196; CHECK-LABEL: test_mm256_ror_epi32:7197; CHECK:       # %bb.0: # %entry7198; CHECK-NEXT:    vprord $5, %ymm0, %ymm07199; CHECK-NEXT:    ret{{[l|q]}}7200entry:7201  %0 = bitcast <4 x i64> %__A to <8 x i32>7202  %1 = tail call <8 x i32> @llvm.fshr.v8i32(<8 x i32> %0, <8 x i32> %0, <8 x i32> <i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5>)7203  %2 = bitcast <8 x i32> %1 to <4 x i64>7204  ret <4 x i64> %27205}7206 7207define <4 x i64> @test_mm256_mask_ror_epi32(<4 x i64> %__W, i8 zeroext %__U, <4 x i64> %__A) {7208; X86-LABEL: test_mm256_mask_ror_epi32:7209; X86:       # %bb.0: # %entry7210; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax7211; X86-NEXT:    kmovw %eax, %k17212; X86-NEXT:    vprord $5, %ymm1, %ymm0 {%k1}7213; X86-NEXT:    retl7214;7215; X64-LABEL: test_mm256_mask_ror_epi32:7216; X64:       # %bb.0: # %entry7217; X64-NEXT:    kmovw %edi, %k17218; X64-NEXT:    vprord $5, %ymm1, %ymm0 {%k1}7219; X64-NEXT:    retq7220entry:7221  %0 = bitcast <4 x i64> %__A to <8 x i32>7222  %1 = tail call <8 x i32> @llvm.fshr.v8i32(<8 x i32> %0, <8 x i32> %0, <8 x i32> <i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5>)7223  %2 = bitcast <4 x i64> %__W to <8 x i32>7224  %3 = bitcast i8 %__U to <8 x i1>7225  %4 = select <8 x i1> %3, <8 x i32> %1, <8 x i32> %27226  %5 = bitcast <8 x i32> %4 to <4 x i64>7227  ret <4 x i64> %57228}7229 7230define <4 x i64> @test_mm256_maskz_ror_epi32(i8 zeroext %__U, <4 x i64> %__A) {7231; X86-LABEL: test_mm256_maskz_ror_epi32:7232; X86:       # %bb.0: # %entry7233; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax7234; X86-NEXT:    kmovw %eax, %k17235; X86-NEXT:    vprord $5, %ymm0, %ymm0 {%k1} {z}7236; X86-NEXT:    retl7237;7238; X64-LABEL: test_mm256_maskz_ror_epi32:7239; X64:       # %bb.0: # %entry7240; X64-NEXT:    kmovw %edi, %k17241; X64-NEXT:    vprord $5, %ymm0, %ymm0 {%k1} {z}7242; X64-NEXT:    retq7243entry:7244  %0 = bitcast <4 x i64> %__A to <8 x i32>7245  %1 = tail call <8 x i32> @llvm.fshr.v8i32(<8 x i32> %0, <8 x i32> %0, <8 x i32> <i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5>)7246  %2 = bitcast i8 %__U to <8 x i1>7247  %3 = select <8 x i1> %2, <8 x i32> %1, <8 x i32> zeroinitializer7248  %4 = bitcast <8 x i32> %3 to <4 x i64>7249  ret <4 x i64> %47250}7251 7252define <2 x i64> @test_mm_ror_epi64(<2 x i64> %__A) {7253; CHECK-LABEL: test_mm_ror_epi64:7254; CHECK:       # %bb.0: # %entry7255; CHECK-NEXT:    vprorq $5, %xmm0, %xmm07256; CHECK-NEXT:    ret{{[l|q]}}7257entry:7258  %0 = tail call <2 x i64> @llvm.fshr.v2i64(<2 x i64> %__A, <2 x i64> %__A, <2 x i64> <i64 5, i64 5>)7259  ret <2 x i64> %07260}7261 7262define <2 x i64> @test_mm_mask_ror_epi64(<2 x i64> %__W, i8 zeroext %__U, <2 x i64> %__A) {7263; X86-LABEL: test_mm_mask_ror_epi64:7264; X86:       # %bb.0: # %entry7265; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax7266; X86-NEXT:    kmovw %eax, %k17267; X86-NEXT:    vprorq $5, %xmm1, %xmm0 {%k1}7268; X86-NEXT:    retl7269;7270; X64-LABEL: test_mm_mask_ror_epi64:7271; X64:       # %bb.0: # %entry7272; X64-NEXT:    kmovw %edi, %k17273; X64-NEXT:    vprorq $5, %xmm1, %xmm0 {%k1}7274; X64-NEXT:    retq7275entry:7276  %0 = tail call <2 x i64> @llvm.fshr.v2i64(<2 x i64> %__A, <2 x i64> %__A, <2 x i64> <i64 5, i64 5>)7277  %1 = bitcast i8 %__U to <8 x i1>7278  %extract = shufflevector <8 x i1> %1, <8 x i1> undef, <2 x i32> <i32 0, i32 1>7279  %2 = select <2 x i1> %extract, <2 x i64> %0, <2 x i64> %__W7280  ret <2 x i64> %27281}7282 7283define <2 x i64> @test_mm_maskz_ror_epi64(i8 zeroext %__U, <2 x i64> %__A) {7284; X86-LABEL: test_mm_maskz_ror_epi64:7285; X86:       # %bb.0: # %entry7286; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax7287; X86-NEXT:    kmovw %eax, %k17288; X86-NEXT:    vprorq $5, %xmm0, %xmm0 {%k1} {z}7289; X86-NEXT:    retl7290;7291; X64-LABEL: test_mm_maskz_ror_epi64:7292; X64:       # %bb.0: # %entry7293; X64-NEXT:    kmovw %edi, %k17294; X64-NEXT:    vprorq $5, %xmm0, %xmm0 {%k1} {z}7295; X64-NEXT:    retq7296entry:7297  %0 = tail call <2 x i64> @llvm.fshr.v2i64(<2 x i64> %__A, <2 x i64> %__A, <2 x i64> <i64 5, i64 5>)7298  %1 = bitcast i8 %__U to <8 x i1>7299  %extract = shufflevector <8 x i1> %1, <8 x i1> undef, <2 x i32> <i32 0, i32 1>7300  %2 = select <2 x i1> %extract, <2 x i64> %0, <2 x i64> zeroinitializer7301  ret <2 x i64> %27302}7303 7304define <4 x i64> @test_mm256_ror_epi64(<4 x i64> %__A) {7305; CHECK-LABEL: test_mm256_ror_epi64:7306; CHECK:       # %bb.0: # %entry7307; CHECK-NEXT:    vprorq $5, %ymm0, %ymm07308; CHECK-NEXT:    ret{{[l|q]}}7309entry:7310  %0 = tail call <4 x i64> @llvm.fshr.v4i64(<4 x i64> %__A, <4 x i64> %__A, <4 x i64> <i64 5, i64 5, i64 5, i64 5>)7311  ret <4 x i64> %07312}7313 7314define <4 x i64> @test_mm256_mask_ror_epi64(<4 x i64> %__W, i8 zeroext %__U, <4 x i64> %__A) {7315; X86-LABEL: test_mm256_mask_ror_epi64:7316; X86:       # %bb.0: # %entry7317; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax7318; X86-NEXT:    kmovw %eax, %k17319; X86-NEXT:    vprorq $5, %ymm1, %ymm0 {%k1}7320; X86-NEXT:    retl7321;7322; X64-LABEL: test_mm256_mask_ror_epi64:7323; X64:       # %bb.0: # %entry7324; X64-NEXT:    kmovw %edi, %k17325; X64-NEXT:    vprorq $5, %ymm1, %ymm0 {%k1}7326; X64-NEXT:    retq7327entry:7328  %0 = tail call <4 x i64> @llvm.fshr.v4i64(<4 x i64> %__A, <4 x i64> %__A, <4 x i64> <i64 5, i64 5, i64 5, i64 5>)7329  %1 = bitcast i8 %__U to <8 x i1>7330  %extract = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>7331  %2 = select <4 x i1> %extract, <4 x i64> %0, <4 x i64> %__W7332  ret <4 x i64> %27333}7334 7335define <4 x i64> @test_mm256_maskz_ror_epi64(i8 zeroext %__U, <4 x i64> %__A) {7336; X86-LABEL: test_mm256_maskz_ror_epi64:7337; X86:       # %bb.0: # %entry7338; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax7339; X86-NEXT:    kmovw %eax, %k17340; X86-NEXT:    vprorq $5, %ymm0, %ymm0 {%k1} {z}7341; X86-NEXT:    retl7342;7343; X64-LABEL: test_mm256_maskz_ror_epi64:7344; X64:       # %bb.0: # %entry7345; X64-NEXT:    kmovw %edi, %k17346; X64-NEXT:    vprorq $5, %ymm0, %ymm0 {%k1} {z}7347; X64-NEXT:    retq7348entry:7349  %0 = tail call <4 x i64> @llvm.fshr.v4i64(<4 x i64> %__A, <4 x i64> %__A, <4 x i64> <i64 5, i64 5, i64 5, i64 5>)7350  %1 = bitcast i8 %__U to <8 x i1>7351  %extract = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>7352  %2 = select <4 x i1> %extract, <4 x i64> %0, <4 x i64> zeroinitializer7353  ret <4 x i64> %27354}7355 7356define <2 x i64> @test_mm_rorv_epi32(<2 x i64> %__A, <2 x i64> %__B) {7357; CHECK-LABEL: test_mm_rorv_epi32:7358; CHECK:       # %bb.0: # %entry7359; CHECK-NEXT:    vprorvd %xmm1, %xmm0, %xmm07360; CHECK-NEXT:    ret{{[l|q]}}7361entry:7362  %0 = bitcast <2 x i64> %__A to <4 x i32>7363  %1 = bitcast <2 x i64> %__B to <4 x i32>7364  %2 = tail call <4 x i32> @llvm.fshr.v4i32(<4 x i32> %0, <4 x i32> %0, <4 x i32> %1)7365  %3 = bitcast <4 x i32> %2 to <2 x i64>7366  ret <2 x i64> %37367}7368 7369define <2 x i64> @test_mm_mask_rorv_epi32(<2 x i64> %__W, i8 zeroext %__U, <2 x i64> %__A, <2 x i64> %__B) {7370; X86-LABEL: test_mm_mask_rorv_epi32:7371; X86:       # %bb.0: # %entry7372; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax7373; X86-NEXT:    kmovw %eax, %k17374; X86-NEXT:    vprorvd %xmm2, %xmm1, %xmm0 {%k1}7375; X86-NEXT:    retl7376;7377; X64-LABEL: test_mm_mask_rorv_epi32:7378; X64:       # %bb.0: # %entry7379; X64-NEXT:    kmovw %edi, %k17380; X64-NEXT:    vprorvd %xmm2, %xmm1, %xmm0 {%k1}7381; X64-NEXT:    retq7382entry:7383  %0 = bitcast <2 x i64> %__A to <4 x i32>7384  %1 = bitcast <2 x i64> %__B to <4 x i32>7385  %2 = tail call <4 x i32> @llvm.fshr.v4i32(<4 x i32> %0, <4 x i32> %0, <4 x i32> %1)7386  %3 = bitcast <2 x i64> %__W to <4 x i32>7387  %4 = bitcast i8 %__U to <8 x i1>7388  %extract.i = shufflevector <8 x i1> %4, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>7389  %5 = select <4 x i1> %extract.i, <4 x i32> %2, <4 x i32> %37390  %6 = bitcast <4 x i32> %5 to <2 x i64>7391  ret <2 x i64> %67392}7393 7394define <2 x i64> @test_mm_maskz_rorv_epi32(i8 zeroext %__U, <2 x i64> %__A, <2 x i64> %__B) {7395; X86-LABEL: test_mm_maskz_rorv_epi32:7396; X86:       # %bb.0: # %entry7397; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax7398; X86-NEXT:    kmovw %eax, %k17399; X86-NEXT:    vprorvd %xmm1, %xmm0, %xmm0 {%k1} {z}7400; X86-NEXT:    retl7401;7402; X64-LABEL: test_mm_maskz_rorv_epi32:7403; X64:       # %bb.0: # %entry7404; X64-NEXT:    kmovw %edi, %k17405; X64-NEXT:    vprorvd %xmm1, %xmm0, %xmm0 {%k1} {z}7406; X64-NEXT:    retq7407entry:7408  %0 = bitcast <2 x i64> %__A to <4 x i32>7409  %1 = bitcast <2 x i64> %__B to <4 x i32>7410  %2 = tail call <4 x i32> @llvm.fshr.v4i32(<4 x i32> %0, <4 x i32> %0, <4 x i32> %1)7411  %3 = bitcast i8 %__U to <8 x i1>7412  %extract.i = shufflevector <8 x i1> %3, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>7413  %4 = select <4 x i1> %extract.i, <4 x i32> %2, <4 x i32> zeroinitializer7414  %5 = bitcast <4 x i32> %4 to <2 x i64>7415  ret <2 x i64> %57416}7417 7418define <4 x i64> @test_mm256_rorv_epi32(<4 x i64> %__A, <4 x i64> %__B) {7419; CHECK-LABEL: test_mm256_rorv_epi32:7420; CHECK:       # %bb.0: # %entry7421; CHECK-NEXT:    vprorvd %ymm1, %ymm0, %ymm07422; CHECK-NEXT:    ret{{[l|q]}}7423entry:7424  %0 = bitcast <4 x i64> %__A to <8 x i32>7425  %1 = bitcast <4 x i64> %__B to <8 x i32>7426  %2 = tail call <8 x i32> @llvm.fshr.v8i32(<8 x i32> %0, <8 x i32> %0, <8 x i32> %1)7427  %3 = bitcast <8 x i32> %2 to <4 x i64>7428  ret <4 x i64> %37429}7430 7431define <4 x i64> @test_mm256_mask_rorv_epi32(<4 x i64> %__W, i8 zeroext %__U, <4 x i64> %__A, <4 x i64> %__B) {7432; X86-LABEL: test_mm256_mask_rorv_epi32:7433; X86:       # %bb.0: # %entry7434; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax7435; X86-NEXT:    kmovw %eax, %k17436; X86-NEXT:    vprorvd %ymm2, %ymm1, %ymm0 {%k1}7437; X86-NEXT:    retl7438;7439; X64-LABEL: test_mm256_mask_rorv_epi32:7440; X64:       # %bb.0: # %entry7441; X64-NEXT:    kmovw %edi, %k17442; X64-NEXT:    vprorvd %ymm2, %ymm1, %ymm0 {%k1}7443; X64-NEXT:    retq7444entry:7445  %0 = bitcast <4 x i64> %__A to <8 x i32>7446  %1 = bitcast <4 x i64> %__B to <8 x i32>7447  %2 = tail call <8 x i32> @llvm.fshr.v8i32(<8 x i32> %0, <8 x i32> %0, <8 x i32> %1)7448  %3 = bitcast <4 x i64> %__W to <8 x i32>7449  %4 = bitcast i8 %__U to <8 x i1>7450  %5 = select <8 x i1> %4, <8 x i32> %2, <8 x i32> %37451  %6 = bitcast <8 x i32> %5 to <4 x i64>7452  ret <4 x i64> %67453}7454 7455define <4 x i64> @test_mm256_maskz_rorv_epi32(i8 zeroext %__U, <4 x i64> %__A, <4 x i64> %__B) {7456; X86-LABEL: test_mm256_maskz_rorv_epi32:7457; X86:       # %bb.0: # %entry7458; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax7459; X86-NEXT:    kmovw %eax, %k17460; X86-NEXT:    vprorvd %ymm1, %ymm0, %ymm0 {%k1} {z}7461; X86-NEXT:    retl7462;7463; X64-LABEL: test_mm256_maskz_rorv_epi32:7464; X64:       # %bb.0: # %entry7465; X64-NEXT:    kmovw %edi, %k17466; X64-NEXT:    vprorvd %ymm1, %ymm0, %ymm0 {%k1} {z}7467; X64-NEXT:    retq7468entry:7469  %0 = bitcast <4 x i64> %__A to <8 x i32>7470  %1 = bitcast <4 x i64> %__B to <8 x i32>7471  %2 = tail call <8 x i32> @llvm.fshr.v8i32(<8 x i32> %0, <8 x i32> %0, <8 x i32> %1)7472  %3 = bitcast i8 %__U to <8 x i1>7473  %4 = select <8 x i1> %3, <8 x i32> %2, <8 x i32> zeroinitializer7474  %5 = bitcast <8 x i32> %4 to <4 x i64>7475  ret <4 x i64> %57476}7477 7478define <2 x i64> @test_mm_rorv_epi64(<2 x i64> %__A, <2 x i64> %__B) {7479; CHECK-LABEL: test_mm_rorv_epi64:7480; CHECK:       # %bb.0: # %entry7481; CHECK-NEXT:    vprorvq %xmm1, %xmm0, %xmm07482; CHECK-NEXT:    ret{{[l|q]}}7483entry:7484  %0 = tail call <2 x i64> @llvm.fshr.v2i64(<2 x i64> %__A, <2 x i64> %__A, <2 x i64> %__B)7485  ret <2 x i64> %07486}7487 7488define <2 x i64> @test_mm_mask_rorv_epi64(<2 x i64> %__W, i8 zeroext %__U, <2 x i64> %__A, <2 x i64> %__B) {7489; X86-LABEL: test_mm_mask_rorv_epi64:7490; X86:       # %bb.0: # %entry7491; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax7492; X86-NEXT:    kmovw %eax, %k17493; X86-NEXT:    vprorvq %xmm2, %xmm1, %xmm0 {%k1}7494; X86-NEXT:    retl7495;7496; X64-LABEL: test_mm_mask_rorv_epi64:7497; X64:       # %bb.0: # %entry7498; X64-NEXT:    kmovw %edi, %k17499; X64-NEXT:    vprorvq %xmm2, %xmm1, %xmm0 {%k1}7500; X64-NEXT:    retq7501entry:7502  %0 = tail call <2 x i64> @llvm.fshr.v2i64(<2 x i64> %__A, <2 x i64> %__A, <2 x i64> %__B)7503  %1 = bitcast i8 %__U to <8 x i1>7504  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <2 x i32> <i32 0, i32 1>7505  %2 = select <2 x i1> %extract.i, <2 x i64> %0, <2 x i64> %__W7506  ret <2 x i64> %27507}7508 7509define <2 x i64> @test_mm_maskz_rorv_epi64(i8 zeroext %__U, <2 x i64> %__A, <2 x i64> %__B) {7510; X86-LABEL: test_mm_maskz_rorv_epi64:7511; X86:       # %bb.0: # %entry7512; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax7513; X86-NEXT:    kmovw %eax, %k17514; X86-NEXT:    vprorvq %xmm1, %xmm0, %xmm0 {%k1} {z}7515; X86-NEXT:    retl7516;7517; X64-LABEL: test_mm_maskz_rorv_epi64:7518; X64:       # %bb.0: # %entry7519; X64-NEXT:    kmovw %edi, %k17520; X64-NEXT:    vprorvq %xmm1, %xmm0, %xmm0 {%k1} {z}7521; X64-NEXT:    retq7522entry:7523  %0 = tail call <2 x i64> @llvm.fshr.v2i64(<2 x i64> %__A, <2 x i64> %__A, <2 x i64> %__B)7524  %1 = bitcast i8 %__U to <8 x i1>7525  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <2 x i32> <i32 0, i32 1>7526  %2 = select <2 x i1> %extract.i, <2 x i64> %0, <2 x i64> zeroinitializer7527  ret <2 x i64> %27528}7529 7530define <4 x i64> @test_mm256_rorv_epi64(<4 x i64> %__A, <4 x i64> %__B) {7531; CHECK-LABEL: test_mm256_rorv_epi64:7532; CHECK:       # %bb.0: # %entry7533; CHECK-NEXT:    vprorvq %ymm1, %ymm0, %ymm07534; CHECK-NEXT:    ret{{[l|q]}}7535entry:7536  %0 = tail call <4 x i64> @llvm.fshr.v4i64(<4 x i64> %__A, <4 x i64> %__A, <4 x i64> %__B)7537  ret <4 x i64> %07538}7539 7540define <4 x i64> @test_mm256_mask_rorv_epi64(<4 x i64> %__W, i8 zeroext %__U, <4 x i64> %__A, <4 x i64> %__B) {7541; X86-LABEL: test_mm256_mask_rorv_epi64:7542; X86:       # %bb.0: # %entry7543; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax7544; X86-NEXT:    kmovw %eax, %k17545; X86-NEXT:    vprorvq %ymm2, %ymm1, %ymm0 {%k1}7546; X86-NEXT:    retl7547;7548; X64-LABEL: test_mm256_mask_rorv_epi64:7549; X64:       # %bb.0: # %entry7550; X64-NEXT:    kmovw %edi, %k17551; X64-NEXT:    vprorvq %ymm2, %ymm1, %ymm0 {%k1}7552; X64-NEXT:    retq7553entry:7554  %0 = tail call <4 x i64> @llvm.fshr.v4i64(<4 x i64> %__A, <4 x i64> %__A, <4 x i64> %__B)7555  %1 = bitcast i8 %__U to <8 x i1>7556  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>7557  %2 = select <4 x i1> %extract.i, <4 x i64> %0, <4 x i64> %__W7558  ret <4 x i64> %27559}7560 7561define <4 x i64> @test_mm256_maskz_rorv_epi64(i8 zeroext %__U, <4 x i64> %__A, <4 x i64> %__B) {7562; X86-LABEL: test_mm256_maskz_rorv_epi64:7563; X86:       # %bb.0: # %entry7564; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax7565; X86-NEXT:    kmovw %eax, %k17566; X86-NEXT:    vprorvq %ymm1, %ymm0, %ymm0 {%k1} {z}7567; X86-NEXT:    retl7568;7569; X64-LABEL: test_mm256_maskz_rorv_epi64:7570; X64:       # %bb.0: # %entry7571; X64-NEXT:    kmovw %edi, %k17572; X64-NEXT:    vprorvq %ymm1, %ymm0, %ymm0 {%k1} {z}7573; X64-NEXT:    retq7574entry:7575  %0 = tail call <4 x i64> @llvm.fshr.v4i64(<4 x i64> %__A, <4 x i64> %__A, <4 x i64> %__B)7576  %1 = bitcast i8 %__U to <8 x i1>7577  %extract.i = shufflevector <8 x i1> %1, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>7578  %2 = select <4 x i1> %extract.i, <4 x i64> %0, <4 x i64> zeroinitializer7579  ret <4 x i64> %27580}7581 7582declare <4 x float> @llvm.x86.sse2.cvtdq2ps(<4 x i32>)7583declare <8 x float> @llvm.x86.avx.cvtdq2.ps.256(<8 x i32>)7584declare <4 x i32> @llvm.x86.avx512.mask.cvtpd2dq.128(<2 x double>, <4 x i32>, i8)7585declare <4 x i32> @llvm.x86.avx.cvt.pd2dq.256(<4 x double>)7586declare <4 x float> @llvm.x86.avx512.mask.cvtpd2ps(<2 x double>, <4 x float>, i8)7587declare <4 x float> @llvm.x86.avx.cvt.pd2.ps.256(<4 x double>)7588declare <4 x i32> @llvm.x86.avx512.mask.cvtpd2udq.128(<2 x double>, <4 x i32>, i8)7589declare <4 x i32> @llvm.x86.avx512.mask.cvtpd2udq.256(<4 x double>, <4 x i32>, i8)7590declare <4 x i32> @llvm.x86.sse2.cvtps2dq(<4 x float>)7591declare <8 x i32> @llvm.x86.avx.cvt.ps2dq.256(<8 x float>)7592declare <4 x i32> @llvm.x86.avx512.mask.cvtps2udq.128(<4 x float>, <4 x i32>, i8)7593declare <8 x i32> @llvm.x86.avx512.mask.cvtps2udq.256(<8 x float>, <8 x i32>, i8)7594declare <4 x i32> @llvm.x86.avx512.mask.cvttpd2dq.128(<2 x double>, <4 x i32>, i8)7595declare <4 x i32> @llvm.x86.avx.cvtt.pd2dq.256(<4 x double>)7596declare <4 x i32> @llvm.x86.avx512.mask.cvttpd2udq.128(<2 x double>, <4 x i32>, i8)7597declare <4 x i32> @llvm.x86.avx512.mask.cvttpd2udq.256(<4 x double>, <4 x i32>, i8)7598declare <4 x i32> @llvm.x86.sse2.cvttps2dq(<4 x float>)7599declare <8 x i32> @llvm.x86.avx.cvtt.ps2dq.256(<8 x float>)7600declare <4 x i32> @llvm.x86.avx512.mask.cvttps2udq.128(<4 x float>, <4 x i32>, i8)7601declare <8 x i32> @llvm.x86.avx512.mask.cvttps2udq.256(<8 x float>, <8 x i32>, i8)7602declare <8 x i16> @llvm.x86.avx512.mask.pmov.dw.256(<8 x i32>, <8 x i16>, i8)7603declare <4 x i32> @llvm.x86.avx512.vpermi2var.d.128(<4 x i32>, <4 x i32>, <4 x i32>)7604declare <8 x i32> @llvm.x86.avx512.vpermi2var.d.256(<8 x i32>, <8 x i32>, <8 x i32>)7605declare <2 x double> @llvm.x86.avx512.vpermi2var.pd.128(<2 x double>, <2 x i64>, <2 x double>)7606declare <4 x double> @llvm.x86.avx512.vpermi2var.pd.256(<4 x double>, <4 x i64>, <4 x double>)7607declare <4 x float> @llvm.x86.avx512.vpermi2var.ps.128(<4 x float>, <4 x i32>, <4 x float>)7608declare <8 x float> @llvm.x86.avx512.vpermi2var.ps.256(<8 x float>, <8 x i32>, <8 x float>)7609declare <2 x i64> @llvm.x86.avx512.vpermi2var.q.128(<2 x i64>, <2 x i64>, <2 x i64>)7610declare <4 x i64> @llvm.x86.avx512.vpermi2var.q.256(<4 x i64>, <4 x i64>, <4 x i64>)7611declare <2 x double> @llvm.masked.expandload.v2f64(ptr, <2 x i1>, <2 x double>)7612declare <4 x double> @llvm.masked.expandload.v4f64(ptr, <4 x i1>, <4 x double>)7613declare <2 x i64> @llvm.masked.expandload.v2i64(ptr, <2 x i1>, <2 x i64>)7614declare <4 x i64> @llvm.masked.expandload.v4i64(ptr, <4 x i1>, <4 x i64>)7615declare <4 x float> @llvm.masked.expandload.v4f32(ptr, <4 x i1>, <4 x float>)7616declare <8 x float> @llvm.masked.expandload.v8f32(ptr, <8 x i1>, <8 x float>)7617declare <4 x i32> @llvm.masked.expandload.v4i32(ptr, <4 x i1>, <4 x i32>)7618declare <8 x i32> @llvm.masked.expandload.v8i32(ptr, <8 x i1>, <8 x i32>)7619declare void @llvm.masked.compressstore.v2f64(<2 x double>, ptr, <2 x i1>)7620declare void @llvm.masked.compressstore.v4f64(<4 x double>, ptr, <4 x i1>)7621declare void @llvm.masked.compressstore.v2i64(<2 x i64>, ptr, <2 x i1>)7622declare void @llvm.masked.compressstore.v4i64(<4 x i64>, ptr, <4 x i1>)7623declare void @llvm.masked.compressstore.v4f32(<4 x float>, ptr, <4 x i1>)7624declare void @llvm.masked.compressstore.v8f32(<8 x float>, ptr, <8 x i1>)7625declare void @llvm.masked.compressstore.v4i32(<4 x i32>, ptr, <4 x i1>)7626declare void @llvm.masked.compressstore.v8i32(<8 x i32>, ptr, <8 x i1>)7627declare <4 x i32> @llvm.fshl.v4i32(<4 x i32>, <4 x i32>, <4 x i32>)7628declare <8 x i32> @llvm.fshl.v8i32(<8 x i32>, <8 x i32>, <8 x i32>)7629declare <2 x i64> @llvm.fshl.v2i64(<2 x i64>, <2 x i64>, <2 x i64>)7630declare <4 x i64> @llvm.fshl.v4i64(<4 x i64>, <4 x i64>, <4 x i64>)7631declare <4 x i32> @llvm.fshr.v4i32(<4 x i32>, <4 x i32>, <4 x i32>)7632declare <8 x i32> @llvm.fshr.v8i32(<8 x i32>, <8 x i32>, <8 x i32>)7633declare <2 x i64> @llvm.fshr.v2i64(<2 x i64>, <2 x i64>, <2 x i64>)7634declare <4 x i64> @llvm.fshr.v4i64(<4 x i64>, <4 x i64>, <4 x i64>)7635 7636!0 = !{i32 1}7637