File: SCR3-ALU.s

package info (click to toggle)
llvm-toolchain-19 1%3A19.1.7-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,998,520 kB
  • sloc: cpp: 6,951,680; ansic: 1,486,157; asm: 913,598; python: 232,024; f90: 80,126; objc: 75,281; lisp: 37,276; pascal: 16,990; sh: 10,009; ml: 5,058; perl: 4,724; awk: 3,523; makefile: 3,167; javascript: 2,504; xml: 892; fortran: 664; cs: 573
file content (91 lines) | stat: -rw-r--r-- 3,238 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
# RUN: llvm-mca -mtriple=riscv64-unknown-unknown -mcpu=syntacore-scr3-rv64 --iterations=1 < %s | FileCheck %s --check-prefixes=CHECK,RV64
# RUN: llvm-mca -mtriple=riscv32-unknown-unknown -mcpu=syntacore-scr3-rv32 --iterations=1 < %s | FileCheck %s --check-prefixes=CHECK,RV32

div a0, a0, a0
mul t0, a0, t0
add t1, a0, t0
add t2, t2, t2
div a1, a1, a1
mul s0, a1, s0
add s1, s0, s1
add s2, s2, s2

# CHECK:      Iterations:        1
# CHECK-NEXT: Instructions:      8

# RV32-NEXT:  Total Cycles:      25
# RV64-NEXT:  Total Cycles:      31

# CHECK-NEXT: Total uOps:        8

# CHECK:      Dispatch Width:    1

# RV32-NEXT:  uOps Per Cycle:    0.32
# RV32-NEXT:  IPC:               0.32
# RV32-NEXT:  Block RThroughput: 16.0

# RV64-NEXT:  uOps Per Cycle:    0.26
# RV64-NEXT:  IPC:               0.26
# RV64-NEXT:  Block RThroughput: 22.0

# CHECK:      Instruction Info:
# CHECK-NEXT: [1]: #uOps
# CHECK-NEXT: [2]: Latency
# CHECK-NEXT: [3]: RThroughput
# CHECK-NEXT: [4]: MayLoad
# CHECK-NEXT: [5]: MayStore
# CHECK-NEXT: [6]: HasSideEffects (U)

# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:

# RV32-NEXT:   1      8     8.00                        div	a0, a0, a0
# RV64-NEXT:   1      11    11.00                       div	a0, a0, a0

# CHECK-NEXT:  1      2     1.00                        mul	t0, a0, t0
# CHECK-NEXT:  1      1     1.00                        add	t1, a0, t0
# CHECK-NEXT:  1      1     1.00                        add	t2, t2, t2

# RV32-NEXT:   1      8     8.00                        div	a1, a1, a1
# RV64-NEXT:   1      11    11.00                       div	a1, a1, a1

# CHECK-NEXT:  1      2     1.00                        mul	s0, a1, s0
# CHECK-NEXT:  1      1     1.00                        add	s1, s1, s0
# CHECK-NEXT:  1      1     1.00                        add	s2, s2, s2

# CHECK:      Resources:

# RV32-NEXT:  [0]   - SCR3RV32_ALU
# RV32-NEXT:  [1]   - SCR3RV32_CFU
# RV32-NEXT:  [2]   - SCR3RV32_DIV
# RV32-NEXT:  [3]   - SCR3RV32_LSU
# RV32-NEXT:  [4]   - SCR3RV32_MUL

# RV64-NEXT:  [0]   - SCR3RV64_ALU
# RV64-NEXT:  [1]   - SCR3RV64_CFU
# RV64-NEXT:  [2]   - SCR3RV64_DIV
# RV64-NEXT:  [3]   - SCR3RV64_LSU
# RV64-NEXT:  [4]   - SCR3RV64_MUL

# CHECK:      Resource pressure per iteration:
# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]

# RV32-NEXT:  4.00    -     16.00   -     2.00
# RV64-NEXT:  4.00    -     22.00   -     2.00

# CHECK:      Resource pressure by instruction:
# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    Instructions:

# RV32-NEXT:   -      -     8.00    -      -     div	a0, a0, a0
# RV64-NEXT:   -      -     11.00   -      -     div	a0, a0, a0

# CHECK-NEXT:  -      -      -      -     1.00   mul	t0, a0, t0
# CHECK-NEXT: 1.00    -      -      -      -     add	t1, a0, t0
# CHECK-NEXT: 1.00    -      -      -      -     add	t2, t2, t2

# RV32-NEXT:   -      -     8.00    -      -     div	a1, a1, a1
# RV64-NEXT:   -      -     11.00   -      -     div	a1, a1, a1

# CHECK-NEXT:  -      -      -      -     1.00   mul	s0, a1, s0
# CHECK-NEXT: 1.00    -      -      -      -     add	s1, s1, s0
# CHECK-NEXT: 1.00    -      -      -      -     add	s2, s2, s2