brintos

brintos / llvm-project-archived public Read only

0
0
Text · 15.9 KiB · 74b51ac Raw
409 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-- -mcpu=nehalem     | FileCheck %s --check-prefixes=NHM3; RUN: llc < %s -mtriple=x86_64-- -mcpu=sandybridge | FileCheck %s --check-prefixes=FAST-SCALAR,SNB4; RUN: llc < %s -mtriple=x86_64-- -mcpu=broadwell   | FileCheck %s --check-prefixes=FAST-SCALAR,BDW5; RUN: llc < %s -mtriple=x86_64-- -mcpu=skylake     | FileCheck %s --check-prefixes=FAST-SCALAR,FAST-VECTOR6; RUN: llc < %s -mtriple=x86_64-- -mcpu=znver1      | FileCheck %s --check-prefixes=FAST-SCALAR,FAST-VECTOR7; RUN: llc < %s -mtriple=x86_64-- -mcpu=znver3      | FileCheck %s --check-prefixes=FAST-SCALAR,FAST-VECTOR8; RUN: llc < %s -mtriple=x86_64-- -mcpu=znver4      | FileCheck %s --check-prefixes=FAST-SCALAR,FAST-VECTOR9; RUN: llc < %s -mtriple=x86_64-- -mcpu=znver5      | FileCheck %s --check-prefixes=FAST-SCALAR,FAST-VECTOR10; RUN: llc < %s -mtriple=x86_64-- -mcpu=x86-64      | FileCheck %s --check-prefixes=X86-6411 12define float @f32_no_daz(float %f) #0 {13; NHM-LABEL: f32_no_daz:14; NHM:       # %bb.0:15; NHM-NEXT:    rsqrtss %xmm0, %xmm116; NHM-NEXT:    movaps %xmm0, %xmm217; NHM-NEXT:    mulss %xmm1, %xmm218; NHM-NEXT:    movss {{.*#+}} xmm3 = [-5.0E-1,0.0E+0,0.0E+0,0.0E+0]19; NHM-NEXT:    mulss %xmm2, %xmm320; NHM-NEXT:    mulss %xmm1, %xmm221; NHM-NEXT:    addss {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm222; NHM-NEXT:    mulss %xmm3, %xmm223; NHM-NEXT:    andps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm024; NHM-NEXT:    cmpltss {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm025; NHM-NEXT:    andnps %xmm2, %xmm026; NHM-NEXT:    retq27;28; FAST-SCALAR-LABEL: f32_no_daz:29; FAST-SCALAR:       # %bb.0:30; FAST-SCALAR-NEXT:    vsqrtss %xmm0, %xmm0, %xmm031; FAST-SCALAR-NEXT:    retq32;33; X86-64-LABEL: f32_no_daz:34; X86-64:       # %bb.0:35; X86-64-NEXT:    sqrtss %xmm0, %xmm036; X86-64-NEXT:    retq37  %call = tail call fast float @llvm.sqrt.f32(float %f) #238  ret float %call39}40 41define <4 x float> @v4f32_no_daz(<4 x float> %f) #0 {42; NHM-LABEL: v4f32_no_daz:43; NHM:       # %bb.0:44; NHM-NEXT:    rsqrtps %xmm0, %xmm145; NHM-NEXT:    movaps %xmm0, %xmm246; NHM-NEXT:    mulps %xmm1, %xmm247; NHM-NEXT:    movaps {{.*#+}} xmm3 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]48; NHM-NEXT:    mulps %xmm2, %xmm349; NHM-NEXT:    mulps %xmm1, %xmm250; NHM-NEXT:    addps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm251; NHM-NEXT:    mulps %xmm3, %xmm252; NHM-NEXT:    andps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm053; NHM-NEXT:    movaps {{.*#+}} xmm1 = [1.17549435E-38,1.17549435E-38,1.17549435E-38,1.17549435E-38]54; NHM-NEXT:    cmpleps %xmm0, %xmm155; NHM-NEXT:    andps %xmm2, %xmm156; NHM-NEXT:    movaps %xmm1, %xmm057; NHM-NEXT:    retq58;59; SNB-LABEL: v4f32_no_daz:60; SNB:       # %bb.0:61; SNB-NEXT:    vrsqrtps %xmm0, %xmm162; SNB-NEXT:    vmulps %xmm1, %xmm0, %xmm263; SNB-NEXT:    vmulps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm2, %xmm364; SNB-NEXT:    vmulps %xmm1, %xmm2, %xmm165; SNB-NEXT:    vaddps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1, %xmm166; SNB-NEXT:    vmulps %xmm1, %xmm3, %xmm167; SNB-NEXT:    vandps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm068; SNB-NEXT:    vbroadcastss {{.*#+}} xmm2 = [1.17549435E-38,1.17549435E-38,1.17549435E-38,1.17549435E-38]69; SNB-NEXT:    vcmpleps %xmm0, %xmm2, %xmm070; SNB-NEXT:    vandps %xmm1, %xmm0, %xmm071; SNB-NEXT:    retq72;73; BDW-LABEL: v4f32_no_daz:74; BDW:       # %bb.0:75; BDW-NEXT:    vrsqrtps %xmm0, %xmm176; BDW-NEXT:    vmulps %xmm1, %xmm0, %xmm277; BDW-NEXT:    vbroadcastss {{.*#+}} xmm3 = [-3.0E+0,-3.0E+0,-3.0E+0,-3.0E+0]78; BDW-NEXT:    vfmadd231ps {{.*#+}} xmm3 = (xmm2 * xmm1) + xmm379; BDW-NEXT:    vbroadcastss {{.*#+}} xmm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]80; BDW-NEXT:    vmulps %xmm1, %xmm2, %xmm181; BDW-NEXT:    vmulps %xmm3, %xmm1, %xmm182; BDW-NEXT:    vbroadcastss {{.*#+}} xmm2 = [NaN,NaN,NaN,NaN]83; BDW-NEXT:    vandps %xmm2, %xmm0, %xmm084; BDW-NEXT:    vbroadcastss {{.*#+}} xmm2 = [1.17549435E-38,1.17549435E-38,1.17549435E-38,1.17549435E-38]85; BDW-NEXT:    vcmpleps %xmm0, %xmm2, %xmm086; BDW-NEXT:    vandps %xmm1, %xmm0, %xmm087; BDW-NEXT:    retq88;89; FAST-VECTOR-LABEL: v4f32_no_daz:90; FAST-VECTOR:       # %bb.0:91; FAST-VECTOR-NEXT:    vsqrtps %xmm0, %xmm092; FAST-VECTOR-NEXT:    retq93;94; X86-64-LABEL: v4f32_no_daz:95; X86-64:       # %bb.0:96; X86-64-NEXT:    rsqrtps %xmm0, %xmm197; X86-64-NEXT:    movaps %xmm0, %xmm298; X86-64-NEXT:    mulps %xmm1, %xmm299; X86-64-NEXT:    movaps {{.*#+}} xmm3 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]100; X86-64-NEXT:    mulps %xmm2, %xmm3101; X86-64-NEXT:    mulps %xmm1, %xmm2102; X86-64-NEXT:    addps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm2103; X86-64-NEXT:    mulps %xmm3, %xmm2104; X86-64-NEXT:    andps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0105; X86-64-NEXT:    movaps {{.*#+}} xmm1 = [1.17549435E-38,1.17549435E-38,1.17549435E-38,1.17549435E-38]106; X86-64-NEXT:    cmpleps %xmm0, %xmm1107; X86-64-NEXT:    andps %xmm2, %xmm1108; X86-64-NEXT:    movaps %xmm1, %xmm0109; X86-64-NEXT:    retq110  %call = tail call fast <4 x float> @llvm.sqrt.v4f32(<4 x float> %f) #2111  ret <4 x float> %call112}113 114define <8 x float> @v8f32_no_daz(<8 x float> %f) #0 {115; NHM-LABEL: v8f32_no_daz:116; NHM:       # %bb.0:117; NHM-NEXT:    rsqrtps %xmm0, %xmm2118; NHM-NEXT:    movaps %xmm0, %xmm4119; NHM-NEXT:    mulps %xmm2, %xmm4120; NHM-NEXT:    movaps {{.*#+}} xmm5 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]121; NHM-NEXT:    movaps %xmm4, %xmm3122; NHM-NEXT:    mulps %xmm5, %xmm3123; NHM-NEXT:    mulps %xmm2, %xmm4124; NHM-NEXT:    movaps {{.*#+}} xmm6 = [-3.0E+0,-3.0E+0,-3.0E+0,-3.0E+0]125; NHM-NEXT:    addps %xmm6, %xmm4126; NHM-NEXT:    mulps %xmm3, %xmm4127; NHM-NEXT:    movaps {{.*#+}} xmm7 = [NaN,NaN,NaN,NaN]128; NHM-NEXT:    andps %xmm7, %xmm0129; NHM-NEXT:    movaps {{.*#+}} xmm2 = [1.17549435E-38,1.17549435E-38,1.17549435E-38,1.17549435E-38]130; NHM-NEXT:    movaps %xmm2, %xmm3131; NHM-NEXT:    cmpleps %xmm0, %xmm3132; NHM-NEXT:    andps %xmm4, %xmm3133; NHM-NEXT:    rsqrtps %xmm1, %xmm0134; NHM-NEXT:    movaps %xmm1, %xmm4135; NHM-NEXT:    mulps %xmm0, %xmm4136; NHM-NEXT:    mulps %xmm4, %xmm5137; NHM-NEXT:    mulps %xmm0, %xmm4138; NHM-NEXT:    addps %xmm6, %xmm4139; NHM-NEXT:    mulps %xmm5, %xmm4140; NHM-NEXT:    andps %xmm7, %xmm1141; NHM-NEXT:    cmpleps %xmm1, %xmm2142; NHM-NEXT:    andps %xmm4, %xmm2143; NHM-NEXT:    movaps %xmm3, %xmm0144; NHM-NEXT:    movaps %xmm2, %xmm1145; NHM-NEXT:    retq146;147; SNB-LABEL: v8f32_no_daz:148; SNB:       # %bb.0:149; SNB-NEXT:    vrsqrtps %ymm0, %ymm1150; SNB-NEXT:    vmulps %ymm1, %ymm0, %ymm2151; SNB-NEXT:    vmulps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm2, %ymm3152; SNB-NEXT:    vmulps %ymm1, %ymm2, %ymm1153; SNB-NEXT:    vaddps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm1154; SNB-NEXT:    vmulps %ymm1, %ymm3, %ymm1155; SNB-NEXT:    vandps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0156; SNB-NEXT:    vmovaps {{.*#+}} ymm2 = [1.17549435E-38,1.17549435E-38,1.17549435E-38,1.17549435E-38,1.17549435E-38,1.17549435E-38,1.17549435E-38,1.17549435E-38]157; SNB-NEXT:    vcmpleps %ymm0, %ymm2, %ymm0158; SNB-NEXT:    vandps %ymm1, %ymm0, %ymm0159; SNB-NEXT:    retq160;161; BDW-LABEL: v8f32_no_daz:162; BDW:       # %bb.0:163; BDW-NEXT:    vrsqrtps %ymm0, %ymm1164; BDW-NEXT:    vmulps %ymm1, %ymm0, %ymm2165; BDW-NEXT:    vbroadcastss {{.*#+}} ymm3 = [-3.0E+0,-3.0E+0,-3.0E+0,-3.0E+0,-3.0E+0,-3.0E+0,-3.0E+0,-3.0E+0]166; BDW-NEXT:    vfmadd231ps {{.*#+}} ymm3 = (ymm2 * ymm1) + ymm3167; BDW-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]168; BDW-NEXT:    vmulps %ymm1, %ymm2, %ymm1169; BDW-NEXT:    vmulps %ymm3, %ymm1, %ymm1170; BDW-NEXT:    vbroadcastss {{.*#+}} ymm2 = [NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN]171; BDW-NEXT:    vandps %ymm2, %ymm0, %ymm0172; BDW-NEXT:    vbroadcastss {{.*#+}} ymm2 = [1.17549435E-38,1.17549435E-38,1.17549435E-38,1.17549435E-38,1.17549435E-38,1.17549435E-38,1.17549435E-38,1.17549435E-38]173; BDW-NEXT:    vcmpleps %ymm0, %ymm2, %ymm0174; BDW-NEXT:    vandps %ymm1, %ymm0, %ymm0175; BDW-NEXT:    retq176;177; FAST-VECTOR-LABEL: v8f32_no_daz:178; FAST-VECTOR:       # %bb.0:179; FAST-VECTOR-NEXT:    vsqrtps %ymm0, %ymm0180; FAST-VECTOR-NEXT:    retq181;182; X86-64-LABEL: v8f32_no_daz:183; X86-64:       # %bb.0:184; X86-64-NEXT:    rsqrtps %xmm0, %xmm2185; X86-64-NEXT:    movaps %xmm0, %xmm4186; X86-64-NEXT:    mulps %xmm2, %xmm4187; X86-64-NEXT:    movaps {{.*#+}} xmm5 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]188; X86-64-NEXT:    movaps %xmm4, %xmm3189; X86-64-NEXT:    mulps %xmm5, %xmm3190; X86-64-NEXT:    mulps %xmm2, %xmm4191; X86-64-NEXT:    movaps {{.*#+}} xmm6 = [-3.0E+0,-3.0E+0,-3.0E+0,-3.0E+0]192; X86-64-NEXT:    addps %xmm6, %xmm4193; X86-64-NEXT:    mulps %xmm3, %xmm4194; X86-64-NEXT:    movaps {{.*#+}} xmm7 = [NaN,NaN,NaN,NaN]195; X86-64-NEXT:    andps %xmm7, %xmm0196; X86-64-NEXT:    movaps {{.*#+}} xmm2 = [1.17549435E-38,1.17549435E-38,1.17549435E-38,1.17549435E-38]197; X86-64-NEXT:    movaps %xmm2, %xmm3198; X86-64-NEXT:    cmpleps %xmm0, %xmm3199; X86-64-NEXT:    andps %xmm4, %xmm3200; X86-64-NEXT:    rsqrtps %xmm1, %xmm0201; X86-64-NEXT:    movaps %xmm1, %xmm4202; X86-64-NEXT:    mulps %xmm0, %xmm4203; X86-64-NEXT:    mulps %xmm4, %xmm5204; X86-64-NEXT:    mulps %xmm0, %xmm4205; X86-64-NEXT:    addps %xmm6, %xmm4206; X86-64-NEXT:    mulps %xmm5, %xmm4207; X86-64-NEXT:    andps %xmm7, %xmm1208; X86-64-NEXT:    cmpleps %xmm1, %xmm2209; X86-64-NEXT:    andps %xmm4, %xmm2210; X86-64-NEXT:    movaps %xmm3, %xmm0211; X86-64-NEXT:    movaps %xmm2, %xmm1212; X86-64-NEXT:    retq213  %call = tail call fast <8 x float> @llvm.sqrt.v8f32(<8 x float> %f) #2214  ret <8 x float> %call215}216 217; Repeat all tests with denorms-as-zero enabled.218 219define float @f32_daz(float %f) #1 {220; NHM-LABEL: f32_daz:221; NHM:       # %bb.0:222; NHM-NEXT:    rsqrtss %xmm0, %xmm1223; NHM-NEXT:    movaps %xmm0, %xmm2224; NHM-NEXT:    mulss %xmm1, %xmm2225; NHM-NEXT:    movss {{.*#+}} xmm3 = [-5.0E-1,0.0E+0,0.0E+0,0.0E+0]226; NHM-NEXT:    mulss %xmm2, %xmm3227; NHM-NEXT:    mulss %xmm1, %xmm2228; NHM-NEXT:    addss {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm2229; NHM-NEXT:    mulss %xmm3, %xmm2230; NHM-NEXT:    xorps %xmm1, %xmm1231; NHM-NEXT:    cmpeqss %xmm1, %xmm0232; NHM-NEXT:    andnps %xmm2, %xmm0233; NHM-NEXT:    retq234;235; FAST-SCALAR-LABEL: f32_daz:236; FAST-SCALAR:       # %bb.0:237; FAST-SCALAR-NEXT:    vsqrtss %xmm0, %xmm0, %xmm0238; FAST-SCALAR-NEXT:    retq239;240; X86-64-LABEL: f32_daz:241; X86-64:       # %bb.0:242; X86-64-NEXT:    sqrtss %xmm0, %xmm0243; X86-64-NEXT:    retq244  %call = tail call fast float @llvm.sqrt.f32(float %f) #2245  ret float %call246}247 248define <4 x float> @v4f32_daz(<4 x float> %f) #1 {249; NHM-LABEL: v4f32_daz:250; NHM:       # %bb.0:251; NHM-NEXT:    rsqrtps %xmm0, %xmm1252; NHM-NEXT:    movaps %xmm0, %xmm2253; NHM-NEXT:    mulps %xmm1, %xmm2254; NHM-NEXT:    movaps {{.*#+}} xmm3 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]255; NHM-NEXT:    mulps %xmm2, %xmm3256; NHM-NEXT:    mulps %xmm1, %xmm2257; NHM-NEXT:    addps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm2258; NHM-NEXT:    mulps %xmm3, %xmm2259; NHM-NEXT:    xorps %xmm1, %xmm1260; NHM-NEXT:    cmpneqps %xmm1, %xmm0261; NHM-NEXT:    andps %xmm2, %xmm0262; NHM-NEXT:    retq263;264; SNB-LABEL: v4f32_daz:265; SNB:       # %bb.0:266; SNB-NEXT:    vrsqrtps %xmm0, %xmm1267; SNB-NEXT:    vmulps %xmm1, %xmm0, %xmm2268; SNB-NEXT:    vmulps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm2, %xmm3269; SNB-NEXT:    vmulps %xmm1, %xmm2, %xmm1270; SNB-NEXT:    vaddps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1, %xmm1271; SNB-NEXT:    vmulps %xmm1, %xmm3, %xmm1272; SNB-NEXT:    vxorps %xmm2, %xmm2, %xmm2273; SNB-NEXT:    vcmpneqps %xmm2, %xmm0, %xmm0274; SNB-NEXT:    vandps %xmm1, %xmm0, %xmm0275; SNB-NEXT:    retq276;277; BDW-LABEL: v4f32_daz:278; BDW:       # %bb.0:279; BDW-NEXT:    vrsqrtps %xmm0, %xmm1280; BDW-NEXT:    vmulps %xmm1, %xmm0, %xmm2281; BDW-NEXT:    vbroadcastss {{.*#+}} xmm3 = [-3.0E+0,-3.0E+0,-3.0E+0,-3.0E+0]282; BDW-NEXT:    vfmadd231ps {{.*#+}} xmm3 = (xmm2 * xmm1) + xmm3283; BDW-NEXT:    vbroadcastss {{.*#+}} xmm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]284; BDW-NEXT:    vmulps %xmm1, %xmm2, %xmm1285; BDW-NEXT:    vmulps %xmm3, %xmm1, %xmm1286; BDW-NEXT:    vxorps %xmm2, %xmm2, %xmm2287; BDW-NEXT:    vcmpneqps %xmm2, %xmm0, %xmm0288; BDW-NEXT:    vandps %xmm1, %xmm0, %xmm0289; BDW-NEXT:    retq290;291; FAST-VECTOR-LABEL: v4f32_daz:292; FAST-VECTOR:       # %bb.0:293; FAST-VECTOR-NEXT:    vsqrtps %xmm0, %xmm0294; FAST-VECTOR-NEXT:    retq295;296; X86-64-LABEL: v4f32_daz:297; X86-64:       # %bb.0:298; X86-64-NEXT:    rsqrtps %xmm0, %xmm1299; X86-64-NEXT:    movaps %xmm0, %xmm2300; X86-64-NEXT:    mulps %xmm1, %xmm2301; X86-64-NEXT:    movaps {{.*#+}} xmm3 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]302; X86-64-NEXT:    mulps %xmm2, %xmm3303; X86-64-NEXT:    mulps %xmm1, %xmm2304; X86-64-NEXT:    addps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm2305; X86-64-NEXT:    mulps %xmm3, %xmm2306; X86-64-NEXT:    xorps %xmm1, %xmm1307; X86-64-NEXT:    cmpneqps %xmm1, %xmm0308; X86-64-NEXT:    andps %xmm2, %xmm0309; X86-64-NEXT:    retq310  %call = tail call fast <4 x float> @llvm.sqrt.v4f32(<4 x float> %f) #2311  ret <4 x float> %call312}313 314define <8 x float> @v8f32_daz(<8 x float> %f) #1 {315; NHM-LABEL: v8f32_daz:316; NHM:       # %bb.0:317; NHM-NEXT:    rsqrtps %xmm0, %xmm2318; NHM-NEXT:    movaps %xmm0, %xmm3319; NHM-NEXT:    mulps %xmm2, %xmm3320; NHM-NEXT:    movaps {{.*#+}} xmm4 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]321; NHM-NEXT:    movaps %xmm3, %xmm5322; NHM-NEXT:    mulps %xmm4, %xmm5323; NHM-NEXT:    mulps %xmm2, %xmm3324; NHM-NEXT:    movaps {{.*#+}} xmm2 = [-3.0E+0,-3.0E+0,-3.0E+0,-3.0E+0]325; NHM-NEXT:    addps %xmm2, %xmm3326; NHM-NEXT:    mulps %xmm5, %xmm3327; NHM-NEXT:    xorps %xmm5, %xmm5328; NHM-NEXT:    cmpneqps %xmm5, %xmm0329; NHM-NEXT:    andps %xmm3, %xmm0330; NHM-NEXT:    rsqrtps %xmm1, %xmm3331; NHM-NEXT:    movaps %xmm1, %xmm6332; NHM-NEXT:    mulps %xmm3, %xmm6333; NHM-NEXT:    mulps %xmm6, %xmm4334; NHM-NEXT:    mulps %xmm3, %xmm6335; NHM-NEXT:    addps %xmm2, %xmm6336; NHM-NEXT:    mulps %xmm4, %xmm6337; NHM-NEXT:    cmpneqps %xmm5, %xmm1338; NHM-NEXT:    andps %xmm6, %xmm1339; NHM-NEXT:    retq340;341; SNB-LABEL: v8f32_daz:342; SNB:       # %bb.0:343; SNB-NEXT:    vrsqrtps %ymm0, %ymm1344; SNB-NEXT:    vmulps %ymm1, %ymm0, %ymm2345; SNB-NEXT:    vmulps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm2, %ymm3346; SNB-NEXT:    vmulps %ymm1, %ymm2, %ymm1347; SNB-NEXT:    vaddps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm1348; SNB-NEXT:    vmulps %ymm1, %ymm3, %ymm1349; SNB-NEXT:    vxorps %xmm2, %xmm2, %xmm2350; SNB-NEXT:    vcmpneqps %ymm2, %ymm0, %ymm0351; SNB-NEXT:    vandps %ymm1, %ymm0, %ymm0352; SNB-NEXT:    retq353;354; BDW-LABEL: v8f32_daz:355; BDW:       # %bb.0:356; BDW-NEXT:    vrsqrtps %ymm0, %ymm1357; BDW-NEXT:    vmulps %ymm1, %ymm0, %ymm2358; BDW-NEXT:    vbroadcastss {{.*#+}} ymm3 = [-3.0E+0,-3.0E+0,-3.0E+0,-3.0E+0,-3.0E+0,-3.0E+0,-3.0E+0,-3.0E+0]359; BDW-NEXT:    vfmadd231ps {{.*#+}} ymm3 = (ymm2 * ymm1) + ymm3360; BDW-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]361; BDW-NEXT:    vmulps %ymm1, %ymm2, %ymm1362; BDW-NEXT:    vmulps %ymm3, %ymm1, %ymm1363; BDW-NEXT:    vxorps %xmm2, %xmm2, %xmm2364; BDW-NEXT:    vcmpneqps %ymm2, %ymm0, %ymm0365; BDW-NEXT:    vandps %ymm1, %ymm0, %ymm0366; BDW-NEXT:    retq367;368; FAST-VECTOR-LABEL: v8f32_daz:369; FAST-VECTOR:       # %bb.0:370; FAST-VECTOR-NEXT:    vsqrtps %ymm0, %ymm0371; FAST-VECTOR-NEXT:    retq372;373; X86-64-LABEL: v8f32_daz:374; X86-64:       # %bb.0:375; X86-64-NEXT:    rsqrtps %xmm0, %xmm2376; X86-64-NEXT:    movaps %xmm0, %xmm3377; X86-64-NEXT:    mulps %xmm2, %xmm3378; X86-64-NEXT:    movaps {{.*#+}} xmm4 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]379; X86-64-NEXT:    movaps %xmm3, %xmm5380; X86-64-NEXT:    mulps %xmm4, %xmm5381; X86-64-NEXT:    mulps %xmm2, %xmm3382; X86-64-NEXT:    movaps {{.*#+}} xmm2 = [-3.0E+0,-3.0E+0,-3.0E+0,-3.0E+0]383; X86-64-NEXT:    addps %xmm2, %xmm3384; X86-64-NEXT:    mulps %xmm5, %xmm3385; X86-64-NEXT:    xorps %xmm5, %xmm5386; X86-64-NEXT:    cmpneqps %xmm5, %xmm0387; X86-64-NEXT:    andps %xmm3, %xmm0388; X86-64-NEXT:    rsqrtps %xmm1, %xmm3389; X86-64-NEXT:    movaps %xmm1, %xmm6390; X86-64-NEXT:    mulps %xmm3, %xmm6391; X86-64-NEXT:    mulps %xmm6, %xmm4392; X86-64-NEXT:    mulps %xmm3, %xmm6393; X86-64-NEXT:    addps %xmm2, %xmm6394; X86-64-NEXT:    mulps %xmm4, %xmm6395; X86-64-NEXT:    cmpneqps %xmm5, %xmm1396; X86-64-NEXT:    andps %xmm6, %xmm1397; X86-64-NEXT:    retq398  %call = tail call fast <8 x float> @llvm.sqrt.v8f32(<8 x float> %f) #2399  ret <8 x float> %call400}401 402declare float @llvm.sqrt.f32(float) #2403declare <4 x float> @llvm.sqrt.v4f32(<4 x float>) #2404declare <8 x float> @llvm.sqrt.v8f32(<8 x float>) #2405 406attributes #0 = { "denormal-fp-math"="ieee,ieee" }407attributes #1 = { "denormal-fp-math"="ieee,preserve-sign" }408attributes #2 = { nounwind readnone }409