|
7 | 7 | ; (c) Copyright 2026 Advanced Micro Devices, Inc. or its affiliates |
8 | 8 | ; |
9 | 9 | ; 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 |
10 | 11 |
|
11 | 12 | declare i10 @llvm.bitreverse.i10(i10) |
12 | 13 |
|
@@ -44,6 +45,40 @@ define i10 @test_bitreverse_i10(i10 %a) { |
44 | 45 | ; AIE2P-NEXT: mova r2, #-22; lshl r1, r3, r1 // Delay Slot 3 |
45 | 46 | ; AIE2P-NEXT: lshl r0, r0, r2 // Delay Slot 2 |
46 | 47 | ; 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 |
47 | 82 | %result = call i10 @llvm.bitreverse.i10(i10 %a) |
48 | 83 | ret i10 %result |
49 | 84 | } |
0 commit comments