; RUN: llc %s -march=sparc -o - | FileCheck --check-prefix=CHECK --check-prefix=DEFAULT %s ; RUN: llc %s -march=sparc -mattr=no-fmuls -o - | FileCheck --check-prefix=CHECK --check-prefix=NO-FMULS %s ; RUN: llc %s -march=sparc -mattr=no-fsmuld -o - | FileCheck --check-prefix=CHECK --check-prefix=NO-FSMULD %s ; RUN: llc %s -march=sparc -mattr=no-fsmuld,no-fmuls -o - | FileCheck --check-prefix=CHECK --check-prefix=NO-BOTH %s ;;; Test case ensures that the no-fsmuld and no-fmuls features disable ;;; the relevant instruction, and alternative sequences get emitted ;;; instead. ; CHECK-LABEL: test_float_mul: ; DEFAULT: fmuls ; NO-FSMULD: fmuls ; NO-FMULS: fsmuld ; NO-FMULS: fdtos ; NO-BOTH: fstod ; NO-BOTH: fstod ; NO-BOTH: fmuld ; NO-BOTH: fdtos define float @test_float_mul(float %a, float %b) { entry: %mul = fmul float %a, %b ret float %mul } ; CHECK-LABEL: test_float_mul_double: ; DEFAULT: fsmuld ; NO-FSMULD: fstod ; NO-FSMULD: fstod ; NO-FSMULD: fmuld define double @test_float_mul_double(float %a, float %b) { entry: %a_double = fpext float %a to double %b_double = fpext float %b to double %mul = fmul double %a_double, %b_double ret double %mul }