@@ -109,3 +109,48 @@ define void @vid_passthru(ptr %p, <vscale x 8 x i64> %v) {
109
109
store volatile <vscale x 8 x i64 > %vid , ptr %p
110
110
ret void
111
111
}
112
+
113
+ define void @vmv.v.i (ptr %p ) {
114
+ ; CHECK-LABEL: vmv.v.i:
115
+ ; CHECK: # %bb.0:
116
+ ; CHECK-NEXT: addi sp, sp, -16
117
+ ; CHECK-NEXT: .cfi_def_cfa_offset 16
118
+ ; CHECK-NEXT: csrr a1, vlenb
119
+ ; CHECK-NEXT: slli a1, a1, 3
120
+ ; CHECK-NEXT: sub sp, sp, a1
121
+ ; CHECK-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x08, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 8 * vlenb
122
+ ; CHECK-NEXT: vsetvli a1, zero, e64, m8, ta, ma
123
+ ; CHECK-NEXT: vmv.v.i v8, 1
124
+ ; CHECK-NEXT: vs8r.v v8, (a0)
125
+ ; CHECK-NEXT: vl8re64.v v16, (a0)
126
+ ; CHECK-NEXT: addi a1, sp, 16
127
+ ; CHECK-NEXT: vs8r.v v16, (a1) # Unknown-size Folded Spill
128
+ ; CHECK-NEXT: vl8re64.v v24, (a0)
129
+ ; CHECK-NEXT: vl8re64.v v0, (a0)
130
+ ; CHECK-NEXT: vl8re64.v v16, (a0)
131
+ ; CHECK-NEXT: vs8r.v v16, (a0)
132
+ ; CHECK-NEXT: vs8r.v v0, (a0)
133
+ ; CHECK-NEXT: vs8r.v v24, (a0)
134
+ ; CHECK-NEXT: vl8r.v v16, (a1) # Unknown-size Folded Reload
135
+ ; CHECK-NEXT: vs8r.v v16, (a0)
136
+ ; CHECK-NEXT: vs8r.v v8, (a0)
137
+ ; CHECK-NEXT: csrr a0, vlenb
138
+ ; CHECK-NEXT: slli a0, a0, 3
139
+ ; CHECK-NEXT: add sp, sp, a0
140
+ ; CHECK-NEXT: addi sp, sp, 16
141
+ ; CHECK-NEXT: ret
142
+ %vmv.v.i = call <vscale x 8 x i64 > @llvm.riscv.vmv.v.x.nxv8i64 (<vscale x 8 x i64 > poison, i64 1 , i64 -1 )
143
+ store volatile <vscale x 8 x i64 > %vmv.v.i , ptr %p
144
+
145
+ %a = load volatile <vscale x 8 x i64 >, ptr %p
146
+ %b = load volatile <vscale x 8 x i64 >, ptr %p
147
+ %c = load volatile <vscale x 8 x i64 >, ptr %p
148
+ %d = load volatile <vscale x 8 x i64 >, ptr %p
149
+ store volatile <vscale x 8 x i64 > %d , ptr %p
150
+ store volatile <vscale x 8 x i64 > %c , ptr %p
151
+ store volatile <vscale x 8 x i64 > %b , ptr %p
152
+ store volatile <vscale x 8 x i64 > %a , ptr %p
153
+
154
+ store volatile <vscale x 8 x i64 > %vmv.v.i , ptr %p
155
+ ret void
156
+ }
0 commit comments