brintos

brintos / llvm-project-archived public Read only

0
0
Text · 200.4 KiB · a84c32a Raw
3543 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=i686-apple-darwin -mattr=+avx512f --show-mc-encoding | FileCheck %s --check-prefixes=CHECK,X863; RUN: llc < %s -mtriple=x86_64-apple-darwin -mattr=+avx512f --show-mc-encoding | FileCheck %s --check-prefixes=CHECK,X644 5; NOTE: This should use IR equivalent to what is generated by clang/test/CodeGen/avx512f-builtins.c6 7define <8 x double> @test_mm512_fmadd_round_pd(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C) {8; CHECK-LABEL: test_mm512_fmadd_round_pd:9; CHECK:       ## %bb.0: ## %entry10; CHECK-NEXT:    vfmadd213pd {rn-sae}, %zmm2, %zmm1, %zmm0 ## encoding: [0x62,0xf2,0xf5,0x18,0xa8,0xc2]11; CHECK-NEXT:    ret{{[l|q]}} ## encoding: [0xc3]12entry:13  %0 = tail call <8 x double> @llvm.x86.avx512.vfmadd.pd.512(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C, i32 8)14  ret <8 x double> %015}16 17declare <8 x double> @llvm.x86.avx512.vfmadd.pd.512(<8 x double>, <8 x double>, <8 x double>, i32) #118 19define <8 x double> @test_mm512_mask_fmadd_round_pd(<8 x double> %__A, i8 zeroext %__U, <8 x double> %__B, <8 x double> %__C) {20; X86-LABEL: test_mm512_mask_fmadd_round_pd:21; X86:       ## %bb.0: ## %entry22; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]23; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]24; X86-NEXT:    vfmadd132pd {rn-sae}, %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0xed,0x19,0x98,0xc1]25; X86-NEXT:    retl ## encoding: [0xc3]26;27; X64-LABEL: test_mm512_mask_fmadd_round_pd:28; X64:       ## %bb.0: ## %entry29; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]30; X64-NEXT:    vfmadd132pd {rn-sae}, %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0xed,0x19,0x98,0xc1]31; X64-NEXT:    retq ## encoding: [0xc3]32entry:33  %0 = tail call <8 x double> @llvm.x86.avx512.vfmadd.pd.512(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C, i32 8)34  %1 = bitcast i8 %__U to <8 x i1>35  %2 = select <8 x i1> %1, <8 x double> %0, <8 x double> %__A36  ret <8 x double> %237}38 39define <8 x double> @test_mm512_mask3_fmadd_round_pd(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C, i8 zeroext %__U) {40; X86-LABEL: test_mm512_mask3_fmadd_round_pd:41; X86:       ## %bb.0: ## %entry42; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]43; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]44; X86-NEXT:    vfmadd231pd {rn-sae}, %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x19,0xb8,0xd1]45; X86-NEXT:    vmovapd %zmm2, %zmm0 ## encoding: [0x62,0xf1,0xfd,0x48,0x28,0xc2]46; X86-NEXT:    retl ## encoding: [0xc3]47;48; X64-LABEL: test_mm512_mask3_fmadd_round_pd:49; X64:       ## %bb.0: ## %entry50; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]51; X64-NEXT:    vfmadd231pd {rn-sae}, %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x19,0xb8,0xd1]52; X64-NEXT:    vmovapd %zmm2, %zmm0 ## encoding: [0x62,0xf1,0xfd,0x48,0x28,0xc2]53; X64-NEXT:    retq ## encoding: [0xc3]54entry:55  %0 = tail call <8 x double> @llvm.x86.avx512.vfmadd.pd.512(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C, i32 8)56  %1 = bitcast i8 %__U to <8 x i1>57  %2 = select <8 x i1> %1, <8 x double> %0, <8 x double> %__C58  ret <8 x double> %259}60 61define <8 x double> @test_mm512_maskz_fmadd_round_pd(i8 zeroext %__U, <8 x double> %__A, <8 x double> %__B, <8 x double> %__C) {62; X86-LABEL: test_mm512_maskz_fmadd_round_pd:63; X86:       ## %bb.0: ## %entry64; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]65; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]66; X86-NEXT:    vfmadd213pd {rn-sae}, %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0x99,0xa8,0xc2]67; X86-NEXT:    retl ## encoding: [0xc3]68;69; X64-LABEL: test_mm512_maskz_fmadd_round_pd:70; X64:       ## %bb.0: ## %entry71; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]72; X64-NEXT:    vfmadd213pd {rn-sae}, %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0x99,0xa8,0xc2]73; X64-NEXT:    retq ## encoding: [0xc3]74entry:75  %0 = tail call <8 x double> @llvm.x86.avx512.vfmadd.pd.512(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C, i32 8)76  %1 = bitcast i8 %__U to <8 x i1>77  %2 = select <8 x i1> %1, <8 x double> %0, <8 x double> zeroinitializer78  ret <8 x double> %279}80 81define <8 x double> @test_mm512_fmsub_round_pd(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C) {82; CHECK-LABEL: test_mm512_fmsub_round_pd:83; CHECK:       ## %bb.0: ## %entry84; CHECK-NEXT:    vfmsub213pd {rn-sae}, %zmm2, %zmm1, %zmm0 ## encoding: [0x62,0xf2,0xf5,0x18,0xaa,0xc2]85; CHECK-NEXT:    ret{{[l|q]}} ## encoding: [0xc3]86entry:87  %sub = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C88  %0 = tail call <8 x double> @llvm.x86.avx512.vfmadd.pd.512(<8 x double> %__A, <8 x double> %__B, <8 x double> %sub, i32 8)89  ret <8 x double> %090}91 92define <8 x double> @test_mm512_mask_fmsub_round_pd(<8 x double> %__A, i8 zeroext %__U, <8 x double> %__B, <8 x double> %__C) {93; X86-LABEL: test_mm512_mask_fmsub_round_pd:94; X86:       ## %bb.0: ## %entry95; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]96; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]97; X86-NEXT:    vfmsub132pd {rn-sae}, %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0xed,0x19,0x9a,0xc1]98; X86-NEXT:    retl ## encoding: [0xc3]99;100; X64-LABEL: test_mm512_mask_fmsub_round_pd:101; X64:       ## %bb.0: ## %entry102; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]103; X64-NEXT:    vfmsub132pd {rn-sae}, %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0xed,0x19,0x9a,0xc1]104; X64-NEXT:    retq ## encoding: [0xc3]105entry:106  %sub = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C107  %0 = tail call <8 x double> @llvm.x86.avx512.vfmadd.pd.512(<8 x double> %__A, <8 x double> %__B, <8 x double> %sub, i32 8)108  %1 = bitcast i8 %__U to <8 x i1>109  %2 = select <8 x i1> %1, <8 x double> %0, <8 x double> %__A110  ret <8 x double> %2111}112 113define <8 x double> @test_mm512_maskz_fmsub_round_pd(i8 zeroext %__U, <8 x double> %__A, <8 x double> %__B, <8 x double> %__C) {114; X86-LABEL: test_mm512_maskz_fmsub_round_pd:115; X86:       ## %bb.0: ## %entry116; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]117; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]118; X86-NEXT:    vfmsub213pd {rn-sae}, %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0x99,0xaa,0xc2]119; X86-NEXT:    retl ## encoding: [0xc3]120;121; X64-LABEL: test_mm512_maskz_fmsub_round_pd:122; X64:       ## %bb.0: ## %entry123; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]124; X64-NEXT:    vfmsub213pd {rn-sae}, %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0x99,0xaa,0xc2]125; X64-NEXT:    retq ## encoding: [0xc3]126entry:127  %sub = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C128  %0 = tail call <8 x double> @llvm.x86.avx512.vfmadd.pd.512(<8 x double> %__A, <8 x double> %__B, <8 x double> %sub, i32 8)129  %1 = bitcast i8 %__U to <8 x i1>130  %2 = select <8 x i1> %1, <8 x double> %0, <8 x double> zeroinitializer131  ret <8 x double> %2132}133 134define <8 x double> @test_mm512_fnmadd_round_pd(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C) {135; CHECK-LABEL: test_mm512_fnmadd_round_pd:136; CHECK:       ## %bb.0: ## %entry137; CHECK-NEXT:    vfnmadd213pd {rn-sae}, %zmm2, %zmm1, %zmm0 ## encoding: [0x62,0xf2,0xf5,0x18,0xac,0xc2]138; CHECK-NEXT:    ret{{[l|q]}} ## encoding: [0xc3]139entry:140  %sub = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__A141  %0 = tail call <8 x double> @llvm.x86.avx512.vfmadd.pd.512(<8 x double> %sub, <8 x double> %__B, <8 x double> %__C, i32 8)142  ret <8 x double> %0143}144 145define <8 x double> @test_mm512_mask3_fnmadd_round_pd(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C, i8 zeroext %__U) {146; X86-LABEL: test_mm512_mask3_fnmadd_round_pd:147; X86:       ## %bb.0: ## %entry148; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]149; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]150; X86-NEXT:    vfnmadd231pd {rn-sae}, %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x19,0xbc,0xd1]151; X86-NEXT:    vmovapd %zmm2, %zmm0 ## encoding: [0x62,0xf1,0xfd,0x48,0x28,0xc2]152; X86-NEXT:    retl ## encoding: [0xc3]153;154; X64-LABEL: test_mm512_mask3_fnmadd_round_pd:155; X64:       ## %bb.0: ## %entry156; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]157; X64-NEXT:    vfnmadd231pd {rn-sae}, %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x19,0xbc,0xd1]158; X64-NEXT:    vmovapd %zmm2, %zmm0 ## encoding: [0x62,0xf1,0xfd,0x48,0x28,0xc2]159; X64-NEXT:    retq ## encoding: [0xc3]160entry:161  %sub = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__A162  %0 = tail call <8 x double> @llvm.x86.avx512.vfmadd.pd.512(<8 x double> %sub, <8 x double> %__B, <8 x double> %__C, i32 8)163  %1 = bitcast i8 %__U to <8 x i1>164  %2 = select <8 x i1> %1, <8 x double> %0, <8 x double> %__C165  ret <8 x double> %2166}167 168define <8 x double> @test_mm512_maskz_fnmadd_round_pd(i8 zeroext %__U, <8 x double> %__A, <8 x double> %__B, <8 x double> %__C) {169; X86-LABEL: test_mm512_maskz_fnmadd_round_pd:170; X86:       ## %bb.0: ## %entry171; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]172; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]173; X86-NEXT:    vfnmadd213pd {rn-sae}, %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0x99,0xac,0xc2]174; X86-NEXT:    retl ## encoding: [0xc3]175;176; X64-LABEL: test_mm512_maskz_fnmadd_round_pd:177; X64:       ## %bb.0: ## %entry178; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]179; X64-NEXT:    vfnmadd213pd {rn-sae}, %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0x99,0xac,0xc2]180; X64-NEXT:    retq ## encoding: [0xc3]181entry:182  %sub = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__A183  %0 = tail call <8 x double> @llvm.x86.avx512.vfmadd.pd.512(<8 x double> %sub, <8 x double> %__B, <8 x double> %__C, i32 8)184  %1 = bitcast i8 %__U to <8 x i1>185  %2 = select <8 x i1> %1, <8 x double> %0, <8 x double> zeroinitializer186  ret <8 x double> %2187}188 189define <8 x double> @test_mm512_fnmsub_round_pd(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C) {190; CHECK-LABEL: test_mm512_fnmsub_round_pd:191; CHECK:       ## %bb.0: ## %entry192; CHECK-NEXT:    vfnmsub213pd {rn-sae}, %zmm2, %zmm1, %zmm0 ## encoding: [0x62,0xf2,0xf5,0x18,0xae,0xc2]193; CHECK-NEXT:    ret{{[l|q]}} ## encoding: [0xc3]194entry:195  %sub = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__A196  %sub1 = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C197  %0 = tail call <8 x double> @llvm.x86.avx512.vfmadd.pd.512(<8 x double> %sub, <8 x double> %__B, <8 x double> %sub1, i32 8)198  ret <8 x double> %0199}200 201define <8 x double> @test_mm512_maskz_fnmsub_round_pd(i8 zeroext %__U, <8 x double> %__A, <8 x double> %__B, <8 x double> %__C) {202; X86-LABEL: test_mm512_maskz_fnmsub_round_pd:203; X86:       ## %bb.0: ## %entry204; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]205; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]206; X86-NEXT:    vfnmsub213pd {rn-sae}, %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0x99,0xae,0xc2]207; X86-NEXT:    retl ## encoding: [0xc3]208;209; X64-LABEL: test_mm512_maskz_fnmsub_round_pd:210; X64:       ## %bb.0: ## %entry211; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]212; X64-NEXT:    vfnmsub213pd {rn-sae}, %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0x99,0xae,0xc2]213; X64-NEXT:    retq ## encoding: [0xc3]214entry:215  %sub = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__A216  %sub1 = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C217  %0 = tail call <8 x double> @llvm.x86.avx512.vfmadd.pd.512(<8 x double> %sub, <8 x double> %__B, <8 x double> %sub1, i32 8)218  %1 = bitcast i8 %__U to <8 x i1>219  %2 = select <8 x i1> %1, <8 x double> %0, <8 x double> zeroinitializer220  ret <8 x double> %2221}222 223define <8 x double> @test_mm512_fmadd_pd(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C) {224; CHECK-LABEL: test_mm512_fmadd_pd:225; CHECK:       ## %bb.0: ## %entry226; CHECK-NEXT:    vfmadd213pd %zmm2, %zmm1, %zmm0 ## encoding: [0x62,0xf2,0xf5,0x48,0xa8,0xc2]227; CHECK-NEXT:    ## zmm0 = (zmm1 * zmm0) + zmm2228; CHECK-NEXT:    ret{{[l|q]}} ## encoding: [0xc3]229entry:230  %0 = tail call <8 x double> @llvm.fma.v8f64(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C) #10231  ret <8 x double> %0232}233 234define <8 x double> @test_mm512_mask_fmadd_pd(<8 x double> %__A, i8 zeroext %__U, <8 x double> %__B, <8 x double> %__C) {235; X86-LABEL: test_mm512_mask_fmadd_pd:236; X86:       ## %bb.0: ## %entry237; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]238; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]239; X86-NEXT:    vfmadd132pd %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0xed,0x49,0x98,0xc1]240; X86-NEXT:    ## zmm0 {%k1} = (zmm0 * zmm1) + zmm2241; X86-NEXT:    retl ## encoding: [0xc3]242;243; X64-LABEL: test_mm512_mask_fmadd_pd:244; X64:       ## %bb.0: ## %entry245; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]246; X64-NEXT:    vfmadd132pd %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0xed,0x49,0x98,0xc1]247; X64-NEXT:    ## zmm0 {%k1} = (zmm0 * zmm1) + zmm2248; X64-NEXT:    retq ## encoding: [0xc3]249entry:250  %0 = tail call <8 x double> @llvm.fma.v8f64(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C) #10251  %1 = bitcast i8 %__U to <8 x i1>252  %2 = select <8 x i1> %1, <8 x double> %0, <8 x double> %__A253  ret <8 x double> %2254}255 256define <8 x double> @test_mm512_mask3_fmadd_pd(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C, i8 zeroext %__U) {257; X86-LABEL: test_mm512_mask3_fmadd_pd:258; X86:       ## %bb.0: ## %entry259; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]260; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]261; X86-NEXT:    vfmadd231pd %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x49,0xb8,0xd1]262; X86-NEXT:    ## zmm2 {%k1} = (zmm0 * zmm1) + zmm2263; X86-NEXT:    vmovapd %zmm2, %zmm0 ## encoding: [0x62,0xf1,0xfd,0x48,0x28,0xc2]264; X86-NEXT:    retl ## encoding: [0xc3]265;266; X64-LABEL: test_mm512_mask3_fmadd_pd:267; X64:       ## %bb.0: ## %entry268; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]269; X64-NEXT:    vfmadd231pd %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x49,0xb8,0xd1]270; X64-NEXT:    ## zmm2 {%k1} = (zmm0 * zmm1) + zmm2271; X64-NEXT:    vmovapd %zmm2, %zmm0 ## encoding: [0x62,0xf1,0xfd,0x48,0x28,0xc2]272; X64-NEXT:    retq ## encoding: [0xc3]273entry:274  %0 = tail call <8 x double> @llvm.fma.v8f64(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C) #10275  %1 = bitcast i8 %__U to <8 x i1>276  %2 = select <8 x i1> %1, <8 x double> %0, <8 x double> %__C277  ret <8 x double> %2278}279 280define <8 x double> @test_mm512_maskz_fmadd_pd(i8 zeroext %__U, <8 x double> %__A, <8 x double> %__B, <8 x double> %__C) {281; X86-LABEL: test_mm512_maskz_fmadd_pd:282; X86:       ## %bb.0: ## %entry283; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]284; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]285; X86-NEXT:    vfmadd213pd %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0xc9,0xa8,0xc2]286; X86-NEXT:    ## zmm0 {%k1} {z} = (zmm1 * zmm0) + zmm2287; X86-NEXT:    retl ## encoding: [0xc3]288;289; X64-LABEL: test_mm512_maskz_fmadd_pd:290; X64:       ## %bb.0: ## %entry291; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]292; X64-NEXT:    vfmadd213pd %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0xc9,0xa8,0xc2]293; X64-NEXT:    ## zmm0 {%k1} {z} = (zmm1 * zmm0) + zmm2294; X64-NEXT:    retq ## encoding: [0xc3]295entry:296  %0 = tail call <8 x double> @llvm.fma.v8f64(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C) #10297  %1 = bitcast i8 %__U to <8 x i1>298  %2 = select <8 x i1> %1, <8 x double> %0, <8 x double> zeroinitializer299  ret <8 x double> %2300}301 302define <8 x double> @test_mm512_fmsub_pd(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C) {303; CHECK-LABEL: test_mm512_fmsub_pd:304; CHECK:       ## %bb.0: ## %entry305; CHECK-NEXT:    vfmsub213pd %zmm2, %zmm1, %zmm0 ## encoding: [0x62,0xf2,0xf5,0x48,0xaa,0xc2]306; CHECK-NEXT:    ## zmm0 = (zmm1 * zmm0) - zmm2307; CHECK-NEXT:    ret{{[l|q]}} ## encoding: [0xc3]308entry:309  %sub.i = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C310  %0 = tail call <8 x double> @llvm.fma.v8f64(<8 x double> %__A, <8 x double> %__B, <8 x double> %sub.i) #10311  ret <8 x double> %0312}313 314define <8 x double> @test_mm512_mask_fmsub_pd(<8 x double> %__A, i8 zeroext %__U, <8 x double> %__B, <8 x double> %__C) {315; X86-LABEL: test_mm512_mask_fmsub_pd:316; X86:       ## %bb.0: ## %entry317; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]318; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]319; X86-NEXT:    vfmsub132pd %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0xed,0x49,0x9a,0xc1]320; X86-NEXT:    ## zmm0 {%k1} = (zmm0 * zmm1) - zmm2321; X86-NEXT:    retl ## encoding: [0xc3]322;323; X64-LABEL: test_mm512_mask_fmsub_pd:324; X64:       ## %bb.0: ## %entry325; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]326; X64-NEXT:    vfmsub132pd %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0xed,0x49,0x9a,0xc1]327; X64-NEXT:    ## zmm0 {%k1} = (zmm0 * zmm1) - zmm2328; X64-NEXT:    retq ## encoding: [0xc3]329entry:330  %sub.i = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C331  %0 = tail call <8 x double> @llvm.fma.v8f64(<8 x double> %__A, <8 x double> %__B, <8 x double> %sub.i) #10332  %1 = bitcast i8 %__U to <8 x i1>333  %2 = select <8 x i1> %1, <8 x double> %0, <8 x double> %__A334  ret <8 x double> %2335}336 337define <8 x double> @test_mm512_maskz_fmsub_pd(i8 zeroext %__U, <8 x double> %__A, <8 x double> %__B, <8 x double> %__C) {338; X86-LABEL: test_mm512_maskz_fmsub_pd:339; X86:       ## %bb.0: ## %entry340; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]341; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]342; X86-NEXT:    vfmsub213pd %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0xc9,0xaa,0xc2]343; X86-NEXT:    ## zmm0 {%k1} {z} = (zmm1 * zmm0) - zmm2344; X86-NEXT:    retl ## encoding: [0xc3]345;346; X64-LABEL: test_mm512_maskz_fmsub_pd:347; X64:       ## %bb.0: ## %entry348; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]349; X64-NEXT:    vfmsub213pd %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0xc9,0xaa,0xc2]350; X64-NEXT:    ## zmm0 {%k1} {z} = (zmm1 * zmm0) - zmm2351; X64-NEXT:    retq ## encoding: [0xc3]352entry:353  %sub.i = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C354  %0 = tail call <8 x double> @llvm.fma.v8f64(<8 x double> %__A, <8 x double> %__B, <8 x double> %sub.i) #10355  %1 = bitcast i8 %__U to <8 x i1>356  %2 = select <8 x i1> %1, <8 x double> %0, <8 x double> zeroinitializer357  ret <8 x double> %2358}359 360define <8 x double> @test_mm512_fnmadd_pd(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C) {361; CHECK-LABEL: test_mm512_fnmadd_pd:362; CHECK:       ## %bb.0: ## %entry363; CHECK-NEXT:    vfnmadd213pd %zmm2, %zmm1, %zmm0 ## encoding: [0x62,0xf2,0xf5,0x48,0xac,0xc2]364; CHECK-NEXT:    ## zmm0 = -(zmm1 * zmm0) + zmm2365; CHECK-NEXT:    ret{{[l|q]}} ## encoding: [0xc3]366entry:367  %sub.i = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__A368  %0 = tail call <8 x double> @llvm.fma.v8f64(<8 x double> %sub.i, <8 x double> %__B, <8 x double> %__C) #10369  ret <8 x double> %0370}371 372define <8 x double> @test_mm512_mask3_fnmadd_pd(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C, i8 zeroext %__U) {373; X86-LABEL: test_mm512_mask3_fnmadd_pd:374; X86:       ## %bb.0: ## %entry375; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]376; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]377; X86-NEXT:    vfnmadd231pd %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x49,0xbc,0xd1]378; X86-NEXT:    ## zmm2 {%k1} = -(zmm0 * zmm1) + zmm2379; X86-NEXT:    vmovapd %zmm2, %zmm0 ## encoding: [0x62,0xf1,0xfd,0x48,0x28,0xc2]380; X86-NEXT:    retl ## encoding: [0xc3]381;382; X64-LABEL: test_mm512_mask3_fnmadd_pd:383; X64:       ## %bb.0: ## %entry384; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]385; X64-NEXT:    vfnmadd231pd %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x49,0xbc,0xd1]386; X64-NEXT:    ## zmm2 {%k1} = -(zmm0 * zmm1) + zmm2387; X64-NEXT:    vmovapd %zmm2, %zmm0 ## encoding: [0x62,0xf1,0xfd,0x48,0x28,0xc2]388; X64-NEXT:    retq ## encoding: [0xc3]389entry:390  %sub.i = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__A391  %0 = tail call <8 x double> @llvm.fma.v8f64(<8 x double> %sub.i, <8 x double> %__B, <8 x double> %__C) #10392  %1 = bitcast i8 %__U to <8 x i1>393  %2 = select <8 x i1> %1, <8 x double> %0, <8 x double> %__C394  ret <8 x double> %2395}396 397define <8 x double> @test_mm512_maskz_fnmadd_pd(i8 zeroext %__U, <8 x double> %__A, <8 x double> %__B, <8 x double> %__C) {398; X86-LABEL: test_mm512_maskz_fnmadd_pd:399; X86:       ## %bb.0: ## %entry400; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]401; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]402; X86-NEXT:    vfnmadd213pd %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0xc9,0xac,0xc2]403; X86-NEXT:    ## zmm0 {%k1} {z} = -(zmm1 * zmm0) + zmm2404; X86-NEXT:    retl ## encoding: [0xc3]405;406; X64-LABEL: test_mm512_maskz_fnmadd_pd:407; X64:       ## %bb.0: ## %entry408; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]409; X64-NEXT:    vfnmadd213pd %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0xc9,0xac,0xc2]410; X64-NEXT:    ## zmm0 {%k1} {z} = -(zmm1 * zmm0) + zmm2411; X64-NEXT:    retq ## encoding: [0xc3]412entry:413  %sub.i = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__A414  %0 = tail call <8 x double> @llvm.fma.v8f64(<8 x double> %sub.i, <8 x double> %__B, <8 x double> %__C) #10415  %1 = bitcast i8 %__U to <8 x i1>416  %2 = select <8 x i1> %1, <8 x double> %0, <8 x double> zeroinitializer417  ret <8 x double> %2418}419 420define <8 x double> @test_mm512_fnmsub_pd(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C) {421; CHECK-LABEL: test_mm512_fnmsub_pd:422; CHECK:       ## %bb.0: ## %entry423; CHECK-NEXT:    vfnmsub213pd %zmm2, %zmm1, %zmm0 ## encoding: [0x62,0xf2,0xf5,0x48,0xae,0xc2]424; CHECK-NEXT:    ## zmm0 = -(zmm1 * zmm0) - zmm2425; CHECK-NEXT:    ret{{[l|q]}} ## encoding: [0xc3]426entry:427  %sub.i = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__A428  %sub1.i = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C429  %0 = tail call <8 x double> @llvm.fma.v8f64(<8 x double> %sub.i, <8 x double> %__B, <8 x double> %sub1.i) #10430  ret <8 x double> %0431}432 433define <8 x double> @test_mm512_maskz_fnmsub_pd(i8 zeroext %__U, <8 x double> %__A, <8 x double> %__B, <8 x double> %__C) {434; X86-LABEL: test_mm512_maskz_fnmsub_pd:435; X86:       ## %bb.0: ## %entry436; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]437; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]438; X86-NEXT:    vfnmsub213pd %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0xc9,0xae,0xc2]439; X86-NEXT:    ## zmm0 {%k1} {z} = -(zmm1 * zmm0) - zmm2440; X86-NEXT:    retl ## encoding: [0xc3]441;442; X64-LABEL: test_mm512_maskz_fnmsub_pd:443; X64:       ## %bb.0: ## %entry444; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]445; X64-NEXT:    vfnmsub213pd %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0xc9,0xae,0xc2]446; X64-NEXT:    ## zmm0 {%k1} {z} = -(zmm1 * zmm0) - zmm2447; X64-NEXT:    retq ## encoding: [0xc3]448entry:449  %sub.i = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__A450  %sub1.i = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C451  %0 = tail call <8 x double> @llvm.fma.v8f64(<8 x double> %sub.i, <8 x double> %__B, <8 x double> %sub1.i) #10452  %1 = bitcast i8 %__U to <8 x i1>453  %2 = select <8 x i1> %1, <8 x double> %0, <8 x double> zeroinitializer454  ret <8 x double> %2455}456 457define <16 x float> @test_mm512_fmadd_round_ps(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C) {458; CHECK-LABEL: test_mm512_fmadd_round_ps:459; CHECK:       ## %bb.0: ## %entry460; CHECK-NEXT:    vfmadd213ps {rn-sae}, %zmm2, %zmm1, %zmm0 ## encoding: [0x62,0xf2,0x75,0x18,0xa8,0xc2]461; CHECK-NEXT:    ret{{[l|q]}} ## encoding: [0xc3]462entry:463  %0 = tail call <16 x float> @llvm.x86.avx512.vfmadd.ps.512(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C, i32 8)464  ret <16 x float> %0465}466 467declare <16 x float> @llvm.x86.avx512.vfmadd.ps.512(<16 x float>, <16 x float>, <16 x float>, i32) #1468 469define <16 x float> @test_mm512_mask_fmadd_round_ps(<16 x float> %__A, i16 zeroext %__U, <16 x float> %__B, <16 x float> %__C) {470; X86-LABEL: test_mm512_mask_fmadd_round_ps:471; X86:       ## %bb.0: ## %entry472; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 ## encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]473; X86-NEXT:    vfmadd132ps {rn-sae}, %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0x6d,0x19,0x98,0xc1]474; X86-NEXT:    retl ## encoding: [0xc3]475;476; X64-LABEL: test_mm512_mask_fmadd_round_ps:477; X64:       ## %bb.0: ## %entry478; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]479; X64-NEXT:    vfmadd132ps {rn-sae}, %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0x6d,0x19,0x98,0xc1]480; X64-NEXT:    retq ## encoding: [0xc3]481entry:482  %0 = tail call <16 x float> @llvm.x86.avx512.vfmadd.ps.512(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C, i32 8)483  %1 = bitcast i16 %__U to <16 x i1>484  %2 = select <16 x i1> %1, <16 x float> %0, <16 x float> %__A485  ret <16 x float> %2486}487 488define <16 x float> @test_mm512_mask3_fmadd_round_ps(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C, i16 zeroext %__U) {489; X86-LABEL: test_mm512_mask3_fmadd_round_ps:490; X86:       ## %bb.0: ## %entry491; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 ## encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]492; X86-NEXT:    vfmadd231ps {rn-sae}, %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x19,0xb8,0xd1]493; X86-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]494; X86-NEXT:    retl ## encoding: [0xc3]495;496; X64-LABEL: test_mm512_mask3_fmadd_round_ps:497; X64:       ## %bb.0: ## %entry498; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]499; X64-NEXT:    vfmadd231ps {rn-sae}, %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x19,0xb8,0xd1]500; X64-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]501; X64-NEXT:    retq ## encoding: [0xc3]502entry:503  %0 = tail call <16 x float> @llvm.x86.avx512.vfmadd.ps.512(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C, i32 8)504  %1 = bitcast i16 %__U to <16 x i1>505  %2 = select <16 x i1> %1, <16 x float> %0, <16 x float> %__C506  ret <16 x float> %2507}508 509define <16 x float> @test_mm512_maskz_fmadd_round_ps(i16 zeroext %__U, <16 x float> %__A, <16 x float> %__B, <16 x float> %__C) {510; X86-LABEL: test_mm512_maskz_fmadd_round_ps:511; X86:       ## %bb.0: ## %entry512; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 ## encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]513; X86-NEXT:    vfmadd213ps {rn-sae}, %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0x99,0xa8,0xc2]514; X86-NEXT:    retl ## encoding: [0xc3]515;516; X64-LABEL: test_mm512_maskz_fmadd_round_ps:517; X64:       ## %bb.0: ## %entry518; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]519; X64-NEXT:    vfmadd213ps {rn-sae}, %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0x99,0xa8,0xc2]520; X64-NEXT:    retq ## encoding: [0xc3]521entry:522  %0 = tail call <16 x float> @llvm.x86.avx512.vfmadd.ps.512(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C, i32 8)523  %1 = bitcast i16 %__U to <16 x i1>524  %2 = select <16 x i1> %1, <16 x float> %0, <16 x float> zeroinitializer525  ret <16 x float> %2526}527 528define <16 x float> @test_mm512_fmsub_round_ps(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C) {529; CHECK-LABEL: test_mm512_fmsub_round_ps:530; CHECK:       ## %bb.0: ## %entry531; CHECK-NEXT:    vfmsub213ps {rn-sae}, %zmm2, %zmm1, %zmm0 ## encoding: [0x62,0xf2,0x75,0x18,0xaa,0xc2]532; CHECK-NEXT:    ret{{[l|q]}} ## encoding: [0xc3]533entry:534  %sub = fsub <16 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, 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>, %__C535  %0 = tail call <16 x float> @llvm.x86.avx512.vfmadd.ps.512(<16 x float> %__A, <16 x float> %__B, <16 x float> %sub, i32 8)536  ret <16 x float> %0537}538 539define <16 x float> @test_mm512_mask_fmsub_round_ps(<16 x float> %__A, i16 zeroext %__U, <16 x float> %__B, <16 x float> %__C) {540; X86-LABEL: test_mm512_mask_fmsub_round_ps:541; X86:       ## %bb.0: ## %entry542; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 ## encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]543; X86-NEXT:    vfmsub132ps {rn-sae}, %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0x6d,0x19,0x9a,0xc1]544; X86-NEXT:    retl ## encoding: [0xc3]545;546; X64-LABEL: test_mm512_mask_fmsub_round_ps:547; X64:       ## %bb.0: ## %entry548; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]549; X64-NEXT:    vfmsub132ps {rn-sae}, %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0x6d,0x19,0x9a,0xc1]550; X64-NEXT:    retq ## encoding: [0xc3]551entry:552  %sub = fsub <16 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, 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>, %__C553  %0 = tail call <16 x float> @llvm.x86.avx512.vfmadd.ps.512(<16 x float> %__A, <16 x float> %__B, <16 x float> %sub, i32 8)554  %1 = bitcast i16 %__U to <16 x i1>555  %2 = select <16 x i1> %1, <16 x float> %0, <16 x float> %__A556  ret <16 x float> %2557}558 559define <16 x float> @test_mm512_maskz_fmsub_round_ps(i16 zeroext %__U, <16 x float> %__A, <16 x float> %__B, <16 x float> %__C) {560; X86-LABEL: test_mm512_maskz_fmsub_round_ps:561; X86:       ## %bb.0: ## %entry562; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 ## encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]563; X86-NEXT:    vfmsub213ps {rn-sae}, %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0x99,0xaa,0xc2]564; X86-NEXT:    retl ## encoding: [0xc3]565;566; X64-LABEL: test_mm512_maskz_fmsub_round_ps:567; X64:       ## %bb.0: ## %entry568; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]569; X64-NEXT:    vfmsub213ps {rn-sae}, %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0x99,0xaa,0xc2]570; X64-NEXT:    retq ## encoding: [0xc3]571entry:572  %sub = fsub <16 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, 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>, %__C573  %0 = tail call <16 x float> @llvm.x86.avx512.vfmadd.ps.512(<16 x float> %__A, <16 x float> %__B, <16 x float> %sub, i32 8)574  %1 = bitcast i16 %__U to <16 x i1>575  %2 = select <16 x i1> %1, <16 x float> %0, <16 x float> zeroinitializer576  ret <16 x float> %2577}578 579define <16 x float> @test_mm512_fnmadd_round_ps(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C) {580; CHECK-LABEL: test_mm512_fnmadd_round_ps:581; CHECK:       ## %bb.0: ## %entry582; CHECK-NEXT:    vfnmadd213ps {rn-sae}, %zmm2, %zmm1, %zmm0 ## encoding: [0x62,0xf2,0x75,0x18,0xac,0xc2]583; CHECK-NEXT:    ret{{[l|q]}} ## encoding: [0xc3]584entry:585  %sub = fsub <16 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, 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>, %__A586  %0 = tail call <16 x float> @llvm.x86.avx512.vfmadd.ps.512(<16 x float> %sub, <16 x float> %__B, <16 x float> %__C, i32 8)587  ret <16 x float> %0588}589 590define <16 x float> @test_mm512_mask3_fnmadd_round_ps(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C, i16 zeroext %__U) {591; X86-LABEL: test_mm512_mask3_fnmadd_round_ps:592; X86:       ## %bb.0: ## %entry593; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 ## encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]594; X86-NEXT:    vfnmadd231ps {rn-sae}, %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x19,0xbc,0xd1]595; X86-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]596; X86-NEXT:    retl ## encoding: [0xc3]597;598; X64-LABEL: test_mm512_mask3_fnmadd_round_ps:599; X64:       ## %bb.0: ## %entry600; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]601; X64-NEXT:    vfnmadd231ps {rn-sae}, %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x19,0xbc,0xd1]602; X64-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]603; X64-NEXT:    retq ## encoding: [0xc3]604entry:605  %sub = fsub <16 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, 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>, %__A606  %0 = tail call <16 x float> @llvm.x86.avx512.vfmadd.ps.512(<16 x float> %sub, <16 x float> %__B, <16 x float> %__C, i32 8)607  %1 = bitcast i16 %__U to <16 x i1>608  %2 = select <16 x i1> %1, <16 x float> %0, <16 x float> %__C609  ret <16 x float> %2610}611 612define <16 x float> @test_mm512_maskz_fnmadd_round_ps(i16 zeroext %__U, <16 x float> %__A, <16 x float> %__B, <16 x float> %__C) {613; X86-LABEL: test_mm512_maskz_fnmadd_round_ps:614; X86:       ## %bb.0: ## %entry615; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 ## encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]616; X86-NEXT:    vfnmadd213ps {rn-sae}, %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0x99,0xac,0xc2]617; X86-NEXT:    retl ## encoding: [0xc3]618;619; X64-LABEL: test_mm512_maskz_fnmadd_round_ps:620; X64:       ## %bb.0: ## %entry621; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]622; X64-NEXT:    vfnmadd213ps {rn-sae}, %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0x99,0xac,0xc2]623; X64-NEXT:    retq ## encoding: [0xc3]624entry:625  %sub = fsub <16 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, 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>, %__A626  %0 = tail call <16 x float> @llvm.x86.avx512.vfmadd.ps.512(<16 x float> %sub, <16 x float> %__B, <16 x float> %__C, i32 8)627  %1 = bitcast i16 %__U to <16 x i1>628  %2 = select <16 x i1> %1, <16 x float> %0, <16 x float> zeroinitializer629  ret <16 x float> %2630}631 632define <16 x float> @test_mm512_fnmsub_round_ps(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C) {633; CHECK-LABEL: test_mm512_fnmsub_round_ps:634; CHECK:       ## %bb.0: ## %entry635; CHECK-NEXT:    vfnmsub213ps {rn-sae}, %zmm2, %zmm1, %zmm0 ## encoding: [0x62,0xf2,0x75,0x18,0xae,0xc2]636; CHECK-NEXT:    ret{{[l|q]}} ## encoding: [0xc3]637entry:638  %sub = fsub <16 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, 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>, %__A639  %sub1 = fsub <16 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, 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>, %__C640  %0 = tail call <16 x float> @llvm.x86.avx512.vfmadd.ps.512(<16 x float> %sub, <16 x float> %__B, <16 x float> %sub1, i32 8)641  ret <16 x float> %0642}643 644define <16 x float> @test_mm512_maskz_fnmsub_round_ps(i16 zeroext %__U, <16 x float> %__A, <16 x float> %__B, <16 x float> %__C) {645; X86-LABEL: test_mm512_maskz_fnmsub_round_ps:646; X86:       ## %bb.0: ## %entry647; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 ## encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]648; X86-NEXT:    vfnmsub213ps {rn-sae}, %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0x99,0xae,0xc2]649; X86-NEXT:    retl ## encoding: [0xc3]650;651; X64-LABEL: test_mm512_maskz_fnmsub_round_ps:652; X64:       ## %bb.0: ## %entry653; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]654; X64-NEXT:    vfnmsub213ps {rn-sae}, %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0x99,0xae,0xc2]655; X64-NEXT:    retq ## encoding: [0xc3]656entry:657  %sub = fsub <16 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, 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>, %__A658  %sub1 = fsub <16 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, 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>, %__C659  %0 = tail call <16 x float> @llvm.x86.avx512.vfmadd.ps.512(<16 x float> %sub, <16 x float> %__B, <16 x float> %sub1, i32 8)660  %1 = bitcast i16 %__U to <16 x i1>661  %2 = select <16 x i1> %1, <16 x float> %0, <16 x float> zeroinitializer662  ret <16 x float> %2663}664 665define <16 x float> @test_mm512_fmadd_ps(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C) {666; CHECK-LABEL: test_mm512_fmadd_ps:667; CHECK:       ## %bb.0: ## %entry668; CHECK-NEXT:    vfmadd213ps %zmm2, %zmm1, %zmm0 ## encoding: [0x62,0xf2,0x75,0x48,0xa8,0xc2]669; CHECK-NEXT:    ## zmm0 = (zmm1 * zmm0) + zmm2670; CHECK-NEXT:    ret{{[l|q]}} ## encoding: [0xc3]671entry:672  %0 = tail call <16 x float> @llvm.fma.v16f32(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C) #10673  ret <16 x float> %0674}675 676define <16 x float> @test_mm512_mask_fmadd_ps(<16 x float> %__A, i16 zeroext %__U, <16 x float> %__B, <16 x float> %__C) {677; X86-LABEL: test_mm512_mask_fmadd_ps:678; X86:       ## %bb.0: ## %entry679; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 ## encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]680; X86-NEXT:    vfmadd132ps %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0x6d,0x49,0x98,0xc1]681; X86-NEXT:    ## zmm0 {%k1} = (zmm0 * zmm1) + zmm2682; X86-NEXT:    retl ## encoding: [0xc3]683;684; X64-LABEL: test_mm512_mask_fmadd_ps:685; X64:       ## %bb.0: ## %entry686; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]687; X64-NEXT:    vfmadd132ps %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0x6d,0x49,0x98,0xc1]688; X64-NEXT:    ## zmm0 {%k1} = (zmm0 * zmm1) + zmm2689; X64-NEXT:    retq ## encoding: [0xc3]690entry:691  %0 = tail call <16 x float> @llvm.fma.v16f32(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C) #10692  %1 = bitcast i16 %__U to <16 x i1>693  %2 = select <16 x i1> %1, <16 x float> %0, <16 x float> %__A694  ret <16 x float> %2695}696 697define <16 x float> @test_mm512_mask3_fmadd_ps(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C, i16 zeroext %__U) {698; X86-LABEL: test_mm512_mask3_fmadd_ps:699; X86:       ## %bb.0: ## %entry700; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 ## encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]701; X86-NEXT:    vfmadd231ps %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x49,0xb8,0xd1]702; X86-NEXT:    ## zmm2 {%k1} = (zmm0 * zmm1) + zmm2703; X86-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]704; X86-NEXT:    retl ## encoding: [0xc3]705;706; X64-LABEL: test_mm512_mask3_fmadd_ps:707; X64:       ## %bb.0: ## %entry708; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]709; X64-NEXT:    vfmadd231ps %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x49,0xb8,0xd1]710; X64-NEXT:    ## zmm2 {%k1} = (zmm0 * zmm1) + zmm2711; X64-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]712; X64-NEXT:    retq ## encoding: [0xc3]713entry:714  %0 = tail call <16 x float> @llvm.fma.v16f32(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C) #10715  %1 = bitcast i16 %__U to <16 x i1>716  %2 = select <16 x i1> %1, <16 x float> %0, <16 x float> %__C717  ret <16 x float> %2718}719 720define <16 x float> @test_mm512_maskz_fmadd_ps(i16 zeroext %__U, <16 x float> %__A, <16 x float> %__B, <16 x float> %__C) {721; X86-LABEL: test_mm512_maskz_fmadd_ps:722; X86:       ## %bb.0: ## %entry723; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 ## encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]724; X86-NEXT:    vfmadd213ps %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0xc9,0xa8,0xc2]725; X86-NEXT:    ## zmm0 {%k1} {z} = (zmm1 * zmm0) + zmm2726; X86-NEXT:    retl ## encoding: [0xc3]727;728; X64-LABEL: test_mm512_maskz_fmadd_ps:729; X64:       ## %bb.0: ## %entry730; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]731; X64-NEXT:    vfmadd213ps %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0xc9,0xa8,0xc2]732; X64-NEXT:    ## zmm0 {%k1} {z} = (zmm1 * zmm0) + zmm2733; X64-NEXT:    retq ## encoding: [0xc3]734entry:735  %0 = tail call <16 x float> @llvm.fma.v16f32(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C) #10736  %1 = bitcast i16 %__U to <16 x i1>737  %2 = select <16 x i1> %1, <16 x float> %0, <16 x float> zeroinitializer738  ret <16 x float> %2739}740 741define <16 x float> @test_mm512_fmsub_ps(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C) {742; CHECK-LABEL: test_mm512_fmsub_ps:743; CHECK:       ## %bb.0: ## %entry744; CHECK-NEXT:    vfmsub213ps %zmm2, %zmm1, %zmm0 ## encoding: [0x62,0xf2,0x75,0x48,0xaa,0xc2]745; CHECK-NEXT:    ## zmm0 = (zmm1 * zmm0) - zmm2746; CHECK-NEXT:    ret{{[l|q]}} ## encoding: [0xc3]747entry:748  %sub.i = fsub <16 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, 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>, %__C749  %0 = tail call <16 x float> @llvm.fma.v16f32(<16 x float> %__A, <16 x float> %__B, <16 x float> %sub.i) #10750  ret <16 x float> %0751}752 753define <16 x float> @test_mm512_mask_fmsub_ps(<16 x float> %__A, i16 zeroext %__U, <16 x float> %__B, <16 x float> %__C) {754; X86-LABEL: test_mm512_mask_fmsub_ps:755; X86:       ## %bb.0: ## %entry756; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 ## encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]757; X86-NEXT:    vfmsub132ps %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0x6d,0x49,0x9a,0xc1]758; X86-NEXT:    ## zmm0 {%k1} = (zmm0 * zmm1) - zmm2759; X86-NEXT:    retl ## encoding: [0xc3]760;761; X64-LABEL: test_mm512_mask_fmsub_ps:762; X64:       ## %bb.0: ## %entry763; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]764; X64-NEXT:    vfmsub132ps %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0x6d,0x49,0x9a,0xc1]765; X64-NEXT:    ## zmm0 {%k1} = (zmm0 * zmm1) - zmm2766; X64-NEXT:    retq ## encoding: [0xc3]767entry:768  %sub.i = fsub <16 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, 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>, %__C769  %0 = tail call <16 x float> @llvm.fma.v16f32(<16 x float> %__A, <16 x float> %__B, <16 x float> %sub.i) #10770  %1 = bitcast i16 %__U to <16 x i1>771  %2 = select <16 x i1> %1, <16 x float> %0, <16 x float> %__A772  ret <16 x float> %2773}774 775define <16 x float> @test_mm512_maskz_fmsub_ps(i16 zeroext %__U, <16 x float> %__A, <16 x float> %__B, <16 x float> %__C) {776; X86-LABEL: test_mm512_maskz_fmsub_ps:777; X86:       ## %bb.0: ## %entry778; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 ## encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]779; X86-NEXT:    vfmsub213ps %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0xc9,0xaa,0xc2]780; X86-NEXT:    ## zmm0 {%k1} {z} = (zmm1 * zmm0) - zmm2781; X86-NEXT:    retl ## encoding: [0xc3]782;783; X64-LABEL: test_mm512_maskz_fmsub_ps:784; X64:       ## %bb.0: ## %entry785; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]786; X64-NEXT:    vfmsub213ps %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0xc9,0xaa,0xc2]787; X64-NEXT:    ## zmm0 {%k1} {z} = (zmm1 * zmm0) - zmm2788; X64-NEXT:    retq ## encoding: [0xc3]789entry:790  %sub.i = fsub <16 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, 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>, %__C791  %0 = tail call <16 x float> @llvm.fma.v16f32(<16 x float> %__A, <16 x float> %__B, <16 x float> %sub.i) #10792  %1 = bitcast i16 %__U to <16 x i1>793  %2 = select <16 x i1> %1, <16 x float> %0, <16 x float> zeroinitializer794  ret <16 x float> %2795}796 797define <16 x float> @test_mm512_fnmadd_ps(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C) {798; CHECK-LABEL: test_mm512_fnmadd_ps:799; CHECK:       ## %bb.0: ## %entry800; CHECK-NEXT:    vfnmadd213ps %zmm2, %zmm1, %zmm0 ## encoding: [0x62,0xf2,0x75,0x48,0xac,0xc2]801; CHECK-NEXT:    ## zmm0 = -(zmm1 * zmm0) + zmm2802; CHECK-NEXT:    ret{{[l|q]}} ## encoding: [0xc3]803entry:804  %sub.i = fsub <16 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, 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>, %__A805  %0 = tail call <16 x float> @llvm.fma.v16f32(<16 x float> %sub.i, <16 x float> %__B, <16 x float> %__C) #10806  ret <16 x float> %0807}808 809define <16 x float> @test_mm512_mask3_fnmadd_ps(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C, i16 zeroext %__U) {810; X86-LABEL: test_mm512_mask3_fnmadd_ps:811; X86:       ## %bb.0: ## %entry812; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 ## encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]813; X86-NEXT:    vfnmadd231ps %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x49,0xbc,0xd1]814; X86-NEXT:    ## zmm2 {%k1} = -(zmm0 * zmm1) + zmm2815; X86-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]816; X86-NEXT:    retl ## encoding: [0xc3]817;818; X64-LABEL: test_mm512_mask3_fnmadd_ps:819; X64:       ## %bb.0: ## %entry820; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]821; X64-NEXT:    vfnmadd231ps %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x49,0xbc,0xd1]822; X64-NEXT:    ## zmm2 {%k1} = -(zmm0 * zmm1) + zmm2823; X64-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]824; X64-NEXT:    retq ## encoding: [0xc3]825entry:826  %sub.i = fsub <16 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, 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>, %__A827  %0 = tail call <16 x float> @llvm.fma.v16f32(<16 x float> %sub.i, <16 x float> %__B, <16 x float> %__C) #10828  %1 = bitcast i16 %__U to <16 x i1>829  %2 = select <16 x i1> %1, <16 x float> %0, <16 x float> %__C830  ret <16 x float> %2831}832 833define <16 x float> @test_mm512_maskz_fnmadd_ps(i16 zeroext %__U, <16 x float> %__A, <16 x float> %__B, <16 x float> %__C) {834; X86-LABEL: test_mm512_maskz_fnmadd_ps:835; X86:       ## %bb.0: ## %entry836; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 ## encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]837; X86-NEXT:    vfnmadd213ps %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0xc9,0xac,0xc2]838; X86-NEXT:    ## zmm0 {%k1} {z} = -(zmm1 * zmm0) + zmm2839; X86-NEXT:    retl ## encoding: [0xc3]840;841; X64-LABEL: test_mm512_maskz_fnmadd_ps:842; X64:       ## %bb.0: ## %entry843; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]844; X64-NEXT:    vfnmadd213ps %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0xc9,0xac,0xc2]845; X64-NEXT:    ## zmm0 {%k1} {z} = -(zmm1 * zmm0) + zmm2846; X64-NEXT:    retq ## encoding: [0xc3]847entry:848  %sub.i = fsub <16 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, 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>, %__A849  %0 = tail call <16 x float> @llvm.fma.v16f32(<16 x float> %sub.i, <16 x float> %__B, <16 x float> %__C) #10850  %1 = bitcast i16 %__U to <16 x i1>851  %2 = select <16 x i1> %1, <16 x float> %0, <16 x float> zeroinitializer852  ret <16 x float> %2853}854 855define <16 x float> @test_mm512_fnmsub_ps(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C) {856; CHECK-LABEL: test_mm512_fnmsub_ps:857; CHECK:       ## %bb.0: ## %entry858; CHECK-NEXT:    vfnmsub213ps %zmm2, %zmm1, %zmm0 ## encoding: [0x62,0xf2,0x75,0x48,0xae,0xc2]859; CHECK-NEXT:    ## zmm0 = -(zmm1 * zmm0) - zmm2860; CHECK-NEXT:    ret{{[l|q]}} ## encoding: [0xc3]861entry:862  %sub.i = fsub <16 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, 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>, %__A863  %sub1.i = fsub <16 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, 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>, %__C864  %0 = tail call <16 x float> @llvm.fma.v16f32(<16 x float> %sub.i, <16 x float> %__B, <16 x float> %sub1.i) #10865  ret <16 x float> %0866}867 868define <16 x float> @test_mm512_maskz_fnmsub_ps(i16 zeroext %__U, <16 x float> %__A, <16 x float> %__B, <16 x float> %__C) {869; X86-LABEL: test_mm512_maskz_fnmsub_ps:870; X86:       ## %bb.0: ## %entry871; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 ## encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]872; X86-NEXT:    vfnmsub213ps %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0xc9,0xae,0xc2]873; X86-NEXT:    ## zmm0 {%k1} {z} = -(zmm1 * zmm0) - zmm2874; X86-NEXT:    retl ## encoding: [0xc3]875;876; X64-LABEL: test_mm512_maskz_fnmsub_ps:877; X64:       ## %bb.0: ## %entry878; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]879; X64-NEXT:    vfnmsub213ps %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0xc9,0xae,0xc2]880; X64-NEXT:    ## zmm0 {%k1} {z} = -(zmm1 * zmm0) - zmm2881; X64-NEXT:    retq ## encoding: [0xc3]882entry:883  %sub.i = fsub <16 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, 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>, %__A884  %sub1.i = fsub <16 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, 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>, %__C885  %0 = tail call <16 x float> @llvm.fma.v16f32(<16 x float> %sub.i, <16 x float> %__B, <16 x float> %sub1.i) #10886  %1 = bitcast i16 %__U to <16 x i1>887  %2 = select <16 x i1> %1, <16 x float> %0, <16 x float> zeroinitializer888  ret <16 x float> %2889}890 891define <8 x double> @test_mm512_fmaddsub_round_pd(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C) {892; CHECK-LABEL: test_mm512_fmaddsub_round_pd:893; CHECK:       ## %bb.0: ## %entry894; CHECK-NEXT:    vfmaddsub213pd {rn-sae}, %zmm2, %zmm1, %zmm0 ## encoding: [0x62,0xf2,0xf5,0x18,0xa6,0xc2]895; CHECK-NEXT:    ret{{[l|q]}} ## encoding: [0xc3]896entry:897  %0 = tail call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C, i32 8)898  ret <8 x double> %0899}900 901declare <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double>, <8 x double>, <8 x double>, i32) #1902 903define <8 x double> @test_mm512_mask_fmaddsub_round_pd(<8 x double> %__A, i8 zeroext %__U, <8 x double> %__B, <8 x double> %__C) {904; X86-LABEL: test_mm512_mask_fmaddsub_round_pd:905; X86:       ## %bb.0: ## %entry906; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]907; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]908; X86-NEXT:    vfmaddsub132pd {rn-sae}, %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0xed,0x19,0x96,0xc1]909; X86-NEXT:    retl ## encoding: [0xc3]910;911; X64-LABEL: test_mm512_mask_fmaddsub_round_pd:912; X64:       ## %bb.0: ## %entry913; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]914; X64-NEXT:    vfmaddsub132pd {rn-sae}, %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0xed,0x19,0x96,0xc1]915; X64-NEXT:    retq ## encoding: [0xc3]916entry:917  %0 = tail call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C, i32 8)918  %1 = bitcast i8 %__U to <8 x i1>919  %2 = select <8 x i1> %1, <8 x double> %0, <8 x double> %__A920  ret <8 x double> %2921}922 923define <8 x double> @test_mm512_mask3_fmaddsub_round_pd(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C, i8 zeroext %__U) {924; X86-LABEL: test_mm512_mask3_fmaddsub_round_pd:925; X86:       ## %bb.0: ## %entry926; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]927; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]928; X86-NEXT:    vfmaddsub231pd {rn-sae}, %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x19,0xb6,0xd1]929; X86-NEXT:    vmovapd %zmm2, %zmm0 ## encoding: [0x62,0xf1,0xfd,0x48,0x28,0xc2]930; X86-NEXT:    retl ## encoding: [0xc3]931;932; X64-LABEL: test_mm512_mask3_fmaddsub_round_pd:933; X64:       ## %bb.0: ## %entry934; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]935; X64-NEXT:    vfmaddsub231pd {rn-sae}, %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x19,0xb6,0xd1]936; X64-NEXT:    vmovapd %zmm2, %zmm0 ## encoding: [0x62,0xf1,0xfd,0x48,0x28,0xc2]937; X64-NEXT:    retq ## encoding: [0xc3]938entry:939  %0 = tail call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C, i32 8)940  %1 = bitcast i8 %__U to <8 x i1>941  %2 = select <8 x i1> %1, <8 x double> %0, <8 x double> %__C942  ret <8 x double> %2943}944 945define <8 x double> @test_mm512_maskz_fmaddsub_round_pd(i8 zeroext %__U, <8 x double> %__A, <8 x double> %__B, <8 x double> %__C) {946; X86-LABEL: test_mm512_maskz_fmaddsub_round_pd:947; X86:       ## %bb.0: ## %entry948; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]949; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]950; X86-NEXT:    vfmaddsub213pd {rn-sae}, %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0x99,0xa6,0xc2]951; X86-NEXT:    retl ## encoding: [0xc3]952;953; X64-LABEL: test_mm512_maskz_fmaddsub_round_pd:954; X64:       ## %bb.0: ## %entry955; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]956; X64-NEXT:    vfmaddsub213pd {rn-sae}, %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0x99,0xa6,0xc2]957; X64-NEXT:    retq ## encoding: [0xc3]958entry:959  %0 = tail call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C, i32 8)960  %1 = bitcast i8 %__U to <8 x i1>961  %2 = select <8 x i1> %1, <8 x double> %0, <8 x double> zeroinitializer962  ret <8 x double> %2963}964 965define <8 x double> @test_mm512_fmsubadd_round_pd(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C) {966; CHECK-LABEL: test_mm512_fmsubadd_round_pd:967; CHECK:       ## %bb.0: ## %entry968; CHECK-NEXT:    vfmsubadd213pd {rn-sae}, %zmm2, %zmm1, %zmm0 ## encoding: [0x62,0xf2,0xf5,0x18,0xa7,0xc2]969; CHECK-NEXT:    ret{{[l|q]}} ## encoding: [0xc3]970entry:971  %sub = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C972  %0 = tail call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %__A, <8 x double> %__B, <8 x double> %sub, i32 8)973  ret <8 x double> %0974}975 976define <8 x double> @test_mm512_mask_fmsubadd_round_pd(<8 x double> %__A, i8 zeroext %__U, <8 x double> %__B, <8 x double> %__C) {977; X86-LABEL: test_mm512_mask_fmsubadd_round_pd:978; X86:       ## %bb.0: ## %entry979; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]980; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]981; X86-NEXT:    vfmsubadd132pd {rn-sae}, %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0xed,0x19,0x97,0xc1]982; X86-NEXT:    retl ## encoding: [0xc3]983;984; X64-LABEL: test_mm512_mask_fmsubadd_round_pd:985; X64:       ## %bb.0: ## %entry986; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]987; X64-NEXT:    vfmsubadd132pd {rn-sae}, %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0xed,0x19,0x97,0xc1]988; X64-NEXT:    retq ## encoding: [0xc3]989entry:990  %sub = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C991  %0 = tail call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %__A, <8 x double> %__B, <8 x double> %sub, i32 8)992  %1 = bitcast i8 %__U to <8 x i1>993  %2 = select <8 x i1> %1, <8 x double> %0, <8 x double> %__A994  ret <8 x double> %2995}996 997define <8 x double> @test_mm512_maskz_fmsubadd_round_pd(i8 zeroext %__U, <8 x double> %__A, <8 x double> %__B, <8 x double> %__C) {998; X86-LABEL: test_mm512_maskz_fmsubadd_round_pd:999; X86:       ## %bb.0: ## %entry1000; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]1001; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]1002; X86-NEXT:    vfmsubadd213pd {rn-sae}, %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0x99,0xa7,0xc2]1003; X86-NEXT:    retl ## encoding: [0xc3]1004;1005; X64-LABEL: test_mm512_maskz_fmsubadd_round_pd:1006; X64:       ## %bb.0: ## %entry1007; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1008; X64-NEXT:    vfmsubadd213pd {rn-sae}, %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0x99,0xa7,0xc2]1009; X64-NEXT:    retq ## encoding: [0xc3]1010entry:1011  %sub = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C1012  %0 = tail call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %__A, <8 x double> %__B, <8 x double> %sub, i32 8)1013  %1 = bitcast i8 %__U to <8 x i1>1014  %2 = select <8 x i1> %1, <8 x double> %0, <8 x double> zeroinitializer1015  ret <8 x double> %21016}1017 1018define <8 x double> @test_mm512_fmaddsub_pd(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C) {1019; CHECK-LABEL: test_mm512_fmaddsub_pd:1020; CHECK:       ## %bb.0: ## %entry1021; CHECK-NEXT:    vfmaddsub213pd %zmm2, %zmm1, %zmm0 ## encoding: [0x62,0xf2,0xf5,0x48,0xa6,0xc2]1022; CHECK-NEXT:    ## zmm0 = (zmm1 * zmm0) +/- zmm21023; CHECK-NEXT:    ret{{[l|q]}} ## encoding: [0xc3]1024entry:1025  %0 = tail call <8 x double> @llvm.fma.v8f64(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C) #101026  %1 = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C1027  %2 = tail call <8 x double> @llvm.fma.v8f64(<8 x double> %__A, <8 x double> %__B, <8 x double> %1) #101028  %3 = shufflevector <8 x double> %2, <8 x double> %0, <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>1029  ret <8 x double> %31030}1031 1032define <8 x double> @test_mm512_mask_fmaddsub_pd(<8 x double> %__A, i8 zeroext %__U, <8 x double> %__B, <8 x double> %__C) {1033; X86-LABEL: test_mm512_mask_fmaddsub_pd:1034; X86:       ## %bb.0: ## %entry1035; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]1036; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]1037; X86-NEXT:    vfmaddsub132pd %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0xed,0x49,0x96,0xc1]1038; X86-NEXT:    ## zmm0 {%k1} = (zmm0 * zmm1) +/- zmm21039; X86-NEXT:    retl ## encoding: [0xc3]1040;1041; X64-LABEL: test_mm512_mask_fmaddsub_pd:1042; X64:       ## %bb.0: ## %entry1043; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1044; X64-NEXT:    vfmaddsub132pd %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0xed,0x49,0x96,0xc1]1045; X64-NEXT:    ## zmm0 {%k1} = (zmm0 * zmm1) +/- zmm21046; X64-NEXT:    retq ## encoding: [0xc3]1047entry:1048  %0 = tail call <8 x double> @llvm.fma.v8f64(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C) #101049  %1 = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C1050  %2 = tail call <8 x double> @llvm.fma.v8f64(<8 x double> %__A, <8 x double> %__B, <8 x double> %1) #101051  %3 = shufflevector <8 x double> %2, <8 x double> %0, <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>1052  %4 = bitcast i8 %__U to <8 x i1>1053  %5 = select <8 x i1> %4, <8 x double> %3, <8 x double> %__A1054  ret <8 x double> %51055}1056 1057define <8 x double> @test_mm512_mask3_fmaddsub_pd(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C, i8 zeroext %__U) {1058; X86-LABEL: test_mm512_mask3_fmaddsub_pd:1059; X86:       ## %bb.0: ## %entry1060; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]1061; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]1062; X86-NEXT:    vfmaddsub231pd %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x49,0xb6,0xd1]1063; X86-NEXT:    ## zmm2 {%k1} = (zmm0 * zmm1) +/- zmm21064; X86-NEXT:    vmovapd %zmm2, %zmm0 ## encoding: [0x62,0xf1,0xfd,0x48,0x28,0xc2]1065; X86-NEXT:    retl ## encoding: [0xc3]1066;1067; X64-LABEL: test_mm512_mask3_fmaddsub_pd:1068; X64:       ## %bb.0: ## %entry1069; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1070; X64-NEXT:    vfmaddsub231pd %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x49,0xb6,0xd1]1071; X64-NEXT:    ## zmm2 {%k1} = (zmm0 * zmm1) +/- zmm21072; X64-NEXT:    vmovapd %zmm2, %zmm0 ## encoding: [0x62,0xf1,0xfd,0x48,0x28,0xc2]1073; X64-NEXT:    retq ## encoding: [0xc3]1074entry:1075  %0 = tail call <8 x double> @llvm.fma.v8f64(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C) #101076  %1 = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C1077  %2 = tail call <8 x double> @llvm.fma.v8f64(<8 x double> %__A, <8 x double> %__B, <8 x double> %1) #101078  %3 = shufflevector <8 x double> %2, <8 x double> %0, <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>1079  %4 = bitcast i8 %__U to <8 x i1>1080  %5 = select <8 x i1> %4, <8 x double> %3, <8 x double> %__C1081  ret <8 x double> %51082}1083 1084define <8 x double> @test_mm512_maskz_fmaddsub_pd(i8 zeroext %__U, <8 x double> %__A, <8 x double> %__B, <8 x double> %__C) {1085; X86-LABEL: test_mm512_maskz_fmaddsub_pd:1086; X86:       ## %bb.0: ## %entry1087; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]1088; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]1089; X86-NEXT:    vfmaddsub213pd %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0xc9,0xa6,0xc2]1090; X86-NEXT:    ## zmm0 {%k1} {z} = (zmm1 * zmm0) +/- zmm21091; X86-NEXT:    retl ## encoding: [0xc3]1092;1093; X64-LABEL: test_mm512_maskz_fmaddsub_pd:1094; X64:       ## %bb.0: ## %entry1095; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1096; X64-NEXT:    vfmaddsub213pd %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0xc9,0xa6,0xc2]1097; X64-NEXT:    ## zmm0 {%k1} {z} = (zmm1 * zmm0) +/- zmm21098; X64-NEXT:    retq ## encoding: [0xc3]1099entry:1100  %0 = tail call <8 x double> @llvm.fma.v8f64(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C) #101101  %1 = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C1102  %2 = tail call <8 x double> @llvm.fma.v8f64(<8 x double> %__A, <8 x double> %__B, <8 x double> %1) #101103  %3 = shufflevector <8 x double> %2, <8 x double> %0, <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>1104  %4 = bitcast i8 %__U to <8 x i1>1105  %5 = select <8 x i1> %4, <8 x double> %3, <8 x double> zeroinitializer1106  ret <8 x double> %51107}1108 1109define <8 x double> @test_mm512_fmsubadd_pd(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C) {1110; CHECK-LABEL: test_mm512_fmsubadd_pd:1111; CHECK:       ## %bb.0: ## %entry1112; CHECK-NEXT:    vfmsubadd213pd %zmm2, %zmm1, %zmm0 ## encoding: [0x62,0xf2,0xf5,0x48,0xa7,0xc2]1113; CHECK-NEXT:    ## zmm0 = (zmm1 * zmm0) -/+ zmm21114; CHECK-NEXT:    ret{{[l|q]}} ## encoding: [0xc3]1115entry:1116  %sub.i = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C1117  %0 = tail call <8 x double> @llvm.fma.v8f64(<8 x double> %__A, <8 x double> %__B, <8 x double> %sub.i) #101118  %1 = tail call <8 x double> @llvm.fma.v8f64(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C) #101119  %2 = shufflevector <8 x double> %1, <8 x double> %0, <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>1120  ret <8 x double> %21121}1122 1123define <8 x double> @test_mm512_mask_fmsubadd_pd(<8 x double> %__A, i8 zeroext %__U, <8 x double> %__B, <8 x double> %__C) {1124; X86-LABEL: test_mm512_mask_fmsubadd_pd:1125; X86:       ## %bb.0: ## %entry1126; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]1127; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]1128; X86-NEXT:    vfmsubadd132pd %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0xed,0x49,0x97,0xc1]1129; X86-NEXT:    ## zmm0 {%k1} = (zmm0 * zmm1) -/+ zmm21130; X86-NEXT:    retl ## encoding: [0xc3]1131;1132; X64-LABEL: test_mm512_mask_fmsubadd_pd:1133; X64:       ## %bb.0: ## %entry1134; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1135; X64-NEXT:    vfmsubadd132pd %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0xed,0x49,0x97,0xc1]1136; X64-NEXT:    ## zmm0 {%k1} = (zmm0 * zmm1) -/+ zmm21137; X64-NEXT:    retq ## encoding: [0xc3]1138entry:1139  %sub.i = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C1140  %0 = tail call <8 x double> @llvm.fma.v8f64(<8 x double> %__A, <8 x double> %__B, <8 x double> %sub.i) #101141  %1 = tail call <8 x double> @llvm.fma.v8f64(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C) #101142  %2 = shufflevector <8 x double> %1, <8 x double> %0, <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>1143  %3 = bitcast i8 %__U to <8 x i1>1144  %4 = select <8 x i1> %3, <8 x double> %2, <8 x double> %__A1145  ret <8 x double> %41146}1147 1148define <8 x double> @test_mm512_maskz_fmsubadd_pd(i8 zeroext %__U, <8 x double> %__A, <8 x double> %__B, <8 x double> %__C) {1149; X86-LABEL: test_mm512_maskz_fmsubadd_pd:1150; X86:       ## %bb.0: ## %entry1151; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]1152; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]1153; X86-NEXT:    vfmsubadd213pd %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0xc9,0xa7,0xc2]1154; X86-NEXT:    ## zmm0 {%k1} {z} = (zmm1 * zmm0) -/+ zmm21155; X86-NEXT:    retl ## encoding: [0xc3]1156;1157; X64-LABEL: test_mm512_maskz_fmsubadd_pd:1158; X64:       ## %bb.0: ## %entry1159; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1160; X64-NEXT:    vfmsubadd213pd %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0xc9,0xa7,0xc2]1161; X64-NEXT:    ## zmm0 {%k1} {z} = (zmm1 * zmm0) -/+ zmm21162; X64-NEXT:    retq ## encoding: [0xc3]1163entry:1164  %sub.i = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C1165  %0 = tail call <8 x double> @llvm.fma.v8f64(<8 x double> %__A, <8 x double> %__B, <8 x double> %sub.i) #101166  %1 = tail call <8 x double> @llvm.fma.v8f64(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C) #101167  %2 = shufflevector <8 x double> %1, <8 x double> %0, <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>1168  %3 = bitcast i8 %__U to <8 x i1>1169  %4 = select <8 x i1> %3, <8 x double> %2, <8 x double> zeroinitializer1170  ret <8 x double> %41171}1172 1173define <16 x float> @test_mm512_fmaddsub_round_ps(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C) {1174; CHECK-LABEL: test_mm512_fmaddsub_round_ps:1175; CHECK:       ## %bb.0: ## %entry1176; CHECK-NEXT:    vfmaddsub213ps {rn-sae}, %zmm2, %zmm1, %zmm0 ## encoding: [0x62,0xf2,0x75,0x18,0xa6,0xc2]1177; CHECK-NEXT:    ret{{[l|q]}} ## encoding: [0xc3]1178entry:1179  %0 = tail call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C, i32 8)1180  ret <16 x float> %01181}1182 1183declare <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float>, <16 x float>, <16 x float>, i32) #11184 1185define <16 x float> @test_mm512_mask_fmaddsub_round_ps(<16 x float> %__A, i16 zeroext %__U, <16 x float> %__B, <16 x float> %__C) {1186; X86-LABEL: test_mm512_mask_fmaddsub_round_ps:1187; X86:       ## %bb.0: ## %entry1188; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 ## encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]1189; X86-NEXT:    vfmaddsub132ps {rn-sae}, %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0x6d,0x19,0x96,0xc1]1190; X86-NEXT:    retl ## encoding: [0xc3]1191;1192; X64-LABEL: test_mm512_mask_fmaddsub_round_ps:1193; X64:       ## %bb.0: ## %entry1194; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1195; X64-NEXT:    vfmaddsub132ps {rn-sae}, %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0x6d,0x19,0x96,0xc1]1196; X64-NEXT:    retq ## encoding: [0xc3]1197entry:1198  %0 = tail call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C, i32 8)1199  %1 = bitcast i16 %__U to <16 x i1>1200  %2 = select <16 x i1> %1, <16 x float> %0, <16 x float> %__A1201  ret <16 x float> %21202}1203 1204define <16 x float> @test_mm512_mask3_fmaddsub_round_ps(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C, i16 zeroext %__U) {1205; X86-LABEL: test_mm512_mask3_fmaddsub_round_ps:1206; X86:       ## %bb.0: ## %entry1207; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 ## encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]1208; X86-NEXT:    vfmaddsub231ps {rn-sae}, %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x19,0xb6,0xd1]1209; X86-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]1210; X86-NEXT:    retl ## encoding: [0xc3]1211;1212; X64-LABEL: test_mm512_mask3_fmaddsub_round_ps:1213; X64:       ## %bb.0: ## %entry1214; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1215; X64-NEXT:    vfmaddsub231ps {rn-sae}, %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x19,0xb6,0xd1]1216; X64-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]1217; X64-NEXT:    retq ## encoding: [0xc3]1218entry:1219  %0 = tail call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C, i32 8)1220  %1 = bitcast i16 %__U to <16 x i1>1221  %2 = select <16 x i1> %1, <16 x float> %0, <16 x float> %__C1222  ret <16 x float> %21223}1224 1225define <16 x float> @test_mm512_maskz_fmaddsub_round_ps(i16 zeroext %__U, <16 x float> %__A, <16 x float> %__B, <16 x float> %__C) {1226; X86-LABEL: test_mm512_maskz_fmaddsub_round_ps:1227; X86:       ## %bb.0: ## %entry1228; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 ## encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]1229; X86-NEXT:    vfmaddsub213ps {rn-sae}, %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0x99,0xa6,0xc2]1230; X86-NEXT:    retl ## encoding: [0xc3]1231;1232; X64-LABEL: test_mm512_maskz_fmaddsub_round_ps:1233; X64:       ## %bb.0: ## %entry1234; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1235; X64-NEXT:    vfmaddsub213ps {rn-sae}, %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0x99,0xa6,0xc2]1236; X64-NEXT:    retq ## encoding: [0xc3]1237entry:1238  %0 = tail call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C, i32 8)1239  %1 = bitcast i16 %__U to <16 x i1>1240  %2 = select <16 x i1> %1, <16 x float> %0, <16 x float> zeroinitializer1241  ret <16 x float> %21242}1243 1244define <16 x float> @test_mm512_fmsubadd_round_ps(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C) {1245; CHECK-LABEL: test_mm512_fmsubadd_round_ps:1246; CHECK:       ## %bb.0: ## %entry1247; CHECK-NEXT:    vfmsubadd213ps {rn-sae}, %zmm2, %zmm1, %zmm0 ## encoding: [0x62,0xf2,0x75,0x18,0xa7,0xc2]1248; CHECK-NEXT:    ret{{[l|q]}} ## encoding: [0xc3]1249entry:1250  %sub = fsub <16 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, 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>, %__C1251  %0 = tail call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %__A, <16 x float> %__B, <16 x float> %sub, i32 8)1252  ret <16 x float> %01253}1254 1255define <16 x float> @test_mm512_mask_fmsubadd_round_ps(<16 x float> %__A, i16 zeroext %__U, <16 x float> %__B, <16 x float> %__C) {1256; X86-LABEL: test_mm512_mask_fmsubadd_round_ps:1257; X86:       ## %bb.0: ## %entry1258; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 ## encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]1259; X86-NEXT:    vfmsubadd132ps {rn-sae}, %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0x6d,0x19,0x97,0xc1]1260; X86-NEXT:    retl ## encoding: [0xc3]1261;1262; X64-LABEL: test_mm512_mask_fmsubadd_round_ps:1263; X64:       ## %bb.0: ## %entry1264; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1265; X64-NEXT:    vfmsubadd132ps {rn-sae}, %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0x6d,0x19,0x97,0xc1]1266; X64-NEXT:    retq ## encoding: [0xc3]1267entry:1268  %sub = fsub <16 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, 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>, %__C1269  %0 = tail call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %__A, <16 x float> %__B, <16 x float> %sub, i32 8)1270  %1 = bitcast i16 %__U to <16 x i1>1271  %2 = select <16 x i1> %1, <16 x float> %0, <16 x float> %__A1272  ret <16 x float> %21273}1274 1275define <16 x float> @test_mm512_maskz_fmsubadd_round_ps(i16 zeroext %__U, <16 x float> %__A, <16 x float> %__B, <16 x float> %__C) {1276; X86-LABEL: test_mm512_maskz_fmsubadd_round_ps:1277; X86:       ## %bb.0: ## %entry1278; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 ## encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]1279; X86-NEXT:    vfmsubadd213ps {rn-sae}, %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0x99,0xa7,0xc2]1280; X86-NEXT:    retl ## encoding: [0xc3]1281;1282; X64-LABEL: test_mm512_maskz_fmsubadd_round_ps:1283; X64:       ## %bb.0: ## %entry1284; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1285; X64-NEXT:    vfmsubadd213ps {rn-sae}, %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0x99,0xa7,0xc2]1286; X64-NEXT:    retq ## encoding: [0xc3]1287entry:1288  %sub = fsub <16 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, 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>, %__C1289  %0 = tail call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %__A, <16 x float> %__B, <16 x float> %sub, i32 8)1290  %1 = bitcast i16 %__U to <16 x i1>1291  %2 = select <16 x i1> %1, <16 x float> %0, <16 x float> zeroinitializer1292  ret <16 x float> %21293}1294 1295define <16 x float> @test_mm512_fmaddsub_ps(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C) {1296; CHECK-LABEL: test_mm512_fmaddsub_ps:1297; CHECK:       ## %bb.0: ## %entry1298; CHECK-NEXT:    vfmaddsub213ps %zmm2, %zmm1, %zmm0 ## encoding: [0x62,0xf2,0x75,0x48,0xa6,0xc2]1299; CHECK-NEXT:    ## zmm0 = (zmm1 * zmm0) +/- zmm21300; CHECK-NEXT:    ret{{[l|q]}} ## encoding: [0xc3]1301entry:1302  %0 = tail call <16 x float> @llvm.fma.v16f32(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C) #101303  %1 = fsub <16 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, 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>, %__C1304  %2 = tail call <16 x float> @llvm.fma.v16f32(<16 x float> %__A, <16 x float> %__B, <16 x float> %1) #101305  %3 = shufflevector <16 x float> %2, <16 x float> %0, <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31>1306  ret <16 x float> %31307}1308 1309define <16 x float> @test_mm512_mask_fmaddsub_ps(<16 x float> %__A, i16 zeroext %__U, <16 x float> %__B, <16 x float> %__C) {1310; X86-LABEL: test_mm512_mask_fmaddsub_ps:1311; X86:       ## %bb.0: ## %entry1312; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 ## encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]1313; X86-NEXT:    vfmaddsub132ps %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0x6d,0x49,0x96,0xc1]1314; X86-NEXT:    ## zmm0 {%k1} = (zmm0 * zmm1) +/- zmm21315; X86-NEXT:    retl ## encoding: [0xc3]1316;1317; X64-LABEL: test_mm512_mask_fmaddsub_ps:1318; X64:       ## %bb.0: ## %entry1319; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1320; X64-NEXT:    vfmaddsub132ps %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0x6d,0x49,0x96,0xc1]1321; X64-NEXT:    ## zmm0 {%k1} = (zmm0 * zmm1) +/- zmm21322; X64-NEXT:    retq ## encoding: [0xc3]1323entry:1324  %0 = tail call <16 x float> @llvm.fma.v16f32(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C) #101325  %1 = fsub <16 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, 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>, %__C1326  %2 = tail call <16 x float> @llvm.fma.v16f32(<16 x float> %__A, <16 x float> %__B, <16 x float> %1) #101327  %3 = shufflevector <16 x float> %2, <16 x float> %0, <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31>1328  %4 = bitcast i16 %__U to <16 x i1>1329  %5 = select <16 x i1> %4, <16 x float> %3, <16 x float> %__A1330  ret <16 x float> %51331}1332 1333define <16 x float> @test_mm512_mask3_fmaddsub_ps(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C, i16 zeroext %__U) {1334; X86-LABEL: test_mm512_mask3_fmaddsub_ps:1335; X86:       ## %bb.0: ## %entry1336; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 ## encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]1337; X86-NEXT:    vfmaddsub231ps %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x49,0xb6,0xd1]1338; X86-NEXT:    ## zmm2 {%k1} = (zmm0 * zmm1) +/- zmm21339; X86-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]1340; X86-NEXT:    retl ## encoding: [0xc3]1341;1342; X64-LABEL: test_mm512_mask3_fmaddsub_ps:1343; X64:       ## %bb.0: ## %entry1344; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1345; X64-NEXT:    vfmaddsub231ps %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x49,0xb6,0xd1]1346; X64-NEXT:    ## zmm2 {%k1} = (zmm0 * zmm1) +/- zmm21347; X64-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]1348; X64-NEXT:    retq ## encoding: [0xc3]1349entry:1350  %0 = tail call <16 x float> @llvm.fma.v16f32(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C) #101351  %1 = fsub <16 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, 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>, %__C1352  %2 = tail call <16 x float> @llvm.fma.v16f32(<16 x float> %__A, <16 x float> %__B, <16 x float> %1) #101353  %3 = shufflevector <16 x float> %2, <16 x float> %0, <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31>1354  %4 = bitcast i16 %__U to <16 x i1>1355  %5 = select <16 x i1> %4, <16 x float> %3, <16 x float> %__C1356  ret <16 x float> %51357}1358 1359define <16 x float> @test_mm512_maskz_fmaddsub_ps(i16 zeroext %__U, <16 x float> %__A, <16 x float> %__B, <16 x float> %__C) {1360; X86-LABEL: test_mm512_maskz_fmaddsub_ps:1361; X86:       ## %bb.0: ## %entry1362; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 ## encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]1363; X86-NEXT:    vfmaddsub213ps %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0xc9,0xa6,0xc2]1364; X86-NEXT:    ## zmm0 {%k1} {z} = (zmm1 * zmm0) +/- zmm21365; X86-NEXT:    retl ## encoding: [0xc3]1366;1367; X64-LABEL: test_mm512_maskz_fmaddsub_ps:1368; X64:       ## %bb.0: ## %entry1369; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1370; X64-NEXT:    vfmaddsub213ps %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0xc9,0xa6,0xc2]1371; X64-NEXT:    ## zmm0 {%k1} {z} = (zmm1 * zmm0) +/- zmm21372; X64-NEXT:    retq ## encoding: [0xc3]1373entry:1374  %0 = tail call <16 x float> @llvm.fma.v16f32(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C) #101375  %1 = fsub <16 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, 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>, %__C1376  %2 = tail call <16 x float> @llvm.fma.v16f32(<16 x float> %__A, <16 x float> %__B, <16 x float> %1) #101377  %3 = shufflevector <16 x float> %2, <16 x float> %0, <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31>1378  %4 = bitcast i16 %__U to <16 x i1>1379  %5 = select <16 x i1> %4, <16 x float> %3, <16 x float> zeroinitializer1380  ret <16 x float> %51381}1382 1383define <16 x float> @test_mm512_fmsubadd_ps(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C) {1384; CHECK-LABEL: test_mm512_fmsubadd_ps:1385; CHECK:       ## %bb.0: ## %entry1386; CHECK-NEXT:    vfmsubadd213ps %zmm2, %zmm1, %zmm0 ## encoding: [0x62,0xf2,0x75,0x48,0xa7,0xc2]1387; CHECK-NEXT:    ## zmm0 = (zmm1 * zmm0) -/+ zmm21388; CHECK-NEXT:    ret{{[l|q]}} ## encoding: [0xc3]1389entry:1390  %sub.i = fsub <16 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, 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>, %__C1391  %0 = tail call <16 x float> @llvm.fma.v16f32(<16 x float> %__A, <16 x float> %__B, <16 x float> %sub.i) #101392  %1 = tail call <16 x float> @llvm.fma.v16f32(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C) #101393  %2 = shufflevector <16 x float> %1, <16 x float> %0, <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31>1394  ret <16 x float> %21395}1396 1397define <16 x float> @test_mm512_mask_fmsubadd_ps(<16 x float> %__A, i16 zeroext %__U, <16 x float> %__B, <16 x float> %__C) {1398; X86-LABEL: test_mm512_mask_fmsubadd_ps:1399; X86:       ## %bb.0: ## %entry1400; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 ## encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]1401; X86-NEXT:    vfmsubadd132ps %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0x6d,0x49,0x97,0xc1]1402; X86-NEXT:    ## zmm0 {%k1} = (zmm0 * zmm1) -/+ zmm21403; X86-NEXT:    retl ## encoding: [0xc3]1404;1405; X64-LABEL: test_mm512_mask_fmsubadd_ps:1406; X64:       ## %bb.0: ## %entry1407; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1408; X64-NEXT:    vfmsubadd132ps %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0x6d,0x49,0x97,0xc1]1409; X64-NEXT:    ## zmm0 {%k1} = (zmm0 * zmm1) -/+ zmm21410; X64-NEXT:    retq ## encoding: [0xc3]1411entry:1412  %sub.i = fsub <16 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, 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>, %__C1413  %0 = tail call <16 x float> @llvm.fma.v16f32(<16 x float> %__A, <16 x float> %__B, <16 x float> %sub.i) #101414  %1 = tail call <16 x float> @llvm.fma.v16f32(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C) #101415  %2 = shufflevector <16 x float> %1, <16 x float> %0, <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31>1416  %3 = bitcast i16 %__U to <16 x i1>1417  %4 = select <16 x i1> %3, <16 x float> %2, <16 x float> %__A1418  ret <16 x float> %41419}1420 1421define <16 x float> @test_mm512_maskz_fmsubadd_ps(i16 zeroext %__U, <16 x float> %__A, <16 x float> %__B, <16 x float> %__C) {1422; X86-LABEL: test_mm512_maskz_fmsubadd_ps:1423; X86:       ## %bb.0: ## %entry1424; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 ## encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]1425; X86-NEXT:    vfmsubadd213ps %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0xc9,0xa7,0xc2]1426; X86-NEXT:    ## zmm0 {%k1} {z} = (zmm1 * zmm0) -/+ zmm21427; X86-NEXT:    retl ## encoding: [0xc3]1428;1429; X64-LABEL: test_mm512_maskz_fmsubadd_ps:1430; X64:       ## %bb.0: ## %entry1431; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1432; X64-NEXT:    vfmsubadd213ps %zmm2, %zmm1, %zmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0xc9,0xa7,0xc2]1433; X64-NEXT:    ## zmm0 {%k1} {z} = (zmm1 * zmm0) -/+ zmm21434; X64-NEXT:    retq ## encoding: [0xc3]1435entry:1436  %sub.i = fsub <16 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, 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>, %__C1437  %0 = tail call <16 x float> @llvm.fma.v16f32(<16 x float> %__A, <16 x float> %__B, <16 x float> %sub.i) #101438  %1 = tail call <16 x float> @llvm.fma.v16f32(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C) #101439  %2 = shufflevector <16 x float> %1, <16 x float> %0, <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31>1440  %3 = bitcast i16 %__U to <16 x i1>1441  %4 = select <16 x i1> %3, <16 x float> %2, <16 x float> zeroinitializer1442  ret <16 x float> %41443}1444 1445define <8 x double> @test_mm512_mask3_fmsub_round_pd(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C, i8 zeroext %__U) {1446; X86-LABEL: test_mm512_mask3_fmsub_round_pd:1447; X86:       ## %bb.0: ## %entry1448; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]1449; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]1450; X86-NEXT:    vfmsub231pd {rn-sae}, %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x19,0xba,0xd1]1451; X86-NEXT:    vmovapd %zmm2, %zmm0 ## encoding: [0x62,0xf1,0xfd,0x48,0x28,0xc2]1452; X86-NEXT:    retl ## encoding: [0xc3]1453;1454; X64-LABEL: test_mm512_mask3_fmsub_round_pd:1455; X64:       ## %bb.0: ## %entry1456; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1457; X64-NEXT:    vfmsub231pd {rn-sae}, %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x19,0xba,0xd1]1458; X64-NEXT:    vmovapd %zmm2, %zmm0 ## encoding: [0x62,0xf1,0xfd,0x48,0x28,0xc2]1459; X64-NEXT:    retq ## encoding: [0xc3]1460entry:1461  %sub = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C1462  %0 = tail call <8 x double> @llvm.x86.avx512.vfmadd.pd.512(<8 x double> %__A, <8 x double> %__B, <8 x double> %sub, i32 8)1463  %1 = bitcast i8 %__U to <8 x i1>1464  %2 = select <8 x i1> %1, <8 x double> %0, <8 x double> %__C1465  ret <8 x double> %21466}1467 1468define <8 x double> @test_mm512_mask3_fmsub_pd(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C, i8 zeroext %__U) {1469; X86-LABEL: test_mm512_mask3_fmsub_pd:1470; X86:       ## %bb.0: ## %entry1471; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]1472; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]1473; X86-NEXT:    vfmsub231pd %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x49,0xba,0xd1]1474; X86-NEXT:    ## zmm2 {%k1} = (zmm0 * zmm1) - zmm21475; X86-NEXT:    vmovapd %zmm2, %zmm0 ## encoding: [0x62,0xf1,0xfd,0x48,0x28,0xc2]1476; X86-NEXT:    retl ## encoding: [0xc3]1477;1478; X64-LABEL: test_mm512_mask3_fmsub_pd:1479; X64:       ## %bb.0: ## %entry1480; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1481; X64-NEXT:    vfmsub231pd %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x49,0xba,0xd1]1482; X64-NEXT:    ## zmm2 {%k1} = (zmm0 * zmm1) - zmm21483; X64-NEXT:    vmovapd %zmm2, %zmm0 ## encoding: [0x62,0xf1,0xfd,0x48,0x28,0xc2]1484; X64-NEXT:    retq ## encoding: [0xc3]1485entry:1486  %sub.i = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C1487  %0 = tail call <8 x double> @llvm.fma.v8f64(<8 x double> %__A, <8 x double> %__B, <8 x double> %sub.i) #101488  %1 = bitcast i8 %__U to <8 x i1>1489  %2 = select <8 x i1> %1, <8 x double> %0, <8 x double> %__C1490  ret <8 x double> %21491}1492 1493define <16 x float> @test_mm512_mask3_fmsub_round_ps(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C, i16 zeroext %__U) {1494; X86-LABEL: test_mm512_mask3_fmsub_round_ps:1495; X86:       ## %bb.0: ## %entry1496; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 ## encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]1497; X86-NEXT:    vfmsub231ps {rn-sae}, %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x19,0xba,0xd1]1498; X86-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]1499; X86-NEXT:    retl ## encoding: [0xc3]1500;1501; X64-LABEL: test_mm512_mask3_fmsub_round_ps:1502; X64:       ## %bb.0: ## %entry1503; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1504; X64-NEXT:    vfmsub231ps {rn-sae}, %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x19,0xba,0xd1]1505; X64-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]1506; X64-NEXT:    retq ## encoding: [0xc3]1507entry:1508  %sub = fsub <16 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, 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>, %__C1509  %0 = tail call <16 x float> @llvm.x86.avx512.vfmadd.ps.512(<16 x float> %__A, <16 x float> %__B, <16 x float> %sub, i32 8)1510  %1 = bitcast i16 %__U to <16 x i1>1511  %2 = select <16 x i1> %1, <16 x float> %0, <16 x float> %__C1512  ret <16 x float> %21513}1514 1515define <16 x float> @test_mm512_mask3_fmsub_ps(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C, i16 zeroext %__U) {1516; X86-LABEL: test_mm512_mask3_fmsub_ps:1517; X86:       ## %bb.0: ## %entry1518; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 ## encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]1519; X86-NEXT:    vfmsub231ps %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x49,0xba,0xd1]1520; X86-NEXT:    ## zmm2 {%k1} = (zmm0 * zmm1) - zmm21521; X86-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]1522; X86-NEXT:    retl ## encoding: [0xc3]1523;1524; X64-LABEL: test_mm512_mask3_fmsub_ps:1525; X64:       ## %bb.0: ## %entry1526; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1527; X64-NEXT:    vfmsub231ps %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x49,0xba,0xd1]1528; X64-NEXT:    ## zmm2 {%k1} = (zmm0 * zmm1) - zmm21529; X64-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]1530; X64-NEXT:    retq ## encoding: [0xc3]1531entry:1532  %sub.i = fsub <16 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, 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>, %__C1533  %0 = tail call <16 x float> @llvm.fma.v16f32(<16 x float> %__A, <16 x float> %__B, <16 x float> %sub.i) #101534  %1 = bitcast i16 %__U to <16 x i1>1535  %2 = select <16 x i1> %1, <16 x float> %0, <16 x float> %__C1536  ret <16 x float> %21537}1538 1539define <8 x double> @test_mm512_mask3_fmsubadd_round_pd(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C, i8 zeroext %__U) {1540; X86-LABEL: test_mm512_mask3_fmsubadd_round_pd:1541; X86:       ## %bb.0: ## %entry1542; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]1543; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]1544; X86-NEXT:    vfmsubadd231pd {rn-sae}, %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x19,0xb7,0xd1]1545; X86-NEXT:    vmovapd %zmm2, %zmm0 ## encoding: [0x62,0xf1,0xfd,0x48,0x28,0xc2]1546; X86-NEXT:    retl ## encoding: [0xc3]1547;1548; X64-LABEL: test_mm512_mask3_fmsubadd_round_pd:1549; X64:       ## %bb.0: ## %entry1550; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1551; X64-NEXT:    vfmsubadd231pd {rn-sae}, %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x19,0xb7,0xd1]1552; X64-NEXT:    vmovapd %zmm2, %zmm0 ## encoding: [0x62,0xf1,0xfd,0x48,0x28,0xc2]1553; X64-NEXT:    retq ## encoding: [0xc3]1554entry:1555  %sub = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C1556  %0 = tail call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %__A, <8 x double> %__B, <8 x double> %sub, i32 8)1557  %1 = bitcast i8 %__U to <8 x i1>1558  %2 = select <8 x i1> %1, <8 x double> %0, <8 x double> %__C1559  ret <8 x double> %21560}1561 1562define <8 x double> @test_mm512_mask3_fmsubadd_pd(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C, i8 zeroext %__U) {1563; X86-LABEL: test_mm512_mask3_fmsubadd_pd:1564; X86:       ## %bb.0: ## %entry1565; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]1566; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]1567; X86-NEXT:    vfmsubadd231pd %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x49,0xb7,0xd1]1568; X86-NEXT:    ## zmm2 {%k1} = (zmm0 * zmm1) -/+ zmm21569; X86-NEXT:    vmovapd %zmm2, %zmm0 ## encoding: [0x62,0xf1,0xfd,0x48,0x28,0xc2]1570; X86-NEXT:    retl ## encoding: [0xc3]1571;1572; X64-LABEL: test_mm512_mask3_fmsubadd_pd:1573; X64:       ## %bb.0: ## %entry1574; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1575; X64-NEXT:    vfmsubadd231pd %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x49,0xb7,0xd1]1576; X64-NEXT:    ## zmm2 {%k1} = (zmm0 * zmm1) -/+ zmm21577; X64-NEXT:    vmovapd %zmm2, %zmm0 ## encoding: [0x62,0xf1,0xfd,0x48,0x28,0xc2]1578; X64-NEXT:    retq ## encoding: [0xc3]1579entry:1580  %sub.i = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C1581  %0 = tail call <8 x double> @llvm.fma.v8f64(<8 x double> %__A, <8 x double> %__B, <8 x double> %sub.i) #101582  %1 = tail call <8 x double> @llvm.fma.v8f64(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C) #101583  %2 = shufflevector <8 x double> %1, <8 x double> %0, <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>1584  %3 = bitcast i8 %__U to <8 x i1>1585  %4 = select <8 x i1> %3, <8 x double> %2, <8 x double> %__C1586  ret <8 x double> %41587}1588 1589define <16 x float> @test_mm512_mask3_fmsubadd_round_ps(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C, i16 zeroext %__U) {1590; X86-LABEL: test_mm512_mask3_fmsubadd_round_ps:1591; X86:       ## %bb.0: ## %entry1592; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 ## encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]1593; X86-NEXT:    vfmsubadd231ps {rn-sae}, %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x19,0xb7,0xd1]1594; X86-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]1595; X86-NEXT:    retl ## encoding: [0xc3]1596;1597; X64-LABEL: test_mm512_mask3_fmsubadd_round_ps:1598; X64:       ## %bb.0: ## %entry1599; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1600; X64-NEXT:    vfmsubadd231ps {rn-sae}, %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x19,0xb7,0xd1]1601; X64-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]1602; X64-NEXT:    retq ## encoding: [0xc3]1603entry:1604  %sub = fsub <16 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, 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>, %__C1605  %0 = tail call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %__A, <16 x float> %__B, <16 x float> %sub, i32 8)1606  %1 = bitcast i16 %__U to <16 x i1>1607  %2 = select <16 x i1> %1, <16 x float> %0, <16 x float> %__C1608  ret <16 x float> %21609}1610 1611define <16 x float> @test_mm512_mask3_fmsubadd_ps(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C, i16 zeroext %__U) {1612; X86-LABEL: test_mm512_mask3_fmsubadd_ps:1613; X86:       ## %bb.0: ## %entry1614; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 ## encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]1615; X86-NEXT:    vfmsubadd231ps %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x49,0xb7,0xd1]1616; X86-NEXT:    ## zmm2 {%k1} = (zmm0 * zmm1) -/+ zmm21617; X86-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]1618; X86-NEXT:    retl ## encoding: [0xc3]1619;1620; X64-LABEL: test_mm512_mask3_fmsubadd_ps:1621; X64:       ## %bb.0: ## %entry1622; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1623; X64-NEXT:    vfmsubadd231ps %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x49,0xb7,0xd1]1624; X64-NEXT:    ## zmm2 {%k1} = (zmm0 * zmm1) -/+ zmm21625; X64-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]1626; X64-NEXT:    retq ## encoding: [0xc3]1627entry:1628  %sub.i = fsub <16 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, 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>, %__C1629  %0 = tail call <16 x float> @llvm.fma.v16f32(<16 x float> %__A, <16 x float> %__B, <16 x float> %sub.i) #101630  %1 = tail call <16 x float> @llvm.fma.v16f32(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C) #101631  %2 = shufflevector <16 x float> %1, <16 x float> %0, <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31>1632  %3 = bitcast i16 %__U to <16 x i1>1633  %4 = select <16 x i1> %3, <16 x float> %2, <16 x float> %__C1634  ret <16 x float> %41635}1636 1637define <8 x double> @test_mm512_mask_fnmadd_round_pd(<8 x double> %__A, i8 zeroext %__U, <8 x double> %__B, <8 x double> %__C) {1638; X86-LABEL: test_mm512_mask_fnmadd_round_pd:1639; X86:       ## %bb.0: ## %entry1640; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]1641; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]1642; X86-NEXT:    vfnmadd132pd {rn-sae}, %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0xed,0x19,0x9c,0xc1]1643; X86-NEXT:    retl ## encoding: [0xc3]1644;1645; X64-LABEL: test_mm512_mask_fnmadd_round_pd:1646; X64:       ## %bb.0: ## %entry1647; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1648; X64-NEXT:    vfnmadd132pd {rn-sae}, %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0xed,0x19,0x9c,0xc1]1649; X64-NEXT:    retq ## encoding: [0xc3]1650entry:1651  %sub = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__A1652  %0 = tail call <8 x double> @llvm.x86.avx512.vfmadd.pd.512(<8 x double> %sub, <8 x double> %__B, <8 x double> %__C, i32 8)1653  %1 = bitcast i8 %__U to <8 x i1>1654  %2 = select <8 x i1> %1, <8 x double> %0, <8 x double> %__A1655  ret <8 x double> %21656}1657 1658define <8 x double> @test_mm512_mask_fnmadd_pd(<8 x double> %__A, i8 zeroext %__U, <8 x double> %__B, <8 x double> %__C) {1659; X86-LABEL: test_mm512_mask_fnmadd_pd:1660; X86:       ## %bb.0: ## %entry1661; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]1662; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]1663; X86-NEXT:    vfnmadd132pd %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0xed,0x49,0x9c,0xc1]1664; X86-NEXT:    ## zmm0 {%k1} = -(zmm0 * zmm1) + zmm21665; X86-NEXT:    retl ## encoding: [0xc3]1666;1667; X64-LABEL: test_mm512_mask_fnmadd_pd:1668; X64:       ## %bb.0: ## %entry1669; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1670; X64-NEXT:    vfnmadd132pd %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0xed,0x49,0x9c,0xc1]1671; X64-NEXT:    ## zmm0 {%k1} = -(zmm0 * zmm1) + zmm21672; X64-NEXT:    retq ## encoding: [0xc3]1673entry:1674  %sub.i = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__A1675  %0 = tail call <8 x double> @llvm.fma.v8f64(<8 x double> %sub.i, <8 x double> %__B, <8 x double> %__C) #101676  %1 = bitcast i8 %__U to <8 x i1>1677  %2 = select <8 x i1> %1, <8 x double> %0, <8 x double> %__A1678  ret <8 x double> %21679}1680 1681define <16 x float> @test_mm512_mask_fnmadd_round_ps(<16 x float> %__A, i16 zeroext %__U, <16 x float> %__B, <16 x float> %__C) {1682; X86-LABEL: test_mm512_mask_fnmadd_round_ps:1683; X86:       ## %bb.0: ## %entry1684; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 ## encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]1685; X86-NEXT:    vfnmadd132ps {rn-sae}, %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0x6d,0x19,0x9c,0xc1]1686; X86-NEXT:    retl ## encoding: [0xc3]1687;1688; X64-LABEL: test_mm512_mask_fnmadd_round_ps:1689; X64:       ## %bb.0: ## %entry1690; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1691; X64-NEXT:    vfnmadd132ps {rn-sae}, %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0x6d,0x19,0x9c,0xc1]1692; X64-NEXT:    retq ## encoding: [0xc3]1693entry:1694  %sub = fsub <16 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, 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>, %__A1695  %0 = tail call <16 x float> @llvm.x86.avx512.vfmadd.ps.512(<16 x float> %sub, <16 x float> %__B, <16 x float> %__C, i32 8)1696  %1 = bitcast i16 %__U to <16 x i1>1697  %2 = select <16 x i1> %1, <16 x float> %0, <16 x float> %__A1698  ret <16 x float> %21699}1700 1701define <16 x float> @test_mm512_mask_fnmadd_ps(<16 x float> %__A, i16 zeroext %__U, <16 x float> %__B, <16 x float> %__C) {1702; X86-LABEL: test_mm512_mask_fnmadd_ps:1703; X86:       ## %bb.0: ## %entry1704; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 ## encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]1705; X86-NEXT:    vfnmadd132ps %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0x6d,0x49,0x9c,0xc1]1706; X86-NEXT:    ## zmm0 {%k1} = -(zmm0 * zmm1) + zmm21707; X86-NEXT:    retl ## encoding: [0xc3]1708;1709; X64-LABEL: test_mm512_mask_fnmadd_ps:1710; X64:       ## %bb.0: ## %entry1711; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1712; X64-NEXT:    vfnmadd132ps %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0x6d,0x49,0x9c,0xc1]1713; X64-NEXT:    ## zmm0 {%k1} = -(zmm0 * zmm1) + zmm21714; X64-NEXT:    retq ## encoding: [0xc3]1715entry:1716  %sub.i = fsub <16 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, 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>, %__A1717  %0 = tail call <16 x float> @llvm.fma.v16f32(<16 x float> %sub.i, <16 x float> %__B, <16 x float> %__C) #101718  %1 = bitcast i16 %__U to <16 x i1>1719  %2 = select <16 x i1> %1, <16 x float> %0, <16 x float> %__A1720  ret <16 x float> %21721}1722 1723define <8 x double> @test_mm512_mask_fnmsub_round_pd(<8 x double> %__A, i8 zeroext %__U, <8 x double> %__B, <8 x double> %__C) {1724; X86-LABEL: test_mm512_mask_fnmsub_round_pd:1725; X86:       ## %bb.0: ## %entry1726; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]1727; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]1728; X86-NEXT:    vfnmsub132pd {rn-sae}, %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0xed,0x19,0x9e,0xc1]1729; X86-NEXT:    retl ## encoding: [0xc3]1730;1731; X64-LABEL: test_mm512_mask_fnmsub_round_pd:1732; X64:       ## %bb.0: ## %entry1733; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1734; X64-NEXT:    vfnmsub132pd {rn-sae}, %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0xed,0x19,0x9e,0xc1]1735; X64-NEXT:    retq ## encoding: [0xc3]1736entry:1737  %sub = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__B1738  %sub1 = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C1739  %0 = tail call <8 x double> @llvm.x86.avx512.vfmadd.pd.512(<8 x double> %__A, <8 x double> %sub, <8 x double> %sub1, i32 8)1740  %1 = bitcast i8 %__U to <8 x i1>1741  %2 = select <8 x i1> %1, <8 x double> %0, <8 x double> %__A1742  ret <8 x double> %21743}1744 1745define <8 x double> @test_mm512_mask3_fnmsub_round_pd(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C, i8 zeroext %__U) {1746; X86-LABEL: test_mm512_mask3_fnmsub_round_pd:1747; X86:       ## %bb.0: ## %entry1748; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]1749; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]1750; X86-NEXT:    vfnmsub231pd {rn-sae}, %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x19,0xbe,0xd1]1751; X86-NEXT:    vmovapd %zmm2, %zmm0 ## encoding: [0x62,0xf1,0xfd,0x48,0x28,0xc2]1752; X86-NEXT:    retl ## encoding: [0xc3]1753;1754; X64-LABEL: test_mm512_mask3_fnmsub_round_pd:1755; X64:       ## %bb.0: ## %entry1756; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1757; X64-NEXT:    vfnmsub231pd {rn-sae}, %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x19,0xbe,0xd1]1758; X64-NEXT:    vmovapd %zmm2, %zmm0 ## encoding: [0x62,0xf1,0xfd,0x48,0x28,0xc2]1759; X64-NEXT:    retq ## encoding: [0xc3]1760entry:1761  %sub = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__B1762  %sub1 = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C1763  %0 = tail call <8 x double> @llvm.x86.avx512.vfmadd.pd.512(<8 x double> %__A, <8 x double> %sub, <8 x double> %sub1, i32 8)1764  %1 = bitcast i8 %__U to <8 x i1>1765  %2 = select <8 x i1> %1, <8 x double> %0, <8 x double> %__C1766  ret <8 x double> %21767}1768 1769define <8 x double> @test_mm512_mask_fnmsub_pd(<8 x double> %__A, i8 zeroext %__U, <8 x double> %__B, <8 x double> %__C) {1770; X86-LABEL: test_mm512_mask_fnmsub_pd:1771; X86:       ## %bb.0: ## %entry1772; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]1773; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]1774; X86-NEXT:    vfnmsub132pd %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0xed,0x49,0x9e,0xc1]1775; X86-NEXT:    ## zmm0 {%k1} = -(zmm0 * zmm1) - zmm21776; X86-NEXT:    retl ## encoding: [0xc3]1777;1778; X64-LABEL: test_mm512_mask_fnmsub_pd:1779; X64:       ## %bb.0: ## %entry1780; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1781; X64-NEXT:    vfnmsub132pd %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0xed,0x49,0x9e,0xc1]1782; X64-NEXT:    ## zmm0 {%k1} = -(zmm0 * zmm1) - zmm21783; X64-NEXT:    retq ## encoding: [0xc3]1784entry:1785  %sub.i = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__B1786  %sub2.i = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C1787  %0 = tail call <8 x double> @llvm.fma.v8f64(<8 x double> %__A, <8 x double> %sub.i, <8 x double> %sub2.i) #101788  %1 = bitcast i8 %__U to <8 x i1>1789  %2 = select <8 x i1> %1, <8 x double> %0, <8 x double> %__A1790  ret <8 x double> %21791}1792 1793define <8 x double> @test_mm512_mask3_fnmsub_pd(<8 x double> %__A, <8 x double> %__B, <8 x double> %__C, i8 zeroext %__U) {1794; X86-LABEL: test_mm512_mask3_fnmsub_pd:1795; X86:       ## %bb.0: ## %entry1796; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]1797; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]1798; X86-NEXT:    vfnmsub231pd %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x49,0xbe,0xd1]1799; X86-NEXT:    ## zmm2 {%k1} = -(zmm0 * zmm1) - zmm21800; X86-NEXT:    vmovapd %zmm2, %zmm0 ## encoding: [0x62,0xf1,0xfd,0x48,0x28,0xc2]1801; X86-NEXT:    retl ## encoding: [0xc3]1802;1803; X64-LABEL: test_mm512_mask3_fnmsub_pd:1804; X64:       ## %bb.0: ## %entry1805; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1806; X64-NEXT:    vfnmsub231pd %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x49,0xbe,0xd1]1807; X64-NEXT:    ## zmm2 {%k1} = -(zmm0 * zmm1) - zmm21808; X64-NEXT:    vmovapd %zmm2, %zmm0 ## encoding: [0x62,0xf1,0xfd,0x48,0x28,0xc2]1809; X64-NEXT:    retq ## encoding: [0xc3]1810entry:1811  %sub.i = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__B1812  %sub2.i = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %__C1813  %0 = tail call <8 x double> @llvm.fma.v8f64(<8 x double> %__A, <8 x double> %sub.i, <8 x double> %sub2.i) #101814  %1 = bitcast i8 %__U to <8 x i1>1815  %2 = select <8 x i1> %1, <8 x double> %0, <8 x double> %__C1816  ret <8 x double> %21817}1818 1819define <16 x float> @test_mm512_mask_fnmsub_round_ps(<16 x float> %__A, i16 zeroext %__U, <16 x float> %__B, <16 x float> %__C) {1820; X86-LABEL: test_mm512_mask_fnmsub_round_ps:1821; X86:       ## %bb.0: ## %entry1822; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 ## encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]1823; X86-NEXT:    vfnmsub132ps {rn-sae}, %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0x6d,0x19,0x9e,0xc1]1824; X86-NEXT:    retl ## encoding: [0xc3]1825;1826; X64-LABEL: test_mm512_mask_fnmsub_round_ps:1827; X64:       ## %bb.0: ## %entry1828; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1829; X64-NEXT:    vfnmsub132ps {rn-sae}, %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0x6d,0x19,0x9e,0xc1]1830; X64-NEXT:    retq ## encoding: [0xc3]1831entry:1832  %sub = fsub <16 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, 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>, %__B1833  %sub1 = fsub <16 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, 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>, %__C1834  %0 = tail call <16 x float> @llvm.x86.avx512.vfmadd.ps.512(<16 x float> %__A, <16 x float> %sub, <16 x float> %sub1, i32 8)1835  %1 = bitcast i16 %__U to <16 x i1>1836  %2 = select <16 x i1> %1, <16 x float> %0, <16 x float> %__A1837  ret <16 x float> %21838}1839 1840define <16 x float> @test_mm512_mask3_fnmsub_round_ps(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C, i16 zeroext %__U) {1841; X86-LABEL: test_mm512_mask3_fnmsub_round_ps:1842; X86:       ## %bb.0: ## %entry1843; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 ## encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]1844; X86-NEXT:    vfnmsub231ps {rn-sae}, %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x19,0xbe,0xd1]1845; X86-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]1846; X86-NEXT:    retl ## encoding: [0xc3]1847;1848; X64-LABEL: test_mm512_mask3_fnmsub_round_ps:1849; X64:       ## %bb.0: ## %entry1850; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1851; X64-NEXT:    vfnmsub231ps {rn-sae}, %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x19,0xbe,0xd1]1852; X64-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]1853; X64-NEXT:    retq ## encoding: [0xc3]1854entry:1855  %sub = fsub <16 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, 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>, %__B1856  %sub1 = fsub <16 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, 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>, %__C1857  %0 = tail call <16 x float> @llvm.x86.avx512.vfmadd.ps.512(<16 x float> %__A, <16 x float> %sub, <16 x float> %sub1, i32 8)1858  %1 = bitcast i16 %__U to <16 x i1>1859  %2 = select <16 x i1> %1, <16 x float> %0, <16 x float> %__C1860  ret <16 x float> %21861}1862 1863define <16 x float> @test_mm512_mask_fnmsub_ps(<16 x float> %__A, i16 zeroext %__U, <16 x float> %__B, <16 x float> %__C) {1864; X86-LABEL: test_mm512_mask_fnmsub_ps:1865; X86:       ## %bb.0: ## %entry1866; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 ## encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]1867; X86-NEXT:    vfnmsub132ps %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0x6d,0x49,0x9e,0xc1]1868; X86-NEXT:    ## zmm0 {%k1} = -(zmm0 * zmm1) - zmm21869; X86-NEXT:    retl ## encoding: [0xc3]1870;1871; X64-LABEL: test_mm512_mask_fnmsub_ps:1872; X64:       ## %bb.0: ## %entry1873; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1874; X64-NEXT:    vfnmsub132ps %zmm1, %zmm2, %zmm0 {%k1} ## encoding: [0x62,0xf2,0x6d,0x49,0x9e,0xc1]1875; X64-NEXT:    ## zmm0 {%k1} = -(zmm0 * zmm1) - zmm21876; X64-NEXT:    retq ## encoding: [0xc3]1877entry:1878  %sub.i = fsub <16 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, 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>, %__B1879  %sub1.i = fsub <16 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, 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>, %__C1880  %0 = tail call <16 x float> @llvm.fma.v16f32(<16 x float> %__A, <16 x float> %sub.i, <16 x float> %sub1.i) #101881  %1 = bitcast i16 %__U to <16 x i1>1882  %2 = select <16 x i1> %1, <16 x float> %0, <16 x float> %__A1883  ret <16 x float> %21884}1885 1886define <16 x float> @test_mm512_mask3_fnmsub_ps(<16 x float> %__A, <16 x float> %__B, <16 x float> %__C, i16 zeroext %__U) {1887; X86-LABEL: test_mm512_mask3_fnmsub_ps:1888; X86:       ## %bb.0: ## %entry1889; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 ## encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]1890; X86-NEXT:    vfnmsub231ps %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x49,0xbe,0xd1]1891; X86-NEXT:    ## zmm2 {%k1} = -(zmm0 * zmm1) - zmm21892; X86-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]1893; X86-NEXT:    retl ## encoding: [0xc3]1894;1895; X64-LABEL: test_mm512_mask3_fnmsub_ps:1896; X64:       ## %bb.0: ## %entry1897; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1898; X64-NEXT:    vfnmsub231ps %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x49,0xbe,0xd1]1899; X64-NEXT:    ## zmm2 {%k1} = -(zmm0 * zmm1) - zmm21900; X64-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]1901; X64-NEXT:    retq ## encoding: [0xc3]1902entry:1903  %sub.i = fsub <16 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, 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>, %__B1904  %sub1.i = fsub <16 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, 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>, %__C1905  %0 = tail call <16 x float> @llvm.fma.v16f32(<16 x float> %__A, <16 x float> %sub.i, <16 x float> %sub1.i) #101906  %1 = bitcast i16 %__U to <16 x i1>1907  %2 = select <16 x i1> %1, <16 x float> %0, <16 x float> %__C1908  ret <16 x float> %21909}1910 1911define <4 x float> @test_mm_mask_fmadd_ss(<4 x float> %__W, i8 zeroext %__U, <4 x float> %__A, <4 x float> %__B) {1912; X86-LABEL: test_mm_mask_fmadd_ss:1913; X86:       ## %bb.0: ## %entry1914; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]1915; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]1916; X86-NEXT:    vfmadd213ss %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0x75,0x09,0xa9,0xc2]1917; X86-NEXT:    ## xmm0 {%k1} = (xmm1 * xmm0) + xmm21918; X86-NEXT:    retl ## encoding: [0xc3]1919;1920; X64-LABEL: test_mm_mask_fmadd_ss:1921; X64:       ## %bb.0: ## %entry1922; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1923; X64-NEXT:    vfmadd213ss %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0x75,0x09,0xa9,0xc2]1924; X64-NEXT:    ## xmm0 {%k1} = (xmm1 * xmm0) + xmm21925; X64-NEXT:    retq ## encoding: [0xc3]1926entry:1927  %0 = extractelement <4 x float> %__W, i64 01928  %1 = extractelement <4 x float> %__A, i64 01929  %2 = extractelement <4 x float> %__B, i64 01930  %3 = tail call float @llvm.fma.f32(float %0, float %1, float %2) #101931  %4 = and i8 %__U, 11932  %tobool.i = icmp eq i8 %4, 01933  %vecext1.i = extractelement <4 x float> %__W, i32 01934  %cond.i = select i1 %tobool.i, float %vecext1.i, float %31935  %vecins.i = insertelement <4 x float> %__W, float %cond.i, i32 01936  ret <4 x float> %vecins.i1937}1938 1939define <4 x float> @test_mm_mask_fmadd_round_ss(<4 x float> %__W, i8 zeroext %__U, <4 x float> %__A, <4 x float> %__B) {1940; X86-LABEL: test_mm_mask_fmadd_round_ss:1941; X86:       ## %bb.0: ## %entry1942; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]1943; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]1944; X86-NEXT:    vfmadd213ss %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0x75,0x09,0xa9,0xc2]1945; X86-NEXT:    ## xmm0 {%k1} = (xmm1 * xmm0) + xmm21946; X86-NEXT:    retl ## encoding: [0xc3]1947;1948; X64-LABEL: test_mm_mask_fmadd_round_ss:1949; X64:       ## %bb.0: ## %entry1950; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1951; X64-NEXT:    vfmadd213ss %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0x75,0x09,0xa9,0xc2]1952; X64-NEXT:    ## xmm0 {%k1} = (xmm1 * xmm0) + xmm21953; X64-NEXT:    retq ## encoding: [0xc3]1954entry:1955  %0 = tail call <4 x float> @llvm.x86.avx512.mask.vfmadd.ss(<4 x float> %__W, <4 x float> %__A, <4 x float> %__B, i8 %__U, i32 4)1956  ret <4 x float> %01957}1958 1959declare <4 x float> @llvm.x86.avx512.mask.vfmadd.ss(<4 x float>, <4 x float>, <4 x float>, i8, i32) #11960 1961define <4 x float> @test_mm_maskz_fmadd_ss(i8 zeroext %__U, <4 x float> %__A, <4 x float> %__B, <4 x float> %__C) {1962; X86-LABEL: test_mm_maskz_fmadd_ss:1963; X86:       ## %bb.0: ## %entry1964; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]1965; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]1966; X86-NEXT:    vfmadd213ss %xmm2, %xmm1, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0x89,0xa9,0xc2]1967; X86-NEXT:    ## xmm0 {%k1} {z} = (xmm1 * xmm0) + xmm21968; X86-NEXT:    retl ## encoding: [0xc3]1969;1970; X64-LABEL: test_mm_maskz_fmadd_ss:1971; X64:       ## %bb.0: ## %entry1972; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]1973; X64-NEXT:    vfmadd213ss %xmm2, %xmm1, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0x89,0xa9,0xc2]1974; X64-NEXT:    ## xmm0 {%k1} {z} = (xmm1 * xmm0) + xmm21975; X64-NEXT:    retq ## encoding: [0xc3]1976entry:1977  %0 = extractelement <4 x float> %__A, i64 01978  %1 = extractelement <4 x float> %__B, i64 01979  %2 = extractelement <4 x float> %__C, i64 01980  %3 = tail call float @llvm.fma.f32(float %0, float %1, float %2) #101981  %4 = and i8 %__U, 11982  %tobool.i = icmp eq i8 %4, 01983  %cond.i = select i1 %tobool.i, float 0.000000e+00, float %31984  %vecins.i = insertelement <4 x float> %__A, float %cond.i, i32 01985  ret <4 x float> %vecins.i1986}1987 1988define <4 x float> @test_mm_maskz_fmadd_round_ss(i8 zeroext %__U, <4 x float> %__A, <4 x float> %__B, <4 x float> %__C) {1989; X86-LABEL: test_mm_maskz_fmadd_round_ss:1990; X86:       ## %bb.0: ## %entry1991; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]1992; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]1993; X86-NEXT:    vfmadd213ss %xmm2, %xmm1, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0x89,0xa9,0xc2]1994; X86-NEXT:    ## xmm0 {%k1} {z} = (xmm1 * xmm0) + xmm21995; X86-NEXT:    retl ## encoding: [0xc3]1996;1997; X64-LABEL: test_mm_maskz_fmadd_round_ss:1998; X64:       ## %bb.0: ## %entry1999; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2000; X64-NEXT:    vfmadd213ss %xmm2, %xmm1, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0x89,0xa9,0xc2]2001; X64-NEXT:    ## xmm0 {%k1} {z} = (xmm1 * xmm0) + xmm22002; X64-NEXT:    retq ## encoding: [0xc3]2003entry:2004  %0 = tail call <4 x float> @llvm.x86.avx512.maskz.vfmadd.ss(<4 x float> %__A, <4 x float> %__B, <4 x float> %__C, i8 %__U, i32 4)2005  ret <4 x float> %02006}2007 2008declare <4 x float> @llvm.x86.avx512.maskz.vfmadd.ss(<4 x float>, <4 x float>, <4 x float>, i8, i32) #12009 2010define <4 x float> @test_mm_mask3_fmadd_ss(<4 x float> %__W, <4 x float> %__X, <4 x float> %__Y, i8 zeroext %__U) {2011; X86-LABEL: test_mm_mask3_fmadd_ss:2012; X86:       ## %bb.0: ## %entry2013; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2014; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2015; X86-NEXT:    vfmadd231ss %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0xb9,0xd1]2016; X86-NEXT:    ## xmm2 {%k1} = (xmm0 * xmm1) + xmm22017; X86-NEXT:    vmovaps %xmm2, %xmm0 ## encoding: [0xc5,0xf8,0x28,0xc2]2018; X86-NEXT:    retl ## encoding: [0xc3]2019;2020; X64-LABEL: test_mm_mask3_fmadd_ss:2021; X64:       ## %bb.0: ## %entry2022; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2023; X64-NEXT:    vfmadd231ss %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0xb9,0xd1]2024; X64-NEXT:    ## xmm2 {%k1} = (xmm0 * xmm1) + xmm22025; X64-NEXT:    vmovaps %xmm2, %xmm0 ## encoding: [0xc5,0xf8,0x28,0xc2]2026; X64-NEXT:    retq ## encoding: [0xc3]2027entry:2028  %0 = extractelement <4 x float> %__W, i64 02029  %1 = extractelement <4 x float> %__X, i64 02030  %2 = extractelement <4 x float> %__Y, i64 02031  %3 = tail call float @llvm.fma.f32(float %0, float %1, float %2) #102032  %4 = and i8 %__U, 12033  %tobool.i = icmp eq i8 %4, 02034  %vecext1.i = extractelement <4 x float> %__Y, i32 02035  %cond.i = select i1 %tobool.i, float %vecext1.i, float %32036  %vecins.i = insertelement <4 x float> %__Y, float %cond.i, i32 02037  ret <4 x float> %vecins.i2038}2039 2040define <4 x float> @test_mm_mask3_fmadd_round_ss(<4 x float> %__W, <4 x float> %__X, <4 x float> %__Y, i8 zeroext %__U) {2041; X86-LABEL: test_mm_mask3_fmadd_round_ss:2042; X86:       ## %bb.0: ## %entry2043; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2044; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2045; X86-NEXT:    vfmadd231ss %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0xb9,0xd1]2046; X86-NEXT:    ## xmm2 {%k1} = (xmm0 * xmm1) + xmm22047; X86-NEXT:    vmovaps %xmm2, %xmm0 ## encoding: [0xc5,0xf8,0x28,0xc2]2048; X86-NEXT:    retl ## encoding: [0xc3]2049;2050; X64-LABEL: test_mm_mask3_fmadd_round_ss:2051; X64:       ## %bb.0: ## %entry2052; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2053; X64-NEXT:    vfmadd231ss %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0xb9,0xd1]2054; X64-NEXT:    ## xmm2 {%k1} = (xmm0 * xmm1) + xmm22055; X64-NEXT:    vmovaps %xmm2, %xmm0 ## encoding: [0xc5,0xf8,0x28,0xc2]2056; X64-NEXT:    retq ## encoding: [0xc3]2057entry:2058  %0 = tail call <4 x float> @llvm.x86.avx512.mask3.vfmadd.ss(<4 x float> %__W, <4 x float> %__X, <4 x float> %__Y, i8 %__U, i32 4)2059  ret <4 x float> %02060}2061 2062declare <4 x float> @llvm.x86.avx512.mask3.vfmadd.ss(<4 x float>, <4 x float>, <4 x float>, i8, i32) #12063 2064define <4 x float> @test_mm_mask_fmsub_ss(<4 x float> %__W, i8 zeroext %__U, <4 x float> %__A, <4 x float> %__B) {2065; X86-LABEL: test_mm_mask_fmsub_ss:2066; X86:       ## %bb.0: ## %entry2067; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2068; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2069; X86-NEXT:    vfmsub213ss %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0x75,0x09,0xab,0xc2]2070; X86-NEXT:    ## xmm0 {%k1} = (xmm1 * xmm0) - xmm22071; X86-NEXT:    retl ## encoding: [0xc3]2072;2073; X64-LABEL: test_mm_mask_fmsub_ss:2074; X64:       ## %bb.0: ## %entry2075; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2076; X64-NEXT:    vfmsub213ss %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0x75,0x09,0xab,0xc2]2077; X64-NEXT:    ## xmm0 {%k1} = (xmm1 * xmm0) - xmm22078; X64-NEXT:    retq ## encoding: [0xc3]2079entry:2080  %0 = extractelement <4 x float> %__W, i64 02081  %1 = extractelement <4 x float> %__A, i64 02082  %.rhs.i = extractelement <4 x float> %__B, i64 02083  %2 = fsub float -0.000000e+00, %.rhs.i2084  %3 = tail call float @llvm.fma.f32(float %0, float %1, float %2) #102085  %4 = and i8 %__U, 12086  %tobool.i = icmp eq i8 %4, 02087  %vecext1.i = extractelement <4 x float> %__W, i32 02088  %cond.i = select i1 %tobool.i, float %vecext1.i, float %32089  %vecins.i = insertelement <4 x float> %__W, float %cond.i, i32 02090  ret <4 x float> %vecins.i2091}2092 2093define <4 x float> @test_mm_mask_fmsub_round_ss(<4 x float> %__W, i8 zeroext %__U, <4 x float> %__A, <4 x float> %__B) {2094; X86-LABEL: test_mm_mask_fmsub_round_ss:2095; X86:       ## %bb.0: ## %entry2096; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2097; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2098; X86-NEXT:    vfmsub213ss %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0x75,0x09,0xab,0xc2]2099; X86-NEXT:    ## xmm0 {%k1} = (xmm1 * xmm0) - xmm22100; X86-NEXT:    retl ## encoding: [0xc3]2101;2102; X64-LABEL: test_mm_mask_fmsub_round_ss:2103; X64:       ## %bb.0: ## %entry2104; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2105; X64-NEXT:    vfmsub213ss %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0x75,0x09,0xab,0xc2]2106; X64-NEXT:    ## xmm0 {%k1} = (xmm1 * xmm0) - xmm22107; X64-NEXT:    retq ## encoding: [0xc3]2108entry:2109  %sub = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__B2110  %0 = tail call <4 x float> @llvm.x86.avx512.mask.vfmadd.ss(<4 x float> %__W, <4 x float> %__A, <4 x float> %sub, i8 %__U, i32 4)2111  ret <4 x float> %02112}2113 2114define <4 x float> @test_mm_maskz_fmsub_ss(i8 zeroext %__U, <4 x float> %__A, <4 x float> %__B, <4 x float> %__C) {2115; X86-LABEL: test_mm_maskz_fmsub_ss:2116; X86:       ## %bb.0: ## %entry2117; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2118; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2119; X86-NEXT:    vfmsub213ss %xmm2, %xmm1, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0x89,0xab,0xc2]2120; X86-NEXT:    ## xmm0 {%k1} {z} = (xmm1 * xmm0) - xmm22121; X86-NEXT:    retl ## encoding: [0xc3]2122;2123; X64-LABEL: test_mm_maskz_fmsub_ss:2124; X64:       ## %bb.0: ## %entry2125; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2126; X64-NEXT:    vfmsub213ss %xmm2, %xmm1, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0x89,0xab,0xc2]2127; X64-NEXT:    ## xmm0 {%k1} {z} = (xmm1 * xmm0) - xmm22128; X64-NEXT:    retq ## encoding: [0xc3]2129entry:2130  %0 = extractelement <4 x float> %__A, i64 02131  %1 = extractelement <4 x float> %__B, i64 02132  %.rhs.i = extractelement <4 x float> %__C, i64 02133  %2 = fsub float -0.000000e+00, %.rhs.i2134  %3 = tail call float @llvm.fma.f32(float %0, float %1, float %2) #102135  %4 = and i8 %__U, 12136  %tobool.i = icmp eq i8 %4, 02137  %cond.i = select i1 %tobool.i, float 0.000000e+00, float %32138  %vecins.i = insertelement <4 x float> %__A, float %cond.i, i32 02139  ret <4 x float> %vecins.i2140}2141 2142define <4 x float> @test_mm_maskz_fmsub_round_ss(i8 zeroext %__U, <4 x float> %__A, <4 x float> %__B, <4 x float> %__C) {2143; X86-LABEL: test_mm_maskz_fmsub_round_ss:2144; X86:       ## %bb.0: ## %entry2145; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2146; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2147; X86-NEXT:    vfmsub213ss %xmm2, %xmm1, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0x89,0xab,0xc2]2148; X86-NEXT:    ## xmm0 {%k1} {z} = (xmm1 * xmm0) - xmm22149; X86-NEXT:    retl ## encoding: [0xc3]2150;2151; X64-LABEL: test_mm_maskz_fmsub_round_ss:2152; X64:       ## %bb.0: ## %entry2153; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2154; X64-NEXT:    vfmsub213ss %xmm2, %xmm1, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0x89,0xab,0xc2]2155; X64-NEXT:    ## xmm0 {%k1} {z} = (xmm1 * xmm0) - xmm22156; X64-NEXT:    retq ## encoding: [0xc3]2157entry:2158  %sub = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__C2159  %0 = tail call <4 x float> @llvm.x86.avx512.maskz.vfmadd.ss(<4 x float> %__A, <4 x float> %__B, <4 x float> %sub, i8 %__U, i32 4)2160  ret <4 x float> %02161}2162 2163define <4 x float> @test_mm_mask3_fmsub_ss(<4 x float> %__W, <4 x float> %__X, <4 x float> %__Y, i8 zeroext %__U) {2164; X86-LABEL: test_mm_mask3_fmsub_ss:2165; X86:       ## %bb.0: ## %entry2166; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2167; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2168; X86-NEXT:    vfmsub231ss %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0xbb,0xd1]2169; X86-NEXT:    ## xmm2 {%k1} = (xmm0 * xmm1) - xmm22170; X86-NEXT:    vmovaps %xmm2, %xmm0 ## encoding: [0xc5,0xf8,0x28,0xc2]2171; X86-NEXT:    retl ## encoding: [0xc3]2172;2173; X64-LABEL: test_mm_mask3_fmsub_ss:2174; X64:       ## %bb.0: ## %entry2175; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2176; X64-NEXT:    vfmsub231ss %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0xbb,0xd1]2177; X64-NEXT:    ## xmm2 {%k1} = (xmm0 * xmm1) - xmm22178; X64-NEXT:    vmovaps %xmm2, %xmm0 ## encoding: [0xc5,0xf8,0x28,0xc2]2179; X64-NEXT:    retq ## encoding: [0xc3]2180entry:2181  %0 = extractelement <4 x float> %__W, i64 02182  %1 = extractelement <4 x float> %__X, i64 02183  %.rhs.i = extractelement <4 x float> %__Y, i64 02184  %2 = fsub float -0.000000e+00, %.rhs.i2185  %3 = tail call float @llvm.fma.f32(float %0, float %1, float %2) #102186  %4 = and i8 %__U, 12187  %tobool.i = icmp eq i8 %4, 02188  %vecext1.i = extractelement <4 x float> %__Y, i32 02189  %cond.i = select i1 %tobool.i, float %vecext1.i, float %32190  %vecins.i = insertelement <4 x float> %__Y, float %cond.i, i32 02191  ret <4 x float> %vecins.i2192}2193 2194define <4 x float> @test_mm_mask3_fmsub_round_ss(<4 x float> %__W, <4 x float> %__X, <4 x float> %__Y, i8 zeroext %__U) {2195; X86-LABEL: test_mm_mask3_fmsub_round_ss:2196; X86:       ## %bb.0: ## %entry2197; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2198; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2199; X86-NEXT:    vfmsub231ss %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0xbb,0xd1]2200; X86-NEXT:    ## xmm2 {%k1} = (xmm0 * xmm1) - xmm22201; X86-NEXT:    vmovaps %xmm2, %xmm0 ## encoding: [0xc5,0xf8,0x28,0xc2]2202; X86-NEXT:    retl ## encoding: [0xc3]2203;2204; X64-LABEL: test_mm_mask3_fmsub_round_ss:2205; X64:       ## %bb.0: ## %entry2206; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2207; X64-NEXT:    vfmsub231ss %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0xbb,0xd1]2208; X64-NEXT:    ## xmm2 {%k1} = (xmm0 * xmm1) - xmm22209; X64-NEXT:    vmovaps %xmm2, %xmm0 ## encoding: [0xc5,0xf8,0x28,0xc2]2210; X64-NEXT:    retq ## encoding: [0xc3]2211entry:2212  %0 = tail call <4 x float> @llvm.x86.avx512.mask3.vfmsub.ss(<4 x float> %__W, <4 x float> %__X, <4 x float> %__Y, i8 %__U, i32 4)2213  ret <4 x float> %02214}2215 2216declare <4 x float> @llvm.x86.avx512.mask3.vfmsub.ss(<4 x float>, <4 x float>, <4 x float>, i8, i32) #12217 2218define <4 x float> @test_mm_mask_fnmadd_ss(<4 x float> %__W, i8 zeroext %__U, <4 x float> %__A, <4 x float> %__B) {2219; X86-LABEL: test_mm_mask_fnmadd_ss:2220; X86:       ## %bb.0: ## %entry2221; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2222; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2223; X86-NEXT:    vfnmadd213ss %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0x75,0x09,0xad,0xc2]2224; X86-NEXT:    ## xmm0 {%k1} = -(xmm1 * xmm0) + xmm22225; X86-NEXT:    retl ## encoding: [0xc3]2226;2227; X64-LABEL: test_mm_mask_fnmadd_ss:2228; X64:       ## %bb.0: ## %entry2229; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2230; X64-NEXT:    vfnmadd213ss %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0x75,0x09,0xad,0xc2]2231; X64-NEXT:    ## xmm0 {%k1} = -(xmm1 * xmm0) + xmm22232; X64-NEXT:    retq ## encoding: [0xc3]2233entry:2234  %0 = extractelement <4 x float> %__W, i64 02235  %.rhs.i = extractelement <4 x float> %__A, i64 02236  %1 = fsub float -0.000000e+00, %.rhs.i2237  %2 = extractelement <4 x float> %__B, i64 02238  %3 = tail call float @llvm.fma.f32(float %0, float %1, float %2) #102239  %4 = and i8 %__U, 12240  %tobool.i = icmp eq i8 %4, 02241  %vecext1.i = extractelement <4 x float> %__W, i32 02242  %cond.i = select i1 %tobool.i, float %vecext1.i, float %32243  %vecins.i = insertelement <4 x float> %__W, float %cond.i, i32 02244  ret <4 x float> %vecins.i2245}2246 2247define <4 x float> @test_mm_mask_fnmadd_round_ss(<4 x float> %__W, i8 zeroext %__U, <4 x float> %__A, <4 x float> %__B) {2248; X86-LABEL: test_mm_mask_fnmadd_round_ss:2249; X86:       ## %bb.0: ## %entry2250; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2251; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2252; X86-NEXT:    vfnmadd213ss %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0x75,0x09,0xad,0xc2]2253; X86-NEXT:    ## xmm0 {%k1} = -(xmm1 * xmm0) + xmm22254; X86-NEXT:    retl ## encoding: [0xc3]2255;2256; X64-LABEL: test_mm_mask_fnmadd_round_ss:2257; X64:       ## %bb.0: ## %entry2258; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2259; X64-NEXT:    vfnmadd213ss %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0x75,0x09,0xad,0xc2]2260; X64-NEXT:    ## xmm0 {%k1} = -(xmm1 * xmm0) + xmm22261; X64-NEXT:    retq ## encoding: [0xc3]2262entry:2263  %sub = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__A2264  %0 = tail call <4 x float> @llvm.x86.avx512.mask.vfmadd.ss(<4 x float> %__W, <4 x float> %sub, <4 x float> %__B, i8 %__U, i32 4)2265  ret <4 x float> %02266}2267 2268define <4 x float> @test_mm_maskz_fnmadd_ss(i8 zeroext %__U, <4 x float> %__A, <4 x float> %__B, <4 x float> %__C) {2269; X86-LABEL: test_mm_maskz_fnmadd_ss:2270; X86:       ## %bb.0: ## %entry2271; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2272; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2273; X86-NEXT:    vfnmadd213ss %xmm2, %xmm1, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0x89,0xad,0xc2]2274; X86-NEXT:    ## xmm0 {%k1} {z} = -(xmm1 * xmm0) + xmm22275; X86-NEXT:    retl ## encoding: [0xc3]2276;2277; X64-LABEL: test_mm_maskz_fnmadd_ss:2278; X64:       ## %bb.0: ## %entry2279; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2280; X64-NEXT:    vfnmadd213ss %xmm2, %xmm1, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0x89,0xad,0xc2]2281; X64-NEXT:    ## xmm0 {%k1} {z} = -(xmm1 * xmm0) + xmm22282; X64-NEXT:    retq ## encoding: [0xc3]2283entry:2284  %0 = extractelement <4 x float> %__A, i64 02285  %.rhs.i = extractelement <4 x float> %__B, i64 02286  %1 = fsub float -0.000000e+00, %.rhs.i2287  %2 = extractelement <4 x float> %__C, i64 02288  %3 = tail call float @llvm.fma.f32(float %0, float %1, float %2) #102289  %4 = and i8 %__U, 12290  %tobool.i = icmp eq i8 %4, 02291  %cond.i = select i1 %tobool.i, float 0.000000e+00, float %32292  %vecins.i = insertelement <4 x float> %__A, float %cond.i, i32 02293  ret <4 x float> %vecins.i2294}2295 2296define <4 x float> @test_mm_maskz_fnmadd_round_ss(i8 zeroext %__U, <4 x float> %__A, <4 x float> %__B, <4 x float> %__C) {2297; X86-LABEL: test_mm_maskz_fnmadd_round_ss:2298; X86:       ## %bb.0: ## %entry2299; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2300; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2301; X86-NEXT:    vfnmadd213ss %xmm2, %xmm1, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0x89,0xad,0xc2]2302; X86-NEXT:    ## xmm0 {%k1} {z} = -(xmm1 * xmm0) + xmm22303; X86-NEXT:    retl ## encoding: [0xc3]2304;2305; X64-LABEL: test_mm_maskz_fnmadd_round_ss:2306; X64:       ## %bb.0: ## %entry2307; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2308; X64-NEXT:    vfnmadd213ss %xmm2, %xmm1, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0x89,0xad,0xc2]2309; X64-NEXT:    ## xmm0 {%k1} {z} = -(xmm1 * xmm0) + xmm22310; X64-NEXT:    retq ## encoding: [0xc3]2311entry:2312  %sub = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__B2313  %0 = tail call <4 x float> @llvm.x86.avx512.maskz.vfmadd.ss(<4 x float> %__A, <4 x float> %sub, <4 x float> %__C, i8 %__U, i32 4)2314  ret <4 x float> %02315}2316 2317define <4 x float> @test_mm_mask3_fnmadd_ss(<4 x float> %__W, <4 x float> %__X, <4 x float> %__Y, i8 zeroext %__U) {2318; X86-LABEL: test_mm_mask3_fnmadd_ss:2319; X86:       ## %bb.0: ## %entry2320; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2321; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2322; X86-NEXT:    vfnmadd231ss %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0xbd,0xd1]2323; X86-NEXT:    ## xmm2 {%k1} = -(xmm0 * xmm1) + xmm22324; X86-NEXT:    vmovaps %xmm2, %xmm0 ## encoding: [0xc5,0xf8,0x28,0xc2]2325; X86-NEXT:    retl ## encoding: [0xc3]2326;2327; X64-LABEL: test_mm_mask3_fnmadd_ss:2328; X64:       ## %bb.0: ## %entry2329; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2330; X64-NEXT:    vfnmadd231ss %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0xbd,0xd1]2331; X64-NEXT:    ## xmm2 {%k1} = -(xmm0 * xmm1) + xmm22332; X64-NEXT:    vmovaps %xmm2, %xmm0 ## encoding: [0xc5,0xf8,0x28,0xc2]2333; X64-NEXT:    retq ## encoding: [0xc3]2334entry:2335  %0 = extractelement <4 x float> %__W, i64 02336  %.rhs.i = extractelement <4 x float> %__X, i64 02337  %1 = fsub float -0.000000e+00, %.rhs.i2338  %2 = extractelement <4 x float> %__Y, i64 02339  %3 = tail call float @llvm.fma.f32(float %0, float %1, float %2) #102340  %4 = and i8 %__U, 12341  %tobool.i = icmp eq i8 %4, 02342  %vecext1.i = extractelement <4 x float> %__Y, i32 02343  %cond.i = select i1 %tobool.i, float %vecext1.i, float %32344  %vecins.i = insertelement <4 x float> %__Y, float %cond.i, i32 02345  ret <4 x float> %vecins.i2346}2347 2348define <4 x float> @test_mm_mask3_fnmadd_round_ss(<4 x float> %__W, <4 x float> %__X, <4 x float> %__Y, i8 zeroext %__U) {2349; X86-LABEL: test_mm_mask3_fnmadd_round_ss:2350; X86:       ## %bb.0: ## %entry2351; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2352; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2353; X86-NEXT:    vfnmadd231ss %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0xbd,0xd1]2354; X86-NEXT:    ## xmm2 {%k1} = -(xmm0 * xmm1) + xmm22355; X86-NEXT:    vmovaps %xmm2, %xmm0 ## encoding: [0xc5,0xf8,0x28,0xc2]2356; X86-NEXT:    retl ## encoding: [0xc3]2357;2358; X64-LABEL: test_mm_mask3_fnmadd_round_ss:2359; X64:       ## %bb.0: ## %entry2360; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2361; X64-NEXT:    vfnmadd231ss %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0xbd,0xd1]2362; X64-NEXT:    ## xmm2 {%k1} = -(xmm0 * xmm1) + xmm22363; X64-NEXT:    vmovaps %xmm2, %xmm0 ## encoding: [0xc5,0xf8,0x28,0xc2]2364; X64-NEXT:    retq ## encoding: [0xc3]2365entry:2366  %sub = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__X2367  %0 = tail call <4 x float> @llvm.x86.avx512.mask3.vfmadd.ss(<4 x float> %__W, <4 x float> %sub, <4 x float> %__Y, i8 %__U, i32 4)2368  ret <4 x float> %02369}2370 2371define <4 x float> @test_mm_mask_fnmsub_ss(<4 x float> %__W, i8 zeroext %__U, <4 x float> %__A, <4 x float> %__B) {2372; X86-LABEL: test_mm_mask_fnmsub_ss:2373; X86:       ## %bb.0: ## %entry2374; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2375; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2376; X86-NEXT:    vfnmsub213ss %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0x75,0x09,0xaf,0xc2]2377; X86-NEXT:    ## xmm0 {%k1} = -(xmm1 * xmm0) - xmm22378; X86-NEXT:    retl ## encoding: [0xc3]2379;2380; X64-LABEL: test_mm_mask_fnmsub_ss:2381; X64:       ## %bb.0: ## %entry2382; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2383; X64-NEXT:    vfnmsub213ss %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0x75,0x09,0xaf,0xc2]2384; X64-NEXT:    ## xmm0 {%k1} = -(xmm1 * xmm0) - xmm22385; X64-NEXT:    retq ## encoding: [0xc3]2386entry:2387  %0 = extractelement <4 x float> %__W, i64 02388  %.rhs.i = extractelement <4 x float> %__A, i64 02389  %1 = fsub float -0.000000e+00, %.rhs.i2390  %.rhs7.i = extractelement <4 x float> %__B, i64 02391  %2 = fsub float -0.000000e+00, %.rhs7.i2392  %3 = tail call float @llvm.fma.f32(float %0, float %1, float %2) #102393  %4 = and i8 %__U, 12394  %tobool.i = icmp eq i8 %4, 02395  %vecext2.i = extractelement <4 x float> %__W, i32 02396  %cond.i = select i1 %tobool.i, float %vecext2.i, float %32397  %vecins.i = insertelement <4 x float> %__W, float %cond.i, i32 02398  ret <4 x float> %vecins.i2399}2400 2401define <4 x float> @test_mm_mask_fnmsub_round_ss(<4 x float> %__W, i8 zeroext %__U, <4 x float> %__A, <4 x float> %__B) {2402; X86-LABEL: test_mm_mask_fnmsub_round_ss:2403; X86:       ## %bb.0: ## %entry2404; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2405; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2406; X86-NEXT:    vfnmsub213ss %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0x75,0x09,0xaf,0xc2]2407; X86-NEXT:    ## xmm0 {%k1} = -(xmm1 * xmm0) - xmm22408; X86-NEXT:    retl ## encoding: [0xc3]2409;2410; X64-LABEL: test_mm_mask_fnmsub_round_ss:2411; X64:       ## %bb.0: ## %entry2412; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2413; X64-NEXT:    vfnmsub213ss %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0x75,0x09,0xaf,0xc2]2414; X64-NEXT:    ## xmm0 {%k1} = -(xmm1 * xmm0) - xmm22415; X64-NEXT:    retq ## encoding: [0xc3]2416entry:2417  %sub = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__A2418  %sub1 = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__B2419  %0 = tail call <4 x float> @llvm.x86.avx512.mask.vfmadd.ss(<4 x float> %__W, <4 x float> %sub, <4 x float> %sub1, i8 %__U, i32 4)2420  ret <4 x float> %02421}2422 2423define <4 x float> @test_mm_maskz_fnmsub_ss(i8 zeroext %__U, <4 x float> %__A, <4 x float> %__B, <4 x float> %__C) {2424; X86-LABEL: test_mm_maskz_fnmsub_ss:2425; X86:       ## %bb.0: ## %entry2426; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2427; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2428; X86-NEXT:    vfnmsub213ss %xmm2, %xmm1, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0x89,0xaf,0xc2]2429; X86-NEXT:    ## xmm0 {%k1} {z} = -(xmm1 * xmm0) - xmm22430; X86-NEXT:    retl ## encoding: [0xc3]2431;2432; X64-LABEL: test_mm_maskz_fnmsub_ss:2433; X64:       ## %bb.0: ## %entry2434; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2435; X64-NEXT:    vfnmsub213ss %xmm2, %xmm1, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0x89,0xaf,0xc2]2436; X64-NEXT:    ## xmm0 {%k1} {z} = -(xmm1 * xmm0) - xmm22437; X64-NEXT:    retq ## encoding: [0xc3]2438entry:2439  %0 = extractelement <4 x float> %__A, i64 02440  %.rhs.i = extractelement <4 x float> %__B, i64 02441  %1 = fsub float -0.000000e+00, %.rhs.i2442  %.rhs5.i = extractelement <4 x float> %__C, i64 02443  %2 = fsub float -0.000000e+00, %.rhs5.i2444  %3 = tail call float @llvm.fma.f32(float %0, float %1, float %2) #102445  %4 = and i8 %__U, 12446  %tobool.i = icmp eq i8 %4, 02447  %cond.i = select i1 %tobool.i, float 0.000000e+00, float %32448  %vecins.i = insertelement <4 x float> %__A, float %cond.i, i32 02449  ret <4 x float> %vecins.i2450}2451 2452define <4 x float> @test_mm_maskz_fnmsub_round_ss(i8 zeroext %__U, <4 x float> %__A, <4 x float> %__B, <4 x float> %__C) {2453; X86-LABEL: test_mm_maskz_fnmsub_round_ss:2454; X86:       ## %bb.0: ## %entry2455; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2456; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2457; X86-NEXT:    vfnmsub213ss %xmm2, %xmm1, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0x89,0xaf,0xc2]2458; X86-NEXT:    ## xmm0 {%k1} {z} = -(xmm1 * xmm0) - xmm22459; X86-NEXT:    retl ## encoding: [0xc3]2460;2461; X64-LABEL: test_mm_maskz_fnmsub_round_ss:2462; X64:       ## %bb.0: ## %entry2463; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2464; X64-NEXT:    vfnmsub213ss %xmm2, %xmm1, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0x89,0xaf,0xc2]2465; X64-NEXT:    ## xmm0 {%k1} {z} = -(xmm1 * xmm0) - xmm22466; X64-NEXT:    retq ## encoding: [0xc3]2467entry:2468  %sub = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__B2469  %sub1 = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__C2470  %0 = tail call <4 x float> @llvm.x86.avx512.maskz.vfmadd.ss(<4 x float> %__A, <4 x float> %sub, <4 x float> %sub1, i8 %__U, i32 4)2471  ret <4 x float> %02472}2473 2474define <4 x float> @test_mm_mask3_fnmsub_ss(<4 x float> %__W, <4 x float> %__X, <4 x float> %__Y, i8 zeroext %__U) {2475; X86-LABEL: test_mm_mask3_fnmsub_ss:2476; X86:       ## %bb.0: ## %entry2477; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2478; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2479; X86-NEXT:    vfnmsub231ss %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0xbf,0xd1]2480; X86-NEXT:    ## xmm2 {%k1} = -(xmm0 * xmm1) - xmm22481; X86-NEXT:    vmovaps %xmm2, %xmm0 ## encoding: [0xc5,0xf8,0x28,0xc2]2482; X86-NEXT:    retl ## encoding: [0xc3]2483;2484; X64-LABEL: test_mm_mask3_fnmsub_ss:2485; X64:       ## %bb.0: ## %entry2486; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2487; X64-NEXT:    vfnmsub231ss %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0xbf,0xd1]2488; X64-NEXT:    ## xmm2 {%k1} = -(xmm0 * xmm1) - xmm22489; X64-NEXT:    vmovaps %xmm2, %xmm0 ## encoding: [0xc5,0xf8,0x28,0xc2]2490; X64-NEXT:    retq ## encoding: [0xc3]2491entry:2492  %0 = extractelement <4 x float> %__W, i64 02493  %.rhs.i = extractelement <4 x float> %__X, i64 02494  %1 = fsub float -0.000000e+00, %.rhs.i2495  %.rhs7.i = extractelement <4 x float> %__Y, i64 02496  %2 = fsub float -0.000000e+00, %.rhs7.i2497  %3 = tail call float @llvm.fma.f32(float %0, float %1, float %2) #102498  %4 = and i8 %__U, 12499  %tobool.i = icmp eq i8 %4, 02500  %vecext2.i = extractelement <4 x float> %__Y, i32 02501  %cond.i = select i1 %tobool.i, float %vecext2.i, float %32502  %vecins.i = insertelement <4 x float> %__Y, float %cond.i, i32 02503  ret <4 x float> %vecins.i2504}2505 2506define <4 x float> @test_mm_mask3_fnmsub_round_ss(<4 x float> %__W, <4 x float> %__X, <4 x float> %__Y, i8 zeroext %__U) {2507; X86-LABEL: test_mm_mask3_fnmsub_round_ss:2508; X86:       ## %bb.0: ## %entry2509; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2510; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2511; X86-NEXT:    vfnmsub231ss %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0xbf,0xd1]2512; X86-NEXT:    ## xmm2 {%k1} = -(xmm0 * xmm1) - xmm22513; X86-NEXT:    vmovaps %xmm2, %xmm0 ## encoding: [0xc5,0xf8,0x28,0xc2]2514; X86-NEXT:    retl ## encoding: [0xc3]2515;2516; X64-LABEL: test_mm_mask3_fnmsub_round_ss:2517; X64:       ## %bb.0: ## %entry2518; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2519; X64-NEXT:    vfnmsub231ss %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0xbf,0xd1]2520; X64-NEXT:    ## xmm2 {%k1} = -(xmm0 * xmm1) - xmm22521; X64-NEXT:    vmovaps %xmm2, %xmm0 ## encoding: [0xc5,0xf8,0x28,0xc2]2522; X64-NEXT:    retq ## encoding: [0xc3]2523entry:2524  %sub = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %__X2525  %0 = tail call <4 x float> @llvm.x86.avx512.mask3.vfmsub.ss(<4 x float> %__W, <4 x float> %sub, <4 x float> %__Y, i8 %__U, i32 4)2526  ret <4 x float> %02527}2528 2529define <2 x double> @test_mm_mask_fmadd_sd(<2 x double> %__W, i8 zeroext %__U, <2 x double> %__A, <2 x double> %__B) {2530; X86-LABEL: test_mm_mask_fmadd_sd:2531; X86:       ## %bb.0: ## %entry2532; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2533; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2534; X86-NEXT:    vfmadd213sd %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0xf5,0x09,0xa9,0xc2]2535; X86-NEXT:    ## xmm0 {%k1} = (xmm1 * xmm0) + xmm22536; X86-NEXT:    retl ## encoding: [0xc3]2537;2538; X64-LABEL: test_mm_mask_fmadd_sd:2539; X64:       ## %bb.0: ## %entry2540; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2541; X64-NEXT:    vfmadd213sd %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0xf5,0x09,0xa9,0xc2]2542; X64-NEXT:    ## xmm0 {%k1} = (xmm1 * xmm0) + xmm22543; X64-NEXT:    retq ## encoding: [0xc3]2544entry:2545  %0 = extractelement <2 x double> %__W, i64 02546  %1 = extractelement <2 x double> %__A, i64 02547  %2 = extractelement <2 x double> %__B, i64 02548  %3 = tail call double @llvm.fma.f64(double %0, double %1, double %2) #102549  %4 = and i8 %__U, 12550  %tobool.i = icmp eq i8 %4, 02551  %vecext1.i = extractelement <2 x double> %__W, i32 02552  %cond.i = select i1 %tobool.i, double %vecext1.i, double %32553  %vecins.i = insertelement <2 x double> %__W, double %cond.i, i32 02554  ret <2 x double> %vecins.i2555}2556 2557define <2 x double> @test_mm_mask_fmadd_round_sd(<2 x double> %__W, i8 zeroext %__U, <2 x double> %__A, <2 x double> %__B) {2558; X86-LABEL: test_mm_mask_fmadd_round_sd:2559; X86:       ## %bb.0: ## %entry2560; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2561; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2562; X86-NEXT:    vfmadd213sd %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0xf5,0x09,0xa9,0xc2]2563; X86-NEXT:    ## xmm0 {%k1} = (xmm1 * xmm0) + xmm22564; X86-NEXT:    retl ## encoding: [0xc3]2565;2566; X64-LABEL: test_mm_mask_fmadd_round_sd:2567; X64:       ## %bb.0: ## %entry2568; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2569; X64-NEXT:    vfmadd213sd %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0xf5,0x09,0xa9,0xc2]2570; X64-NEXT:    ## xmm0 {%k1} = (xmm1 * xmm0) + xmm22571; X64-NEXT:    retq ## encoding: [0xc3]2572entry:2573  %0 = tail call <2 x double> @llvm.x86.avx512.mask.vfmadd.sd(<2 x double> %__W, <2 x double> %__A, <2 x double> %__B, i8 %__U, i32 4)2574  ret <2 x double> %02575}2576 2577declare <2 x double> @llvm.x86.avx512.mask.vfmadd.sd(<2 x double>, <2 x double>, <2 x double>, i8, i32) #12578 2579define <2 x double> @test_mm_maskz_fmadd_sd(i8 zeroext %__U, <2 x double> %__A, <2 x double> %__B, <2 x double> %__C) {2580; X86-LABEL: test_mm_maskz_fmadd_sd:2581; X86:       ## %bb.0: ## %entry2582; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2583; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2584; X86-NEXT:    vfmadd213sd %xmm2, %xmm1, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0x89,0xa9,0xc2]2585; X86-NEXT:    ## xmm0 {%k1} {z} = (xmm1 * xmm0) + xmm22586; X86-NEXT:    retl ## encoding: [0xc3]2587;2588; X64-LABEL: test_mm_maskz_fmadd_sd:2589; X64:       ## %bb.0: ## %entry2590; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2591; X64-NEXT:    vfmadd213sd %xmm2, %xmm1, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0x89,0xa9,0xc2]2592; X64-NEXT:    ## xmm0 {%k1} {z} = (xmm1 * xmm0) + xmm22593; X64-NEXT:    retq ## encoding: [0xc3]2594entry:2595  %0 = extractelement <2 x double> %__A, i64 02596  %1 = extractelement <2 x double> %__B, i64 02597  %2 = extractelement <2 x double> %__C, i64 02598  %3 = tail call double @llvm.fma.f64(double %0, double %1, double %2) #102599  %4 = and i8 %__U, 12600  %tobool.i = icmp eq i8 %4, 02601  %cond.i = select i1 %tobool.i, double 0.000000e+00, double %32602  %vecins.i = insertelement <2 x double> %__A, double %cond.i, i32 02603  ret <2 x double> %vecins.i2604}2605 2606define <2 x double> @test_mm_maskz_fmadd_round_sd(i8 zeroext %__U, <2 x double> %__A, <2 x double> %__B, <2 x double> %__C) {2607; X86-LABEL: test_mm_maskz_fmadd_round_sd:2608; X86:       ## %bb.0: ## %entry2609; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2610; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2611; X86-NEXT:    vfmadd213sd %xmm2, %xmm1, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0x89,0xa9,0xc2]2612; X86-NEXT:    ## xmm0 {%k1} {z} = (xmm1 * xmm0) + xmm22613; X86-NEXT:    retl ## encoding: [0xc3]2614;2615; X64-LABEL: test_mm_maskz_fmadd_round_sd:2616; X64:       ## %bb.0: ## %entry2617; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2618; X64-NEXT:    vfmadd213sd %xmm2, %xmm1, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0x89,0xa9,0xc2]2619; X64-NEXT:    ## xmm0 {%k1} {z} = (xmm1 * xmm0) + xmm22620; X64-NEXT:    retq ## encoding: [0xc3]2621entry:2622  %0 = tail call <2 x double> @llvm.x86.avx512.maskz.vfmadd.sd(<2 x double> %__A, <2 x double> %__B, <2 x double> %__C, i8 %__U, i32 4)2623  ret <2 x double> %02624}2625 2626declare <2 x double> @llvm.x86.avx512.maskz.vfmadd.sd(<2 x double>, <2 x double>, <2 x double>, i8, i32) #12627 2628define <2 x double> @test_mm_mask3_fmadd_sd(<2 x double> %__W, <2 x double> %__X, <2 x double> %__Y, i8 zeroext %__U) {2629; X86-LABEL: test_mm_mask3_fmadd_sd:2630; X86:       ## %bb.0: ## %entry2631; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2632; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2633; X86-NEXT:    vfmadd231sd %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0xb9,0xd1]2634; X86-NEXT:    ## xmm2 {%k1} = (xmm0 * xmm1) + xmm22635; X86-NEXT:    vmovapd %xmm2, %xmm0 ## encoding: [0xc5,0xf9,0x28,0xc2]2636; X86-NEXT:    retl ## encoding: [0xc3]2637;2638; X64-LABEL: test_mm_mask3_fmadd_sd:2639; X64:       ## %bb.0: ## %entry2640; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2641; X64-NEXT:    vfmadd231sd %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0xb9,0xd1]2642; X64-NEXT:    ## xmm2 {%k1} = (xmm0 * xmm1) + xmm22643; X64-NEXT:    vmovapd %xmm2, %xmm0 ## encoding: [0xc5,0xf9,0x28,0xc2]2644; X64-NEXT:    retq ## encoding: [0xc3]2645entry:2646  %0 = extractelement <2 x double> %__W, i64 02647  %1 = extractelement <2 x double> %__X, i64 02648  %2 = extractelement <2 x double> %__Y, i64 02649  %3 = tail call double @llvm.fma.f64(double %0, double %1, double %2) #102650  %4 = and i8 %__U, 12651  %tobool.i = icmp eq i8 %4, 02652  %vecext1.i = extractelement <2 x double> %__Y, i32 02653  %cond.i = select i1 %tobool.i, double %vecext1.i, double %32654  %vecins.i = insertelement <2 x double> %__Y, double %cond.i, i32 02655  ret <2 x double> %vecins.i2656}2657 2658define <2 x double> @test_mm_mask3_fmadd_round_sd(<2 x double> %__W, <2 x double> %__X, <2 x double> %__Y, i8 zeroext %__U) {2659; X86-LABEL: test_mm_mask3_fmadd_round_sd:2660; X86:       ## %bb.0: ## %entry2661; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2662; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2663; X86-NEXT:    vfmadd231sd %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0xb9,0xd1]2664; X86-NEXT:    ## xmm2 {%k1} = (xmm0 * xmm1) + xmm22665; X86-NEXT:    vmovapd %xmm2, %xmm0 ## encoding: [0xc5,0xf9,0x28,0xc2]2666; X86-NEXT:    retl ## encoding: [0xc3]2667;2668; X64-LABEL: test_mm_mask3_fmadd_round_sd:2669; X64:       ## %bb.0: ## %entry2670; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2671; X64-NEXT:    vfmadd231sd %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0xb9,0xd1]2672; X64-NEXT:    ## xmm2 {%k1} = (xmm0 * xmm1) + xmm22673; X64-NEXT:    vmovapd %xmm2, %xmm0 ## encoding: [0xc5,0xf9,0x28,0xc2]2674; X64-NEXT:    retq ## encoding: [0xc3]2675entry:2676  %0 = tail call <2 x double> @llvm.x86.avx512.mask3.vfmadd.sd(<2 x double> %__W, <2 x double> %__X, <2 x double> %__Y, i8 %__U, i32 4)2677  ret <2 x double> %02678}2679 2680declare <2 x double> @llvm.x86.avx512.mask3.vfmadd.sd(<2 x double>, <2 x double>, <2 x double>, i8, i32) #12681 2682define <2 x double> @test_mm_mask_fmsub_sd(<2 x double> %__W, i8 zeroext %__U, <2 x double> %__A, <2 x double> %__B) {2683; X86-LABEL: test_mm_mask_fmsub_sd:2684; X86:       ## %bb.0: ## %entry2685; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2686; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2687; X86-NEXT:    vfmsub213sd %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0xf5,0x09,0xab,0xc2]2688; X86-NEXT:    ## xmm0 {%k1} = (xmm1 * xmm0) - xmm22689; X86-NEXT:    retl ## encoding: [0xc3]2690;2691; X64-LABEL: test_mm_mask_fmsub_sd:2692; X64:       ## %bb.0: ## %entry2693; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2694; X64-NEXT:    vfmsub213sd %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0xf5,0x09,0xab,0xc2]2695; X64-NEXT:    ## xmm0 {%k1} = (xmm1 * xmm0) - xmm22696; X64-NEXT:    retq ## encoding: [0xc3]2697entry:2698  %0 = extractelement <2 x double> %__W, i64 02699  %1 = extractelement <2 x double> %__A, i64 02700  %.rhs.i = extractelement <2 x double> %__B, i64 02701  %2 = fsub double -0.000000e+00, %.rhs.i2702  %3 = tail call double @llvm.fma.f64(double %0, double %1, double %2) #102703  %4 = and i8 %__U, 12704  %tobool.i = icmp eq i8 %4, 02705  %vecext1.i = extractelement <2 x double> %__W, i32 02706  %cond.i = select i1 %tobool.i, double %vecext1.i, double %32707  %vecins.i = insertelement <2 x double> %__W, double %cond.i, i32 02708  ret <2 x double> %vecins.i2709}2710 2711define <2 x double> @test_mm_mask_fmsub_round_sd(<2 x double> %__W, i8 zeroext %__U, <2 x double> %__A, <2 x double> %__B) {2712; X86-LABEL: test_mm_mask_fmsub_round_sd:2713; X86:       ## %bb.0: ## %entry2714; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2715; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2716; X86-NEXT:    vfmsub213sd %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0xf5,0x09,0xab,0xc2]2717; X86-NEXT:    ## xmm0 {%k1} = (xmm1 * xmm0) - xmm22718; X86-NEXT:    retl ## encoding: [0xc3]2719;2720; X64-LABEL: test_mm_mask_fmsub_round_sd:2721; X64:       ## %bb.0: ## %entry2722; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2723; X64-NEXT:    vfmsub213sd %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0xf5,0x09,0xab,0xc2]2724; X64-NEXT:    ## xmm0 {%k1} = (xmm1 * xmm0) - xmm22725; X64-NEXT:    retq ## encoding: [0xc3]2726entry:2727  %sub = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %__B2728  %0 = tail call <2 x double> @llvm.x86.avx512.mask.vfmadd.sd(<2 x double> %__W, <2 x double> %__A, <2 x double> %sub, i8 %__U, i32 4)2729  ret <2 x double> %02730}2731 2732define <2 x double> @test_mm_maskz_fmsub_sd(i8 zeroext %__U, <2 x double> %__A, <2 x double> %__B, <2 x double> %__C) {2733; X86-LABEL: test_mm_maskz_fmsub_sd:2734; X86:       ## %bb.0: ## %entry2735; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2736; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2737; X86-NEXT:    vfmsub213sd %xmm2, %xmm1, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0x89,0xab,0xc2]2738; X86-NEXT:    ## xmm0 {%k1} {z} = (xmm1 * xmm0) - xmm22739; X86-NEXT:    retl ## encoding: [0xc3]2740;2741; X64-LABEL: test_mm_maskz_fmsub_sd:2742; X64:       ## %bb.0: ## %entry2743; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2744; X64-NEXT:    vfmsub213sd %xmm2, %xmm1, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0x89,0xab,0xc2]2745; X64-NEXT:    ## xmm0 {%k1} {z} = (xmm1 * xmm0) - xmm22746; X64-NEXT:    retq ## encoding: [0xc3]2747entry:2748  %0 = extractelement <2 x double> %__A, i64 02749  %1 = extractelement <2 x double> %__B, i64 02750  %.rhs.i = extractelement <2 x double> %__C, i64 02751  %2 = fsub double -0.000000e+00, %.rhs.i2752  %3 = tail call double @llvm.fma.f64(double %0, double %1, double %2) #102753  %4 = and i8 %__U, 12754  %tobool.i = icmp eq i8 %4, 02755  %cond.i = select i1 %tobool.i, double 0.000000e+00, double %32756  %vecins.i = insertelement <2 x double> %__A, double %cond.i, i32 02757  ret <2 x double> %vecins.i2758}2759 2760define <2 x double> @test_mm_maskz_fmsub_round_sd(i8 zeroext %__U, <2 x double> %__A, <2 x double> %__B, <2 x double> %__C) {2761; X86-LABEL: test_mm_maskz_fmsub_round_sd:2762; X86:       ## %bb.0: ## %entry2763; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2764; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2765; X86-NEXT:    vfmsub213sd %xmm2, %xmm1, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0x89,0xab,0xc2]2766; X86-NEXT:    ## xmm0 {%k1} {z} = (xmm1 * xmm0) - xmm22767; X86-NEXT:    retl ## encoding: [0xc3]2768;2769; X64-LABEL: test_mm_maskz_fmsub_round_sd:2770; X64:       ## %bb.0: ## %entry2771; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2772; X64-NEXT:    vfmsub213sd %xmm2, %xmm1, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0x89,0xab,0xc2]2773; X64-NEXT:    ## xmm0 {%k1} {z} = (xmm1 * xmm0) - xmm22774; X64-NEXT:    retq ## encoding: [0xc3]2775entry:2776  %sub = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %__C2777  %0 = tail call <2 x double> @llvm.x86.avx512.maskz.vfmadd.sd(<2 x double> %__A, <2 x double> %__B, <2 x double> %sub, i8 %__U, i32 4)2778  ret <2 x double> %02779}2780 2781define <2 x double> @test_mm_mask3_fmsub_sd(<2 x double> %__W, <2 x double> %__X, <2 x double> %__Y, i8 zeroext %__U) {2782; X86-LABEL: test_mm_mask3_fmsub_sd:2783; X86:       ## %bb.0: ## %entry2784; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2785; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2786; X86-NEXT:    vfmsub231sd %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0xbb,0xd1]2787; X86-NEXT:    ## xmm2 {%k1} = (xmm0 * xmm1) - xmm22788; X86-NEXT:    vmovapd %xmm2, %xmm0 ## encoding: [0xc5,0xf9,0x28,0xc2]2789; X86-NEXT:    retl ## encoding: [0xc3]2790;2791; X64-LABEL: test_mm_mask3_fmsub_sd:2792; X64:       ## %bb.0: ## %entry2793; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2794; X64-NEXT:    vfmsub231sd %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0xbb,0xd1]2795; X64-NEXT:    ## xmm2 {%k1} = (xmm0 * xmm1) - xmm22796; X64-NEXT:    vmovapd %xmm2, %xmm0 ## encoding: [0xc5,0xf9,0x28,0xc2]2797; X64-NEXT:    retq ## encoding: [0xc3]2798entry:2799  %0 = extractelement <2 x double> %__W, i64 02800  %1 = extractelement <2 x double> %__X, i64 02801  %.rhs.i = extractelement <2 x double> %__Y, i64 02802  %2 = fsub double -0.000000e+00, %.rhs.i2803  %3 = tail call double @llvm.fma.f64(double %0, double %1, double %2) #102804  %4 = and i8 %__U, 12805  %tobool.i = icmp eq i8 %4, 02806  %vecext1.i = extractelement <2 x double> %__Y, i32 02807  %cond.i = select i1 %tobool.i, double %vecext1.i, double %32808  %vecins.i = insertelement <2 x double> %__Y, double %cond.i, i32 02809  ret <2 x double> %vecins.i2810}2811 2812define <2 x double> @test_mm_mask3_fmsub_round_sd(<2 x double> %__W, <2 x double> %__X, <2 x double> %__Y, i8 zeroext %__U) {2813; X86-LABEL: test_mm_mask3_fmsub_round_sd:2814; X86:       ## %bb.0: ## %entry2815; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2816; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2817; X86-NEXT:    vfmsub231sd %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0xbb,0xd1]2818; X86-NEXT:    ## xmm2 {%k1} = (xmm0 * xmm1) - xmm22819; X86-NEXT:    vmovapd %xmm2, %xmm0 ## encoding: [0xc5,0xf9,0x28,0xc2]2820; X86-NEXT:    retl ## encoding: [0xc3]2821;2822; X64-LABEL: test_mm_mask3_fmsub_round_sd:2823; X64:       ## %bb.0: ## %entry2824; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2825; X64-NEXT:    vfmsub231sd %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0xbb,0xd1]2826; X64-NEXT:    ## xmm2 {%k1} = (xmm0 * xmm1) - xmm22827; X64-NEXT:    vmovapd %xmm2, %xmm0 ## encoding: [0xc5,0xf9,0x28,0xc2]2828; X64-NEXT:    retq ## encoding: [0xc3]2829entry:2830  %0 = tail call <2 x double> @llvm.x86.avx512.mask3.vfmsub.sd(<2 x double> %__W, <2 x double> %__X, <2 x double> %__Y, i8 %__U, i32 4)2831  ret <2 x double> %02832}2833 2834declare <2 x double> @llvm.x86.avx512.mask3.vfmsub.sd(<2 x double>, <2 x double>, <2 x double>, i8, i32) #12835 2836define <2 x double> @test_mm_mask_fnmadd_sd(<2 x double> %__W, i8 zeroext %__U, <2 x double> %__A, <2 x double> %__B) {2837; X86-LABEL: test_mm_mask_fnmadd_sd:2838; X86:       ## %bb.0: ## %entry2839; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2840; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2841; X86-NEXT:    vfnmadd213sd %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0xf5,0x09,0xad,0xc2]2842; X86-NEXT:    ## xmm0 {%k1} = -(xmm1 * xmm0) + xmm22843; X86-NEXT:    retl ## encoding: [0xc3]2844;2845; X64-LABEL: test_mm_mask_fnmadd_sd:2846; X64:       ## %bb.0: ## %entry2847; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2848; X64-NEXT:    vfnmadd213sd %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0xf5,0x09,0xad,0xc2]2849; X64-NEXT:    ## xmm0 {%k1} = -(xmm1 * xmm0) + xmm22850; X64-NEXT:    retq ## encoding: [0xc3]2851entry:2852  %0 = extractelement <2 x double> %__W, i64 02853  %.rhs.i = extractelement <2 x double> %__A, i64 02854  %1 = fsub double -0.000000e+00, %.rhs.i2855  %2 = extractelement <2 x double> %__B, i64 02856  %3 = tail call double @llvm.fma.f64(double %0, double %1, double %2) #102857  %4 = and i8 %__U, 12858  %tobool.i = icmp eq i8 %4, 02859  %vecext1.i = extractelement <2 x double> %__W, i32 02860  %cond.i = select i1 %tobool.i, double %vecext1.i, double %32861  %vecins.i = insertelement <2 x double> %__W, double %cond.i, i32 02862  ret <2 x double> %vecins.i2863}2864 2865define <2 x double> @test_mm_mask_fnmadd_round_sd(<2 x double> %__W, i8 zeroext %__U, <2 x double> %__A, <2 x double> %__B) {2866; X86-LABEL: test_mm_mask_fnmadd_round_sd:2867; X86:       ## %bb.0: ## %entry2868; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2869; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2870; X86-NEXT:    vfnmadd213sd %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0xf5,0x09,0xad,0xc2]2871; X86-NEXT:    ## xmm0 {%k1} = -(xmm1 * xmm0) + xmm22872; X86-NEXT:    retl ## encoding: [0xc3]2873;2874; X64-LABEL: test_mm_mask_fnmadd_round_sd:2875; X64:       ## %bb.0: ## %entry2876; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2877; X64-NEXT:    vfnmadd213sd %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0xf5,0x09,0xad,0xc2]2878; X64-NEXT:    ## xmm0 {%k1} = -(xmm1 * xmm0) + xmm22879; X64-NEXT:    retq ## encoding: [0xc3]2880entry:2881  %sub = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %__A2882  %0 = tail call <2 x double> @llvm.x86.avx512.mask.vfmadd.sd(<2 x double> %__W, <2 x double> %sub, <2 x double> %__B, i8 %__U, i32 4)2883  ret <2 x double> %02884}2885 2886define <2 x double> @test_mm_maskz_fnmadd_sd(i8 zeroext %__U, <2 x double> %__A, <2 x double> %__B, <2 x double> %__C) {2887; X86-LABEL: test_mm_maskz_fnmadd_sd:2888; X86:       ## %bb.0: ## %entry2889; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2890; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2891; X86-NEXT:    vfnmadd213sd %xmm2, %xmm1, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0x89,0xad,0xc2]2892; X86-NEXT:    ## xmm0 {%k1} {z} = -(xmm1 * xmm0) + xmm22893; X86-NEXT:    retl ## encoding: [0xc3]2894;2895; X64-LABEL: test_mm_maskz_fnmadd_sd:2896; X64:       ## %bb.0: ## %entry2897; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2898; X64-NEXT:    vfnmadd213sd %xmm2, %xmm1, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0x89,0xad,0xc2]2899; X64-NEXT:    ## xmm0 {%k1} {z} = -(xmm1 * xmm0) + xmm22900; X64-NEXT:    retq ## encoding: [0xc3]2901entry:2902  %0 = extractelement <2 x double> %__A, i64 02903  %.rhs.i = extractelement <2 x double> %__B, i64 02904  %1 = fsub double -0.000000e+00, %.rhs.i2905  %2 = extractelement <2 x double> %__C, i64 02906  %3 = tail call double @llvm.fma.f64(double %0, double %1, double %2) #102907  %4 = and i8 %__U, 12908  %tobool.i = icmp eq i8 %4, 02909  %cond.i = select i1 %tobool.i, double 0.000000e+00, double %32910  %vecins.i = insertelement <2 x double> %__A, double %cond.i, i32 02911  ret <2 x double> %vecins.i2912}2913 2914define <2 x double> @test_mm_maskz_fnmadd_round_sd(i8 zeroext %__U, <2 x double> %__A, <2 x double> %__B, <2 x double> %__C) {2915; X86-LABEL: test_mm_maskz_fnmadd_round_sd:2916; X86:       ## %bb.0: ## %entry2917; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2918; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2919; X86-NEXT:    vfnmadd213sd %xmm2, %xmm1, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0x89,0xad,0xc2]2920; X86-NEXT:    ## xmm0 {%k1} {z} = -(xmm1 * xmm0) + xmm22921; X86-NEXT:    retl ## encoding: [0xc3]2922;2923; X64-LABEL: test_mm_maskz_fnmadd_round_sd:2924; X64:       ## %bb.0: ## %entry2925; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2926; X64-NEXT:    vfnmadd213sd %xmm2, %xmm1, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0x89,0xad,0xc2]2927; X64-NEXT:    ## xmm0 {%k1} {z} = -(xmm1 * xmm0) + xmm22928; X64-NEXT:    retq ## encoding: [0xc3]2929entry:2930  %sub = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %__B2931  %0 = tail call <2 x double> @llvm.x86.avx512.maskz.vfmadd.sd(<2 x double> %__A, <2 x double> %sub, <2 x double> %__C, i8 %__U, i32 4)2932  ret <2 x double> %02933}2934 2935define <2 x double> @test_mm_mask3_fnmadd_sd(<2 x double> %__W, <2 x double> %__X, <2 x double> %__Y, i8 zeroext %__U) {2936; X86-LABEL: test_mm_mask3_fnmadd_sd:2937; X86:       ## %bb.0: ## %entry2938; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2939; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2940; X86-NEXT:    vfnmadd231sd %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0xbd,0xd1]2941; X86-NEXT:    ## xmm2 {%k1} = -(xmm0 * xmm1) + xmm22942; X86-NEXT:    vmovapd %xmm2, %xmm0 ## encoding: [0xc5,0xf9,0x28,0xc2]2943; X86-NEXT:    retl ## encoding: [0xc3]2944;2945; X64-LABEL: test_mm_mask3_fnmadd_sd:2946; X64:       ## %bb.0: ## %entry2947; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2948; X64-NEXT:    vfnmadd231sd %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0xbd,0xd1]2949; X64-NEXT:    ## xmm2 {%k1} = -(xmm0 * xmm1) + xmm22950; X64-NEXT:    vmovapd %xmm2, %xmm0 ## encoding: [0xc5,0xf9,0x28,0xc2]2951; X64-NEXT:    retq ## encoding: [0xc3]2952entry:2953  %0 = extractelement <2 x double> %__W, i64 02954  %.rhs.i = extractelement <2 x double> %__X, i64 02955  %1 = fsub double -0.000000e+00, %.rhs.i2956  %2 = extractelement <2 x double> %__Y, i64 02957  %3 = tail call double @llvm.fma.f64(double %0, double %1, double %2) #102958  %4 = and i8 %__U, 12959  %tobool.i = icmp eq i8 %4, 02960  %vecext1.i = extractelement <2 x double> %__Y, i32 02961  %cond.i = select i1 %tobool.i, double %vecext1.i, double %32962  %vecins.i = insertelement <2 x double> %__Y, double %cond.i, i32 02963  ret <2 x double> %vecins.i2964}2965 2966define <2 x double> @test_mm_mask3_fnmadd_round_sd(<2 x double> %__W, <2 x double> %__X, <2 x double> %__Y, i8 zeroext %__U) {2967; X86-LABEL: test_mm_mask3_fnmadd_round_sd:2968; X86:       ## %bb.0: ## %entry2969; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2970; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2971; X86-NEXT:    vfnmadd231sd %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0xbd,0xd1]2972; X86-NEXT:    ## xmm2 {%k1} = -(xmm0 * xmm1) + xmm22973; X86-NEXT:    vmovapd %xmm2, %xmm0 ## encoding: [0xc5,0xf9,0x28,0xc2]2974; X86-NEXT:    retl ## encoding: [0xc3]2975;2976; X64-LABEL: test_mm_mask3_fnmadd_round_sd:2977; X64:       ## %bb.0: ## %entry2978; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]2979; X64-NEXT:    vfnmadd231sd %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0xbd,0xd1]2980; X64-NEXT:    ## xmm2 {%k1} = -(xmm0 * xmm1) + xmm22981; X64-NEXT:    vmovapd %xmm2, %xmm0 ## encoding: [0xc5,0xf9,0x28,0xc2]2982; X64-NEXT:    retq ## encoding: [0xc3]2983entry:2984  %sub = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %__X2985  %0 = tail call <2 x double> @llvm.x86.avx512.mask3.vfmadd.sd(<2 x double> %__W, <2 x double> %sub, <2 x double> %__Y, i8 %__U, i32 4)2986  ret <2 x double> %02987}2988 2989define <2 x double> @test_mm_mask_fnmsub_sd(<2 x double> %__W, i8 zeroext %__U, <2 x double> %__A, <2 x double> %__B) {2990; X86-LABEL: test_mm_mask_fnmsub_sd:2991; X86:       ## %bb.0: ## %entry2992; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]2993; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]2994; X86-NEXT:    vfnmsub213sd %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0xf5,0x09,0xaf,0xc2]2995; X86-NEXT:    ## xmm0 {%k1} = -(xmm1 * xmm0) - xmm22996; X86-NEXT:    retl ## encoding: [0xc3]2997;2998; X64-LABEL: test_mm_mask_fnmsub_sd:2999; X64:       ## %bb.0: ## %entry3000; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]3001; X64-NEXT:    vfnmsub213sd %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0xf5,0x09,0xaf,0xc2]3002; X64-NEXT:    ## xmm0 {%k1} = -(xmm1 * xmm0) - xmm23003; X64-NEXT:    retq ## encoding: [0xc3]3004entry:3005  %0 = extractelement <2 x double> %__W, i64 03006  %.rhs.i = extractelement <2 x double> %__A, i64 03007  %1 = fsub double -0.000000e+00, %.rhs.i3008  %.rhs7.i = extractelement <2 x double> %__B, i64 03009  %2 = fsub double -0.000000e+00, %.rhs7.i3010  %3 = tail call double @llvm.fma.f64(double %0, double %1, double %2) #103011  %4 = and i8 %__U, 13012  %tobool.i = icmp eq i8 %4, 03013  %vecext2.i = extractelement <2 x double> %__W, i32 03014  %cond.i = select i1 %tobool.i, double %vecext2.i, double %33015  %vecins.i = insertelement <2 x double> %__W, double %cond.i, i32 03016  ret <2 x double> %vecins.i3017}3018 3019define <2 x double> @test_mm_mask_fnmsub_round_sd(<2 x double> %__W, i8 zeroext %__U, <2 x double> %__A, <2 x double> %__B) {3020; X86-LABEL: test_mm_mask_fnmsub_round_sd:3021; X86:       ## %bb.0: ## %entry3022; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]3023; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]3024; X86-NEXT:    vfnmsub213sd %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0xf5,0x09,0xaf,0xc2]3025; X86-NEXT:    ## xmm0 {%k1} = -(xmm1 * xmm0) - xmm23026; X86-NEXT:    retl ## encoding: [0xc3]3027;3028; X64-LABEL: test_mm_mask_fnmsub_round_sd:3029; X64:       ## %bb.0: ## %entry3030; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]3031; X64-NEXT:    vfnmsub213sd %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0xf5,0x09,0xaf,0xc2]3032; X64-NEXT:    ## xmm0 {%k1} = -(xmm1 * xmm0) - xmm23033; X64-NEXT:    retq ## encoding: [0xc3]3034entry:3035  %sub = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %__A3036  %sub1 = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %__B3037  %0 = tail call <2 x double> @llvm.x86.avx512.mask.vfmadd.sd(<2 x double> %__W, <2 x double> %sub, <2 x double> %sub1, i8 %__U, i32 4)3038  ret <2 x double> %03039}3040 3041define <2 x double> @test_mm_maskz_fnmsub_sd(i8 zeroext %__U, <2 x double> %__A, <2 x double> %__B, <2 x double> %__C) {3042; X86-LABEL: test_mm_maskz_fnmsub_sd:3043; X86:       ## %bb.0: ## %entry3044; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]3045; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]3046; X86-NEXT:    vfnmsub213sd %xmm2, %xmm1, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0x89,0xaf,0xc2]3047; X86-NEXT:    ## xmm0 {%k1} {z} = -(xmm1 * xmm0) - xmm23048; X86-NEXT:    retl ## encoding: [0xc3]3049;3050; X64-LABEL: test_mm_maskz_fnmsub_sd:3051; X64:       ## %bb.0: ## %entry3052; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]3053; X64-NEXT:    vfnmsub213sd %xmm2, %xmm1, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0x89,0xaf,0xc2]3054; X64-NEXT:    ## xmm0 {%k1} {z} = -(xmm1 * xmm0) - xmm23055; X64-NEXT:    retq ## encoding: [0xc3]3056entry:3057  %0 = extractelement <2 x double> %__A, i64 03058  %.rhs.i = extractelement <2 x double> %__B, i64 03059  %1 = fsub double -0.000000e+00, %.rhs.i3060  %.rhs5.i = extractelement <2 x double> %__C, i64 03061  %2 = fsub double -0.000000e+00, %.rhs5.i3062  %3 = tail call double @llvm.fma.f64(double %0, double %1, double %2) #103063  %4 = and i8 %__U, 13064  %tobool.i = icmp eq i8 %4, 03065  %cond.i = select i1 %tobool.i, double 0.000000e+00, double %33066  %vecins.i = insertelement <2 x double> %__A, double %cond.i, i32 03067  ret <2 x double> %vecins.i3068}3069 3070define <2 x double> @test_mm_maskz_fnmsub_round_sd(i8 zeroext %__U, <2 x double> %__A, <2 x double> %__B, <2 x double> %__C) {3071; X86-LABEL: test_mm_maskz_fnmsub_round_sd:3072; X86:       ## %bb.0: ## %entry3073; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]3074; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]3075; X86-NEXT:    vfnmsub213sd %xmm2, %xmm1, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0x89,0xaf,0xc2]3076; X86-NEXT:    ## xmm0 {%k1} {z} = -(xmm1 * xmm0) - xmm23077; X86-NEXT:    retl ## encoding: [0xc3]3078;3079; X64-LABEL: test_mm_maskz_fnmsub_round_sd:3080; X64:       ## %bb.0: ## %entry3081; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]3082; X64-NEXT:    vfnmsub213sd %xmm2, %xmm1, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0x89,0xaf,0xc2]3083; X64-NEXT:    ## xmm0 {%k1} {z} = -(xmm1 * xmm0) - xmm23084; X64-NEXT:    retq ## encoding: [0xc3]3085entry:3086  %sub = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %__B3087  %sub1 = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %__C3088  %0 = tail call <2 x double> @llvm.x86.avx512.maskz.vfmadd.sd(<2 x double> %__A, <2 x double> %sub, <2 x double> %sub1, i8 %__U, i32 4)3089  ret <2 x double> %03090}3091 3092define <2 x double> @test_mm_mask3_fnmsub_sd(<2 x double> %__W, <2 x double> %__X, <2 x double> %__Y, i8 zeroext %__U) {3093; X86-LABEL: test_mm_mask3_fnmsub_sd:3094; X86:       ## %bb.0: ## %entry3095; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]3096; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]3097; X86-NEXT:    vfnmsub231sd %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0xbf,0xd1]3098; X86-NEXT:    ## xmm2 {%k1} = -(xmm0 * xmm1) - xmm23099; X86-NEXT:    vmovapd %xmm2, %xmm0 ## encoding: [0xc5,0xf9,0x28,0xc2]3100; X86-NEXT:    retl ## encoding: [0xc3]3101;3102; X64-LABEL: test_mm_mask3_fnmsub_sd:3103; X64:       ## %bb.0: ## %entry3104; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]3105; X64-NEXT:    vfnmsub231sd %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0xbf,0xd1]3106; X64-NEXT:    ## xmm2 {%k1} = -(xmm0 * xmm1) - xmm23107; X64-NEXT:    vmovapd %xmm2, %xmm0 ## encoding: [0xc5,0xf9,0x28,0xc2]3108; X64-NEXT:    retq ## encoding: [0xc3]3109entry:3110  %0 = extractelement <2 x double> %__W, i64 03111  %.rhs.i = extractelement <2 x double> %__X, i64 03112  %1 = fsub double -0.000000e+00, %.rhs.i3113  %.rhs7.i = extractelement <2 x double> %__Y, i64 03114  %2 = fsub double -0.000000e+00, %.rhs7.i3115  %3 = tail call double @llvm.fma.f64(double %0, double %1, double %2) #103116  %4 = and i8 %__U, 13117  %tobool.i = icmp eq i8 %4, 03118  %vecext2.i = extractelement <2 x double> %__Y, i32 03119  %cond.i = select i1 %tobool.i, double %vecext2.i, double %33120  %vecins.i = insertelement <2 x double> %__Y, double %cond.i, i32 03121  ret <2 x double> %vecins.i3122}3123 3124define <2 x double> @test_mm_mask3_fnmsub_round_sd(<2 x double> %__W, <2 x double> %__X, <2 x double> %__Y, i8 zeroext %__U) {3125; X86-LABEL: test_mm_mask3_fnmsub_round_sd:3126; X86:       ## %bb.0: ## %entry3127; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]3128; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]3129; X86-NEXT:    vfnmsub231sd %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0xbf,0xd1]3130; X86-NEXT:    ## xmm2 {%k1} = -(xmm0 * xmm1) - xmm23131; X86-NEXT:    vmovapd %xmm2, %xmm0 ## encoding: [0xc5,0xf9,0x28,0xc2]3132; X86-NEXT:    retl ## encoding: [0xc3]3133;3134; X64-LABEL: test_mm_mask3_fnmsub_round_sd:3135; X64:       ## %bb.0: ## %entry3136; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]3137; X64-NEXT:    vfnmsub231sd %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0xbf,0xd1]3138; X64-NEXT:    ## xmm2 {%k1} = -(xmm0 * xmm1) - xmm23139; X64-NEXT:    vmovapd %xmm2, %xmm0 ## encoding: [0xc5,0xf9,0x28,0xc2]3140; X64-NEXT:    retq ## encoding: [0xc3]3141entry:3142  %sub = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %__X3143  %0 = tail call <2 x double> @llvm.x86.avx512.mask3.vfmsub.sd(<2 x double> %__W, <2 x double> %sub, <2 x double> %__Y, i8 %__U, i32 4)3144  ret <2 x double> %03145}3146 3147define <4 x float> @test_mm_mask_add_ss(<4 x float> %__W, i8 zeroext %__U, <4 x float> %__A, <4 x float> %__B) {3148; X86-LABEL: test_mm_mask_add_ss:3149; X86:       ## %bb.0: ## %entry3150; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]3151; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]3152; X86-NEXT:    vaddss %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf1,0x76,0x09,0x58,0xc2]3153; X86-NEXT:    retl ## encoding: [0xc3]3154;3155; X64-LABEL: test_mm_mask_add_ss:3156; X64:       ## %bb.0: ## %entry3157; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]3158; X64-NEXT:    vaddss %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf1,0x76,0x09,0x58,0xc2]3159; X64-NEXT:    retq ## encoding: [0xc3]3160entry:3161  %vecext.i.i = extractelement <4 x float> %__B, i32 03162  %vecext1.i.i = extractelement <4 x float> %__A, i32 03163  %add.i.i = fadd float %vecext1.i.i, %vecext.i.i3164  %0 = and i8 %__U, 13165  %tobool.i = icmp eq i8 %0, 03166  %vecext1.i = extractelement <4 x float> %__W, i32 03167  %cond.i = select i1 %tobool.i, float %vecext1.i, float %add.i.i3168  %vecins.i = insertelement <4 x float> %__A, float %cond.i, i32 03169  ret <4 x float> %vecins.i3170}3171 3172define <4 x float> @test_mm_maskz_add_ss(i8 zeroext %__U, <4 x float> %__A, <4 x float> %__B) {3173; X86-LABEL: test_mm_maskz_add_ss:3174; X86:       ## %bb.0: ## %entry3175; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]3176; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]3177; X86-NEXT:    vaddss %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7e,0x89,0x58,0xc1]3178; X86-NEXT:    retl ## encoding: [0xc3]3179;3180; X64-LABEL: test_mm_maskz_add_ss:3181; X64:       ## %bb.0: ## %entry3182; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]3183; X64-NEXT:    vaddss %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7e,0x89,0x58,0xc1]3184; X64-NEXT:    retq ## encoding: [0xc3]3185entry:3186  %vecext.i.i = extractelement <4 x float> %__B, i32 03187  %vecext1.i.i = extractelement <4 x float> %__A, i32 03188  %add.i.i = fadd float %vecext1.i.i, %vecext.i.i3189  %0 = and i8 %__U, 13190  %tobool.i = icmp eq i8 %0, 03191  %cond.i = select i1 %tobool.i, float 0.000000e+00, float %add.i.i3192  %vecins.i = insertelement <4 x float> %__A, float %cond.i, i32 03193  ret <4 x float> %vecins.i3194}3195 3196define <2 x double> @test_mm_mask_add_sd(<2 x double> %__W, i8 zeroext %__U, <2 x double> %__A, <2 x double> %__B) {3197; X86-LABEL: test_mm_mask_add_sd:3198; X86:       ## %bb.0: ## %entry3199; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]3200; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]3201; X86-NEXT:    vaddsd %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf1,0xf7,0x09,0x58,0xc2]3202; X86-NEXT:    retl ## encoding: [0xc3]3203;3204; X64-LABEL: test_mm_mask_add_sd:3205; X64:       ## %bb.0: ## %entry3206; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]3207; X64-NEXT:    vaddsd %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf1,0xf7,0x09,0x58,0xc2]3208; X64-NEXT:    retq ## encoding: [0xc3]3209entry:3210  %vecext.i.i = extractelement <2 x double> %__B, i32 03211  %vecext1.i.i = extractelement <2 x double> %__A, i32 03212  %add.i.i = fadd double %vecext1.i.i, %vecext.i.i3213  %0 = and i8 %__U, 13214  %tobool.i = icmp eq i8 %0, 03215  %vecext1.i = extractelement <2 x double> %__W, i32 03216  %cond.i = select i1 %tobool.i, double %vecext1.i, double %add.i.i3217  %vecins.i = insertelement <2 x double> %__A, double %cond.i, i32 03218  ret <2 x double> %vecins.i3219}3220 3221define <2 x double> @test_mm_maskz_add_sd(i8 zeroext %__U, <2 x double> %__A, <2 x double> %__B) {3222; X86-LABEL: test_mm_maskz_add_sd:3223; X86:       ## %bb.0: ## %entry3224; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]3225; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]3226; X86-NEXT:    vaddsd %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0xff,0x89,0x58,0xc1]3227; X86-NEXT:    retl ## encoding: [0xc3]3228;3229; X64-LABEL: test_mm_maskz_add_sd:3230; X64:       ## %bb.0: ## %entry3231; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]3232; X64-NEXT:    vaddsd %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0xff,0x89,0x58,0xc1]3233; X64-NEXT:    retq ## encoding: [0xc3]3234entry:3235  %vecext.i.i = extractelement <2 x double> %__B, i32 03236  %vecext1.i.i = extractelement <2 x double> %__A, i32 03237  %add.i.i = fadd double %vecext1.i.i, %vecext.i.i3238  %0 = and i8 %__U, 13239  %tobool.i = icmp eq i8 %0, 03240  %cond.i = select i1 %tobool.i, double 0.000000e+00, double %add.i.i3241  %vecins.i = insertelement <2 x double> %__A, double %cond.i, i32 03242  ret <2 x double> %vecins.i3243}3244 3245define <4 x float> @test_mm_mask_sub_ss(<4 x float> %__W, i8 zeroext %__U, <4 x float> %__A, <4 x float> %__B) {3246; X86-LABEL: test_mm_mask_sub_ss:3247; X86:       ## %bb.0: ## %entry3248; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]3249; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]3250; X86-NEXT:    vsubss %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf1,0x76,0x09,0x5c,0xc2]3251; X86-NEXT:    retl ## encoding: [0xc3]3252;3253; X64-LABEL: test_mm_mask_sub_ss:3254; X64:       ## %bb.0: ## %entry3255; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]3256; X64-NEXT:    vsubss %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf1,0x76,0x09,0x5c,0xc2]3257; X64-NEXT:    retq ## encoding: [0xc3]3258entry:3259  %vecext.i.i = extractelement <4 x float> %__B, i32 03260  %vecext1.i.i = extractelement <4 x float> %__A, i32 03261  %sub.i.i = fsub float %vecext1.i.i, %vecext.i.i3262  %0 = and i8 %__U, 13263  %tobool.i = icmp eq i8 %0, 03264  %vecext1.i = extractelement <4 x float> %__W, i32 03265  %cond.i = select i1 %tobool.i, float %vecext1.i, float %sub.i.i3266  %vecins.i = insertelement <4 x float> %__A, float %cond.i, i32 03267  ret <4 x float> %vecins.i3268}3269 3270define <4 x float> @test_mm_maskz_sub_ss(i8 zeroext %__U, <4 x float> %__A, <4 x float> %__B) {3271; X86-LABEL: test_mm_maskz_sub_ss:3272; X86:       ## %bb.0: ## %entry3273; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]3274; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]3275; X86-NEXT:    vsubss %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7e,0x89,0x5c,0xc1]3276; X86-NEXT:    retl ## encoding: [0xc3]3277;3278; X64-LABEL: test_mm_maskz_sub_ss:3279; X64:       ## %bb.0: ## %entry3280; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]3281; X64-NEXT:    vsubss %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7e,0x89,0x5c,0xc1]3282; X64-NEXT:    retq ## encoding: [0xc3]3283entry:3284  %vecext.i.i = extractelement <4 x float> %__B, i32 03285  %vecext1.i.i = extractelement <4 x float> %__A, i32 03286  %sub.i.i = fsub float %vecext1.i.i, %vecext.i.i3287  %0 = and i8 %__U, 13288  %tobool.i = icmp eq i8 %0, 03289  %cond.i = select i1 %tobool.i, float 0.000000e+00, float %sub.i.i3290  %vecins.i = insertelement <4 x float> %__A, float %cond.i, i32 03291  ret <4 x float> %vecins.i3292}3293 3294define <2 x double> @test_mm_mask_sub_sd(<2 x double> %__W, i8 zeroext %__U, <2 x double> %__A, <2 x double> %__B) {3295; X86-LABEL: test_mm_mask_sub_sd:3296; X86:       ## %bb.0: ## %entry3297; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]3298; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]3299; X86-NEXT:    vsubsd %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf1,0xf7,0x09,0x5c,0xc2]3300; X86-NEXT:    retl ## encoding: [0xc3]3301;3302; X64-LABEL: test_mm_mask_sub_sd:3303; X64:       ## %bb.0: ## %entry3304; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]3305; X64-NEXT:    vsubsd %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf1,0xf7,0x09,0x5c,0xc2]3306; X64-NEXT:    retq ## encoding: [0xc3]3307entry:3308  %vecext.i.i = extractelement <2 x double> %__B, i32 03309  %vecext1.i.i = extractelement <2 x double> %__A, i32 03310  %sub.i.i = fsub double %vecext1.i.i, %vecext.i.i3311  %0 = and i8 %__U, 13312  %tobool.i = icmp eq i8 %0, 03313  %vecext1.i = extractelement <2 x double> %__W, i32 03314  %cond.i = select i1 %tobool.i, double %vecext1.i, double %sub.i.i3315  %vecins.i = insertelement <2 x double> %__A, double %cond.i, i32 03316  ret <2 x double> %vecins.i3317}3318 3319define <2 x double> @test_mm_maskz_sub_sd(i8 zeroext %__U, <2 x double> %__A, <2 x double> %__B) {3320; X86-LABEL: test_mm_maskz_sub_sd:3321; X86:       ## %bb.0: ## %entry3322; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]3323; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]3324; X86-NEXT:    vsubsd %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0xff,0x89,0x5c,0xc1]3325; X86-NEXT:    retl ## encoding: [0xc3]3326;3327; X64-LABEL: test_mm_maskz_sub_sd:3328; X64:       ## %bb.0: ## %entry3329; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]3330; X64-NEXT:    vsubsd %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0xff,0x89,0x5c,0xc1]3331; X64-NEXT:    retq ## encoding: [0xc3]3332entry:3333  %vecext.i.i = extractelement <2 x double> %__B, i32 03334  %vecext1.i.i = extractelement <2 x double> %__A, i32 03335  %sub.i.i = fsub double %vecext1.i.i, %vecext.i.i3336  %0 = and i8 %__U, 13337  %tobool.i = icmp eq i8 %0, 03338  %cond.i = select i1 %tobool.i, double 0.000000e+00, double %sub.i.i3339  %vecins.i = insertelement <2 x double> %__A, double %cond.i, i32 03340  ret <2 x double> %vecins.i3341}3342 3343define <4 x float> @test_mm_mask_mul_ss(<4 x float> %__W, i8 zeroext %__U, <4 x float> %__A, <4 x float> %__B) {3344; X86-LABEL: test_mm_mask_mul_ss:3345; X86:       ## %bb.0: ## %entry3346; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]3347; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]3348; X86-NEXT:    vmulss %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf1,0x76,0x09,0x59,0xc2]3349; X86-NEXT:    retl ## encoding: [0xc3]3350;3351; X64-LABEL: test_mm_mask_mul_ss:3352; X64:       ## %bb.0: ## %entry3353; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]3354; X64-NEXT:    vmulss %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf1,0x76,0x09,0x59,0xc2]3355; X64-NEXT:    retq ## encoding: [0xc3]3356entry:3357  %vecext.i.i = extractelement <4 x float> %__B, i32 03358  %vecext1.i.i = extractelement <4 x float> %__A, i32 03359  %mul.i.i = fmul float %vecext1.i.i, %vecext.i.i3360  %0 = and i8 %__U, 13361  %tobool.i = icmp eq i8 %0, 03362  %vecext1.i = extractelement <4 x float> %__W, i32 03363  %cond.i = select i1 %tobool.i, float %vecext1.i, float %mul.i.i3364  %vecins.i = insertelement <4 x float> %__A, float %cond.i, i32 03365  ret <4 x float> %vecins.i3366}3367 3368define <4 x float> @test_mm_maskz_mul_ss(i8 zeroext %__U, <4 x float> %__A, <4 x float> %__B) {3369; X86-LABEL: test_mm_maskz_mul_ss:3370; X86:       ## %bb.0: ## %entry3371; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]3372; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]3373; X86-NEXT:    vmulss %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7e,0x89,0x59,0xc1]3374; X86-NEXT:    retl ## encoding: [0xc3]3375;3376; X64-LABEL: test_mm_maskz_mul_ss:3377; X64:       ## %bb.0: ## %entry3378; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]3379; X64-NEXT:    vmulss %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7e,0x89,0x59,0xc1]3380; X64-NEXT:    retq ## encoding: [0xc3]3381entry:3382  %vecext.i.i = extractelement <4 x float> %__B, i32 03383  %vecext1.i.i = extractelement <4 x float> %__A, i32 03384  %mul.i.i = fmul float %vecext1.i.i, %vecext.i.i3385  %0 = and i8 %__U, 13386  %tobool.i = icmp eq i8 %0, 03387  %cond.i = select i1 %tobool.i, float 0.000000e+00, float %mul.i.i3388  %vecins.i = insertelement <4 x float> %__A, float %cond.i, i32 03389  ret <4 x float> %vecins.i3390}3391 3392define <2 x double> @test_mm_mask_mul_sd(<2 x double> %__W, i8 zeroext %__U, <2 x double> %__A, <2 x double> %__B) {3393; X86-LABEL: test_mm_mask_mul_sd:3394; X86:       ## %bb.0: ## %entry3395; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]3396; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]3397; X86-NEXT:    vmulsd %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf1,0xf7,0x09,0x59,0xc2]3398; X86-NEXT:    retl ## encoding: [0xc3]3399;3400; X64-LABEL: test_mm_mask_mul_sd:3401; X64:       ## %bb.0: ## %entry3402; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]3403; X64-NEXT:    vmulsd %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf1,0xf7,0x09,0x59,0xc2]3404; X64-NEXT:    retq ## encoding: [0xc3]3405entry:3406  %vecext.i.i = extractelement <2 x double> %__B, i32 03407  %vecext1.i.i = extractelement <2 x double> %__A, i32 03408  %mul.i.i = fmul double %vecext1.i.i, %vecext.i.i3409  %0 = and i8 %__U, 13410  %tobool.i = icmp eq i8 %0, 03411  %vecext1.i = extractelement <2 x double> %__W, i32 03412  %cond.i = select i1 %tobool.i, double %vecext1.i, double %mul.i.i3413  %vecins.i = insertelement <2 x double> %__A, double %cond.i, i32 03414  ret <2 x double> %vecins.i3415}3416 3417define <2 x double> @test_mm_maskz_mul_sd(i8 zeroext %__U, <2 x double> %__A, <2 x double> %__B) {3418; X86-LABEL: test_mm_maskz_mul_sd:3419; X86:       ## %bb.0: ## %entry3420; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]3421; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]3422; X86-NEXT:    vmulsd %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0xff,0x89,0x59,0xc1]3423; X86-NEXT:    retl ## encoding: [0xc3]3424;3425; X64-LABEL: test_mm_maskz_mul_sd:3426; X64:       ## %bb.0: ## %entry3427; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]3428; X64-NEXT:    vmulsd %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0xff,0x89,0x59,0xc1]3429; X64-NEXT:    retq ## encoding: [0xc3]3430entry:3431  %vecext.i.i = extractelement <2 x double> %__B, i32 03432  %vecext1.i.i = extractelement <2 x double> %__A, i32 03433  %mul.i.i = fmul double %vecext1.i.i, %vecext.i.i3434  %0 = and i8 %__U, 13435  %tobool.i = icmp eq i8 %0, 03436  %cond.i = select i1 %tobool.i, double 0.000000e+00, double %mul.i.i3437  %vecins.i = insertelement <2 x double> %__A, double %cond.i, i32 03438  ret <2 x double> %vecins.i3439}3440 3441define <4 x float> @test_mm_mask_div_ss(<4 x float> %__W, i8 zeroext %__U, <4 x float> %__A, <4 x float> %__B) {3442; X86-LABEL: test_mm_mask_div_ss:3443; X86:       ## %bb.0: ## %entry3444; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]3445; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]3446; X86-NEXT:    vdivss %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf1,0x76,0x09,0x5e,0xc2]3447; X86-NEXT:    retl ## encoding: [0xc3]3448;3449; X64-LABEL: test_mm_mask_div_ss:3450; X64:       ## %bb.0: ## %entry3451; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]3452; X64-NEXT:    vdivss %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf1,0x76,0x09,0x5e,0xc2]3453; X64-NEXT:    retq ## encoding: [0xc3]3454entry:3455  %0 = extractelement <4 x float> %__A, i64 03456  %1 = extractelement <4 x float> %__B, i64 03457  %2 = extractelement <4 x float> %__W, i64 03458  %3 = fdiv float %0, %13459  %4 = bitcast i8 %__U to <8 x i1>3460  %5 = extractelement <8 x i1> %4, i64 03461  %6 = select i1 %5, float %3, float %23462  %7 = insertelement <4 x float> %__A, float %6, i64 03463  ret <4 x float> %73464}3465 3466define <4 x float> @test_mm_maskz_div_ss(i8 zeroext %__U, <4 x float> %__A, <4 x float> %__B) {3467; X86-LABEL: test_mm_maskz_div_ss:3468; X86:       ## %bb.0: ## %entry3469; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]3470; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]3471; X86-NEXT:    vdivss %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7e,0x89,0x5e,0xc1]3472; X86-NEXT:    retl ## encoding: [0xc3]3473;3474; X64-LABEL: test_mm_maskz_div_ss:3475; X64:       ## %bb.0: ## %entry3476; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]3477; X64-NEXT:    vdivss %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7e,0x89,0x5e,0xc1]3478; X64-NEXT:    retq ## encoding: [0xc3]3479entry:3480  %0 = extractelement <4 x float> %__A, i64 03481  %1 = extractelement <4 x float> %__B, i64 03482  %2 = fdiv float %0, %13483  %3 = bitcast i8 %__U to <8 x i1>3484  %4 = extractelement <8 x i1> %3, i64 03485  %5 = select i1 %4, float %2, float 0.000000e+003486  %6 = insertelement <4 x float> %__A, float %5, i64 03487  ret <4 x float> %63488}3489 3490define <2 x double> @test_mm_mask_div_sd(<2 x double> %__W, i8 zeroext %__U, <2 x double> %__A, <2 x double> %__B) {3491; X86-LABEL: test_mm_mask_div_sd:3492; X86:       ## %bb.0: ## %entry3493; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]3494; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]3495; X86-NEXT:    vdivsd %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf1,0xf7,0x09,0x5e,0xc2]3496; X86-NEXT:    retl ## encoding: [0xc3]3497;3498; X64-LABEL: test_mm_mask_div_sd:3499; X64:       ## %bb.0: ## %entry3500; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]3501; X64-NEXT:    vdivsd %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf1,0xf7,0x09,0x5e,0xc2]3502; X64-NEXT:    retq ## encoding: [0xc3]3503entry:3504  %0 = extractelement <2 x double> %__A, i64 03505  %1 = extractelement <2 x double> %__B, i64 03506  %2 = extractelement <2 x double> %__W, i64 03507  %3 = fdiv double %0, %13508  %4 = bitcast i8 %__U to <8 x i1>3509  %5 = extractelement <8 x i1> %4, i64 03510  %6 = select i1 %5, double %3, double %23511  %7 = insertelement <2 x double> %__A, double %6, i64 03512  ret <2 x double> %73513}3514 3515define <2 x double> @test_mm_maskz_div_sd(i8 zeroext %__U, <2 x double> %__A, <2 x double> %__B) {3516; X86-LABEL: test_mm_maskz_div_sd:3517; X86:       ## %bb.0: ## %entry3518; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax ## encoding: [0x0f,0xb6,0x44,0x24,0x04]3519; X86-NEXT:    kmovw %eax, %k1 ## encoding: [0xc5,0xf8,0x92,0xc8]3520; X86-NEXT:    vdivsd %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0xff,0x89,0x5e,0xc1]3521; X86-NEXT:    retl ## encoding: [0xc3]3522;3523; X64-LABEL: test_mm_maskz_div_sd:3524; X64:       ## %bb.0: ## %entry3525; X64-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]3526; X64-NEXT:    vdivsd %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0xff,0x89,0x5e,0xc1]3527; X64-NEXT:    retq ## encoding: [0xc3]3528entry:3529  %0 = extractelement <2 x double> %__A, i64 03530  %1 = extractelement <2 x double> %__B, i64 03531  %2 = fdiv double %0, %13532  %3 = bitcast i8 %__U to <8 x i1>3533  %4 = extractelement <8 x i1> %3, i64 03534  %5 = select i1 %4, double %2, double 0.000000e+003535  %6 = insertelement <2 x double> %__A, double %5, i64 03536  ret <2 x double> %63537}3538 3539declare <8 x double> @llvm.fma.v8f64(<8 x double>, <8 x double>, <8 x double>) #93540declare <16 x float> @llvm.fma.v16f32(<16 x float>, <16 x float>, <16 x float>) #93541declare float @llvm.fma.f32(float, float, float) #93542declare double @llvm.fma.f64(double, double, double) #93543