From 4d6a372483589a561f3ecf4540fa310f3a4aafbd Mon Sep 17 00:00:00 2001 From: James Y Knight Date: Thu, 20 Jul 2017 20:09:11 +0000 Subject: [SPARC] Clean up the support for disabling fsmuld and fmuls instructions. Summary: Also enable no-fsmuld for sparcv7 (which doesn't have the instruction). The previous code which used a post-processing pass to do this was unnecessary; disabling the instruction is entirely sufficient. Reviewers: jacob_hansen, ekedaigle Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D35576 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308661 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/CodeGen/SPARC/disable-fsmuld-fmuls.ll | 38 ++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 test/CodeGen/SPARC/disable-fsmuld-fmuls.ll (limited to 'test/CodeGen/SPARC/disable-fsmuld-fmuls.ll') diff --git a/test/CodeGen/SPARC/disable-fsmuld-fmuls.ll b/test/CodeGen/SPARC/disable-fsmuld-fmuls.ll new file mode 100644 index 00000000000..13207c56b24 --- /dev/null +++ b/test/CodeGen/SPARC/disable-fsmuld-fmuls.ll @@ -0,0 +1,38 @@ +; 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 +} -- cgit v1.2.3