[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / fixed-vectors-vscale-range.ll
blob12d96fbfb88d6350bac5a81d4b162663dcd0f7a9
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv32 -mattr=+v,+m -verify-machineinstrs < %s | FileCheck %s
3 ; RUN: llc -mtriple=riscv64 -mattr=+v,+m -verify-machineinstrs < %s | FileCheck %s
5 define <512 x i8> @vadd_v512i8_zvl128(<512 x i8> %a, <512 x i8> %b) #0 {
6 ; CHECK-LABEL: vadd_v512i8_zvl128:
7 ; CHECK:       # %bb.0:
8 ; CHECK-NEXT:    addi sp, sp, -16
9 ; CHECK-NEXT:    .cfi_def_cfa_offset 16
10 ; CHECK-NEXT:    csrr a2, vlenb
11 ; CHECK-NEXT:    li a4, 48
12 ; CHECK-NEXT:    mul a2, a2, a4
13 ; CHECK-NEXT:    sub sp, sp, a2
14 ; CHECK-NEXT:    .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x30, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 48 * vlenb
15 ; CHECK-NEXT:    csrr a2, vlenb
16 ; CHECK-NEXT:    slli a2, a2, 5
17 ; CHECK-NEXT:    add a2, sp, a2
18 ; CHECK-NEXT:    addi a2, a2, 16
19 ; CHECK-NEXT:    vs8r.v v16, (a2) # Unknown-size Folded Spill
20 ; CHECK-NEXT:    csrr a2, vlenb
21 ; CHECK-NEXT:    li a4, 40
22 ; CHECK-NEXT:    mul a2, a2, a4
23 ; CHECK-NEXT:    add a2, sp, a2
24 ; CHECK-NEXT:    addi a2, a2, 16
25 ; CHECK-NEXT:    vs8r.v v8, (a2) # Unknown-size Folded Spill
26 ; CHECK-NEXT:    li a2, 128
27 ; CHECK-NEXT:    vsetvli zero, a2, e8, m8, ta, ma
28 ; CHECK-NEXT:    addi a2, a3, 128
29 ; CHECK-NEXT:    addi a4, a3, 384
30 ; CHECK-NEXT:    vle8.v v8, (a4)
31 ; CHECK-NEXT:    csrr a4, vlenb
32 ; CHECK-NEXT:    li a5, 24
33 ; CHECK-NEXT:    mul a4, a4, a5
34 ; CHECK-NEXT:    add a4, sp, a4
35 ; CHECK-NEXT:    addi a4, a4, 16
36 ; CHECK-NEXT:    vs8r.v v8, (a4) # Unknown-size Folded Spill
37 ; CHECK-NEXT:    addi a4, a1, 128
38 ; CHECK-NEXT:    vle8.v v8, (a1)
39 ; CHECK-NEXT:    csrr a1, vlenb
40 ; CHECK-NEXT:    slli a1, a1, 4
41 ; CHECK-NEXT:    add a1, sp, a1
42 ; CHECK-NEXT:    addi a1, a1, 16
43 ; CHECK-NEXT:    vs8r.v v8, (a1) # Unknown-size Folded Spill
44 ; CHECK-NEXT:    addi a1, a3, 256
45 ; CHECK-NEXT:    vle8.v v8, (a1)
46 ; CHECK-NEXT:    csrr a1, vlenb
47 ; CHECK-NEXT:    slli a1, a1, 3
48 ; CHECK-NEXT:    add a1, sp, a1
49 ; CHECK-NEXT:    addi a1, a1, 16
50 ; CHECK-NEXT:    vs8r.v v8, (a1) # Unknown-size Folded Spill
51 ; CHECK-NEXT:    vle8.v v8, (a4)
52 ; CHECK-NEXT:    addi a1, sp, 16
53 ; CHECK-NEXT:    vs8r.v v8, (a1) # Unknown-size Folded Spill
54 ; CHECK-NEXT:    vle8.v v24, (a2)
55 ; CHECK-NEXT:    vle8.v v0, (a3)
56 ; CHECK-NEXT:    csrr a1, vlenb
57 ; CHECK-NEXT:    slli a1, a1, 4
58 ; CHECK-NEXT:    add a1, sp, a1
59 ; CHECK-NEXT:    addi a1, a1, 16
60 ; CHECK-NEXT:    vl8r.v v8, (a1) # Unknown-size Folded Reload
61 ; CHECK-NEXT:    csrr a1, vlenb
62 ; CHECK-NEXT:    slli a1, a1, 3
63 ; CHECK-NEXT:    add a1, sp, a1
64 ; CHECK-NEXT:    addi a1, a1, 16
65 ; CHECK-NEXT:    vl8r.v v16, (a1) # Unknown-size Folded Reload
66 ; CHECK-NEXT:    vadd.vv v8, v8, v16
67 ; CHECK-NEXT:    csrr a1, vlenb
68 ; CHECK-NEXT:    slli a1, a1, 4
69 ; CHECK-NEXT:    add a1, sp, a1
70 ; CHECK-NEXT:    addi a1, a1, 16
71 ; CHECK-NEXT:    vs8r.v v8, (a1) # Unknown-size Folded Spill
72 ; CHECK-NEXT:    csrr a1, vlenb
73 ; CHECK-NEXT:    li a2, 24
74 ; CHECK-NEXT:    mul a1, a1, a2
75 ; CHECK-NEXT:    add a1, sp, a1
76 ; CHECK-NEXT:    addi a1, a1, 16
77 ; CHECK-NEXT:    vl8r.v v8, (a1) # Unknown-size Folded Reload
78 ; CHECK-NEXT:    addi a1, sp, 16
79 ; CHECK-NEXT:    vl8r.v v16, (a1) # Unknown-size Folded Reload
80 ; CHECK-NEXT:    vadd.vv v16, v16, v8
81 ; CHECK-NEXT:    csrr a1, vlenb
82 ; CHECK-NEXT:    slli a1, a1, 5
83 ; CHECK-NEXT:    add a1, sp, a1
84 ; CHECK-NEXT:    addi a1, a1, 16
85 ; CHECK-NEXT:    vl8r.v v8, (a1) # Unknown-size Folded Reload
86 ; CHECK-NEXT:    vadd.vv v24, v8, v24
87 ; CHECK-NEXT:    csrr a1, vlenb
88 ; CHECK-NEXT:    li a2, 40
89 ; CHECK-NEXT:    mul a1, a1, a2
90 ; CHECK-NEXT:    add a1, sp, a1
91 ; CHECK-NEXT:    addi a1, a1, 16
92 ; CHECK-NEXT:    vl8r.v v8, (a1) # Unknown-size Folded Reload
93 ; CHECK-NEXT:    vadd.vv v0, v8, v0
94 ; CHECK-NEXT:    vse8.v v0, (a0)
95 ; CHECK-NEXT:    addi a1, a0, 384
96 ; CHECK-NEXT:    vse8.v v16, (a1)
97 ; CHECK-NEXT:    addi a1, a0, 256
98 ; CHECK-NEXT:    csrr a2, vlenb
99 ; CHECK-NEXT:    slli a2, a2, 4
100 ; CHECK-NEXT:    add a2, sp, a2
101 ; CHECK-NEXT:    addi a2, a2, 16
102 ; CHECK-NEXT:    vl8r.v v8, (a2) # Unknown-size Folded Reload
103 ; CHECK-NEXT:    vse8.v v8, (a1)
104 ; CHECK-NEXT:    addi a0, a0, 128
105 ; CHECK-NEXT:    vse8.v v24, (a0)
106 ; CHECK-NEXT:    csrr a0, vlenb
107 ; CHECK-NEXT:    li a1, 48
108 ; CHECK-NEXT:    mul a0, a0, a1
109 ; CHECK-NEXT:    add sp, sp, a0
110 ; CHECK-NEXT:    addi sp, sp, 16
111 ; CHECK-NEXT:    ret
112   %c = add <512 x i8> %a, %b
113   ret <512 x i8> %c
116 define <512 x i8> @vadd_v512i8_zvl256(<512 x i8> %a, <512 x i8> %b) #1 {
117 ; CHECK-LABEL: vadd_v512i8_zvl256:
118 ; CHECK:       # %bb.0:
119 ; CHECK-NEXT:    addi a1, a0, 256
120 ; CHECK-NEXT:    li a2, 256
121 ; CHECK-NEXT:    vsetvli zero, a2, e8, m8, ta, ma
122 ; CHECK-NEXT:    vle8.v v24, (a0)
123 ; CHECK-NEXT:    vle8.v v0, (a1)
124 ; CHECK-NEXT:    vadd.vv v8, v8, v24
125 ; CHECK-NEXT:    vadd.vv v16, v16, v0
126 ; CHECK-NEXT:    ret
127   %c = add <512 x i8> %a, %b
128   ret <512 x i8> %c
131 define <512 x i8> @vadd_v512i8_zvl512(<512 x i8> %a, <512 x i8> %b) #2 {
132 ; CHECK-LABEL: vadd_v512i8_zvl512:
133 ; CHECK:       # %bb.0:
134 ; CHECK-NEXT:    li a0, 512
135 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
136 ; CHECK-NEXT:    vadd.vv v8, v8, v16
137 ; CHECK-NEXT:    ret
138   %c = add <512 x i8> %a, %b
139   ret <512 x i8> %c
142 define <512 x i8> @vadd_v512i8_zvl1024(<512 x i8> %a, <512 x i8> %b) #3 {
143 ; CHECK-LABEL: vadd_v512i8_zvl1024:
144 ; CHECK:       # %bb.0:
145 ; CHECK-NEXT:    li a0, 512
146 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
147 ; CHECK-NEXT:    vadd.vv v8, v8, v12
148 ; CHECK-NEXT:    ret
149   %c = add <512 x i8> %a, %b
150   ret <512 x i8> %c
153 define <512 x i8> @vadd_v512i8_zvl2048(<512 x i8> %a, <512 x i8> %b) #4 {
154 ; CHECK-LABEL: vadd_v512i8_zvl2048:
155 ; CHECK:       # %bb.0:
156 ; CHECK-NEXT:    li a0, 512
157 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
158 ; CHECK-NEXT:    vadd.vv v8, v8, v10
159 ; CHECK-NEXT:    ret
160   %c = add <512 x i8> %a, %b
161   ret <512 x i8> %c
164 define <512 x i8> @vadd_v512i8_zvl4096(<512 x i8> %a, <512 x i8> %b) #5 {
165 ; CHECK-LABEL: vadd_v512i8_zvl4096:
166 ; CHECK:       # %bb.0:
167 ; CHECK-NEXT:    li a0, 512
168 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
169 ; CHECK-NEXT:    vadd.vv v8, v8, v9
170 ; CHECK-NEXT:    ret
171   %c = add <512 x i8> %a, %b
172   ret <512 x i8> %c
175 attributes #0 = { vscale_range(2,1024) }
176 attributes #1 = { vscale_range(4,1024) }
177 attributes #2 = { vscale_range(8,1024) }
178 attributes #3 = { vscale_range(16,1024) }
179 attributes #4 = { vscale_range(32,1024) }
180 attributes #5 = { vscale_range(64,1024) }