Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / GlobalISel / legalize-zextload-private.mir
blob75e3c630e4a66cfe41edcd5929c23efcdd4e2a8f
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -run-pass=legalizer -o - %s | FileCheck %s
3 # RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=tahiti -run-pass=legalizer -o - %s | FileCheck %s
5 ---
6 name: test_zextload_private_i32_i8
7 body: |
8   bb.0:
9     liveins: $vgpr0
11     ; CHECK-LABEL: name: test_zextload_private_i32_i8
12     ; CHECK: liveins: $vgpr0
13     ; CHECK-NEXT: {{  $}}
14     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p5) = COPY $vgpr0
15     ; CHECK-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p5) :: (load (s8), addrspace 5)
16     ; CHECK-NEXT: $vgpr0 = COPY [[ZEXTLOAD]](s32)
17     %0:_(p5) = COPY $vgpr0
18     %1:_(s32) = G_ZEXTLOAD %0 :: (load (s8), addrspace 5)
19     $vgpr0 = COPY %1
20 ...
21 ---
22 name: test_zextload_private_i32_i16
23 body: |
24   bb.0:
25     liveins: $vgpr0
27     ; CHECK-LABEL: name: test_zextload_private_i32_i16
28     ; CHECK: liveins: $vgpr0
29     ; CHECK-NEXT: {{  $}}
30     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p5) = COPY $vgpr0
31     ; CHECK-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p5) :: (load (s16), addrspace 5)
32     ; CHECK-NEXT: $vgpr0 = COPY [[ZEXTLOAD]](s32)
33     %0:_(p5) = COPY $vgpr0
34     %1:_(s32) = G_ZEXTLOAD %0 :: (load (s16), addrspace 5)
35     $vgpr0 = COPY %1
36 ...
37 ---
38 name: test_zextload_private_i31_i8
39 body: |
40   bb.0:
41     liveins: $vgpr0
43     ; CHECK-LABEL: name: test_zextload_private_i31_i8
44     ; CHECK: liveins: $vgpr0
45     ; CHECK-NEXT: {{  $}}
46     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p5) = COPY $vgpr0
47     ; CHECK-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p5) :: (load (s8), addrspace 5)
48     ; CHECK-NEXT: $vgpr0 = COPY [[ZEXTLOAD]](s32)
49     %0:_(p5) = COPY $vgpr0
50     %1:_(s31) = G_ZEXTLOAD %0 :: (load (s8), addrspace 5)
51     %2:_(s32) = G_ANYEXT %1
52     $vgpr0 = COPY %2
53 ...
54 ---
55 name: test_zextload_private_i64_i8
56 body: |
57   bb.0:
58     liveins: $vgpr0
60     ; CHECK-LABEL: name: test_zextload_private_i64_i8
61     ; CHECK: liveins: $vgpr0
62     ; CHECK-NEXT: {{  $}}
63     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p5) = COPY $vgpr0
64     ; CHECK-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p5) :: (load (s8), addrspace 5)
65     ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[ZEXTLOAD]](s32)
66     ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[ZEXT]](s64)
67     %0:_(p5) = COPY $vgpr0
68     %1:_(s64) = G_ZEXTLOAD %0 :: (load (s8), addrspace 5)
69     $vgpr0_vgpr1 = COPY %1
70 ...
71 ---
72 name: test_zextload_private_i64_i16
73 body: |
74   bb.0:
75     liveins: $vgpr0
77     ; CHECK-LABEL: name: test_zextload_private_i64_i16
78     ; CHECK: liveins: $vgpr0
79     ; CHECK-NEXT: {{  $}}
80     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p5) = COPY $vgpr0
81     ; CHECK-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p5) :: (load (s16), addrspace 5)
82     ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[ZEXTLOAD]](s32)
83     ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[ZEXT]](s64)
84     %0:_(p5) = COPY $vgpr0
85     %1:_(s64) = G_ZEXTLOAD %0 :: (load (s16), addrspace 5)
86     $vgpr0_vgpr1 = COPY %1
87 ...
88 ---
89 name: test_zextload_private_i64_i32
90 body: |
91   bb.0:
92     liveins: $vgpr0_vgpr1
94     ; CHECK-LABEL: name: test_zextload_private_i64_i32
95     ; CHECK: liveins: $vgpr0_vgpr1
96     ; CHECK-NEXT: {{  $}}
97     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p5) = COPY $vgpr0
98     ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p5) :: (load (s32), addrspace 5)
99     ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[LOAD]](s32)
100     ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[ZEXT]](s64)
101     %0:_(p5) = COPY $vgpr0
102     %1:_(s64) = G_ZEXTLOAD %0 :: (load (s32), addrspace 5)
103     $vgpr0_vgpr1 = COPY %1