Skip to content

Commit 36ac6ac

Browse files
committed
[RISCV] Merge rv32 and rv64 Zvb* intrinsic tests. NFC
There was some duplication between these tests and we can merge them by checking __riscv_xlen for the parts that aren't duplicated. Reviewed By: kito-cheng Differential Revision: https://reviews.llvm.org/D156851
1 parent 99b5474 commit 36ac6ac

File tree

11 files changed

+168
-185
lines changed

11 files changed

+168
-185
lines changed

clang/test/CodeGen/RISCV/rvb-intrinsics/riscv32-zbb.c

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

clang/test/CodeGen/RISCV/rvb-intrinsics/riscv32-zbc.c

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

clang/test/CodeGen/RISCV/rvb-intrinsics/riscv32-zbkc.c

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

clang/test/CodeGen/RISCV/rvb-intrinsics/riscv32-zbkx.c

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

clang/test/CodeGen/RISCV/rvb-intrinsics/riscv64-zbkb.c

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

clang/test/CodeGen/RISCV/rvb-intrinsics/riscv64-zbkx.c

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

clang/test/CodeGen/RISCV/rvb-intrinsics/riscv64-zbb.c renamed to clang/test/CodeGen/RISCV/rvb-intrinsics/zbb.c

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,16 @@
11
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
2+
// RUN: %clang_cc1 -triple riscv32 -target-feature +zbb -emit-llvm %s -o - \
3+
// RUN: -disable-O0-optnone | opt -S -passes=mem2reg \
4+
// RUN: | FileCheck %s -check-prefix=RV32ZBB
25
// RUN: %clang_cc1 -triple riscv64 -target-feature +zbb -emit-llvm %s -o - \
36
// RUN: -disable-O0-optnone | opt -S -passes=mem2reg \
47
// RUN: | FileCheck %s -check-prefix=RV64ZBB
58

9+
// RV32ZBB-LABEL: @orc_b_32(
10+
// RV32ZBB-NEXT: entry:
11+
// RV32ZBB-NEXT: [[TMP0:%.*]] = call i32 @llvm.riscv.orc.b.i32(i32 [[A:%.*]])
12+
// RV32ZBB-NEXT: ret i32 [[TMP0]]
13+
//
614
// RV64ZBB-LABEL: @orc_b_32(
715
// RV64ZBB-NEXT: entry:
816
// RV64ZBB-NEXT: [[TMP0:%.*]] = call i32 @llvm.riscv.orc.b.i32(i32 [[A:%.*]])
@@ -12,6 +20,7 @@ unsigned int orc_b_32(unsigned int a) {
1220
return __builtin_riscv_orc_b_32(a);
1321
}
1422

23+
#if __riscv_xlen == 64
1524
// RV64ZBB-LABEL: @orc_b_64(
1625
// RV64ZBB-NEXT: entry:
1726
// RV64ZBB-NEXT: [[TMP0:%.*]] = call i64 @llvm.riscv.orc.b.i64(i64 [[A:%.*]])
@@ -20,7 +29,13 @@ unsigned int orc_b_32(unsigned int a) {
2029
unsigned long orc_b_64(unsigned long a) {
2130
return __builtin_riscv_orc_b_64(a);
2231
}
32+
#endif
2333

34+
// RV32ZBB-LABEL: @clz_32(
35+
// RV32ZBB-NEXT: entry:
36+
// RV32ZBB-NEXT: [[TMP0:%.*]] = call i32 @llvm.ctlz.i32(i32 [[A:%.*]], i1 false)
37+
// RV32ZBB-NEXT: ret i32 [[TMP0]]
38+
//
2439
// RV64ZBB-LABEL: @clz_32(
2540
// RV64ZBB-NEXT: entry:
2641
// RV64ZBB-NEXT: [[TMP0:%.*]] = call i32 @llvm.ctlz.i32(i32 [[A:%.*]], i1 false)
@@ -30,6 +45,7 @@ unsigned int clz_32(unsigned int a) {
3045
return __builtin_riscv_clz_32(a);
3146
}
3247

48+
#if __riscv_xlen == 64
3349
// RV64ZBB-LABEL: @clz_64(
3450
// RV64ZBB-NEXT: entry:
3551
// RV64ZBB-NEXT: [[TMP0:%.*]] = call i64 @llvm.ctlz.i64(i64 [[A:%.*]], i1 false)
@@ -39,7 +55,13 @@ unsigned int clz_32(unsigned int a) {
3955
unsigned int clz_64(unsigned long a) {
4056
return __builtin_riscv_clz_64(a);
4157
}
58+
#endif
4259

60+
// RV32ZBB-LABEL: @ctz_32(
61+
// RV32ZBB-NEXT: entry:
62+
// RV32ZBB-NEXT: [[TMP0:%.*]] = call i32 @llvm.cttz.i32(i32 [[A:%.*]], i1 false)
63+
// RV32ZBB-NEXT: ret i32 [[TMP0]]
64+
//
4365
// RV64ZBB-LABEL: @ctz_32(
4466
// RV64ZBB-NEXT: entry:
4567
// RV64ZBB-NEXT: [[TMP0:%.*]] = call i32 @llvm.cttz.i32(i32 [[A:%.*]], i1 false)
@@ -49,6 +71,7 @@ unsigned int ctz_32(unsigned int a) {
4971
return __builtin_riscv_ctz_32(a);
5072
}
5173

74+
#if __riscv_xlen == 64
5275
// RV64ZBB-LABEL: @ctz_64(
5376
// RV64ZBB-NEXT: entry:
5477
// RV64ZBB-NEXT: [[TMP0:%.*]] = call i64 @llvm.cttz.i64(i64 [[A:%.*]], i1 false)
@@ -58,3 +81,4 @@ unsigned int ctz_32(unsigned int a) {
5881
unsigned int ctz_64(unsigned long a) {
5982
return __builtin_riscv_ctz_64(a);
6083
}
84+
#endif

clang/test/CodeGen/RISCV/rvb-intrinsics/riscv64-zbc.c renamed to clang/test/CodeGen/RISCV/rvb-intrinsics/zbc.c

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
2+
// RUN: %clang_cc1 -triple riscv32 -target-feature +zbc -emit-llvm %s -o - \
3+
// RUN: | FileCheck %s -check-prefix=RV32ZBC
24
// RUN: %clang_cc1 -triple riscv64 -target-feature +zbc -emit-llvm %s -o - \
35
// RUN: | FileCheck %s -check-prefix=RV64ZBC
46

57
#include <stdint.h>
68

9+
#if __riscv_xlen == 64
710
// RV64ZBC-LABEL: @clmul_64(
811
// RV64ZBC-NEXT: entry:
912
// RV64ZBC-NEXT: [[A_ADDR:%.*]] = alloca i64, align 8
@@ -48,7 +51,19 @@ uint64_t clmulh_64(uint64_t a, uint64_t b) {
4851
uint64_t clmulr_64(uint64_t a, uint64_t b) {
4952
return __builtin_riscv_clmulr_64(a, b);
5053
}
54+
#endif
5155

56+
// RV32ZBC-LABEL: @clmul_32(
57+
// RV32ZBC-NEXT: entry:
58+
// RV32ZBC-NEXT: [[A_ADDR:%.*]] = alloca i32, align 4
59+
// RV32ZBC-NEXT: [[B_ADDR:%.*]] = alloca i32, align 4
60+
// RV32ZBC-NEXT: store i32 [[A:%.*]], ptr [[A_ADDR]], align 4
61+
// RV32ZBC-NEXT: store i32 [[B:%.*]], ptr [[B_ADDR]], align 4
62+
// RV32ZBC-NEXT: [[TMP0:%.*]] = load i32, ptr [[A_ADDR]], align 4
63+
// RV32ZBC-NEXT: [[TMP1:%.*]] = load i32, ptr [[B_ADDR]], align 4
64+
// RV32ZBC-NEXT: [[TMP2:%.*]] = call i32 @llvm.riscv.clmul.i32(i32 [[TMP0]], i32 [[TMP1]])
65+
// RV32ZBC-NEXT: ret i32 [[TMP2]]
66+
//
5267
// RV64ZBC-LABEL: @clmul_32(
5368
// RV64ZBC-NEXT: entry:
5469
// RV64ZBC-NEXT: [[A_ADDR:%.*]] = alloca i32, align 4
@@ -64,3 +79,34 @@ uint32_t clmul_32(uint32_t a, uint32_t b) {
6479
return __builtin_riscv_clmul_32(a, b);
6580
}
6681

82+
#if __riscv_xlen == 32
83+
// RV32ZBC-LABEL: @clmulh_32(
84+
// RV32ZBC-NEXT: entry:
85+
// RV32ZBC-NEXT: [[A_ADDR:%.*]] = alloca i32, align 4
86+
// RV32ZBC-NEXT: [[B_ADDR:%.*]] = alloca i32, align 4
87+
// RV32ZBC-NEXT: store i32 [[A:%.*]], ptr [[A_ADDR]], align 4
88+
// RV32ZBC-NEXT: store i32 [[B:%.*]], ptr [[B_ADDR]], align 4
89+
// RV32ZBC-NEXT: [[TMP0:%.*]] = load i32, ptr [[A_ADDR]], align 4
90+
// RV32ZBC-NEXT: [[TMP1:%.*]] = load i32, ptr [[B_ADDR]], align 4
91+
// RV32ZBC-NEXT: [[TMP2:%.*]] = call i32 @llvm.riscv.clmulh.i32(i32 [[TMP0]], i32 [[TMP1]])
92+
// RV32ZBC-NEXT: ret i32 [[TMP2]]
93+
//
94+
uint32_t clmulh_32(uint32_t a, uint32_t b) {
95+
return __builtin_riscv_clmulh_32(a, b);
96+
}
97+
98+
// RV32ZBC-LABEL: @clmulr_32(
99+
// RV32ZBC-NEXT: entry:
100+
// RV32ZBC-NEXT: [[A_ADDR:%.*]] = alloca i32, align 4
101+
// RV32ZBC-NEXT: [[B_ADDR:%.*]] = alloca i32, align 4
102+
// RV32ZBC-NEXT: store i32 [[A:%.*]], ptr [[A_ADDR]], align 4
103+
// RV32ZBC-NEXT: store i32 [[B:%.*]], ptr [[B_ADDR]], align 4
104+
// RV32ZBC-NEXT: [[TMP0:%.*]] = load i32, ptr [[A_ADDR]], align 4
105+
// RV32ZBC-NEXT: [[TMP1:%.*]] = load i32, ptr [[B_ADDR]], align 4
106+
// RV32ZBC-NEXT: [[TMP2:%.*]] = call i32 @llvm.riscv.clmulr.i32(i32 [[TMP0]], i32 [[TMP1]])
107+
// RV32ZBC-NEXT: ret i32 [[TMP2]]
108+
//
109+
uint32_t clmulr_32(uint32_t a, uint32_t b) {
110+
return __builtin_riscv_clmulr_32(a, b);
111+
}
112+
#endif

clang/test/CodeGen/RISCV/rvb-intrinsics/riscv32-zbkb.c renamed to clang/test/CodeGen/RISCV/rvb-intrinsics/zbkb.c

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,40 @@
22
// RUN: %clang_cc1 -triple riscv32 -target-feature +zbkb -emit-llvm %s -o - \
33
// RUN: -disable-O0-optnone | opt -S -passes=mem2reg \
44
// RUN: | FileCheck %s -check-prefix=RV32ZBKB
5+
// RUN: %clang_cc1 -triple riscv64 -target-feature +zbkb -emit-llvm %s -o - \
6+
// RUN: -disable-O0-optnone | opt -S -passes=mem2reg \
7+
// RUN: | FileCheck %s -check-prefix=RV64ZBKB
58

69
#include <stdint.h>
710

8-
// RV32ZBKB-LABEL: @brev8(
11+
// RV32ZBKB-LABEL: @brev8_32(
912
// RV32ZBKB-NEXT: entry:
1013
// RV32ZBKB-NEXT: [[TMP0:%.*]] = call i32 @llvm.riscv.brev8.i32(i32 [[RS1:%.*]])
1114
// RV32ZBKB-NEXT: ret i32 [[TMP0]]
1215
//
13-
uint32_t brev8(uint32_t rs1)
16+
// RV64ZBKB-LABEL: @brev8_32(
17+
// RV64ZBKB-NEXT: entry:
18+
// RV64ZBKB-NEXT: [[TMP0:%.*]] = call i32 @llvm.riscv.brev8.i32(i32 [[RS1:%.*]])
19+
// RV64ZBKB-NEXT: ret i32 [[TMP0]]
20+
//
21+
uint32_t brev8_32(uint32_t rs1)
1422
{
1523
return __builtin_riscv_brev8_32(rs1);
1624
}
1725

26+
#if __riscv_xlen == 64
27+
// RV64ZBKB-LABEL: @brev8_64(
28+
// RV64ZBKB-NEXT: entry:
29+
// RV64ZBKB-NEXT: [[TMP0:%.*]] = call i64 @llvm.riscv.brev8.i64(i64 [[RS1:%.*]])
30+
// RV64ZBKB-NEXT: ret i64 [[TMP0]]
31+
//
32+
uint64_t brev8_64(uint64_t rs1)
33+
{
34+
return __builtin_riscv_brev8_64(rs1);
35+
}
36+
#endif
37+
38+
#if __riscv_xlen == 32
1839
// RV32ZBKB-LABEL: @zip(
1940
// RV32ZBKB-NEXT: entry:
2041
// RV32ZBKB-NEXT: [[TMP0:%.*]] = call i32 @llvm.riscv.zip.i32(i32 [[RS1:%.*]])
@@ -34,3 +55,4 @@ uint32_t unzip(uint32_t rs1)
3455
{
3556
return __builtin_riscv_unzip_32(rs1);
3657
}
58+
#endif

0 commit comments

Comments
 (0)