Skip to content

Commit 4a1fa9b

Browse files
[AIE2PS] Add support for G_BITREVERSE and G_BSWAP
This ports commits e2814b1 and 11b709f to AIE2PS.
1 parent 78fa9c8 commit 4a1fa9b

4 files changed

Lines changed: 42 additions & 0 deletions

File tree

llvm/lib/Target/AIE/aie2ps/AIE2PSLegalizerInfo.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,11 @@ AIE2PSLegalizerInfo::AIE2PSLegalizerInfo(const AIE2PSSubtarget &ST)
297297
.clampScalar(0, S32, S32)
298298
.clampScalar(1, S32, S32);
299299

300+
getActionDefinitionsBuilder(G_BITREVERSE)
301+
.lowerFor({S16, S32})
302+
.clampScalar(0, S32, S32);
303+
getActionDefinitionsBuilder(G_BSWAP).lower();
304+
300305
getActionDefinitionsBuilder(G_TRUNC)
301306
.legalIf([=](const LegalityQuery &Query) {
302307
const LLT &SrcTy = Query.Types[1];

llvm/test/CodeGen/AIE/GlobalISel/bitreverse.ll

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
; (c) Copyright 2026 Advanced Micro Devices, Inc. or its affiliates
88
;
99
; RUN: llc -O2 -mtriple=aie2p %s -o - | FileCheck %s --check-prefix=AIE2P
10+
; RUN: llc -O2 -mtriple=aie2ps %s -o - | FileCheck %s --check-prefix=AIE2PS
1011

1112
declare i10 @llvm.bitreverse.i10(i10)
1213

@@ -44,6 +45,40 @@ define i10 @test_bitreverse_i10(i10 %a) {
4445
; AIE2P-NEXT: mova r2, #-22; lshl r1, r3, r1 // Delay Slot 3
4546
; AIE2P-NEXT: lshl r0, r0, r2 // Delay Slot 2
4647
; AIE2P-NEXT: or r0, r1, r0 // Delay Slot 1
48+
;
49+
; AIE2PS-LABEL: test_bitreverse_i10:
50+
; AIE2PS: // %bb.0:
51+
; AIE2PS-NEXT: mova r0, #24; nopb ; nopxm
52+
; AIE2PS-NEXT: mova r2, #-24; lshl r0, r1, r0
53+
; AIE2PS-NEXT: lshl r2, r1, r2
54+
; AIE2PS-NEXT: or r0, r2, r0
55+
; AIE2PS-NEXT: movxm r2, #65280
56+
; AIE2PS-NEXT: mova r4, #8; and r6, r1, r2
57+
; AIE2PS-NEXT: lshl r4, r6, r4
58+
; AIE2PS-NEXT: mova r4, #-8; or r0, r0, r4
59+
; AIE2PS-NEXT: lshl r4, r1, r4
60+
; AIE2PS-NEXT: and r2, r4, r2
61+
; AIE2PS-NEXT: or r0, r0, r2
62+
; AIE2PS-NEXT: movxm r2, #-252645136
63+
; AIE2PS-NEXT: mova r16, #4; and r4, r0, r2
64+
; AIE2PS-NEXT: mova r6, #-4; lshl r0, r0, r16
65+
; AIE2PS-NEXT: lshl r4, r4, r6
66+
; AIE2PS-NEXT: and r0, r0, r2
67+
; AIE2PS-NEXT: movxm r2, #-858993460
68+
; AIE2PS-NEXT: or r0, r4, r0
69+
; AIE2PS-NEXT: mova r16, #2; and r4, r0, r2
70+
; AIE2PS-NEXT: mova r6, #-2; lshl r0, r0, r16
71+
; AIE2PS-NEXT: lshl r4, r4, r6
72+
; AIE2PS-NEXT: and r0, r0, r2
73+
; AIE2PS-NEXT: movxm r2, #-1431655766
74+
; AIE2PS-NEXT: or r0, r4, r0
75+
; AIE2PS-NEXT: and r6, r0, r2
76+
; AIE2PS-NEXT: mova r4, #1; ret lr
77+
; AIE2PS-NEXT: lshl r0, r0, r4 // Delay Slot 5
78+
; AIE2PS-NEXT: mova r2, #-23; and r0, r0, r2 // Delay Slot 4
79+
; AIE2PS-NEXT: mova r4, #-22; lshl r2, r6, r2 // Delay Slot 3
80+
; AIE2PS-NEXT: lshl r0, r0, r4 // Delay Slot 2
81+
; AIE2PS-NEXT: or r0, r2, r0 // Delay Slot 1
4782
%result = call i10 @llvm.bitreverse.i10(i10 %a)
4883
ret i10 %result
4984
}

llvm/test/CodeGen/AIE/GlobalISel/legalize-bitreverse.mir

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#
77
# (c) Copyright 2026 Advanced Micro Devices, Inc. or its affiliates
88
# RUN: llc -mtriple aie2p -run-pass=legalizer %s -verify-machineinstrs -o - | FileCheck %s
9+
# RUN: llc -mtriple aie2ps -run-pass=legalizer %s -verify-machineinstrs -o - | FileCheck %s
910

1011
---
1112
name: test_bitreverse_s10

llvm/test/CodeGen/AIE/GlobalISel/legalize-bitswap.mir

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#
77
# (c) Copyright 2026 Advanced Micro Devices, Inc. or its affiliates
88
# RUN: llc -mtriple aie2p -run-pass=legalizer %s -verify-machineinstrs -o - | FileCheck %s
9+
# RUN: llc -mtriple aie2ps -run-pass=legalizer %s -verify-machineinstrs -o - | FileCheck %s
910

1011

1112
---

0 commit comments

Comments
 (0)