Skip to content

Commit ecf260e

Browse files
committed
[RISCV] Merge bf16 tests into respective tests. NFC
I added these in #108245, but given the sheer number of tests that will need to be added to cover bf16 promotion to f32 it seems better to keep them in one place to avoid an explosion of files.
1 parent adde85e commit ecf260e

File tree

6 files changed

+258
-255
lines changed

6 files changed

+258
-255
lines changed

llvm/test/CodeGen/RISCV/rvv/vfabs-sdnode-bf16.ll

Lines changed: 0 additions & 75 deletions
This file was deleted.

llvm/test/CodeGen/RISCV/rvv/vfabs-sdnode.ll

Lines changed: 84 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,88 @@
11
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2-
; RUN: llc -mtriple=riscv32 -mattr=+d,+zfh,+zvfh,+v -target-abi=ilp32d \
3-
; RUN: -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFH
4-
; RUN: llc -mtriple=riscv64 -mattr=+d,+zfh,+zvfh,+v -target-abi=lp64d \
5-
; RUN: -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFH
6-
; RUN: llc -mtriple=riscv32 -mattr=+d,+zfhmin,+zvfhmin,+v -target-abi=ilp32d \
7-
; RUN: -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFHMIN
8-
; RUN: llc -mtriple=riscv64 -mattr=+d,+zfhmin,+zvfhmin,+v -target-abi=lp64d \
9-
; RUN: -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFHMIN
2+
; RUN: llc -mtriple=riscv32 -mattr=+d,+zfh,+zvfh,+zvfbfmin,+v \
3+
; RUN: -target-abi=ilp32d -verify-machineinstrs < %s | FileCheck %s \
4+
; RUN: --check-prefixes=CHECK,ZVFH
5+
; RUN: llc -mtriple=riscv64 -mattr=+d,+zfh,+zvfh,+zvfbfmin,+v \
6+
; RUN: -target-abi=lp64d -verify-machineinstrs < %s | FileCheck %s \
7+
; RUN: --check-prefixes=CHECK,ZVFH
8+
; RUN: llc -mtriple=riscv32 -mattr=+d,+zfhmin,+zvfhmin,+zvfbfmin,+v \
9+
; RUN: -target-abi=ilp32d -verify-machineinstrs < %s | FileCheck %s \
10+
; RUN: --check-prefixes=CHECK,ZVFHMIN
11+
; RUN: llc -mtriple=riscv64 -mattr=+d,+zfhmin,+zvfhmin,+zvfbfmin,+v \
12+
; RUN: -target-abi=lp64d -verify-machineinstrs < %s | FileCheck %s \
13+
; RUN: --check-prefixes=CHECK,ZVFHMIN
14+
15+
define <vscale x 1 x bfloat> @nxv1bf16(<vscale x 1 x bfloat> %v) {
16+
; CHECK-LABEL: nxv1bf16:
17+
; CHECK: # %bb.0:
18+
; CHECK-NEXT: lui a0, 8
19+
; CHECK-NEXT: addi a0, a0, -1
20+
; CHECK-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
21+
; CHECK-NEXT: vand.vx v8, v8, a0
22+
; CHECK-NEXT: ret
23+
%r = call <vscale x 1 x bfloat> @llvm.fabs.nxv1bf16(<vscale x 1 x bfloat> %v)
24+
ret <vscale x 1 x bfloat> %r
25+
}
26+
27+
define <vscale x 2 x bfloat> @nxv2bf16(<vscale x 2 x bfloat> %v) {
28+
; CHECK-LABEL: nxv2bf16:
29+
; CHECK: # %bb.0:
30+
; CHECK-NEXT: lui a0, 8
31+
; CHECK-NEXT: addi a0, a0, -1
32+
; CHECK-NEXT: vsetvli a1, zero, e16, mf2, ta, ma
33+
; CHECK-NEXT: vand.vx v8, v8, a0
34+
; CHECK-NEXT: ret
35+
%r = call <vscale x 2 x bfloat> @llvm.fabs.nxv2bf16(<vscale x 2 x bfloat> %v)
36+
ret <vscale x 2 x bfloat> %r
37+
}
38+
39+
define <vscale x 4 x bfloat> @nxv4bf16(<vscale x 4 x bfloat> %v) {
40+
; CHECK-LABEL: nxv4bf16:
41+
; CHECK: # %bb.0:
42+
; CHECK-NEXT: lui a0, 8
43+
; CHECK-NEXT: addi a0, a0, -1
44+
; CHECK-NEXT: vsetvli a1, zero, e16, m1, ta, ma
45+
; CHECK-NEXT: vand.vx v8, v8, a0
46+
; CHECK-NEXT: ret
47+
%r = call <vscale x 4 x bfloat> @llvm.fabs.nxv4bf16(<vscale x 4 x bfloat> %v)
48+
ret <vscale x 4 x bfloat> %r
49+
}
50+
51+
define <vscale x 8 x bfloat> @nxv8bf16(<vscale x 8 x bfloat> %v) {
52+
; CHECK-LABEL: nxv8bf16:
53+
; CHECK: # %bb.0:
54+
; CHECK-NEXT: lui a0, 8
55+
; CHECK-NEXT: addi a0, a0, -1
56+
; CHECK-NEXT: vsetvli a1, zero, e16, m2, ta, ma
57+
; CHECK-NEXT: vand.vx v8, v8, a0
58+
; CHECK-NEXT: ret
59+
%r = call <vscale x 8 x bfloat> @llvm.fabs.nxv8bf16(<vscale x 8 x bfloat> %v)
60+
ret <vscale x 8 x bfloat> %r
61+
}
62+
63+
define <vscale x 16 x bfloat> @nxv16bf16(<vscale x 16 x bfloat> %v) {
64+
; CHECK-LABEL: nxv16bf16:
65+
; CHECK: # %bb.0:
66+
; CHECK-NEXT: lui a0, 8
67+
; CHECK-NEXT: addi a0, a0, -1
68+
; CHECK-NEXT: vsetvli a1, zero, e16, m4, ta, ma
69+
; CHECK-NEXT: vand.vx v8, v8, a0
70+
; CHECK-NEXT: ret
71+
%r = call <vscale x 16 x bfloat> @llvm.fabs.nxv16bf16(<vscale x 16 x bfloat> %v)
72+
ret <vscale x 16 x bfloat> %r
73+
}
74+
75+
define <vscale x 32 x bfloat> @nxv32bf16(<vscale x 32 x bfloat> %v) {
76+
; CHECK-LABEL: nxv32bf16:
77+
; CHECK: # %bb.0:
78+
; CHECK-NEXT: lui a0, 8
79+
; CHECK-NEXT: addi a0, a0, -1
80+
; CHECK-NEXT: vsetvli a1, zero, e16, m8, ta, ma
81+
; CHECK-NEXT: vand.vx v8, v8, a0
82+
; CHECK-NEXT: ret
83+
%r = call <vscale x 32 x bfloat> @llvm.fabs.nxv32bf16(<vscale x 32 x bfloat> %v)
84+
ret <vscale x 32 x bfloat> %r
85+
}
1086

1187
declare <vscale x 1 x half> @llvm.fabs.nxv1f16(<vscale x 1 x half>)
1288

llvm/test/CodeGen/RISCV/rvv/vfcopysign-sdnode-bf16.ll

Lines changed: 0 additions & 87 deletions
This file was deleted.

llvm/test/CodeGen/RISCV/rvv/vfcopysign-sdnode.ll

Lines changed: 96 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,100 @@
11
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2-
; RUN: llc -mtriple=riscv32 -mattr=+d,+zfh,+zvfh,+v -target-abi=ilp32d \
3-
; RUN: -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFH
4-
; RUN: llc -mtriple=riscv64 -mattr=+d,+zfh,+zvfh,+v -target-abi=lp64d \
5-
; RUN: -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFH
6-
; RUN: llc -mtriple=riscv32 -mattr=+d,+zfhmin,+zvfhmin,+v -target-abi=ilp32d \
7-
; RUN: -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFHMIN
8-
; RUN: llc -mtriple=riscv64 -mattr=+d,+zfhmin,+zvfhmin,+v -target-abi=lp64d \
9-
; RUN: -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFHMIN
2+
; RUN: llc -mtriple=riscv32 -mattr=+d,+zfh,+zvfh,+zvfbfmin,+v \
3+
; RUN: -target-abi=ilp32d -verify-machineinstrs < %s | FileCheck %s \
4+
; RUN: --check-prefixes=CHECK,ZVFH
5+
; RUN: llc -mtriple=riscv64 -mattr=+d,+zfh,+zvfh,+zvfbfmin,+v \
6+
; RUN: -target-abi=lp64d -verify-machineinstrs < %s | FileCheck %s \
7+
; RUN: --check-prefixes=CHECK,ZVFH
8+
; RUN: llc -mtriple=riscv32 -mattr=+d,+zfhmin,+zvfhmin,+zvfbfmin,+v \
9+
; RUN: -target-abi=ilp32d -verify-machineinstrs < %s | FileCheck %s \
10+
; RUN: --check-prefixes=CHECK,ZVFHMIN
11+
; RUN: llc -mtriple=riscv64 -mattr=+d,+zfhmin,+zvfhmin,+zvfbfmin,+v \
12+
; RUN: -target-abi=lp64d -verify-machineinstrs < %s | FileCheck %s \
13+
; RUN: --check-prefixes=CHECK,ZVFHMIN
14+
15+
define <vscale x 1 x bfloat> @nxv1bf16(<vscale x 1 x bfloat> %vm, <vscale x 1 x bfloat> %vs) {
16+
; CHECK-LABEL: nxv1bf16:
17+
; CHECK: # %bb.0:
18+
; CHECK-NEXT: lui a0, 8
19+
; CHECK-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
20+
; CHECK-NEXT: vand.vx v9, v9, a0
21+
; CHECK-NEXT: addi a0, a0, -1
22+
; CHECK-NEXT: vand.vx v8, v8, a0
23+
; CHECK-NEXT: vor.vv v8, v8, v9
24+
; CHECK-NEXT: ret
25+
%r = call <vscale x 1 x bfloat> @llvm.copysign.nxv1bf16(<vscale x 1 x bfloat> %vm, <vscale x 1 x bfloat> %vs)
26+
ret <vscale x 1 x bfloat> %r
27+
}
28+
29+
define <vscale x 2 x bfloat> @nxv2bf16(<vscale x 2 x bfloat> %vm, <vscale x 2 x bfloat> %vs) {
30+
; CHECK-LABEL: nxv2bf16:
31+
; CHECK: # %bb.0:
32+
; CHECK-NEXT: lui a0, 8
33+
; CHECK-NEXT: vsetvli a1, zero, e16, mf2, ta, ma
34+
; CHECK-NEXT: vand.vx v9, v9, a0
35+
; CHECK-NEXT: addi a0, a0, -1
36+
; CHECK-NEXT: vand.vx v8, v8, a0
37+
; CHECK-NEXT: vor.vv v8, v8, v9
38+
; CHECK-NEXT: ret
39+
%r = call <vscale x 2 x bfloat> @llvm.copysign.nxv2bf16(<vscale x 2 x bfloat> %vm, <vscale x 2 x bfloat> %vs)
40+
ret <vscale x 2 x bfloat> %r
41+
}
42+
43+
define <vscale x 4 x bfloat> @nxv4bf16(<vscale x 4 x bfloat> %vm, <vscale x 4 x bfloat> %vs) {
44+
; CHECK-LABEL: nxv4bf16:
45+
; CHECK: # %bb.0:
46+
; CHECK-NEXT: lui a0, 8
47+
; CHECK-NEXT: vsetvli a1, zero, e16, m1, ta, ma
48+
; CHECK-NEXT: vand.vx v9, v9, a0
49+
; CHECK-NEXT: addi a0, a0, -1
50+
; CHECK-NEXT: vand.vx v8, v8, a0
51+
; CHECK-NEXT: vor.vv v8, v8, v9
52+
; CHECK-NEXT: ret
53+
%r = call <vscale x 4 x bfloat> @llvm.copysign.nxv4bf16(<vscale x 4 x bfloat> %vm, <vscale x 4 x bfloat> %vs)
54+
ret <vscale x 4 x bfloat> %r
55+
}
56+
57+
define <vscale x 8 x bfloat> @nxv8bf16(<vscale x 8 x bfloat> %vm, <vscale x 8 x bfloat> %vs) {
58+
; CHECK-LABEL: nxv8bf16:
59+
; CHECK: # %bb.0:
60+
; CHECK-NEXT: lui a0, 8
61+
; CHECK-NEXT: vsetvli a1, zero, e16, m2, ta, ma
62+
; CHECK-NEXT: vand.vx v10, v10, a0
63+
; CHECK-NEXT: addi a0, a0, -1
64+
; CHECK-NEXT: vand.vx v8, v8, a0
65+
; CHECK-NEXT: vor.vv v8, v8, v10
66+
; CHECK-NEXT: ret
67+
%r = call <vscale x 8 x bfloat> @llvm.copysign.nxv8bf16(<vscale x 8 x bfloat> %vm, <vscale x 8 x bfloat> %vs)
68+
ret <vscale x 8 x bfloat> %r
69+
}
70+
71+
define <vscale x 16 x bfloat> @nxv16bf16(<vscale x 16 x bfloat> %vm, <vscale x 16 x bfloat> %vs) {
72+
; CHECK-LABEL: nxv16bf16:
73+
; CHECK: # %bb.0:
74+
; CHECK-NEXT: lui a0, 8
75+
; CHECK-NEXT: vsetvli a1, zero, e16, m4, ta, ma
76+
; CHECK-NEXT: vand.vx v12, v12, a0
77+
; CHECK-NEXT: addi a0, a0, -1
78+
; CHECK-NEXT: vand.vx v8, v8, a0
79+
; CHECK-NEXT: vor.vv v8, v8, v12
80+
; CHECK-NEXT: ret
81+
%r = call <vscale x 16 x bfloat> @llvm.copysign.nxv16bf16(<vscale x 16 x bfloat> %vm, <vscale x 16 x bfloat> %vs)
82+
ret <vscale x 16 x bfloat> %r
83+
}
84+
85+
define <vscale x 32 x bfloat> @nxv32bf32(<vscale x 32 x bfloat> %vm, <vscale x 32 x bfloat> %vs) {
86+
; CHECK-LABEL: nxv32bf32:
87+
; CHECK: # %bb.0:
88+
; CHECK-NEXT: lui a0, 8
89+
; CHECK-NEXT: vsetvli a1, zero, e16, m8, ta, ma
90+
; CHECK-NEXT: vand.vx v16, v16, a0
91+
; CHECK-NEXT: addi a0, a0, -1
92+
; CHECK-NEXT: vand.vx v8, v8, a0
93+
; CHECK-NEXT: vor.vv v8, v8, v16
94+
; CHECK-NEXT: ret
95+
%r = call <vscale x 32 x bfloat> @llvm.copysign.nxv32bf32(<vscale x 32 x bfloat> %vm, <vscale x 32 x bfloat> %vs)
96+
ret <vscale x 32 x bfloat> %r
97+
}
1098

1199
declare <vscale x 1 x half> @llvm.copysign.nxv1f16(<vscale x 1 x half>, <vscale x 1 x half>)
12100

0 commit comments

Comments
 (0)