Skip to content

Commit d1d3a32

Browse files
committed
[RISCV] Pre-commit
1 parent 213d0d2 commit d1d3a32

File tree

2 files changed

+137
-0
lines changed

2 files changed

+137
-0
lines changed

llvm/test/CodeGen/RISCV/rv32xandesperf.ll

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,79 @@
22
; RUN: llc -O0 -mtriple=riscv32 -mattr=+xandesperf -verify-machineinstrs < %s \
33
; RUN: | FileCheck %s
44

5+
define i32 @bfoz_from_and_i32(i32 %x) {
6+
; CHECK-LABEL: bfoz_from_and_i32:
7+
; CHECK: # %bb.0:
8+
; CHECK-NEXT: slli a0, a0, 20
9+
; CHECK-NEXT: srli a0, a0, 20
10+
; CHECK-NEXT: ret
11+
%a = and i32 %x, 4095
12+
ret i32 %a
13+
}
14+
15+
define i64 @bfoz_from_and_i64(i64 %x) {
16+
; CHECK-LABEL: bfoz_from_and_i64:
17+
; CHECK: # %bb.0:
18+
; CHECK-NEXT: # kill: def $x11 killed $x10
19+
; CHECK-NEXT: slli a0, a0, 20
20+
; CHECK-NEXT: srli a0, a0, 20
21+
; CHECK-NEXT: li a1, 0
22+
; CHECK-NEXT: ret
23+
%a = and i64 %x, 4095
24+
ret i64 %a
25+
}
26+
27+
define i32 @bfoz_from_and_lshr_i32(i32 %x) {
28+
; CHECK-LABEL: bfoz_from_and_lshr_i32:
29+
; CHECK: # %bb.0:
30+
; CHECK-NEXT: slli a0, a0, 6
31+
; CHECK-NEXT: srli a0, a0, 29
32+
; CHECK-NEXT: ret
33+
%shifted = lshr i32 %x, 23
34+
%masked = and i32 %shifted, 7
35+
ret i32 %masked
36+
}
37+
38+
define i64 @bfoz_from_and_lshr_i64(i64 %x) {
39+
; CHECK-LABEL: bfoz_from_and_lshr_i64:
40+
; CHECK: # %bb.0:
41+
; CHECK-NEXT: # kill: def $x12 killed $x11
42+
; CHECK-NEXT: slli a0, a1, 6
43+
; CHECK-NEXT: srli a0, a0, 20
44+
; CHECK-NEXT: li a1, 0
45+
; CHECK-NEXT: ret
46+
%shifted = lshr i64 %x, 46
47+
%masked = and i64 %shifted, 4095
48+
ret i64 %masked
49+
}
50+
51+
define i32 @bfoz_from_lshr_and_i32(i32 %x) {
52+
; CHECK-LABEL: bfoz_from_lshr_and_i32:
53+
; CHECK: # %bb.0:
54+
; CHECK-NEXT: slli a0, a0, 8
55+
; CHECK-NEXT: srli a0, a0, 20
56+
; CHECK-NEXT: ret
57+
%masked = and i32 %x, 16773120
58+
%shifted = lshr i32 %masked, 12
59+
ret i32 %shifted
60+
}
61+
62+
define i64 @bfoz_from_lshr_and_i64(i64 %x) {
63+
; CHECK-LABEL: bfoz_from_lshr_and_i64:
64+
; CHECK: # %bb.0:
65+
; CHECK-NEXT: # kill: def $x12 killed $x11
66+
; CHECK-NEXT: # kill: def $x12 killed $x10
67+
; CHECK-NEXT: andi a1, a1, 15
68+
; CHECK-NEXT: srli a0, a0, 24
69+
; CHECK-NEXT: slli a1, a1, 8
70+
; CHECK-NEXT: or a0, a0, a1
71+
; CHECK-NEXT: li a1, 0
72+
; CHECK-NEXT: ret
73+
%masked = and i64 %x, 68702699520
74+
%shifted = lshr i64 %masked, 24
75+
ret i64 %shifted
76+
}
77+
578
define i32 @sexti1_i32(i32 %a) {
679
; CHECK-LABEL: sexti1_i32:
780
; CHECK: # %bb.0:

llvm/test/CodeGen/RISCV/rv64xandesperf.ll

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,70 @@
22
; RUN: llc -mtriple=riscv64 -mattr=+xandesperf -verify-machineinstrs < %s \
33
; RUN: | FileCheck %s
44

5+
define i32 @bfoz_from_and_i32(i32 %x) {
6+
; CHECK-LABEL: bfoz_from_and_i32:
7+
; CHECK: # %bb.0:
8+
; CHECK-NEXT: slli a0, a0, 52
9+
; CHECK-NEXT: srli a0, a0, 52
10+
; CHECK-NEXT: ret
11+
%a = and i32 %x, 4095
12+
ret i32 %a
13+
}
14+
15+
define i64 @bfoz_from_and_i64(i64 %x) {
16+
; CHECK-LABEL: bfoz_from_and_i64:
17+
; CHECK: # %bb.0:
18+
; CHECK-NEXT: slli a0, a0, 52
19+
; CHECK-NEXT: srli a0, a0, 52
20+
; CHECK-NEXT: ret
21+
%a = and i64 %x, 4095
22+
ret i64 %a
23+
}
24+
25+
define i32 @bfoz_from_and_lshr_i32(i32 %x) {
26+
; CHECK-LABEL: bfoz_from_and_lshr_i32:
27+
; CHECK: # %bb.0:
28+
; CHECK-NEXT: slli a0, a0, 38
29+
; CHECK-NEXT: srli a0, a0, 61
30+
; CHECK-NEXT: ret
31+
%shifted = lshr i32 %x, 23
32+
%masked = and i32 %shifted, 7
33+
ret i32 %masked
34+
}
35+
36+
define i64 @bfoz_from_and_lshr_i64(i64 %x) {
37+
; CHECK-LABEL: bfoz_from_and_lshr_i64:
38+
; CHECK: # %bb.0:
39+
; CHECK-NEXT: slli a0, a0, 6
40+
; CHECK-NEXT: srli a0, a0, 52
41+
; CHECK-NEXT: ret
42+
%shifted = lshr i64 %x, 46
43+
%masked = and i64 %shifted, 4095
44+
ret i64 %masked
45+
}
46+
47+
define i32 @bfoz_from_lshr_and_i32(i32 %x) {
48+
; CHECK-LABEL: bfoz_from_lshr_and_i32:
49+
; CHECK: # %bb.0:
50+
; CHECK-NEXT: slli a0, a0, 40
51+
; CHECK-NEXT: srli a0, a0, 52
52+
; CHECK-NEXT: ret
53+
%masked = and i32 %x, 16773120
54+
%shifted = lshr i32 %masked, 12
55+
ret i32 %shifted
56+
}
57+
58+
define i64 @bfoz_from_lshr_and_i64(i64 %x) {
59+
; CHECK-LABEL: bfoz_from_lshr_and_i64:
60+
; CHECK: # %bb.0:
61+
; CHECK-NEXT: slli a0, a0, 28
62+
; CHECK-NEXT: srli a0, a0, 52
63+
; CHECK-NEXT: ret
64+
%masked = and i64 %x, 68702699520
65+
%shifted = lshr i64 %masked, 24
66+
ret i64 %shifted
67+
}
68+
569
define signext i32 @sexti1_i32(i32 signext %a) {
670
; CHECK-LABEL: sexti1_i32:
771
; CHECK: # %bb.0:

0 commit comments

Comments
 (0)