|
1 | 1 | ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
2 | 2 | ; RUN: llc -mtriple=riscv32 -target-abi=ilp32d -mattr=+v,+zfh,+zvfh,+f,+d -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,CHECK-RV32
|
3 |
| -; RUN: llc -mtriple=riscv64 -target-abi=lp64d -mattr=+v,+zfh,+zvfh,+f,+d -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,CHECK-RV64 |
| 3 | +; RUN: llc -mtriple=riscv64 -target-abi=lp64d -mattr=+v,+zfh,+zvfh,+f,+d -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,CHECK-RV64,RV64-ZVFH |
| 4 | +; RUN: llc -mtriple=riscv64 -target-abi=lp64d -mattr=+v,+zvfhmin,+f,+d -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,CHECK-RV64,RV64-ZVFHMIN |
4 | 5 |
|
5 | 6 | define void @splat_v8f16(ptr %x, half %y) {
|
6 |
| -; CHECK-LABEL: splat_v8f16: |
7 |
| -; CHECK: # %bb.0: |
8 |
| -; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma |
9 |
| -; CHECK-NEXT: vfmv.v.f v8, fa0 |
10 |
| -; CHECK-NEXT: vse16.v v8, (a0) |
11 |
| -; CHECK-NEXT: ret |
| 7 | +; CHECK-RV32-LABEL: splat_v8f16: |
| 8 | +; CHECK-RV32: # %bb.0: |
| 9 | +; CHECK-RV32-NEXT: vsetivli zero, 8, e16, m1, ta, ma |
| 10 | +; CHECK-RV32-NEXT: vfmv.v.f v8, fa0 |
| 11 | +; CHECK-RV32-NEXT: vse16.v v8, (a0) |
| 12 | +; CHECK-RV32-NEXT: ret |
| 13 | +; |
| 14 | +; RV64-ZVFH-LABEL: splat_v8f16: |
| 15 | +; RV64-ZVFH: # %bb.0: |
| 16 | +; RV64-ZVFH-NEXT: vsetivli zero, 8, e16, m1, ta, ma |
| 17 | +; RV64-ZVFH-NEXT: vfmv.v.f v8, fa0 |
| 18 | +; RV64-ZVFH-NEXT: vse16.v v8, (a0) |
| 19 | +; RV64-ZVFH-NEXT: ret |
| 20 | +; |
| 21 | +; RV64-ZVFHMIN-LABEL: splat_v8f16: |
| 22 | +; RV64-ZVFHMIN: # %bb.0: |
| 23 | +; RV64-ZVFHMIN-NEXT: fmv.x.w a1, fa0 |
| 24 | +; RV64-ZVFHMIN-NEXT: vsetivli zero, 8, e16, m1, ta, ma |
| 25 | +; RV64-ZVFHMIN-NEXT: vmv.v.x v8, a1 |
| 26 | +; RV64-ZVFHMIN-NEXT: vse16.v v8, (a0) |
| 27 | +; RV64-ZVFHMIN-NEXT: ret |
12 | 28 | %a = insertelement <8 x half> poison, half %y, i32 0
|
13 | 29 | %b = shufflevector <8 x half> %a, <8 x half> poison, <8 x i32> zeroinitializer
|
14 | 30 | store <8 x half> %b, ptr %x
|
@@ -42,12 +58,27 @@ define void @splat_v2f64(ptr %x, double %y) {
|
42 | 58 | }
|
43 | 59 |
|
44 | 60 | define void @splat_16f16(ptr %x, half %y) {
|
45 |
| -; CHECK-LABEL: splat_16f16: |
46 |
| -; CHECK: # %bb.0: |
47 |
| -; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma |
48 |
| -; CHECK-NEXT: vfmv.v.f v8, fa0 |
49 |
| -; CHECK-NEXT: vse16.v v8, (a0) |
50 |
| -; CHECK-NEXT: ret |
| 61 | +; CHECK-RV32-LABEL: splat_16f16: |
| 62 | +; CHECK-RV32: # %bb.0: |
| 63 | +; CHECK-RV32-NEXT: vsetivli zero, 16, e16, m2, ta, ma |
| 64 | +; CHECK-RV32-NEXT: vfmv.v.f v8, fa0 |
| 65 | +; CHECK-RV32-NEXT: vse16.v v8, (a0) |
| 66 | +; CHECK-RV32-NEXT: ret |
| 67 | +; |
| 68 | +; RV64-ZVFH-LABEL: splat_16f16: |
| 69 | +; RV64-ZVFH: # %bb.0: |
| 70 | +; RV64-ZVFH-NEXT: vsetivli zero, 16, e16, m2, ta, ma |
| 71 | +; RV64-ZVFH-NEXT: vfmv.v.f v8, fa0 |
| 72 | +; RV64-ZVFH-NEXT: vse16.v v8, (a0) |
| 73 | +; RV64-ZVFH-NEXT: ret |
| 74 | +; |
| 75 | +; RV64-ZVFHMIN-LABEL: splat_16f16: |
| 76 | +; RV64-ZVFHMIN: # %bb.0: |
| 77 | +; RV64-ZVFHMIN-NEXT: fmv.x.w a1, fa0 |
| 78 | +; RV64-ZVFHMIN-NEXT: vsetivli zero, 16, e16, m2, ta, ma |
| 79 | +; RV64-ZVFHMIN-NEXT: vmv.v.x v8, a1 |
| 80 | +; RV64-ZVFHMIN-NEXT: vse16.v v8, (a0) |
| 81 | +; RV64-ZVFHMIN-NEXT: ret |
51 | 82 | %a = insertelement <16 x half> poison, half %y, i32 0
|
52 | 83 | %b = shufflevector <16 x half> %a, <16 x half> poison, <16 x i32> zeroinitializer
|
53 | 84 | store <16 x half> %b, ptr %x
|
|
0 commit comments