Skip to content

Commit 2df41a8

Browse files
committed
AMDGPU/GlobalISel: Select G_BITREVERSE
llvm-svn: 370980
1 parent 5ff310e commit 2df41a8

File tree

4 files changed

+86
-1
lines changed

4 files changed

+86
-1
lines changed

llvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1775,6 +1775,7 @@ AMDGPURegisterBankInfo::getInstrMapping(const MachineInstr &MI) const {
17751775
case AMDGPU::G_CTTZ_ZERO_UNDEF:
17761776
case AMDGPU::G_CTPOP:
17771777
case AMDGPU::G_BSWAP:
1778+
case AMDGPU::G_BITREVERSE:
17781779
case AMDGPU::G_FABS:
17791780
case AMDGPU::G_FNEG: {
17801781
unsigned Size = MRI.getType(MI.getOperand(0).getReg()).getSizeInBits();

llvm/lib/Target/AMDGPU/VOP1Instructions.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ defm V_COS_F32 : VOP1Inst <"v_cos_f32", VOP_F32_F32, AMDGPUcos>;
227227
} // End SchedRW = [WriteQuarterRate32]
228228

229229
defm V_NOT_B32 : VOP1Inst <"v_not_b32", VOP_I32_I32>;
230-
defm V_BFREV_B32 : VOP1Inst <"v_bfrev_b32", VOP_I32_I32>;
230+
defm V_BFREV_B32 : VOP1Inst <"v_bfrev_b32", VOP_I32_I32, bitreverse>;
231231
defm V_FFBH_U32 : VOP1Inst <"v_ffbh_u32", VOP_I32_I32>;
232232
defm V_FFBL_B32 : VOP1Inst <"v_ffbl_b32", VOP_I32_I32>;
233233
defm V_FFBH_I32 : VOP1Inst <"v_ffbh_i32", VOP_I32_I32>;
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2+
# RUN: llc -march=amdgcn -mcpu=hawaii -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck %s
3+
4+
---
5+
name: bitreverse_i32_ss
6+
legalized: true
7+
regBankSelected: true
8+
9+
body: |
10+
bb.0:
11+
liveins: $sgpr0
12+
; CHECK-LABEL: name: bitreverse_i32_ss
13+
; CHECK: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
14+
; CHECK: [[S_BREV_B32_:%[0-9]+]]:sreg_32 = S_BREV_B32 [[COPY]]
15+
; CHECK: S_ENDPGM 0, implicit [[S_BREV_B32_]]
16+
%0:sgpr(s32) = COPY $sgpr0
17+
%1:sgpr(s32) = G_BITREVERSE %0
18+
S_ENDPGM 0, implicit %1
19+
...
20+
21+
---
22+
name: bitreverse_i32_vv
23+
legalized: true
24+
regBankSelected: true
25+
26+
body: |
27+
bb.0:
28+
liveins: $vgpr0
29+
; CHECK-LABEL: name: bitreverse_i32_vv
30+
; CHECK: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
31+
; CHECK: [[V_BFREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_BFREV_B32_e64 [[COPY]], implicit $exec
32+
; CHECK: S_ENDPGM 0, implicit [[V_BFREV_B32_e64_]]
33+
%0:vgpr(s32) = COPY $vgpr0
34+
%1:vgpr(s32) = G_BITREVERSE %0
35+
S_ENDPGM 0, implicit %1
36+
...
37+
38+
---
39+
name: bitreverse_i32_vs
40+
legalized: true
41+
regBankSelected: true
42+
43+
body: |
44+
bb.0:
45+
liveins: $sgpr0
46+
; CHECK-LABEL: name: bitreverse_i32_vs
47+
; CHECK: [[COPY:%[0-9]+]]:sreg_32_xm0 = COPY $sgpr0
48+
; CHECK: [[V_BFREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_BFREV_B32_e64 [[COPY]], implicit $exec
49+
; CHECK: S_ENDPGM 0, implicit [[V_BFREV_B32_e64_]]
50+
%0:sgpr(s32) = COPY $sgpr0
51+
%1:vgpr(s32) = G_BITREVERSE %0
52+
S_ENDPGM 0, implicit %1
53+
...
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2+
# RUN: llc -march=amdgcn -mcpu=fiji -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-fast | FileCheck %s
3+
# RUN: llc -march=amdgcn -mcpu=fiji -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-greedy | FileCheck %s
4+
5+
---
6+
name: bitreverse_i32_s
7+
legalized: true
8+
9+
body: |
10+
bb.0:
11+
liveins: $sgpr0
12+
; CHECK-LABEL: name: bitreverse_i32_s
13+
; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
14+
; CHECK: [[BITREVERSE:%[0-9]+]]:sgpr(s32) = G_BITREVERSE [[COPY]]
15+
%0:_(s32) = COPY $sgpr0
16+
%1:_(s32) = G_BITREVERSE %0
17+
...
18+
19+
---
20+
name: bitreverse_i32_v
21+
legalized: true
22+
23+
body: |
24+
bb.0:
25+
liveins: $vgpr0
26+
; CHECK-LABEL: name: bitreverse_i32_v
27+
; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
28+
; CHECK: [[BITREVERSE:%[0-9]+]]:vgpr(s32) = G_BITREVERSE [[COPY]]
29+
%0:_(s32) = COPY $vgpr0
30+
%1:_(s32) = G_BITREVERSE %0
31+
...

0 commit comments

Comments
 (0)