|
2 | 2 | # RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=hawaii -O0 -run-pass=legalizer %s -o - | FileCheck -check-prefix=GFX7 %s
|
3 | 3 | # RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -O0 -run-pass=legalizer %s -o - | FileCheck -check-prefix=GFX8 %s
|
4 | 4 |
|
5 |
| ---- |
6 |
| -name: bswap_s8 |
7 |
| - |
8 |
| -body: | |
9 |
| - bb.0: |
10 |
| - liveins: $vgpr0 |
11 |
| - ; GFX7-LABEL: name: bswap_s8 |
12 |
| - ; GFX7: liveins: $vgpr0 |
13 |
| - ; GFX7-NEXT: {{ $}} |
14 |
| - ; GFX7-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 |
15 |
| - ; GFX7-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 |
16 |
| - ; GFX7-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 255 |
17 |
| - ; GFX7-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY [[C]](s32) |
18 |
| - ; GFX7-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[COPY1]](s32) |
19 |
| - ; GFX7-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[C]](s32) |
20 |
| - ; GFX7-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]] |
21 |
| - ; GFX7-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[AND]], [[COPY2]](s32) |
22 |
| - ; GFX7-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[LSHR]], [[SHL]] |
23 |
| - ; GFX7-NEXT: $vgpr0 = COPY [[OR]](s32) |
24 |
| - ; GFX8-LABEL: name: bswap_s8 |
25 |
| - ; GFX8: liveins: $vgpr0 |
26 |
| - ; GFX8-NEXT: {{ $}} |
27 |
| - ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 |
28 |
| - ; GFX8-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32) |
29 |
| - ; GFX8-NEXT: [[BSWAP:%[0-9]+]]:_(s16) = G_BSWAP [[TRUNC]] |
30 |
| - ; GFX8-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 8 |
31 |
| - ; GFX8-NEXT: [[LSHR:%[0-9]+]]:_(s16) = G_LSHR [[BSWAP]], [[C]](s16) |
32 |
| - ; GFX8-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR]](s16) |
33 |
| - ; GFX8-NEXT: $vgpr0 = COPY [[ANYEXT]](s32) |
34 |
| - %0:_(s32) = COPY $vgpr0 |
35 |
| - %1:_(s8) = G_TRUNC %0 |
36 |
| - %2:_(s8) = G_BSWAP %1 |
37 |
| - %3:_(s32) = G_ANYEXT %2 |
38 |
| - $vgpr0 = COPY %3 |
39 |
| -... |
40 |
| - |
41 | 5 | ---
|
42 | 6 | name: bswap_s16
|
43 | 7 |
|
@@ -74,40 +38,6 @@ body: |
|
74 | 38 | $vgpr0 = COPY %3
|
75 | 39 | ...
|
76 | 40 |
|
77 |
| ---- |
78 |
| -name: bswap_s24 |
79 |
| - |
80 |
| -body: | |
81 |
| - bb.0: |
82 |
| - liveins: $vgpr0 |
83 |
| - ; GFX7-LABEL: name: bswap_s24 |
84 |
| - ; GFX7: liveins: $vgpr0 |
85 |
| - ; GFX7-NEXT: {{ $}} |
86 |
| - ; GFX7-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 |
87 |
| - ; GFX7-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 |
88 |
| - ; GFX7-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16777215 |
89 |
| - ; GFX7-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY [[C]](s32) |
90 |
| - ; GFX7-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[COPY1]](s32) |
91 |
| - ; GFX7-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[C]](s32) |
92 |
| - ; GFX7-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]] |
93 |
| - ; GFX7-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[AND]], [[COPY2]](s32) |
94 |
| - ; GFX7-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[LSHR]], [[SHL]] |
95 |
| - ; GFX7-NEXT: $vgpr0 = COPY [[OR]](s32) |
96 |
| - ; GFX8-LABEL: name: bswap_s24 |
97 |
| - ; GFX8: liveins: $vgpr0 |
98 |
| - ; GFX8-NEXT: {{ $}} |
99 |
| - ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 |
100 |
| - ; GFX8-NEXT: [[BSWAP:%[0-9]+]]:_(s32) = G_BSWAP [[COPY]] |
101 |
| - ; GFX8-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 |
102 |
| - ; GFX8-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BSWAP]], [[C]](s32) |
103 |
| - ; GFX8-NEXT: $vgpr0 = COPY [[LSHR]](s32) |
104 |
| - %0:_(s32) = COPY $vgpr0 |
105 |
| - %1:_(s24) = G_TRUNC %0 |
106 |
| - %2:_(s24) = G_BSWAP %1 |
107 |
| - %3:_(s32) = G_ANYEXT %2 |
108 |
| - $vgpr0 = COPY %3 |
109 |
| -... |
110 |
| - |
111 | 41 | ---
|
112 | 42 | name: bswap_s32
|
113 | 43 |
|
@@ -438,3 +368,39 @@ body: |
|
438 | 368 | %1:_(<2 x s64>) = G_BSWAP %0
|
439 | 369 | $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1
|
440 | 370 | ...
|
| 371 | + |
| 372 | +--- |
| 373 | +name: bswap_s48 |
| 374 | + |
| 375 | +body: | |
| 376 | + bb.0: |
| 377 | + liveins: $vgpr0_vgpr1 |
| 378 | + ; GFX7-LABEL: name: bswap_s48 |
| 379 | + ; GFX7: liveins: $vgpr0_vgpr1 |
| 380 | + ; GFX7-NEXT: {{ $}} |
| 381 | + ; GFX7-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 |
| 382 | + ; GFX7-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64) |
| 383 | + ; GFX7-NEXT: [[BSWAP:%[0-9]+]]:_(s32) = G_BSWAP [[UV1]] |
| 384 | + ; GFX7-NEXT: [[BSWAP1:%[0-9]+]]:_(s32) = G_BSWAP [[UV]] |
| 385 | + ; GFX7-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[BSWAP]](s32), [[BSWAP1]](s32) |
| 386 | + ; GFX7-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 |
| 387 | + ; GFX7-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[MV]], [[C]](s32) |
| 388 | + ; GFX7-NEXT: $vgpr0_vgpr1 = COPY [[LSHR]](s64) |
| 389 | + ; |
| 390 | + ; GFX8-LABEL: name: bswap_s48 |
| 391 | + ; GFX8: liveins: $vgpr0_vgpr1 |
| 392 | + ; GFX8-NEXT: {{ $}} |
| 393 | + ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 |
| 394 | + ; GFX8-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64) |
| 395 | + ; GFX8-NEXT: [[BSWAP:%[0-9]+]]:_(s32) = G_BSWAP [[UV1]] |
| 396 | + ; GFX8-NEXT: [[BSWAP1:%[0-9]+]]:_(s32) = G_BSWAP [[UV]] |
| 397 | + ; GFX8-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[BSWAP]](s32), [[BSWAP1]](s32) |
| 398 | + ; GFX8-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 |
| 399 | + ; GFX8-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[MV]], [[C]](s32) |
| 400 | + ; GFX8-NEXT: $vgpr0_vgpr1 = COPY [[LSHR]](s64) |
| 401 | + %0:_(s64) = COPY $vgpr0_vgpr1 |
| 402 | + %1:_(s48) = G_TRUNC %0 |
| 403 | + %2:_(s48) = G_BSWAP %1 |
| 404 | + %3:_(s64) = G_ANYEXT %2 |
| 405 | + $vgpr0_vgpr1 = COPY %3 |
| 406 | +... |
0 commit comments