[llvm] r353848 - AMDGPU/GlobalISel: Add more insert/extract testcases
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Tue Feb 12 07:04:03 PST 2019
Author: arsenm
Date: Tue Feb 12 07:04:03 2019
New Revision: 353848
URL: http://llvm.org/viewvc/llvm-project?rev=353848&view=rev
Log:
AMDGPU/GlobalISel: Add more insert/extract testcases
Modified:
llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/legalize-extract.mir
llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/legalize-insert.mir
Modified: llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/legalize-extract.mir
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/legalize-extract.mir?rev=353848&r1=353847&r2=353848&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/legalize-extract.mir (original)
+++ llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/legalize-extract.mir Tue Feb 12 07:04:03 2019
@@ -2,112 +2,393 @@
# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -run-pass=legalizer -global-isel-abort=0 %s -o - | FileCheck %s
---
-name: test_extract_lo32_i64
+name: test_extract_s32_s64_offset0
body: |
- bb.0.entry:
+ bb.0:
liveins: $vgpr0_vgpr1
- ; CHECK-LABEL: name: test_extract_lo32_i64
+ ; CHECK-LABEL: name: test_extract_s32_s64_offset0
; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
; CHECK: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY]](s64), 0
- ; CHECK: S_ENDPGM implicit [[EXTRACT]](s32)
+ ; CHECK: $vgpr0 = COPY [[EXTRACT]](s32)
%0:_(s64) = COPY $vgpr0_vgpr1
%1:_(s32) = G_EXTRACT %0, 0
- S_ENDPGM implicit %1
+ $vgpr0 = COPY %1
...
---
-name: test_extract_hi32_i64
+name: test_extract_s32_s64_offset32
body: |
- bb.0.entry:
+ bb.0:
liveins: $vgpr0_vgpr1
- ; CHECK-LABEL: name: test_extract_hi32_i64
+ ; CHECK-LABEL: name: test_extract_s32_s64_offset32
; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
; CHECK: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY]](s64), 32
- ; CHECK: S_ENDPGM implicit [[EXTRACT]](s32)
+ ; CHECK: $vgpr0 = COPY [[EXTRACT]](s32)
%0:_(s64) = COPY $vgpr0_vgpr1
%1:_(s32) = G_EXTRACT %0, 32
- S_ENDPGM implicit %1
+ $vgpr0 = COPY %1
...
-
---
-name: test_extract_dword0_i128
+name: test_extract_s32_s96_offset0
body: |
- bb.0.entry:
- liveins: $vgpr0_vgpr1
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2
- ; CHECK-LABEL: name: test_extract_dword0_i128
- ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
- ; CHECK: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY]](s64), 0
- ; CHECK: S_ENDPGM implicit [[EXTRACT]](s32)
- %0:_(s64) = COPY $vgpr0_vgpr1
+ ; CHECK-LABEL: name: test_extract_s32_s96_offset0
+ ; CHECK: [[COPY:%[0-9]+]]:_(s96) = COPY $vgpr0_vgpr1_vgpr2
+ ; CHECK: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY]](s96), 0
+ ; CHECK: $vgpr0 = COPY [[EXTRACT]](s32)
+ %0:_(s96) = COPY $vgpr0_vgpr1_vgpr2
%1:_(s32) = G_EXTRACT %0, 0
- S_ENDPGM implicit %1
+ $vgpr0 = COPY %1
+...
+---
+name: test_extract_s32_s96_offset32
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2
+
+ ; CHECK-LABEL: name: test_extract_s32_s96_offset32
+ ; CHECK: [[COPY:%[0-9]+]]:_(s96) = COPY $vgpr0_vgpr1_vgpr2
+ ; CHECK: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY]](s96), 32
+ ; CHECK: $vgpr0 = COPY [[EXTRACT]](s32)
+ %0:_(s96) = COPY $vgpr0_vgpr1_vgpr2
+ %1:_(s32) = G_EXTRACT %0, 32
+ $vgpr0 = COPY %1
+...
+---
+name: test_extract_s32_s96_offset64
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2
+
+ ; CHECK-LABEL: name: test_extract_s32_s96_offset64
+ ; CHECK: [[COPY:%[0-9]+]]:_(s96) = COPY $vgpr0_vgpr1_vgpr2
+ ; CHECK: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY]](s96), 64
+ ; CHECK: $vgpr0 = COPY [[EXTRACT]](s32)
+ %0:_(s96) = COPY $vgpr0_vgpr1_vgpr2
+ %1:_(s32) = G_EXTRACT %0, 64
+ $vgpr0 = COPY %1
...
+---
+name: test_extract_s32_s128_offset0
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK-LABEL: name: test_extract_s32_s128_offset0
+ ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY]](s128), 0
+ ; CHECK: $vgpr0 = COPY [[EXTRACT]](s32)
+ %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(s32) = G_EXTRACT %0, 0
+ $vgpr0 = COPY %1
+...
---
-name: test_extract_dword1_i128
+name: test_extract_s32_s128_offset32
body: |
- bb.0.entry:
+ bb.0:
liveins: $vgpr0_vgpr1_vgpr2_vgpr3
- ; CHECK-LABEL: name: test_extract_dword1_i128
+ ; CHECK-LABEL: name: test_extract_s32_s128_offset32
; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
; CHECK: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY]](s128), 32
- ; CHECK: S_ENDPGM implicit [[EXTRACT]](s32)
+ ; CHECK: $vgpr0 = COPY [[EXTRACT]](s32)
%0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
%1:_(s32) = G_EXTRACT %0, 32
- S_ENDPGM implicit %1
+ $vgpr0 = COPY %1
...
-
---
-name: test_extract_dword2_i128
+name: test_extract_s32_s128_offset64
body: |
- bb.0.entry:
+ bb.0:
liveins: $vgpr0_vgpr1_vgpr2_vgpr3
- ; CHECK-LABEL: name: test_extract_dword2_i128
+ ; CHECK-LABEL: name: test_extract_s32_s128_offset64
; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
; CHECK: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY]](s128), 64
- ; CHECK: S_ENDPGM implicit [[EXTRACT]](s32)
+ ; CHECK: $vgpr0 = COPY [[EXTRACT]](s32)
%0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
%1:_(s32) = G_EXTRACT %0, 64
- S_ENDPGM implicit %1
+ $vgpr0 = COPY %1
...
-
---
-name: test_extract_dword3_i128
+name: test_extract_s32_s128_offset96
body: |
- bb.0.entry:
+ bb.0:
liveins: $vgpr0_vgpr1_vgpr2_vgpr3
- ; CHECK-LABEL: name: test_extract_dword3_i128
+ ; CHECK-LABEL: name: test_extract_s32_s128_offset96
; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
; CHECK: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY]](s128), 96
- ; CHECK: S_ENDPGM implicit [[EXTRACT]](s32)
+ ; CHECK: $vgpr0 = COPY [[EXTRACT]](s32)
%0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
%1:_(s32) = G_EXTRACT %0, 96
- S_ENDPGM implicit %1
+ $vgpr0 = COPY %1
...
+
---
-name: test_extract_dword2_i96
+name: test_extract_s32_v2s32_offset0
body: |
- bb.0.entry:
+ bb.0:
+ liveins: $vgpr0_vgpr1
+
+ ; CHECK-LABEL: name: test_extract_s32_v2s32_offset0
+ ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1
+ ; CHECK: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY]](<2 x s32>), 0
+ ; CHECK: $vgpr0 = COPY [[EXTRACT]](s32)
+ %0:_(<2 x s32>) = COPY $vgpr0_vgpr1
+ %1:_(s32) = G_EXTRACT %0, 0
+ $vgpr0 = COPY %1
+...
+---
+name: test_extract_s32_v2s32_offset32
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1
+
+ ; CHECK-LABEL: name: test_extract_s32_v2s32_offset32
+ ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1
+ ; CHECK: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY]](<2 x s32>), 32
+ ; CHECK: $vgpr0 = COPY [[EXTRACT]](s32)
+ %0:_(<2 x s32>) = COPY $vgpr0_vgpr1
+ %1:_(s32) = G_EXTRACT %0, 32
+ $vgpr0 = COPY %1
+...
+---
+name: test_extract_s32_v3s32_offset0
+body: |
+ bb.0:
liveins: $vgpr0_vgpr1_vgpr2
- ; CHECK-LABEL: name: test_extract_dword2_i96
- ; CHECK: [[COPY:%[0-9]+]]:_(s96) = COPY $vgpr0_vgpr1_vgpr2
- ; CHECK: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY]](s96), 64
- ; CHECK: S_ENDPGM implicit [[EXTRACT]](s32)
- %0:_(s96) = COPY $vgpr0_vgpr1_vgpr2
+ ; CHECK-LABEL: name: test_extract_s32_v3s32_offset0
+ ; CHECK: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2
+ ; CHECK: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY]](<3 x s32>), 0
+ ; CHECK: $vgpr0 = COPY [[EXTRACT]](s32)
+ %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2
+ %1:_(s32) = G_EXTRACT %0, 0
+ $vgpr0 = COPY %1
+...
+---
+name: test_extract_s32_v3s32_offset32
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2
+
+ ; CHECK-LABEL: name: test_extract_s32_v3s32_offset32
+ ; CHECK: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2
+ ; CHECK: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY]](<3 x s32>), 32
+ ; CHECK: $vgpr0 = COPY [[EXTRACT]](s32)
+ %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2
+ %1:_(s32) = G_EXTRACT %0, 32
+ $vgpr0 = COPY %1
+...
+---
+name: test_extract_s32_v3s32_offset64
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2
+
+ ; CHECK-LABEL: name: test_extract_s32_v3s32_offset64
+ ; CHECK: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2
+ ; CHECK: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY]](<3 x s32>), 64
+ ; CHECK: $vgpr0 = COPY [[EXTRACT]](s32)
+ %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2
%1:_(s32) = G_EXTRACT %0, 64
- S_ENDPGM implicit %1
+ $vgpr0 = COPY %1
...
+---
+name: test_extract_s32_v4s32_offset0
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK-LABEL: name: test_extract_s32_v4s32_offset0
+ ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY]](<4 x s32>), 0
+ ; CHECK: $vgpr0 = COPY [[EXTRACT]](s32)
+ %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(s32) = G_EXTRACT %0, 0
+ $vgpr0 = COPY %1
+...
---
-name: extract_s8_v4s8_offset0
-legalized: true
+name: test_extract_s32_v4s32_offset32
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK-LABEL: name: test_extract_s32_v4s32_offset32
+ ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY]](s128), 32
+ ; CHECK: $vgpr0 = COPY [[EXTRACT]](s32)
+ %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(s32) = G_EXTRACT %0, 32
+ $vgpr0 = COPY %1
+...
+---
+name: test_extract_s32_v4s32_offset64
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3
+
+ ; CHECK-LABEL: name: test_extract_s32_v4s32_offset64
+ ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY]](s128), 64
+ ; CHECK: $vgpr0 = COPY [[EXTRACT]](s32)
+ %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(s32) = G_EXTRACT %0, 64
+ $vgpr0 = COPY %1
+...
+---
+name: test_extract_s32_v4s32_offset96
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3
+
+ ; CHECK-LABEL: name: test_extract_s32_v4s32_offset96
+ ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY]](s128), 96
+ ; CHECK: $vgpr0 = COPY [[EXTRACT]](s32)
+ %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(s32) = G_EXTRACT %0, 96
+ $vgpr0 = COPY %1
+...
+---
+name: test_extract_v2s32_v4s32_offset0
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3
+
+ ; CHECK-LABEL: name: test_extract_v2s32_v4s32_offset0
+ ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[EXTRACT:%[0-9]+]]:_(<2 x s32>) = G_EXTRACT [[COPY]](<4 x s32>), 0
+ ; CHECK: $vgpr0_vgpr1 = COPY [[EXTRACT]](<2 x s32>)
+ %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(<2 x s32>) = G_EXTRACT %0, 0
+ $vgpr0_vgpr1 = COPY %1
+...
+
+---
+name: test_extract_v2s32_v4s32_offset32
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3
+
+ ; CHECK-LABEL: name: test_extract_v2s32_v4s32_offset32
+ ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[EXTRACT:%[0-9]+]]:_(<2 x s32>) = G_EXTRACT [[COPY]](<4 x s32>), 32
+ ; CHECK: $vgpr0_vgpr1 = COPY [[EXTRACT]](<2 x s32>)
+ %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(<2 x s32>) = G_EXTRACT %0, 32
+ $vgpr0_vgpr1 = COPY %1
+...
+
+---
+name: test_extract_v2s32_v4s32_offset64
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3
+
+ ; CHECK-LABEL: name: test_extract_v2s32_v4s32_offset64
+ ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[EXTRACT:%[0-9]+]]:_(<2 x s32>) = G_EXTRACT [[COPY]](<4 x s32>), 64
+ ; CHECK: $vgpr0_vgpr1 = COPY [[EXTRACT]](<2 x s32>)
+ %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(<2 x s32>) = G_EXTRACT %0, 64
+ $vgpr0_vgpr1 = COPY %1
+...
+---
+name: test_extract_s64_v4s32_offset0
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3
+
+ ; CHECK-LABEL: name: test_extract_s64_v4s32_offset0
+ ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[EXTRACT:%[0-9]+]]:_(s64) = G_EXTRACT [[COPY]](<4 x s32>), 0
+ ; CHECK: $vgpr0_vgpr1 = COPY [[EXTRACT]](s64)
+ %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(s64) = G_EXTRACT %0, 0
+ $vgpr0_vgpr1 = COPY %1
+...
+
+---
+name: test_extract_s64_v4s32_offset32
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3
+
+ ; CHECK-LABEL: name: test_extract_s64_v4s32_offset32
+ ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[EXTRACT:%[0-9]+]]:_(s64) = G_EXTRACT [[COPY]](<4 x s32>), 32
+ ; CHECK: $vgpr0_vgpr1 = COPY [[EXTRACT]](s64)
+ %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(s64) = G_EXTRACT %0, 32
+ $vgpr0_vgpr1 = COPY %1
+...
+
+---
+name: test_extract_s64_v4s32_offset64
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3
+
+ ; CHECK-LABEL: name: test_extract_s64_v4s32_offset64
+ ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[EXTRACT:%[0-9]+]]:_(s64) = G_EXTRACT [[COPY]](<4 x s32>), 64
+ ; CHECK: $vgpr0_vgpr1 = COPY [[EXTRACT]](s64)
+ %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(s64) = G_EXTRACT %0, 64
+ $vgpr0_vgpr1 = COPY %1
+...
+---
+name: test_extract_p0_v4s32_offset0
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3
+
+ ; CHECK-LABEL: name: test_extract_p0_v4s32_offset0
+ ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[EXTRACT:%[0-9]+]]:_(p0) = G_EXTRACT [[COPY]](<4 x s32>), 0
+ ; CHECK: $vgpr0_vgpr1 = COPY [[EXTRACT]](p0)
+ %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(p0) = G_EXTRACT %0, 0
+ $vgpr0_vgpr1 = COPY %1
+...
+
+---
+name: test_extract_p0_v4s32_offset32
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3
+
+ ; CHECK-LABEL: name: test_extract_p0_v4s32_offset32
+ ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[EXTRACT:%[0-9]+]]:_(p0) = G_EXTRACT [[COPY]](<4 x s32>), 32
+ ; CHECK: $vgpr0_vgpr1 = COPY [[EXTRACT]](p0)
+ %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(p0) = G_EXTRACT %0, 32
+ $vgpr0_vgpr1 = COPY %1
+...
+
+---
+name: test_extract_p0_v4s32_offset64
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3
+
+ ; CHECK-LABEL: name: test_extract_p0_v4s32_offset64
+ ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[EXTRACT:%[0-9]+]]:_(p0) = G_EXTRACT [[COPY]](<4 x s32>), 64
+ ; CHECK: $vgpr0_vgpr1 = COPY [[EXTRACT]](p0)
+ %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(p0) = G_EXTRACT %0, 64
+ $vgpr0_vgpr1 = COPY %1
+...
+
+---
+name: extract_s8_v4s8_offset0
body: |
bb.0:
; CHECK-LABEL: name: extract_s8_v4s8_offset0
@@ -126,8 +407,6 @@ body: |
---
name: extract_s8_v4s8_offset8
-legalized: true
-
body: |
bb.0:
; CHECK-LABEL: name: extract_s8_v4s8_offset8
@@ -146,8 +425,6 @@ body: |
---
name: extract_s8_v4s8_offset16
-legalized: true
-
body: |
bb.0:
; CHECK-LABEL: name: extract_s8_v4s8_offset16
@@ -166,8 +443,6 @@ body: |
---
name: extract_s8_v4s8_offset24
-legalized: true
-
body: |
bb.0:
; CHECK-LABEL: name: extract_s8_v4s8_offset24
@@ -186,8 +461,6 @@ body: |
---
name: extract_s8_v3s8_offset16
-legalized: true
-
body: |
bb.0:
; CHECK-LABEL: name: extract_s8_v3s8_offset16
@@ -207,8 +480,6 @@ body: |
---
name: extract_s8_v5s1_offset4
-legalized: true
-
body: |
bb.0:
; CHECK-LABEL: name: extract_s8_v5s1_offset4
@@ -228,8 +499,6 @@ body: |
---
name: extract_v2s16_v4s16_offset32
-legalized: true
-
body: |
bb.0:
; CHECK-LABEL: name: extract_v2s16_v4s16_offset32
@@ -243,8 +512,6 @@ body: |
---
name: extract_v2s16_v6s16_offset32
-legalized: true
-
body: |
bb.0:
; CHECK-LABEL: name: extract_v2s16_v6s16_offset32
Modified: llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/legalize-insert.mir
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/legalize-insert.mir?rev=353848&r1=353847&r2=353848&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/legalize-insert.mir (original)
+++ llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/legalize-insert.mir Tue Feb 12 07:04:03 2019
@@ -1,123 +1,659 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=amdgcn-mesa-mesa3d -run-pass=legalizer %s -o - | FileCheck %s
---
-name: test_insert_lo32_i64
+name: test_insert_s64_s32_offset0
body: |
- bb.0.entry:
+ bb.0:
liveins: $vgpr0_vgpr1, $vgpr2
- ; CHECK-LABEL: name: test_insert_lo32_i64
- ; CHECK: %2:_(s64) = G_INSERT %0, %1(s32), 0
+ ; CHECK-LABEL: name: test_insert_s64_s32_offset0
+ ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
+ ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2
+ ; CHECK: [[INSERT:%[0-9]+]]:_(s64) = G_INSERT [[COPY]], [[COPY1]](s32), 0
+ ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](s64)
%0:_(s64) = COPY $vgpr0_vgpr1
%1:_(s32) = COPY $vgpr2
%2:_(s64) = G_INSERT %0, %1, 0
- S_ENDPGM implicit %2
+ $vgpr0_vgpr1 = COPY %2
...
---
-name: test_insert_hi32_i64
+name: test_insert_s64_s32_offset32
body: |
- bb.0.entry:
+ bb.0:
liveins: $vgpr0_vgpr1, $vgpr2
- ; CHECK-LABEL: name: test_insert_hi32_i64
- ; CHECK: %2:_(s64) = G_INSERT %0, %1(s32), 32
+ ; CHECK-LABEL: name: test_insert_s64_s32_offset32
+ ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
+ ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2
+ ; CHECK: [[INSERT:%[0-9]+]]:_(s64) = G_INSERT [[COPY]], [[COPY1]](s32), 32
+ ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](s64)
%0:_(s64) = COPY $vgpr0_vgpr1
%1:_(s32) = COPY $vgpr2
%2:_(s64) = G_INSERT %0, %1, 32
- S_ENDPGM implicit %2
+ $vgpr0_vgpr1 = COPY %2
...
+---
+name: test_insert_s96_s32_offset0
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2, $vgpr3
+
+ ; CHECK-LABEL: name: test_insert_s96_s32_offset0
+ ; CHECK: [[COPY:%[0-9]+]]:_(s96) = COPY $vgpr0_vgpr1_vgpr2
+ ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr3
+ ; CHECK: [[INSERT:%[0-9]+]]:_(s96) = G_INSERT [[COPY]], [[COPY1]](s32), 0
+ ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[INSERT]](s96)
+ %0:_(s96) = COPY $vgpr0_vgpr1_vgpr2
+ %1:_(s32) = COPY $vgpr3
+ %2:_(s96) = G_INSERT %0, %1, 0
+ $vgpr0_vgpr1_vgpr2 = COPY %2
+...
+---
+name: test_insert_s96_s32_offset32
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2, $vgpr3
+ ; CHECK-LABEL: name: test_insert_s96_s32_offset32
+ ; CHECK: [[COPY:%[0-9]+]]:_(s96) = COPY $vgpr0_vgpr1_vgpr2
+ ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr3
+ ; CHECK: [[INSERT:%[0-9]+]]:_(s96) = G_INSERT [[COPY]], [[COPY1]](s32), 32
+ ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[INSERT]](s96)
+ %0:_(s96) = COPY $vgpr0_vgpr1_vgpr2
+ %1:_(s32) = COPY $vgpr3
+ %2:_(s96) = G_INSERT %0, %1, 32
+ $vgpr0_vgpr1_vgpr2 = COPY %2
+...
+---
+name: test_insert_s96_s32_offset64
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2, $vgpr3
+
+ ; CHECK-LABEL: name: test_insert_s96_s32_offset64
+ ; CHECK: [[COPY:%[0-9]+]]:_(s96) = COPY $vgpr0_vgpr1_vgpr2
+ ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr3
+ ; CHECK: [[INSERT:%[0-9]+]]:_(s96) = G_INSERT [[COPY]], [[COPY1]](s32), 64
+ ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[INSERT]](s96)
+ %0:_(s96) = COPY $vgpr0_vgpr1_vgpr2
+ %1:_(s32) = COPY $vgpr3
+ %2:_(s96) = G_INSERT %0, %1, 64
+ $vgpr0_vgpr1_vgpr2 = COPY %2
+...
---
-name: test_insert_dword0_i128
+name: test_insert_s128_s32_offset0
body: |
- bb.0.entry:
+ bb.0:
liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4
- ; CHECK-LABEL: name: test_insert_dword0_i128
- ; CHECK: %2:_(s128) = G_INSERT %0, %1(s32), 0
+ ; CHECK-LABEL: name: test_insert_s128_s32_offset0
+ ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4
+ ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s32), 0
+ ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)
%0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
%1:_(s32) = COPY $vgpr4
%2:_(s128) = G_INSERT %0, %1, 0
- S_ENDPGM implicit %2
+ $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
...
-
---
-name: test_insert_dword1_i128
+name: test_insert_s128_s32_offset32
body: |
- bb.0.entry:
+ bb.0:
liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4
- ; CHECK-LABEL: name: test_insert_dword1_i128
- ; CHECK: %2:_(s128) = G_INSERT %0, %1(s32), 32
+ ; CHECK-LABEL: name: test_insert_s128_s32_offset32
+ ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4
+ ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s32), 32
+ ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)
%0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
%1:_(s32) = COPY $vgpr4
%2:_(s128) = G_INSERT %0, %1, 32
- S_ENDPGM implicit %2
+ $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
...
-
---
-name: test_insert_dword2_i128
+name: test_insert_s128_s32_offset64
body: |
- bb.0.entry:
+ bb.0:
liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4
- ; CHECK-LABEL: name: test_insert_dword2_i128
- ; CHECK: %2:_(s128) = G_INSERT %0, %1(s32), 64
+ ; CHECK-LABEL: name: test_insert_s128_s32_offset64
+ ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4
+ ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s32), 64
+ ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)
%0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
%1:_(s32) = COPY $vgpr4
%2:_(s128) = G_INSERT %0, %1, 64
- S_ENDPGM implicit %2
+ $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
...
-
---
-name: test_insert_dword3_i128
+name: test_insert_s128_s32_offset96
body: |
- bb.0.entry:
+ bb.0:
liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4
- ; CHECK-LABEL: name: test_insert_dword3_i128
- ; CHECK: %2:_(s128) = G_INSERT %0, %1(s32), 96
+ ; CHECK-LABEL: name: test_insert_s128_s32_offset96
+ ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4
+ ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s32), 96
+ ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)
%0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
%1:_(s32) = COPY $vgpr4
%2:_(s128) = G_INSERT %0, %1, 96
- S_ENDPGM implicit %2
+ $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
+...
+---
+name: test_insert_s128_s64_offset0
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5
+
+ ; CHECK-LABEL: name: test_insert_s128_s64_offset0
+ ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
+ ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s64), 0
+ ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)
+ %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(s64) = COPY $vgpr4_vgpr5
+ %2:_(s128) = G_INSERT %0, %1, 0
+ $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
+...
+---
+name: test_insert_s128_s64_offset32
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5
+
+ ; CHECK-LABEL: name: test_insert_s128_s64_offset32
+ ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
+ ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s64), 32
+ ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)
+ %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(s64) = COPY $vgpr4_vgpr5
+ %2:_(s128) = G_INSERT %0, %1, 32
+ $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
+...
+---
+name: test_insert_s128_s64_offset64
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5
+
+ ; CHECK-LABEL: name: test_insert_s128_s64_offset64
+ ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
+ ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s64), 64
+ ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)
+ %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(s64) = COPY $vgpr4_vgpr5
+ %2:_(s128) = G_INSERT %0, %1, 64
+ $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
+...
+---
+name: test_insert_s128_s96_offset0
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6
+
+ ; CHECK-LABEL: name: test_insert_s128_s96_offset0
+ ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[COPY1:%[0-9]+]]:_(s96) = COPY $vgpr4_vgpr5_vgpr6
+ ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s96), 0
+ ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)
+ %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(s96) = COPY $vgpr4_vgpr5_vgpr6
+ %2:_(s128) = G_INSERT %0, %1, 0
+ $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
+...
+---
+name: test_insert_s128_s96_offset32
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6
+
+ ; CHECK-LABEL: name: test_insert_s128_s96_offset32
+ ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[COPY1:%[0-9]+]]:_(s96) = COPY $vgpr4_vgpr5_vgpr6
+ ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s96), 32
+ ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)
+ %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(s96) = COPY $vgpr4_vgpr5_vgpr6
+ %2:_(s128) = G_INSERT %0, %1, 32
+ $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
+...
+---
+name: test_insert_p0_s32_offset0
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1, $vgpr2
+
+ ; CHECK-LABEL: name: test_insert_p0_s32_offset0
+ ; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1
+ ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2
+ ; CHECK: [[INSERT:%[0-9]+]]:_(p0) = G_INSERT [[COPY]], [[COPY1]](s32), 0
+ ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](p0)
+ %0:_(p0) = COPY $vgpr0_vgpr1
+ %1:_(s32) = COPY $vgpr2
+ %2:_(p0) = G_INSERT %0, %1, 0
+ $vgpr0_vgpr1 = COPY %2
+...
+---
+name: test_insert_p0_s32_offset32
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1, $vgpr2
+
+ ; CHECK-LABEL: name: test_insert_p0_s32_offset32
+ ; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1
+ ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2
+ ; CHECK: [[INSERT:%[0-9]+]]:_(p0) = G_INSERT [[COPY]], [[COPY1]](s32), 32
+ ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](p0)
+ %0:_(p0) = COPY $vgpr0_vgpr1
+ %1:_(s32) = COPY $vgpr2
+ %2:_(p0) = G_INSERT %0, %1, 32
+ $vgpr0_vgpr1 = COPY %2
+...
+---
+name: test_insert_s128_p0_offset0
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5
+
+ ; CHECK-LABEL: name: test_insert_s128_p0_offset0
+ ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr4_vgpr5
+ ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](p0), 0
+ ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)
+ %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(p0) = COPY $vgpr4_vgpr5
+ %2:_(s128) = G_INSERT %0, %1, 0
+ $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
+...
+---
+name: test_insert_s128_p0_offset32
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5
+
+ ; CHECK-LABEL: name: test_insert_s128_p0_offset32
+ ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr4_vgpr5
+ ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](p0), 32
+ ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)
+ %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(p0) = COPY $vgpr4_vgpr5
+ %2:_(s128) = G_INSERT %0, %1, 32
+ $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
+...
+---
+name: test_insert_s128_p0_offset64
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5
+
+ ; CHECK-LABEL: name: test_insert_s128_p0_offset64
+ ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr4_vgpr5
+ ; CHECK: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](p0), 64
+ ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)
+ %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(p0) = COPY $vgpr4_vgpr5
+ %2:_(s128) = G_INSERT %0, %1, 64
+ $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
+...
+---
+name: test_insert_v2s32_s32_offset0
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1, $vgpr2
+
+ ; CHECK-LABEL: name: test_insert_v2s32_s32_offset0
+ ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1
+ ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2
+ ; CHECK: [[INSERT:%[0-9]+]]:_(<2 x s32>) = G_INSERT [[COPY]], [[COPY1]](s32), 0
+ ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](<2 x s32>)
+ %0:_(<2 x s32>) = COPY $vgpr0_vgpr1
+ %1:_(s32) = COPY $vgpr2
+ %2:_(<2 x s32>) = G_INSERT %0, %1, 0
+ $vgpr0_vgpr1 = COPY %2
+...
+---
+name: test_insert_v2s32_s32_offset32
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1, $vgpr2
+
+ ; CHECK-LABEL: name: test_insert_v2s32_s32_offset32
+ ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1
+ ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2
+ ; CHECK: [[INSERT:%[0-9]+]]:_(<2 x s32>) = G_INSERT [[COPY]], [[COPY1]](s32), 32
+ ; CHECK: $vgpr0_vgpr1 = COPY [[INSERT]](<2 x s32>)
+ %0:_(<2 x s32>) = COPY $vgpr0_vgpr1
+ %1:_(s32) = COPY $vgpr2
+ %2:_(<2 x s32>) = G_INSERT %0, %1, 32
+ $vgpr0_vgpr1 = COPY %2
...
---
-name: test_insert_dword0_i96
+name: test_insert_v3s32_s32_offset0
body: |
- bb.0.entry:
+ bb.0:
liveins: $vgpr0_vgpr1_vgpr2, $vgpr3
- ; CHECK-LABEL: name: test_insert_dword0_i96
- ; CHECK: %2:_(s96) = G_INSERT %0, %1(s32), 0
- %0:_(s96) = COPY $vgpr0_vgpr1_vgpr2
+ ; CHECK-LABEL: name: test_insert_v3s32_s32_offset0
+ ; CHECK: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2
+ ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr3
+ ; CHECK: [[INSERT:%[0-9]+]]:_(<3 x s32>) = G_INSERT [[COPY]], [[COPY1]](s32), 0
+ ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[INSERT]](<3 x s32>)
+ %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2
%1:_(s32) = COPY $vgpr3
- %2:_(s96) = G_INSERT %0, %1, 0
- S_ENDPGM implicit %2
+ %2:_(<3 x s32>) = G_INSERT %0, %1, 0
+ $vgpr0_vgpr1_vgpr2 = COPY %2
...
---
-name: test_insert_dword1_i96
+name: test_insert_v3s32_s32_offset32
body: |
- bb.0.entry:
+ bb.0:
liveins: $vgpr0_vgpr1_vgpr2, $vgpr3
- ; CHECK-LABEL: name: test_insert_dword1_i96
- ; CHECK: %2:_(s96) = G_INSERT %0, %1(s32), 32
- %0:_(s96) = COPY $vgpr0_vgpr1_vgpr2
+ ; CHECK-LABEL: name: test_insert_v3s32_s32_offset32
+ ; CHECK: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2
+ ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr3
+ ; CHECK: [[INSERT:%[0-9]+]]:_(<3 x s32>) = G_INSERT [[COPY]], [[COPY1]](s32), 32
+ ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[INSERT]](<3 x s32>)
+ %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2
%1:_(s32) = COPY $vgpr3
- %2:_(s96) = G_INSERT %0, %1, 32
- S_ENDPGM implicit %2
+ %2:_(<3 x s32>) = G_INSERT %0, %1, 32
+ $vgpr0_vgpr1_vgpr2 = COPY %2
...
---
-name: test_insert_dword2_i96
+name: test_insert_v3s32_s32_offset64
body: |
- bb.0.entry:
+ bb.0:
liveins: $vgpr0_vgpr1_vgpr2, $vgpr3
- ; CHECK-LABEL: name: test_insert_dword2_i96
- ; CHECK: %2:_(s96) = G_INSERT %0, %1(s32), 64
- %0:_(s96) = COPY $vgpr0_vgpr1_vgpr2
+ ; CHECK-LABEL: name: test_insert_v3s32_s32_offset64
+ ; CHECK: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2
+ ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr3
+ ; CHECK: [[INSERT:%[0-9]+]]:_(<3 x s32>) = G_INSERT [[COPY]], [[COPY1]](s32), 64
+ ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[INSERT]](<3 x s32>)
+ %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2
%1:_(s32) = COPY $vgpr3
- %2:_(s96) = G_INSERT %0, %1, 64
- S_ENDPGM implicit %2
+ %2:_(<3 x s32>) = G_INSERT %0, %1, 64
+ $vgpr0_vgpr1_vgpr2 = COPY %2
+...
+---
+name: test_insert_v4s32_s32_offset0
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4
+
+ ; CHECK-LABEL: name: test_insert_v4s32_s32_offset0
+ ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4
+ ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](s32), 0
+ ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)
+ %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(s32) = COPY $vgpr4
+ %2:_(<4 x s32>) = G_INSERT %0, %1, 0
+ $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
+...
+---
+name: test_insert_v4s32_s32_offset32
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4
+
+ ; CHECK-LABEL: name: test_insert_v4s32_s32_offset32
+ ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4
+ ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](s32), 32
+ ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)
+ %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(s32) = COPY $vgpr4
+ %2:_(<4 x s32>) = G_INSERT %0, %1, 32
+ $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
+...
+---
+name: test_insert_v4s32_s32_offset64
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4
+
+ ; CHECK-LABEL: name: test_insert_v4s32_s32_offset64
+ ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4
+ ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](s32), 64
+ ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)
+ %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(s32) = COPY $vgpr4
+ %2:_(<4 x s32>) = G_INSERT %0, %1, 64
+ $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
+...
+---
+name: test_insert_v4s32_s32_offset96
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4
+
+ ; CHECK-LABEL: name: test_insert_v4s32_s32_offset96
+ ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4
+ ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](s32), 96
+ ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)
+ %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(s32) = COPY $vgpr4
+ %2:_(<4 x s32>) = G_INSERT %0, %1, 96
+ $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
+...
+---
+name: test_insert_v4s32_s64_offset0
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5
+
+ ; CHECK-LABEL: name: test_insert_v4s32_s64_offset0
+ ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
+ ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](s64), 0
+ ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)
+ %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(s64) = COPY $vgpr4_vgpr5
+ %2:_(<4 x s32>) = G_INSERT %0, %1, 0
+ $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
+...
+---
+name: test_insert_v4s32_s64_offset32
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5
+
+ ; CHECK-LABEL: name: test_insert_v4s32_s64_offset32
+ ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
+ ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](s64), 32
+ ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)
+ %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(s64) = COPY $vgpr4_vgpr5
+ %2:_(<4 x s32>) = G_INSERT %0, %1, 32
+ $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
+...
+---
+name: test_insert_v4s32_s64_offset64
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5
+
+ ; CHECK-LABEL: name: test_insert_v4s32_s64_offset64
+ ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
+ ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](s64), 64
+ ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)
+ %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(s64) = COPY $vgpr4_vgpr5
+ %2:_(<4 x s32>) = G_INSERT %0, %1, 64
+ $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
+...
+---
+name: test_insert_v4s32_s96_offset0
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6
+
+ ; CHECK-LABEL: name: test_insert_v4s32_s96_offset0
+ ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[COPY1:%[0-9]+]]:_(s96) = COPY $vgpr4_vgpr5_vgpr6
+ ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](s96), 0
+ ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)
+ %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(s96) = COPY $vgpr4_vgpr5_vgpr6
+ %2:_(<4 x s32>) = G_INSERT %0, %1, 0
+ $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
+...
+---
+name: test_insert_v4s32_s96_offset32
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6
+
+ ; CHECK-LABEL: name: test_insert_v4s32_s96_offset32
+ ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[COPY1:%[0-9]+]]:_(s96) = COPY $vgpr4_vgpr5_vgpr6
+ ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](s96), 32
+ ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)
+ %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(s96) = COPY $vgpr4_vgpr5_vgpr6
+ %2:_(<4 x s32>) = G_INSERT %0, %1, 32
+ $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
+...
+---
+name: test_insert_v4s32_v2s32_offset0
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5
+
+ ; CHECK-LABEL: name: test_insert_v4s32_v2s32_offset0
+ ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr4_vgpr5
+ ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](<2 x s32>), 0
+ ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)
+ %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(<2 x s32>) = COPY $vgpr4_vgpr5
+ %2:_(<4 x s32>) = G_INSERT %0, %1, 0
+ $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
+...
+---
+name: test_insert_v4s32_v2s32_offset32
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5
+
+ ; CHECK-LABEL: name: test_insert_v4s32_v2s32_offset32
+ ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr4_vgpr5
+ ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](<2 x s32>), 32
+ ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)
+ %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(<2 x s32>) = COPY $vgpr4_vgpr5
+ %2:_(<4 x s32>) = G_INSERT %0, %1, 32
+ $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
+...
+---
+name: test_insert_v4s32_v2s32_offset64
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5
+
+ ; CHECK-LABEL: name: test_insert_v4s32_v2s32_offset64
+ ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr4_vgpr5
+ ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](<2 x s32>), 64
+ ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)
+ %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(<2 x s32>) = COPY $vgpr4_vgpr5
+ %2:_(<4 x s32>) = G_INSERT %0, %1, 64
+ $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
+...
+---
+name: test_insert_v4s32_v3s32_offset0
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6
+
+ ; CHECK-LABEL: name: test_insert_v4s32_v3s32_offset0
+ ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr4_vgpr5_vgpr6
+ ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](<3 x s32>), 0
+ ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)
+ %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(<3 x s32>) = COPY $vgpr4_vgpr5_vgpr6
+ %2:_(<4 x s32>) = G_INSERT %0, %1, 0
+ $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
+...
+---
+name: test_insert_v4s32_v3s32_offset32
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6
+
+ ; CHECK-LABEL: name: test_insert_v4s32_v3s32_offset32
+ ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr4_vgpr5_vgpr6
+ ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](<3 x s32>), 32
+ ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)
+ %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(<3 x s32>) = COPY $vgpr4_vgpr5_vgpr6
+ %2:_(<4 x s32>) = G_INSERT %0, %1, 32
+ $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
+...
+---
+name: test_insert_v4s32_p0_offset0
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5
+
+ ; CHECK-LABEL: name: test_insert_v4s32_p0_offset0
+ ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr4_vgpr5
+ ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](p0), 0
+ ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)
+ %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(p0) = COPY $vgpr4_vgpr5
+ %2:_(<4 x s32>) = G_INSERT %0, %1, 0
+ $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
+...
+---
+name: test_insert_v4s32_p0_offset32
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5
+
+ ; CHECK-LABEL: name: test_insert_v4s32_p0_offset32
+ ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr4_vgpr5
+ ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](p0), 32
+ ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)
+ %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(p0) = COPY $vgpr4_vgpr5
+ %2:_(<4 x s32>) = G_INSERT %0, %1, 32
+ $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
+...
+---
+name: test_insert_v4s32_p0_offset64
+body: |
+ bb.0:
+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5
+
+ ; CHECK-LABEL: name: test_insert_v4s32_p0_offset64
+ ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr4_vgpr5
+ ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](p0), 64
+ ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)
+ %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
+ %1:_(p0) = COPY $vgpr4_vgpr5
+ %2:_(<4 x s32>) = G_INSERT %0, %1, 64
+ $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2
...
More information about the llvm-commits
mailing list