22# RUN: llc -mtriple=riscv64 -run-pass=legalizer %s -o - \
33# RUN: | FileCheck %s --check-prefix=RV64I
44# RUN: llc -mtriple=riscv64 -mattr=+zbb -run-pass=legalizer %s -o - \
5- # RUN: | FileCheck %s --check-prefix=RV64ZBB
5+ # RUN: | FileCheck %s --check-prefix=RV64ZBB_OR_RV64ZBKB
6+ # RUN: llc -mtriple=riscv64 -mattr=+zbkb -run-pass=legalizer %s -o - \
7+ # RUN: | FileCheck %s --check-prefix=RV64ZBB_OR_RV64ZBKB
68
79---
810name : bswap_i16
@@ -27,16 +29,16 @@ body: |
2729 ; RV64I-NEXT: $x10 = COPY [[AND]](s64)
2830 ; RV64I-NEXT: PseudoRET implicit $x10
2931 ;
30- ; RV64ZBB -LABEL: name: bswap_i16
31- ; RV64ZBB : liveins: $x10
32- ; RV64ZBB -NEXT: {{ $}}
33- ; RV64ZBB -NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
34- ; RV64ZBB -NEXT: [[ASSERT_ZEXT:%[0-9]+]]:_(s64) = G_ASSERT_ZEXT [[COPY]], 16
35- ; RV64ZBB -NEXT: [[BSWAP:%[0-9]+]]:_(s64) = G_BSWAP [[ASSERT_ZEXT]]
36- ; RV64ZBB -NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 48
37- ; RV64ZBB -NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[BSWAP]], [[C]](s64)
38- ; RV64ZBB -NEXT: $x10 = COPY [[LSHR]](s64)
39- ; RV64ZBB -NEXT: PseudoRET implicit $x10
32+ ; RV64ZBB_OR_RV64ZBKB -LABEL: name: bswap_i16
33+ ; RV64ZBB_OR_RV64ZBKB : liveins: $x10
34+ ; RV64ZBB_OR_RV64ZBKB -NEXT: {{ $}}
35+ ; RV64ZBB_OR_RV64ZBKB -NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
36+ ; RV64ZBB_OR_RV64ZBKB -NEXT: [[ASSERT_ZEXT:%[0-9]+]]:_(s64) = G_ASSERT_ZEXT [[COPY]], 16
37+ ; RV64ZBB_OR_RV64ZBKB -NEXT: [[BSWAP:%[0-9]+]]:_(s64) = G_BSWAP [[ASSERT_ZEXT]]
38+ ; RV64ZBB_OR_RV64ZBKB -NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 48
39+ ; RV64ZBB_OR_RV64ZBKB -NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[BSWAP]], [[C]](s64)
40+ ; RV64ZBB_OR_RV64ZBKB -NEXT: $x10 = COPY [[LSHR]](s64)
41+ ; RV64ZBB_OR_RV64ZBKB -NEXT: PseudoRET implicit $x10
4042 %0:_(s64) = COPY $x10
4143 %1:_(s64) = G_ASSERT_ZEXT %0, 16
4244 %2:_(s16) = G_TRUNC %1(s64)
@@ -74,16 +76,16 @@ body: |
7476 ; RV64I-NEXT: $x10 = COPY [[ZEXT]](s64)
7577 ; RV64I-NEXT: PseudoRET implicit $x10
7678 ;
77- ; RV64ZBB -LABEL: name: bswap_i32
78- ; RV64ZBB : liveins: $x10
79- ; RV64ZBB -NEXT: {{ $}}
80- ; RV64ZBB -NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
81- ; RV64ZBB -NEXT: [[ASSERT_ZEXT:%[0-9]+]]:_(s64) = G_ASSERT_ZEXT [[COPY]], 32
82- ; RV64ZBB -NEXT: [[BSWAP:%[0-9]+]]:_(s64) = G_BSWAP [[ASSERT_ZEXT]]
83- ; RV64ZBB -NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 32
84- ; RV64ZBB -NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[BSWAP]], [[C]](s64)
85- ; RV64ZBB -NEXT: $x10 = COPY [[LSHR]](s64)
86- ; RV64ZBB -NEXT: PseudoRET implicit $x10
79+ ; RV64ZBB_OR_RV64ZBKB -LABEL: name: bswap_i32
80+ ; RV64ZBB_OR_RV64ZBKB : liveins: $x10
81+ ; RV64ZBB_OR_RV64ZBKB -NEXT: {{ $}}
82+ ; RV64ZBB_OR_RV64ZBKB -NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
83+ ; RV64ZBB_OR_RV64ZBKB -NEXT: [[ASSERT_ZEXT:%[0-9]+]]:_(s64) = G_ASSERT_ZEXT [[COPY]], 32
84+ ; RV64ZBB_OR_RV64ZBKB -NEXT: [[BSWAP:%[0-9]+]]:_(s64) = G_BSWAP [[ASSERT_ZEXT]]
85+ ; RV64ZBB_OR_RV64ZBKB -NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 32
86+ ; RV64ZBB_OR_RV64ZBKB -NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[BSWAP]], [[C]](s64)
87+ ; RV64ZBB_OR_RV64ZBKB -NEXT: $x10 = COPY [[LSHR]](s64)
88+ ; RV64ZBB_OR_RV64ZBKB -NEXT: PseudoRET implicit $x10
8789 %0:_(s64) = COPY $x10
8890 %1:_(s64) = G_ASSERT_ZEXT %0, 32
8991 %2:_(s32) = G_TRUNC %1(s64)
@@ -132,13 +134,13 @@ body: |
132134 ; RV64I-NEXT: $x10 = COPY [[OR6]](s64)
133135 ; RV64I-NEXT: PseudoRET implicit $x10
134136 ;
135- ; RV64ZBB -LABEL: name: bswap_i64
136- ; RV64ZBB : liveins: $x10
137- ; RV64ZBB -NEXT: {{ $}}
138- ; RV64ZBB -NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
139- ; RV64ZBB -NEXT: [[BSWAP:%[0-9]+]]:_(s64) = G_BSWAP [[COPY]]
140- ; RV64ZBB -NEXT: $x10 = COPY [[BSWAP]](s64)
141- ; RV64ZBB -NEXT: PseudoRET implicit $x10
137+ ; RV64ZBB_OR_RV64ZBKB -LABEL: name: bswap_i64
138+ ; RV64ZBB_OR_RV64ZBKB : liveins: $x10
139+ ; RV64ZBB_OR_RV64ZBKB -NEXT: {{ $}}
140+ ; RV64ZBB_OR_RV64ZBKB -NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
141+ ; RV64ZBB_OR_RV64ZBKB -NEXT: [[BSWAP:%[0-9]+]]:_(s64) = G_BSWAP [[COPY]]
142+ ; RV64ZBB_OR_RV64ZBKB -NEXT: $x10 = COPY [[BSWAP]](s64)
143+ ; RV64ZBB_OR_RV64ZBKB -NEXT: PseudoRET implicit $x10
142144 %0:_(s64) = COPY $x10
143145 %1:_(s64) = G_BSWAP %0
144146 $x10 = COPY %1(s64)
0 commit comments