; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py ; RUN: opt -passes='print<cost-model>' 2>&1 -disable-output -mtriple=amdgcn-unknown-amdhsa -mcpu=gfx900 -denormal-fp-math-f32=preserve-sign -denormal-fp-math=preserve-sign -fp-contract=on < %s | FileCheck -check-prefixes=SLOWF64,FUSED,SLOWF32 %s ; RUN: opt -passes='print<cost-model>' 2>&1 -disable-output -mtriple=amdgcn-unknown-amdhsa -mcpu=gfx900 -denormal-fp-math-f32=ieee -denormal-fp-math=ieee -fp-contract=on < %s | FileCheck -check-prefixes=SLOWF64,FASTF32,GFX9SLOW %s ; RUN: opt -passes='print<cost-model>' 2>&1 -disable-output -mtriple=amdgcn-unknown-amdhsa -mcpu=gfx900 -denormal-fp-math-f32=ieee -denormal-fp-math=ieee -fp-contract=fast < %s | FileCheck -check-prefixes=FUSED,SLOWF32,GFX9FAST %s ; RUN: opt -passes='print<cost-model>' 2>&1 -disable-output -mtriple=amdgcn-unknown-amdhsa -mcpu=gfx1030 -denormal-fp-math-f32=preserve-sign -denormal-fp-math=preserve-sign -fp-contract=on < %s | FileCheck -check-prefixes=SLOWF64,FUSED,FASTF32 %s ; RUN: opt -passes='print<cost-model>' -cost-kind=code-size 2>&1 -disable-output -mtriple=amdgcn-unknown-amdhsa -mcpu=gfx900 -denormal-fp-math-f32=preserve-sign -denormal-fp-math=preserve-sign -fp-contract=on < %s | FileCheck -check-prefixes=SLOWF64-SIZE,FUSED-SIZE,SLOWF32-SIZE %s ; RUN: opt -passes='print<cost-model>' -cost-kind=code-size 2>&1 -disable-output -mtriple=amdgcn-unknown-amdhsa -mcpu=gfx900 -denormal-fp-math-f32=ieee -denormal-fp-math=ieee -fp-contract=on < %s | FileCheck -check-prefixes=SLOWF64-SIZE,FASTF32-SIZE,GFX9SLOW-SIZE %s ; RUN: opt -passes='print<cost-model>' -cost-kind=code-size 2>&1 -disable-output -mtriple=amdgcn-unknown-amdhsa -mcpu=gfx900 -denormal-fp-math-f32=ieee -denormal-fp-math=ieee -fp-contract=fast < %s | FileCheck -check-prefixes=FUSED-SIZE,SLOWF32-SIZE,GFX9FAST-SIZE %s ; RUN: opt -passes='print<cost-model>' -cost-kind=code-size 2>&1 -disable-output -mtriple=amdgcn-unknown-amdhsa -mcpu=gfx1030 -denormal-fp-math-f32=preserve-sign -denormal-fp-math=preserve-sign -fp-contract=on < %s | FileCheck -check-prefixes=SLOWF64-SIZE,FUSED-SIZE,FASTF32-SIZE %s ; END. target triple = "amdgcn--" define void @fmul_fadd_f32() #0 { ; SLOWF32-LABEL: 'fmul_fadd_f32' ; SLOWF32-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f32 = fmul float undef, undef ; SLOWF32-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32add = fadd float %f32, undef ; SLOWF32-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f32c = fmul contract float undef, undef ; SLOWF32-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32cadd = fadd contract float %f32c, undef ; SLOWF32-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2f32 = fmul <2 x float> undef, undef ; SLOWF32-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2f32add = fadd <2 x float> %v2f32, undef ; SLOWF32-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f32_2 = fmul float undef, undef ; SLOWF32-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32sub = fsub float %f32_2, undef ; SLOWF32-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f32c_2 = fmul contract float undef, undef ; SLOWF32-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32csub = fsub contract float %f32c_2, undef ; SLOWF32-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2f32_2 = fmul <2 x float> undef, undef ; SLOWF32-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2f32sub = fsub <2 x float> %v2f32_2, undef ; SLOWF32-NEXT: Cost Model: Found an estimated cost of 10 for instruction: ret void ; ; FASTF32-LABEL: 'fmul_fadd_f32' ; FASTF32-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32 = fmul float undef, undef ; FASTF32-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32add = fadd float %f32, undef ; FASTF32-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f32c = fmul contract float undef, undef ; FASTF32-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32cadd = fadd contract float %f32c, undef ; FASTF32-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2f32 = fmul <2 x float> undef, undef ; FASTF32-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2f32add = fadd <2 x float> %v2f32, undef ; FASTF32-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32_2 = fmul float undef, undef ; FASTF32-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32sub = fsub float %f32_2, undef ; FASTF32-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f32c_2 = fmul contract float undef, undef ; FASTF32-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32csub = fsub contract float %f32c_2, undef ; FASTF32-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2f32_2 = fmul <2 x float> undef, undef ; FASTF32-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2f32sub = fsub <2 x float> %v2f32_2, undef ; FASTF32-NEXT: Cost Model: Found an estimated cost of 10 for instruction: ret void ; ; SLOWF32-SIZE-LABEL: 'fmul_fadd_f32' ; SLOWF32-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f32 = fmul float undef, undef ; SLOWF32-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32add = fadd float %f32, undef ; SLOWF32-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f32c = fmul contract float undef, undef ; SLOWF32-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32cadd = fadd contract float %f32c, undef ; SLOWF32-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2f32 = fmul <2 x float> undef, undef ; SLOWF32-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2f32add = fadd <2 x float> %v2f32, undef ; SLOWF32-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f32_2 = fmul float undef, undef ; SLOWF32-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32sub = fsub float %f32_2, undef ; SLOWF32-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f32c_2 = fmul contract float undef, undef ; SLOWF32-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32csub = fsub contract float %f32c_2, undef ; SLOWF32-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2f32_2 = fmul <2 x float> undef, undef ; SLOWF32-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2f32sub = fsub <2 x float> %v2f32_2, undef ; SLOWF32-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret void ; ; FASTF32-SIZE-LABEL: 'fmul_fadd_f32' ; FASTF32-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32 = fmul float undef, undef ; FASTF32-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32add = fadd float %f32, undef ; FASTF32-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f32c = fmul contract float undef, undef ; FASTF32-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32cadd = fadd contract float %f32c, undef ; FASTF32-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2f32 = fmul <2 x float> undef, undef ; FASTF32-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2f32add = fadd <2 x float> %v2f32, undef ; FASTF32-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32_2 = fmul float undef, undef ; FASTF32-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32sub = fsub float %f32_2, undef ; FASTF32-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f32c_2 = fmul contract float undef, undef ; FASTF32-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f32csub = fsub contract float %f32c_2, undef ; FASTF32-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2f32_2 = fmul <2 x float> undef, undef ; FASTF32-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2f32sub = fsub <2 x float> %v2f32_2, undef ; FASTF32-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret void ; %f32 = fmul float undef, undef %f32add = fadd float %f32, undef %f32c = fmul contract float undef, undef %f32cadd = fadd contract float %f32c, undef %v2f32 = fmul <2 x float> undef, undef %v2f32add = fadd <2 x float> %v2f32, undef %f32_2 = fmul float undef, undef %f32sub = fsub float %f32_2, undef %f32c_2 = fmul contract float undef, undef %f32csub = fsub contract float %f32c_2, undef %v2f32_2 = fmul <2 x float> undef, undef %v2f32sub = fsub <2 x float> %v2f32_2, undef ret void } define void @fmul_fadd_f16() #0 { ; FUSED-LABEL: 'fmul_fadd_f16' ; FUSED-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f16 = fmul half undef, undef ; FUSED-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f16add = fadd half %f16, undef ; FUSED-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f16c = fmul contract half undef, undef ; FUSED-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f15cadd = fadd contract half %f16c, undef ; FUSED-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2f16 = fmul <2 x half> undef, undef ; FUSED-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2f16add = fadd <2 x half> %v2f16, undef ; FUSED-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f16_2 = fmul half undef, undef ; FUSED-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f16sub = fsub half %f16_2, undef ; FUSED-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f16c_2 = fmul contract half undef, undef ; FUSED-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f15csub = fsub contract half %f16c_2, undef ; FUSED-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2f16_2 = fmul <2 x half> undef, undef ; FUSED-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2f16sub = fsub <2 x half> %v2f16_2, undef ; FUSED-NEXT: Cost Model: Found an estimated cost of 10 for instruction: ret void ; ; GFX9SLOW-LABEL: 'fmul_fadd_f16' ; GFX9SLOW-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f16 = fmul half undef, undef ; GFX9SLOW-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f16add = fadd half %f16, undef ; GFX9SLOW-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f16c = fmul contract half undef, undef ; GFX9SLOW-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f15cadd = fadd contract half %f16c, undef ; GFX9SLOW-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2f16 = fmul <2 x half> undef, undef ; GFX9SLOW-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2f16add = fadd <2 x half> %v2f16, undef ; GFX9SLOW-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f16_2 = fmul half undef, undef ; GFX9SLOW-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f16sub = fsub half %f16_2, undef ; GFX9SLOW-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f16c_2 = fmul contract half undef, undef ; GFX9SLOW-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f15csub = fsub contract half %f16c_2, undef ; GFX9SLOW-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2f16_2 = fmul <2 x half> undef, undef ; GFX9SLOW-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2f16sub = fsub <2 x half> %v2f16_2, undef ; GFX9SLOW-NEXT: Cost Model: Found an estimated cost of 10 for instruction: ret void ; ; FUSED-SIZE-LABEL: 'fmul_fadd_f16' ; FUSED-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f16 = fmul half undef, undef ; FUSED-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f16add = fadd half %f16, undef ; FUSED-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f16c = fmul contract half undef, undef ; FUSED-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f15cadd = fadd contract half %f16c, undef ; FUSED-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2f16 = fmul <2 x half> undef, undef ; FUSED-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2f16add = fadd <2 x half> %v2f16, undef ; FUSED-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f16_2 = fmul half undef, undef ; FUSED-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f16sub = fsub half %f16_2, undef ; FUSED-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f16c_2 = fmul contract half undef, undef ; FUSED-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f15csub = fsub contract half %f16c_2, undef ; FUSED-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2f16_2 = fmul <2 x half> undef, undef ; FUSED-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2f16sub = fsub <2 x half> %v2f16_2, undef ; FUSED-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret void ; ; GFX9SLOW-SIZE-LABEL: 'fmul_fadd_f16' ; GFX9SLOW-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f16 = fmul half undef, undef ; GFX9SLOW-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f16add = fadd half %f16, undef ; GFX9SLOW-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f16c = fmul contract half undef, undef ; GFX9SLOW-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f15cadd = fadd contract half %f16c, undef ; GFX9SLOW-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2f16 = fmul <2 x half> undef, undef ; GFX9SLOW-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2f16add = fadd <2 x half> %v2f16, undef ; GFX9SLOW-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f16_2 = fmul half undef, undef ; GFX9SLOW-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f16sub = fsub half %f16_2, undef ; GFX9SLOW-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f16c_2 = fmul contract half undef, undef ; GFX9SLOW-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %f15csub = fsub contract half %f16c_2, undef ; GFX9SLOW-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2f16_2 = fmul <2 x half> undef, undef ; GFX9SLOW-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2f16sub = fsub <2 x half> %v2f16_2, undef ; GFX9SLOW-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret void ; %f16 = fmul half undef, undef %f16add = fadd half %f16, undef %f16c = fmul contract half undef, undef %f15cadd = fadd contract half %f16c, undef %v2f16 = fmul <2 x half> undef, undef %v2f16add = fadd <2 x half> %v2f16, undef %f16_2 = fmul half undef, undef %f16sub = fsub half %f16_2, undef %f16c_2 = fmul contract half undef, undef %f15csub = fsub contract half %f16c_2, undef %v2f16_2 = fmul <2 x half> undef, undef %v2f16sub = fsub <2 x half> %v2f16_2, undef ret void } define void @fmul_fadd_f64() #0 { ; SLOWF64-LABEL: 'fmul_fadd_f64' ; SLOWF64-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %f64 = fmul double undef, undef ; SLOWF64-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %f64add = fadd double %f64, undef ; SLOWF64-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f64c = fmul contract double undef, undef ; SLOWF64-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %f64cadd = fadd contract double %f64c, undef ; SLOWF64-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %v2f64 = fmul <2 x double> undef, undef ; SLOWF64-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %v2f64add = fadd <2 x double> %v2f64, undef ; SLOWF64-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %f64_2 = fmul double undef, undef ; SLOWF64-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %f64sub = fsub double %f64_2, undef ; SLOWF64-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f64c_2 = fmul contract double undef, undef ; SLOWF64-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %f64csub = fsub contract double %f64c_2, undef ; SLOWF64-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %v2f64_2 = fmul <2 x double> undef, undef ; SLOWF64-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %v2f64sub = fsub <2 x double> %v2f64_2, undef ; SLOWF64-NEXT: Cost Model: Found an estimated cost of 10 for instruction: ret void ; ; GFX9FAST-LABEL: 'fmul_fadd_f64' ; GFX9FAST-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f64 = fmul double undef, undef ; GFX9FAST-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %f64add = fadd double %f64, undef ; GFX9FAST-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f64c = fmul contract double undef, undef ; GFX9FAST-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %f64cadd = fadd contract double %f64c, undef ; GFX9FAST-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2f64 = fmul <2 x double> undef, undef ; GFX9FAST-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %v2f64add = fadd <2 x double> %v2f64, undef ; GFX9FAST-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f64_2 = fmul double undef, undef ; GFX9FAST-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %f64sub = fsub double %f64_2, undef ; GFX9FAST-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f64c_2 = fmul contract double undef, undef ; GFX9FAST-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %f64csub = fsub contract double %f64c_2, undef ; GFX9FAST-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2f64_2 = fmul <2 x double> undef, undef ; GFX9FAST-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %v2f64sub = fsub <2 x double> %v2f64_2, undef ; GFX9FAST-NEXT: Cost Model: Found an estimated cost of 10 for instruction: ret void ; ; SLOWF64-SIZE-LABEL: 'fmul_fadd_f64' ; SLOWF64-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %f64 = fmul double undef, undef ; SLOWF64-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %f64add = fadd double %f64, undef ; SLOWF64-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f64c = fmul contract double undef, undef ; SLOWF64-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %f64cadd = fadd contract double %f64c, undef ; SLOWF64-SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2f64 = fmul <2 x double> undef, undef ; SLOWF64-SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2f64add = fadd <2 x double> %v2f64, undef ; SLOWF64-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %f64_2 = fmul double undef, undef ; SLOWF64-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %f64sub = fsub double %f64_2, undef ; SLOWF64-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f64c_2 = fmul contract double undef, undef ; SLOWF64-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %f64csub = fsub contract double %f64c_2, undef ; SLOWF64-SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2f64_2 = fmul <2 x double> undef, undef ; SLOWF64-SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2f64sub = fsub <2 x double> %v2f64_2, undef ; SLOWF64-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret void ; ; GFX9FAST-SIZE-LABEL: 'fmul_fadd_f64' ; GFX9FAST-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f64 = fmul double undef, undef ; GFX9FAST-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %f64add = fadd double %f64, undef ; GFX9FAST-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f64c = fmul contract double undef, undef ; GFX9FAST-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %f64cadd = fadd contract double %f64c, undef ; GFX9FAST-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2f64 = fmul <2 x double> undef, undef ; GFX9FAST-SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2f64add = fadd <2 x double> %v2f64, undef ; GFX9FAST-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f64_2 = fmul double undef, undef ; GFX9FAST-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %f64sub = fsub double %f64_2, undef ; GFX9FAST-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %f64c_2 = fmul contract double undef, undef ; GFX9FAST-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %f64csub = fsub contract double %f64c_2, undef ; GFX9FAST-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2f64_2 = fmul <2 x double> undef, undef ; GFX9FAST-SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2f64sub = fsub <2 x double> %v2f64_2, undef ; GFX9FAST-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret void ; %f64 = fmul double undef, undef %f64add = fadd double %f64, undef %f64c = fmul contract double undef, undef %f64cadd = fadd contract double %f64c, undef %v2f64 = fmul <2 x double> undef, undef %v2f64add = fadd <2 x double> %v2f64, undef %f64_2 = fmul double undef, undef %f64sub = fsub double %f64_2, undef %f64c_2 = fmul contract double undef, undef %f64csub = fsub contract double %f64c_2, undef %v2f64_2 = fmul <2 x double> undef, undef %v2f64sub = fsub <2 x double> %v2f64_2, undef ret void } attributes #0 = { nounwind }