|
1 | 1 | ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
2 | 2 | ; RUN: llc -mtriple=riscv32 -mattr=+m,+d,+zfh,+zvfh,+v -target-abi=ilp32d \
|
3 |
| -; RUN: -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,CHECK-ZVFH |
| 3 | +; RUN: -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV32,CHECK-ZVFH |
4 | 4 | ; RUN: llc -mtriple=riscv64 -mattr=+m,+d,+zfh,+zvfh,+v -target-abi=lp64d \
|
5 |
| -; RUN: -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,CHECK-ZVFH |
| 5 | +; RUN: -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV64,CHECK-ZVFH |
6 | 6 | ; RUN: llc -mtriple=riscv32 -mattr=+m,+d,+zfh,+zvfhmin,+v -target-abi=ilp32d \
|
7 |
| -; RUN: -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,CHECK-ZVFHMIN |
| 7 | +; RUN: -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV32,CHECK-ZVFHMIN |
8 | 8 | ; RUN: llc -mtriple=riscv64 -mattr=+m,+d,+zfh,+zvfhmin,+v -target-abi=lp64d \
|
9 |
| -; RUN: -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,CHECK-ZVFHMIN |
| 9 | +; RUN: -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV64,CHECK-ZVFHMIN |
10 | 10 |
|
11 | 11 | define <vscale x 1 x half> @vfmerge_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, <vscale x 1 x i1> %cond) {
|
12 | 12 | ; CHECK-LABEL: vfmerge_vv_nxv1f16:
|
@@ -142,6 +142,17 @@ define <vscale x 8 x half> @vfmerge_zv_nxv8f16(<vscale x 8 x half> %va, <vscale
|
142 | 142 | ret <vscale x 8 x half> %vc
|
143 | 143 | }
|
144 | 144 |
|
| 145 | +define <vscale x 8 x half> @vfmerge_nzv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x i1> %cond) { |
| 146 | +; CHECK-LABEL: vfmerge_nzv_nxv8f16: |
| 147 | +; CHECK: # %bb.0: |
| 148 | +; CHECK-NEXT: lui a0, 1048568 |
| 149 | +; CHECK-NEXT: vsetvli a1, zero, e16, m2, ta, ma |
| 150 | +; CHECK-NEXT: vmerge.vxm v8, v8, a0, v0 |
| 151 | +; CHECK-NEXT: ret |
| 152 | + %vc = select <vscale x 8 x i1> %cond, <vscale x 8 x half> splat (half -0.0), <vscale x 8 x half> %va |
| 153 | + ret <vscale x 8 x half> %vc |
| 154 | +} |
| 155 | + |
145 | 156 | define <vscale x 8 x half> @vmerge_truelhs_nxv8f16_0(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) {
|
146 | 157 | ; CHECK-LABEL: vmerge_truelhs_nxv8f16_0:
|
147 | 158 | ; CHECK: # %bb.0:
|
@@ -322,6 +333,17 @@ define <vscale x 8 x float> @vfmerge_zv_nxv8f32(<vscale x 8 x float> %va, <vscal
|
322 | 333 | ret <vscale x 8 x float> %vc
|
323 | 334 | }
|
324 | 335 |
|
| 336 | +define <vscale x 8 x float> @vfmerge_nzv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x i1> %cond) { |
| 337 | +; CHECK-LABEL: vfmerge_nzv_nxv8f32: |
| 338 | +; CHECK: # %bb.0: |
| 339 | +; CHECK-NEXT: lui a0, 524288 |
| 340 | +; CHECK-NEXT: vsetvli a1, zero, e32, m4, ta, ma |
| 341 | +; CHECK-NEXT: vmerge.vxm v8, v8, a0, v0 |
| 342 | +; CHECK-NEXT: ret |
| 343 | + %vc = select <vscale x 8 x i1> %cond, <vscale x 8 x float> splat (float -0.0), <vscale x 8 x float> %va |
| 344 | + ret <vscale x 8 x float> %vc |
| 345 | +} |
| 346 | + |
325 | 347 | define <vscale x 16 x float> @vfmerge_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, <vscale x 16 x i1> %cond) {
|
326 | 348 | ; CHECK-LABEL: vfmerge_vv_nxv16f32:
|
327 | 349 | ; CHECK: # %bb.0:
|
@@ -442,6 +464,26 @@ define <vscale x 8 x double> @vfmerge_zv_nxv8f64(<vscale x 8 x double> %va, <vsc
|
442 | 464 | ret <vscale x 8 x double> %vc
|
443 | 465 | }
|
444 | 466 |
|
| 467 | +define <vscale x 8 x double> @vfmerge_nzv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x i1> %cond) { |
| 468 | +; RV32-LABEL: vfmerge_nzv_nxv8f64: |
| 469 | +; RV32: # %bb.0: |
| 470 | +; RV32-NEXT: fcvt.d.w fa5, zero |
| 471 | +; RV32-NEXT: fneg.d fa5, fa5 |
| 472 | +; RV32-NEXT: vsetvli a0, zero, e64, m8, ta, ma |
| 473 | +; RV32-NEXT: vfmerge.vfm v8, v8, fa5, v0 |
| 474 | +; RV32-NEXT: ret |
| 475 | +; |
| 476 | +; RV64-LABEL: vfmerge_nzv_nxv8f64: |
| 477 | +; RV64: # %bb.0: |
| 478 | +; RV64-NEXT: li a0, -1 |
| 479 | +; RV64-NEXT: slli a0, a0, 63 |
| 480 | +; RV64-NEXT: vsetvli a1, zero, e64, m8, ta, ma |
| 481 | +; RV64-NEXT: vmerge.vxm v8, v8, a0, v0 |
| 482 | +; RV64-NEXT: ret |
| 483 | + %vc = select <vscale x 8 x i1> %cond, <vscale x 8 x double> splat (double -0.0), <vscale x 8 x double> %va |
| 484 | + ret <vscale x 8 x double> %vc |
| 485 | +} |
| 486 | + |
445 | 487 | define <vscale x 16 x double> @vselect_combine_regression(<vscale x 16 x i64> %va, <vscale x 16 x double> %vb) {
|
446 | 488 | ; CHECK-LABEL: vselect_combine_regression:
|
447 | 489 | ; CHECK: # %bb.0:
|
|
0 commit comments