blob: 13207c56b2482b4374423537f870ae4fdb509d90 [file] [log] [blame]
James Y Knightbb76d482017-07-20 20:09:11 +00001; RUN: llc %s -march=sparc -o - | FileCheck --check-prefix=CHECK --check-prefix=DEFAULT %s
2; RUN: llc %s -march=sparc -mattr=no-fmuls -o - | FileCheck --check-prefix=CHECK --check-prefix=NO-FMULS %s
3; RUN: llc %s -march=sparc -mattr=no-fsmuld -o - | FileCheck --check-prefix=CHECK --check-prefix=NO-FSMULD %s
4; RUN: llc %s -march=sparc -mattr=no-fsmuld,no-fmuls -o - | FileCheck --check-prefix=CHECK --check-prefix=NO-BOTH %s
5
6;;; Test case ensures that the no-fsmuld and no-fmuls features disable
7;;; the relevant instruction, and alternative sequences get emitted
8;;; instead.
9
10; CHECK-LABEL: test_float_mul:
11; DEFAULT: fmuls
12; NO-FSMULD: fmuls
13; NO-FMULS: fsmuld
14; NO-FMULS: fdtos
15; NO-BOTH: fstod
16; NO-BOTH: fstod
17; NO-BOTH: fmuld
18; NO-BOTH: fdtos
19define float @test_float_mul(float %a, float %b) {
20entry:
21 %mul = fmul float %a, %b
22
23 ret float %mul
24}
25
26; CHECK-LABEL: test_float_mul_double:
27; DEFAULT: fsmuld
28; NO-FSMULD: fstod
29; NO-FSMULD: fstod
30; NO-FSMULD: fmuld
31define double @test_float_mul_double(float %a, float %b) {
32entry:
33 %a_double = fpext float %a to double
34 %b_double = fpext float %b to double
35 %mul = fmul double %a_double, %b_double
36
37 ret double %mul
38}