1; RUN: opt -reassociate -S < %s | FileCheck %s 2 3declare void @use(float) 4 5define void @test1(float %x, float %y) { 6; CHECK-LABEL: test1 7; CHECK: fmul fast float %y, %x 8; CHECK: fmul fast float %y, %x 9; CHECK: fsub fast float %1, %2 10; CHECK: call void @use(float %{{.*}}) 11; CHECK: call void @use(float %{{.*}}) 12 13 %1 = fmul fast float %x, %y 14 %2 = fmul fast float %y, %x 15 %3 = fsub fast float %1, %2 16 call void @use(float %1) 17 call void @use(float %3) 18 ret void 19} 20 21define float @test2(float %x, float %y) { 22; CHECK-LABEL: test2 23; CHECK-NEXT: fmul fast float %y, %x 24; CHECK-NEXT: fmul fast float %y, %x 25; CHECK-NEXT: fsub fast float %1, %2 26; CHECK-NEXT: ret float %3 27 28 %1 = fmul fast float %x, %y 29 %2 = fmul fast float %y, %x 30 %3 = fsub fast float %1, %2 31 ret float %3 32} 33 34define float @test3(float %x, float %y) { 35; CHECK-LABEL: test3 36; CHECK-NEXT: %factor = fmul fast float %x, 2.000000e+00 37; CHECK-NEXT: %tmp1 = fmul fast float %factor, %y 38; CHECK-NEXT: ret float %tmp1 39 40 %1 = fmul fast float %x, %y 41 %2 = fmul fast float %y, %x 42 %3 = fadd fast float %1, %2 43 ret float %3 44} 45