|
1 | 1 | ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2
|
2 |
| -; RUN: llc -mtriple=riscv32 -mattr=+m,+v,+f,+d,+zvfh -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV32 |
3 |
| -; RUN: llc -mtriple=riscv64 -mattr=+m,+v,+f,+d,+zvfh -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV64 |
| 2 | +; RUN: llc -mtriple=riscv32 -mattr=+m,+v,+f,+d,+zvfh,+zfbfmin,+zvfbfmin -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFH,RV32 |
| 3 | +; RUN: llc -mtriple=riscv64 -mattr=+m,+v,+f,+d,+zvfh,+zfbfmin,+zvfbfmin -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFH,RV64 |
| 4 | +; RUN: llc -mtriple=riscv32 -mattr=+m,+v,+f,+d,+zfhmin,+zvfhmin,+zfbfmin,+zvfbfmin -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFHMIN,RV32 |
| 5 | +; RUN: llc -mtriple=riscv64 -mattr=+m,+v,+f,+d,+zfhmin,+zvfhmin,+zfbfmin,+zvfbfmin -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFHMIN,RV64 |
4 | 6 |
|
5 | 7 | target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
|
6 | 8 |
|
@@ -140,25 +142,67 @@ define <4 x i64> @vslide1up_4xi64(<4 x i64> %v, i64 %b) {
|
140 | 142 | ret <4 x i64> %v1
|
141 | 143 | }
|
142 | 144 |
|
143 |
| -define <2 x half> @vslide1up_2xf16(<2 x half> %v, half %b) { |
144 |
| -; CHECK-LABEL: vslide1up_2xf16: |
| 145 | +define <2 x bfloat> @vslide1up_2xbf16(<2 x bfloat> %v, bfloat %b) { |
| 146 | +; CHECK-LABEL: vslide1up_2xbf16: |
145 | 147 | ; CHECK: # %bb.0:
|
| 148 | +; CHECK-NEXT: fmv.x.h a0, fa0 |
146 | 149 | ; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma
|
147 |
| -; CHECK-NEXT: vfslide1up.vf v9, v8, fa0 |
| 150 | +; CHECK-NEXT: vslide1up.vx v9, v8, a0 |
148 | 151 | ; CHECK-NEXT: vmv1r.v v8, v9
|
149 | 152 | ; CHECK-NEXT: ret
|
150 |
| - %vb = insertelement <2 x half> poison, half %b, i64 0 |
151 |
| - %v1 = shufflevector <2 x half> %v, <2 x half> %vb, <2 x i32> <i32 2, i32 0> |
152 |
| - ret <2 x half> %v1 |
| 153 | + %vb = insertelement <2 x bfloat> poison, bfloat %b, i64 0 |
| 154 | + %v1 = shufflevector <2 x bfloat> %v, <2 x bfloat> %vb, <2 x i32> <i32 2, i32 0> |
| 155 | + ret <2 x bfloat> %v1 |
153 | 156 | }
|
154 | 157 |
|
155 |
| -define <4 x half> @vslide1up_4xf16(<4 x half> %v, half %b) { |
156 |
| -; CHECK-LABEL: vslide1up_4xf16: |
| 158 | +define <4 x bfloat> @vslide1up_4xbf16(<4 x bfloat> %v, bfloat %b) { |
| 159 | +; CHECK-LABEL: vslide1up_4xbf16: |
157 | 160 | ; CHECK: # %bb.0:
|
| 161 | +; CHECK-NEXT: fmv.x.h a0, fa0 |
158 | 162 | ; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma
|
159 |
| -; CHECK-NEXT: vfslide1up.vf v9, v8, fa0 |
| 163 | +; CHECK-NEXT: vslide1up.vx v9, v8, a0 |
160 | 164 | ; CHECK-NEXT: vmv1r.v v8, v9
|
161 | 165 | ; CHECK-NEXT: ret
|
| 166 | + %vb = insertelement <4 x bfloat> poison, bfloat %b, i64 0 |
| 167 | + %v1 = shufflevector <4 x bfloat> %v, <4 x bfloat> %vb, <4 x i32> <i32 4, i32 0, i32 1, i32 2> |
| 168 | + ret <4 x bfloat> %v1 |
| 169 | +} |
| 170 | + |
| 171 | +define <2 x half> @vslide1up_2xf16(<2 x half> %v, half %b) { |
| 172 | +; ZVFH-LABEL: vslide1up_2xf16: |
| 173 | +; ZVFH: # %bb.0: |
| 174 | +; ZVFH-NEXT: vsetivli zero, 2, e16, mf4, ta, ma |
| 175 | +; ZVFH-NEXT: vfslide1up.vf v9, v8, fa0 |
| 176 | +; ZVFH-NEXT: vmv1r.v v8, v9 |
| 177 | +; ZVFH-NEXT: ret |
| 178 | +; |
| 179 | +; ZVFHMIN-LABEL: vslide1up_2xf16: |
| 180 | +; ZVFHMIN: # %bb.0: |
| 181 | +; ZVFHMIN-NEXT: fmv.x.h a0, fa0 |
| 182 | +; ZVFHMIN-NEXT: vsetivli zero, 2, e16, mf4, ta, ma |
| 183 | +; ZVFHMIN-NEXT: vslide1up.vx v9, v8, a0 |
| 184 | +; ZVFHMIN-NEXT: vmv1r.v v8, v9 |
| 185 | +; ZVFHMIN-NEXT: ret |
| 186 | + %vb = insertelement <2 x half> poison, half %b, i64 0 |
| 187 | + %v1 = shufflevector <2 x half> %v, <2 x half> %vb, <2 x i32> <i32 2, i32 0> |
| 188 | + ret <2 x half> %v1 |
| 189 | +} |
| 190 | + |
| 191 | +define <4 x half> @vslide1up_4xf16(<4 x half> %v, half %b) { |
| 192 | +; ZVFH-LABEL: vslide1up_4xf16: |
| 193 | +; ZVFH: # %bb.0: |
| 194 | +; ZVFH-NEXT: vsetivli zero, 4, e16, mf2, ta, ma |
| 195 | +; ZVFH-NEXT: vfslide1up.vf v9, v8, fa0 |
| 196 | +; ZVFH-NEXT: vmv1r.v v8, v9 |
| 197 | +; ZVFH-NEXT: ret |
| 198 | +; |
| 199 | +; ZVFHMIN-LABEL: vslide1up_4xf16: |
| 200 | +; ZVFHMIN: # %bb.0: |
| 201 | +; ZVFHMIN-NEXT: fmv.x.h a0, fa0 |
| 202 | +; ZVFHMIN-NEXT: vsetivli zero, 4, e16, mf2, ta, ma |
| 203 | +; ZVFHMIN-NEXT: vslide1up.vx v9, v8, a0 |
| 204 | +; ZVFHMIN-NEXT: vmv1r.v v8, v9 |
| 205 | +; ZVFHMIN-NEXT: ret |
162 | 206 | %vb = insertelement <4 x half> poison, half %b, i64 0
|
163 | 207 | %v1 = shufflevector <4 x half> %v, <4 x half> %vb, <4 x i32> <i32 4, i32 0, i32 1, i32 2>
|
164 | 208 | ret <4 x half> %v1
|
|
0 commit comments