# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
# RUN: llvm-mca -mtriple=riscv64 -mcpu=tt-ascalon-d8 -instruction-tables=full -iterations=1 < %s | FileCheck %s

vsetvli zero, zero, e32, m1, tu, mu
vrgather.vv  v5, v7, v8
vcompress.vm v4, v9, v0

vsetvli zero, zero, e32, m2, tu, mu
vrgather.vv  v5, v7, v8
vcompress.vm v4, v9, v0

vsetvli zero, zero, e32, m4, tu, mu
vrgather.vv  v5, v7, v8
vcompress.vm v4, v9, v0

vsetvli zero, zero, e32, m8, tu, mu
vrgather.vv  v5, v7, v8
vcompress.vm v4, v9, v0

# CHECK:      Resources:
# CHECK-NEXT: [0]   - AscalonFP:2 AscalonFPA, AscalonFPB
# CHECK-NEXT: [1]   - AscalonFPA:1
# CHECK-NEXT: [2]   - AscalonFPB:1
# CHECK-NEXT: [3]   - AscalonFX:6 AscalonFXA, AscalonFXB, AscalonFXC, AscalonFXC, AscalonFXD, AscalonFXD
# CHECK-NEXT: [4]   - AscalonFXA:1
# CHECK-NEXT: [5]   - AscalonFXB:1
# CHECK-NEXT: [6]   - AscalonFXC:2
# CHECK-NEXT: [7]   - AscalonFXD:2
# CHECK-NEXT: [8]   - AscalonLS:3
# CHECK-NEXT: [9]   - AscalonV:2  AscalonVA, AscalonVB
# CHECK-NEXT: [10]  - AscalonVA:1
# CHECK-NEXT: [11]  - AscalonVB:1

# 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-NEXT: [7]: Bypass Latency
# CHECK-NEXT: [8]: Resources (<Name> | <Name>[<ReleaseAtCycle>] | <Name>[<AcquireAtCycle>,<ReleaseAtCycle])
# CHECK-NEXT: [9]: LLVM Opcode Name

# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]                                        [9]                        Instructions:
# CHECK-NEXT:  1      1     0.50                  U      0     AscalonV                                   VSETVLI                    vsetvli	zero, zero, e32, m1, tu, mu
# CHECK-NEXT:  1      5     1.50                         5     AscalonFX,AscalonV[3]                      VRGATHER_VV                vrgather.vv	v5, v7, v8
# CHECK-NEXT:  1      5     1.50                         5     AscalonFX,AscalonV[3]                      VCOMPRESS_VM               vcompress.vm	v4, v9, v0
# CHECK-NEXT:  1      1     0.50                  U      0     AscalonV                                   VSETVLI                    vsetvli	zero, zero, e32, m2, tu, mu
# CHECK-NEXT:  1      7     2.50                         7     AscalonFX,AscalonV[5]                      VRGATHER_VV                vrgather.vv	v5, v7, v8
# CHECK-NEXT:  1      7     2.50                         7     AscalonFX,AscalonV[5]                      VCOMPRESS_VM               vcompress.vm	v4, v9, v0
# CHECK-NEXT:  1      1     0.50                  U      0     AscalonV                                   VSETVLI                    vsetvli	zero, zero, e32, m4, tu, mu
# CHECK-NEXT:  1      15    6.50                         15    AscalonFX,AscalonV[13]                     VRGATHER_VV                vrgather.vv	v5, v7, v8
# CHECK-NEXT:  1      15    6.50                         15    AscalonFX,AscalonV[13]                     VCOMPRESS_VM               vcompress.vm	v4, v9, v0
# CHECK-NEXT:  1      1     0.50                  U      0     AscalonV                                   VSETVLI                    vsetvli	zero, zero, e32, m8, tu, mu
# CHECK-NEXT:  1      51    24.50                        51    AscalonFX,AscalonV[49]                     VRGATHER_VV                vrgather.vv	v5, v7, v8
# CHECK-NEXT:  1      51    24.50                        51    AscalonFX,AscalonV[49]                     VCOMPRESS_VM               vcompress.vm	v4, v9, v0

# CHECK:      Resources:
# CHECK-NEXT: [0]   - AscalonFPA
# CHECK-NEXT: [1]   - AscalonFPB
# CHECK-NEXT: [2]   - AscalonFXA
# CHECK-NEXT: [3]   - AscalonFXB
# CHECK-NEXT: [4.0] - AscalonFXC
# CHECK-NEXT: [4.1] - AscalonFXC
# CHECK-NEXT: [5.0] - AscalonFXD
# CHECK-NEXT: [5.1] - AscalonFXD
# CHECK-NEXT: [6.0] - AscalonLS
# CHECK-NEXT: [6.1] - AscalonLS
# CHECK-NEXT: [6.2] - AscalonLS
# CHECK-NEXT: [7]   - AscalonVA
# CHECK-NEXT: [8]   - AscalonVB

# CHECK:      Resource pressure per iteration:
# CHECK-NEXT: [0]    [1]    [2]    [3]    [4.0]  [4.1]  [5.0]  [5.1]  [6.0]  [6.1]  [6.2]  [7]    [8]
# CHECK-NEXT:  -      -     1.33   1.33   1.33   1.33   1.33   1.33    -      -      -     72.00  72.00

# CHECK:      Resource pressure by instruction:
# CHECK-NEXT: [0]    [1]    [2]    [3]    [4.0]  [4.1]  [5.0]  [5.1]  [6.0]  [6.1]  [6.2]  [7]    [8]    Instructions:
# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -     0.50   0.50   vsetvli	zero, zero, e32, m1, tu, mu
# CHECK-NEXT:  -      -     0.17   0.17   0.17   0.17   0.17   0.17    -      -      -     1.50   1.50   vrgather.vv	v5, v7, v8
# CHECK-NEXT:  -      -     0.17   0.17   0.17   0.17   0.17   0.17    -      -      -     1.50   1.50   vcompress.vm	v4, v9, v0
# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -     0.50   0.50   vsetvli	zero, zero, e32, m2, tu, mu
# CHECK-NEXT:  -      -     0.17   0.17   0.17   0.17   0.17   0.17    -      -      -     2.50   2.50   vrgather.vv	v5, v7, v8
# CHECK-NEXT:  -      -     0.17   0.17   0.17   0.17   0.17   0.17    -      -      -     2.50   2.50   vcompress.vm	v4, v9, v0
# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -     0.50   0.50   vsetvli	zero, zero, e32, m4, tu, mu
# CHECK-NEXT:  -      -     0.17   0.17   0.17   0.17   0.17   0.17    -      -      -     6.50   6.50   vrgather.vv	v5, v7, v8
# CHECK-NEXT:  -      -     0.17   0.17   0.17   0.17   0.17   0.17    -      -      -     6.50   6.50   vcompress.vm	v4, v9, v0
# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -     0.50   0.50   vsetvli	zero, zero, e32, m8, tu, mu
# CHECK-NEXT:  -      -     0.17   0.17   0.17   0.17   0.17   0.17    -      -      -     24.50  24.50  vrgather.vv	v5, v7, v8
# CHECK-NEXT:  -      -     0.17   0.17   0.17   0.17   0.17   0.17    -      -      -     24.50  24.50  vcompress.vm	v4, v9, v0
