[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / GlobalISel / inst-select-store-global.s96.mir
blob54774ff512cb627cb24956b1361260ac59c4dc4d
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  -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX7 %s
3 # RUN: llc -march=amdgcn -mcpu=hawaii -mattr=+flat-for-global -run-pass=instruction-select -verify-machineinstrs  -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX7-FLAT %s
4 # RUN: llc -march=amdgcn -mcpu=fiji -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX8 %s
5 # RUN: llc -march=amdgcn -mcpu=gfx900 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX9 %s
6 # RUN: llc -march=amdgcn -mcpu=gfx1010 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX10 %s
7 # RUN: llc -march=amdgcn -mcpu=gfx1100 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX10 %s
9 # 96-bit load/store is only legal for SI, so split the test out.
11 ---
13 name: store_global_v3s32
14 legalized:       true
15 tracksRegLiveness: true
16 regBankSelected: true
18 body: |
19   bb.0:
20     liveins:  $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
22     ; GFX7-LABEL: name: store_global_v3s32
23     ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
24     ; GFX7-NEXT: {{  $}}
25     ; GFX7-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
26     ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vreg_96 = COPY $vgpr2_vgpr3_vgpr4
27     ; GFX7-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0
28     ; GFX7-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sreg_32 = S_MOV_B32 61440
29     ; GFX7-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sreg_64 = REG_SEQUENCE [[S_MOV_B32_]], %subreg.sub0, [[S_MOV_B32_1]], %subreg.sub1
30     ; GFX7-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64 = S_MOV_B64 0
31     ; GFX7-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[S_MOV_B64_]], %subreg.sub0_sub1, [[REG_SEQUENCE]], %subreg.sub2_sub3
32     ; GFX7-NEXT: BUFFER_STORE_DWORDX3_ADDR64 [[COPY1]], [[COPY]], [[REG_SEQUENCE1]], 0, 0, 0, 0, implicit $exec :: (store (<3 x s32>), align 16, addrspace 1)
33     ; GFX7-FLAT-LABEL: name: store_global_v3s32
34     ; GFX7-FLAT: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
35     ; GFX7-FLAT-NEXT: {{  $}}
36     ; GFX7-FLAT-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
37     ; GFX7-FLAT-NEXT: [[COPY1:%[0-9]+]]:vreg_96 = COPY $vgpr2_vgpr3_vgpr4
38     ; GFX7-FLAT-NEXT: FLAT_STORE_DWORDX3 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<3 x s32>), align 16, addrspace 1)
39     ; GFX8-LABEL: name: store_global_v3s32
40     ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
41     ; GFX8-NEXT: {{  $}}
42     ; GFX8-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
43     ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vreg_96 = COPY $vgpr2_vgpr3_vgpr4
44     ; GFX8-NEXT: FLAT_STORE_DWORDX3 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<3 x s32>), align 16, addrspace 1)
45     ; GFX9-LABEL: name: store_global_v3s32
46     ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
47     ; GFX9-NEXT: {{  $}}
48     ; GFX9-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
49     ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vreg_96 = COPY $vgpr2_vgpr3_vgpr4
50     ; GFX9-NEXT: GLOBAL_STORE_DWORDX3 [[COPY]], [[COPY1]], 0, 0, implicit $exec :: (store (<3 x s32>), align 16, addrspace 1)
51     ; GFX10-LABEL: name: store_global_v3s32
52     ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
53     ; GFX10-NEXT: {{  $}}
54     ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
55     ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vreg_96 = COPY $vgpr2_vgpr3_vgpr4
56     ; GFX10-NEXT: GLOBAL_STORE_DWORDX3 [[COPY]], [[COPY1]], 0, 0, implicit $exec :: (store (<3 x s32>), align 16, addrspace 1)
57     %0:vgpr(p1) = COPY $vgpr0_vgpr1
58     %1:vgpr(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr4
59     G_STORE %1, %0 :: (store (<3 x s32>), align 16, addrspace 1)
61 ...
63 ---
65 name: store_global_s96
66 legalized:       true
67 tracksRegLiveness: true
68 regBankSelected: true
70 body: |
71   bb.0:
72     liveins:  $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
74     ; GFX7-LABEL: name: store_global_s96
75     ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
76     ; GFX7-NEXT: {{  $}}
77     ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
78     ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(s96) = COPY $vgpr2_vgpr3_vgpr4
79     ; GFX7-NEXT: G_STORE [[COPY1]](s96), [[COPY]](p1) :: (store (s96), align 16, addrspace 1)
80     ; GFX7-FLAT-LABEL: name: store_global_s96
81     ; GFX7-FLAT: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
82     ; GFX7-FLAT-NEXT: {{  $}}
83     ; GFX7-FLAT-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
84     ; GFX7-FLAT-NEXT: [[COPY1:%[0-9]+]]:vgpr(s96) = COPY $vgpr2_vgpr3_vgpr4
85     ; GFX7-FLAT-NEXT: G_STORE [[COPY1]](s96), [[COPY]](p1) :: (store (s96), align 16, addrspace 1)
86     ; GFX8-LABEL: name: store_global_s96
87     ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
88     ; GFX8-NEXT: {{  $}}
89     ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
90     ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(s96) = COPY $vgpr2_vgpr3_vgpr4
91     ; GFX8-NEXT: G_STORE [[COPY1]](s96), [[COPY]](p1) :: (store (s96), align 16, addrspace 1)
92     ; GFX9-LABEL: name: store_global_s96
93     ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
94     ; GFX9-NEXT: {{  $}}
95     ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
96     ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr(s96) = COPY $vgpr2_vgpr3_vgpr4
97     ; GFX9-NEXT: G_STORE [[COPY1]](s96), [[COPY]](p1) :: (store (s96), align 16, addrspace 1)
98     ; GFX10-LABEL: name: store_global_s96
99     ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
100     ; GFX10-NEXT: {{  $}}
101     ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
102     ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr(s96) = COPY $vgpr2_vgpr3_vgpr4
103     ; GFX10-NEXT: G_STORE [[COPY1]](s96), [[COPY]](p1) :: (store (s96), align 16, addrspace 1)
104     %0:vgpr(p1) = COPY $vgpr0_vgpr1
105     %1:vgpr(s96) = COPY $vgpr2_vgpr3_vgpr4
106     G_STORE %1, %0 :: (store (s96), align 16, addrspace 1)
112 name: store_global_v6s16
113 legalized:       true
114 tracksRegLiveness: true
115 regBankSelected: true
117 body: |
118   bb.0:
119     liveins:  $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
121     ; GFX7-LABEL: name: store_global_v6s16
122     ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
123     ; GFX7-NEXT: {{  $}}
124     ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
125     ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(<6 x s16>) = COPY $vgpr2_vgpr3_vgpr4
126     ; GFX7-NEXT: G_STORE [[COPY1]](<6 x s16>), [[COPY]](p1) :: (store (<6 x s16>), align 16, addrspace 1)
127     ; GFX7-FLAT-LABEL: name: store_global_v6s16
128     ; GFX7-FLAT: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
129     ; GFX7-FLAT-NEXT: {{  $}}
130     ; GFX7-FLAT-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
131     ; GFX7-FLAT-NEXT: [[COPY1:%[0-9]+]]:vgpr(<6 x s16>) = COPY $vgpr2_vgpr3_vgpr4
132     ; GFX7-FLAT-NEXT: G_STORE [[COPY1]](<6 x s16>), [[COPY]](p1) :: (store (<6 x s16>), align 16, addrspace 1)
133     ; GFX8-LABEL: name: store_global_v6s16
134     ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
135     ; GFX8-NEXT: {{  $}}
136     ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
137     ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(<6 x s16>) = COPY $vgpr2_vgpr3_vgpr4
138     ; GFX8-NEXT: G_STORE [[COPY1]](<6 x s16>), [[COPY]](p1) :: (store (<6 x s16>), align 16, addrspace 1)
139     ; GFX9-LABEL: name: store_global_v6s16
140     ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
141     ; GFX9-NEXT: {{  $}}
142     ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
143     ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr(<6 x s16>) = COPY $vgpr2_vgpr3_vgpr4
144     ; GFX9-NEXT: G_STORE [[COPY1]](<6 x s16>), [[COPY]](p1) :: (store (<6 x s16>), align 16, addrspace 1)
145     ; GFX10-LABEL: name: store_global_v6s16
146     ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
147     ; GFX10-NEXT: {{  $}}
148     ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
149     ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr(<6 x s16>) = COPY $vgpr2_vgpr3_vgpr4
150     ; GFX10-NEXT: G_STORE [[COPY1]](<6 x s16>), [[COPY]](p1) :: (store (<6 x s16>), align 16, addrspace 1)
151     %0:vgpr(p1) = COPY $vgpr0_vgpr1
152     %1:vgpr(<6 x s16>) = COPY $vgpr2_vgpr3_vgpr4
153     G_STORE %1, %0 :: (store (<6 x s16>), align 16, addrspace 1)