xref: /aosp_15_r20/external/llvm/test/CodeGen/SPARC/LeonItinerariesUT.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -O1 -march=sparc | FileCheck %s -check-prefix=NO_ITIN
2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -O1 -march=sparc -mcpu=leon2   | FileCheck %s -check-prefix=LEON2_ITIN
3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -O1 -march=sparc -mcpu=leon3   | FileCheck %s -check-prefix=LEON3_4_ITIN
4*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -O1 -march=sparc -mcpu=leon4   | FileCheck %s -check-prefix=LEON3_4_ITIN
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Worker; NO_ITIN-LABEL: f32_ops:
7*9880d681SAndroid Build Coastguard Worker; NO_ITIN:       ld
8*9880d681SAndroid Build Coastguard Worker; NO_ITIN-NEXT:  ld
9*9880d681SAndroid Build Coastguard Worker; NO_ITIN-NEXT:  ld
10*9880d681SAndroid Build Coastguard Worker; NO_ITIN-NEXT:  ld
11*9880d681SAndroid Build Coastguard Worker; NO_ITIN-NEXT:  fadds
12*9880d681SAndroid Build Coastguard Worker; NO_ITIN-NEXT:  fsubs
13*9880d681SAndroid Build Coastguard Worker; NO_ITIN-NEXT:  fmuls
14*9880d681SAndroid Build Coastguard Worker; NO_ITIN-NEXT:  retl
15*9880d681SAndroid Build Coastguard Worker; NO_ITIN-NEXT:  fdivs
16*9880d681SAndroid Build Coastguard Worker
17*9880d681SAndroid Build Coastguard Worker; LEON2_ITIN-LABEL: f32_ops:
18*9880d681SAndroid Build Coastguard Worker; LEON2_ITIN:       ld
19*9880d681SAndroid Build Coastguard Worker; LEON2_ITIN-NEXT:  ld
20*9880d681SAndroid Build Coastguard Worker; LEON2_ITIN-NEXT:  fadds
21*9880d681SAndroid Build Coastguard Worker; LEON2_ITIN-NEXT:  ld
22*9880d681SAndroid Build Coastguard Worker; LEON2_ITIN-NEXT:  fsubs
23*9880d681SAndroid Build Coastguard Worker; LEON2_ITIN-NEXT:  ld
24*9880d681SAndroid Build Coastguard Worker; LEON2_ITIN-NEXT:  fmuls
25*9880d681SAndroid Build Coastguard Worker; LEON2_ITIN-NEXT:  retl
26*9880d681SAndroid Build Coastguard Worker; LEON2_ITIN-NEXT:  fdivs
27*9880d681SAndroid Build Coastguard Worker
28*9880d681SAndroid Build Coastguard Worker; LEON3_4_ITIN-LABEL: f32_ops:
29*9880d681SAndroid Build Coastguard Worker; LEON3_4_ITIN:       ld
30*9880d681SAndroid Build Coastguard Worker; LEON3_4_ITIN-NEXT:  ld
31*9880d681SAndroid Build Coastguard Worker; LEON3_4_ITIN-NEXT:  ld
32*9880d681SAndroid Build Coastguard Worker; LEON3_4_ITIN-NEXT:  fadds
33*9880d681SAndroid Build Coastguard Worker; LEON3_4_ITIN-NEXT:  ld
34*9880d681SAndroid Build Coastguard Worker; LEON3_4_ITIN-NEXT:  fsubs
35*9880d681SAndroid Build Coastguard Worker; LEON3_4_ITIN-NEXT:  fmuls
36*9880d681SAndroid Build Coastguard Worker; LEON3_4_ITIN-NEXT:  retl
37*9880d681SAndroid Build Coastguard Worker; LEON3_4_ITIN-NEXT:  fdivs
38*9880d681SAndroid Build Coastguard Worker
39*9880d681SAndroid Build Coastguard Workerdefine float @f32_ops(float* byval %a, float* byval %b, float* byval %c, float* byval %d) {
40*9880d681SAndroid Build Coastguard Workerentry:
41*9880d681SAndroid Build Coastguard Worker  %0 = load float, float* %a, align 8
42*9880d681SAndroid Build Coastguard Worker  %1 = load float, float* %b, align 8
43*9880d681SAndroid Build Coastguard Worker  %2 = load float, float* %c, align 8
44*9880d681SAndroid Build Coastguard Worker  %3 = load float, float* %d, align 8
45*9880d681SAndroid Build Coastguard Worker  %4 = fadd float %0, %1
46*9880d681SAndroid Build Coastguard Worker  %5 = fsub float %4, %2
47*9880d681SAndroid Build Coastguard Worker  %6 = fmul float %5, %3
48*9880d681SAndroid Build Coastguard Worker  %7 = fdiv float %6, %4
49*9880d681SAndroid Build Coastguard Worker  ret float %7
50*9880d681SAndroid Build Coastguard Worker}