|
1 | 1 | ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
2 | 2 |
|
3 | 3 | ; RUN: llc -mtriple=riscv32 -target-abi=ilp32d -mattr=+v,+zfh,+zvfh,+f,+d -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV32
|
4 |
| -; RUN: llc -mtriple=riscv64 -target-abi=lp64d -mattr=+v,+zfh,+zvfh,+f,+d -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV64 |
| 4 | +; RUN: llc -mtriple=riscv64 -target-abi=lp64d -mattr=+v,+zfh,+zvfh,+f,+d -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV64,RV64V |
| 5 | +; RUN: llc -mtriple=riscv64 -target-abi=lp64d -mattr=+v,+zfh,+zvfh,+rva22u64 -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV64,RVA22U64 |
5 | 6 |
|
6 | 7 | ; Tests that a floating-point build_vector doesn't try and generate a VID
|
7 | 8 | ; instruction
|
@@ -206,19 +207,47 @@ define <8 x float> @splat_idx_v8f32(<8 x float> %v, i64 %idx) {
|
206 | 207 |
|
207 | 208 | ; Test that we pull the vlse of the constant pool out of the loop.
|
208 | 209 | define dso_local void @splat_load_licm(ptr %0) {
|
209 |
| -; CHECK-LABEL: splat_load_licm: |
210 |
| -; CHECK: # %bb.0: |
211 |
| -; CHECK-NEXT: lui a1, 1 |
212 |
| -; CHECK-NEXT: add a1, a0, a1 |
213 |
| -; CHECK-NEXT: lui a2, 263168 |
214 |
| -; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma |
215 |
| -; CHECK-NEXT: vmv.v.x v8, a2 |
216 |
| -; CHECK-NEXT: .LBB12_1: # =>This Inner Loop Header: Depth=1 |
217 |
| -; CHECK-NEXT: vse32.v v8, (a0) |
218 |
| -; CHECK-NEXT: addi a0, a0, 16 |
219 |
| -; CHECK-NEXT: bne a0, a1, .LBB12_1 |
220 |
| -; CHECK-NEXT: # %bb.2: |
221 |
| -; CHECK-NEXT: ret |
| 210 | +; RV32-LABEL: splat_load_licm: |
| 211 | +; RV32: # %bb.0: |
| 212 | +; RV32-NEXT: lui a1, 1 |
| 213 | +; RV32-NEXT: add a1, a0, a1 |
| 214 | +; RV32-NEXT: lui a2, 263168 |
| 215 | +; RV32-NEXT: vsetivli zero, 4, e32, m1, ta, ma |
| 216 | +; RV32-NEXT: vmv.v.x v8, a2 |
| 217 | +; RV32-NEXT: .LBB12_1: # =>This Inner Loop Header: Depth=1 |
| 218 | +; RV32-NEXT: vse32.v v8, (a0) |
| 219 | +; RV32-NEXT: addi a0, a0, 16 |
| 220 | +; RV32-NEXT: bne a0, a1, .LBB12_1 |
| 221 | +; RV32-NEXT: # %bb.2: |
| 222 | +; RV32-NEXT: ret |
| 223 | +; |
| 224 | +; RV64V-LABEL: splat_load_licm: |
| 225 | +; RV64V: # %bb.0: |
| 226 | +; RV64V-NEXT: lui a1, 1 |
| 227 | +; RV64V-NEXT: add a1, a0, a1 |
| 228 | +; RV64V-NEXT: lui a2, 263168 |
| 229 | +; RV64V-NEXT: vsetivli zero, 4, e32, m1, ta, ma |
| 230 | +; RV64V-NEXT: vmv.v.x v8, a2 |
| 231 | +; RV64V-NEXT: .LBB12_1: # =>This Inner Loop Header: Depth=1 |
| 232 | +; RV64V-NEXT: vse32.v v8, (a0) |
| 233 | +; RV64V-NEXT: addi a0, a0, 16 |
| 234 | +; RV64V-NEXT: bne a0, a1, .LBB12_1 |
| 235 | +; RV64V-NEXT: # %bb.2: |
| 236 | +; RV64V-NEXT: ret |
| 237 | +; |
| 238 | +; RVA22U64-LABEL: splat_load_licm: |
| 239 | +; RVA22U64: # %bb.0: |
| 240 | +; RVA22U64-NEXT: lui a1, 1 |
| 241 | +; RVA22U64-NEXT: add a1, a1, a0 |
| 242 | +; RVA22U64-NEXT: lui a2, 263168 |
| 243 | +; RVA22U64-NEXT: vsetivli zero, 4, e32, m1, ta, ma |
| 244 | +; RVA22U64-NEXT: vmv.v.x v8, a2 |
| 245 | +; RVA22U64-NEXT: .LBB12_1: # =>This Inner Loop Header: Depth=1 |
| 246 | +; RVA22U64-NEXT: vse32.v v8, (a0) |
| 247 | +; RVA22U64-NEXT: addi a0, a0, 16 |
| 248 | +; RVA22U64-NEXT: bne a0, a1, .LBB12_1 |
| 249 | +; RVA22U64-NEXT: # %bb.2: |
| 250 | +; RVA22U64-NEXT: ret |
222 | 251 | br label %2
|
223 | 252 |
|
224 | 253 | 2: ; preds = %2, %1
|
|
0 commit comments