aboutsummaryrefslogtreecommitdiff
path: root/test/CodeGen/MIR/AMDGPU
diff options
context:
space:
mode:
Diffstat (limited to 'test/CodeGen/MIR/AMDGPU')
-rw-r--r--test/CodeGen/MIR/AMDGPU/expected-target-index-name.mir49
-rw-r--r--test/CodeGen/MIR/AMDGPU/fold-imm-f16-f32.mir709
-rw-r--r--test/CodeGen/MIR/AMDGPU/intrinsics.mir19
-rw-r--r--test/CodeGen/MIR/AMDGPU/invalid-target-index-operand.mir49
-rw-r--r--test/CodeGen/MIR/AMDGPU/lit.local.cfg2
-rw-r--r--test/CodeGen/MIR/AMDGPU/target-index-operands.mir87
6 files changed, 0 insertions, 915 deletions
diff --git a/test/CodeGen/MIR/AMDGPU/expected-target-index-name.mir b/test/CodeGen/MIR/AMDGPU/expected-target-index-name.mir
deleted file mode 100644
index 5da98fb9c2d1..000000000000
--- a/test/CodeGen/MIR/AMDGPU/expected-target-index-name.mir
+++ /dev/null
@@ -1,49 +0,0 @@
-# RUN: not llc -march=amdgcn -run-pass none -o /dev/null %s 2>&1 | FileCheck %s
-
---- |
-
- %struct.foo = type { float, [5 x i32] }
-
- @float_gv = internal unnamed_addr addrspace(2) constant [5 x float] [float 0.000000e+00, float 1.000000e+00, float 2.000000e+00, float 3.000000e+00, float 4.000000e+00], align 4
-
- define amdgpu_kernel void @float(float addrspace(1)* %out, i32 %index) #0 {
- entry:
- %0 = getelementptr inbounds [5 x float], [5 x float] addrspace(2)* @float_gv, i32 0, i32 %index
- %1 = load float, float addrspace(2)* %0
- store float %1, float addrspace(1)* %out
- ret void
- }
-
- attributes #0 = { nounwind }
-
-...
----
-name: float
-liveins:
- - { reg: '%sgpr0_sgpr1' }
-frameInfo:
- maxAlignment: 8
-body: |
- bb.0.entry:
- liveins: %sgpr0_sgpr1
-
- %sgpr2_sgpr3 = S_GETPC_B64
- ; CHECK: [[@LINE+1]]:45: expected the name of the target index
- %sgpr2 = S_ADD_U32 %sgpr2, target-index(0), implicit-def %scc, implicit-def %scc
- %sgpr3 = S_ADDC_U32 %sgpr3, 0, implicit-def %scc, implicit %scc, implicit-def %scc, implicit %scc
- %sgpr4_sgpr5 = S_LSHR_B64 %sgpr2_sgpr3, 32, implicit-def dead %scc
- %sgpr6 = S_LOAD_DWORD_IMM %sgpr0_sgpr1, 11
- %sgpr7 = S_ASHR_I32 %sgpr6, 31, implicit-def dead %scc
- %sgpr6_sgpr7 = S_LSHL_B64 %sgpr6_sgpr7, 2, implicit-def dead %scc
- %sgpr2 = S_ADD_U32 %sgpr2, @float_gv, implicit-def %scc
- %sgpr3 = S_ADDC_U32 %sgpr4, 0, implicit-def dead %scc, implicit %scc
- %sgpr4 = S_ADD_U32 %sgpr2, %sgpr6, implicit-def %scc
- %sgpr5 = S_ADDC_U32 %sgpr3, %sgpr7, implicit-def dead %scc, implicit %scc
- %sgpr2 = S_LOAD_DWORD_IMM %sgpr4_sgpr5, 0
- %sgpr4_sgpr5 = S_LOAD_DWORDX2_IMM killed %sgpr0_sgpr1, 9
- %sgpr7 = S_MOV_B32 61440
- %sgpr6 = S_MOV_B32 -1
- %vgpr0 = V_MOV_B32_e32 killed %sgpr2, implicit %exec
- BUFFER_STORE_DWORD_OFFSET killed %vgpr0, %sgpr4_sgpr5_sgpr6_sgpr7, 0, 0, 0, 0, 0, implicit %exec
- S_ENDPGM
-...
diff --git a/test/CodeGen/MIR/AMDGPU/fold-imm-f16-f32.mir b/test/CodeGen/MIR/AMDGPU/fold-imm-f16-f32.mir
deleted file mode 100644
index 7cef01c9d12d..000000000000
--- a/test/CodeGen/MIR/AMDGPU/fold-imm-f16-f32.mir
+++ /dev/null
@@ -1,709 +0,0 @@
-# RUN: llc --mtriple=amdgcn--amdhsa -mcpu=fiji -verify-machineinstrs -run-pass si-fold-operands,si-shrink-instructions %s -o - | FileCheck %s
---- |
- define amdgpu_kernel void @add_f32_1.0_one_f16_use() #0 {
- %f16.val0 = load volatile half, half addrspace(1)* undef
- %f16.val1 = load volatile half, half addrspace(1)* undef
- %f32.val = load volatile float, float addrspace(1)* undef
- %f16.add0 = fadd half %f16.val0, 0xH3C00
- %f32.add = fadd float %f32.val, 1.000000e+00
- store volatile half %f16.add0, half addrspace(1)* undef
- store volatile float %f32.add, float addrspace(1)* undef
- ret void
- }
-
- define amdgpu_kernel void @add_f32_1.0_multi_f16_use() #0 {
- %f16.val0 = load volatile half, half addrspace(1)* undef
- %f16.val1 = load volatile half, half addrspace(1)* undef
- %f32.val = load volatile float, float addrspace(1)* undef
- %f16.add0 = fadd half %f16.val0, 0xH3C00
- %f32.add = fadd float %f32.val, 1.000000e+00
- store volatile half %f16.add0, half addrspace(1)* undef
- store volatile float %f32.add, float addrspace(1)* undef
- ret void
- }
-
- define amdgpu_kernel void @add_f32_1.0_one_f32_use_one_f16_use () #0 {
- %f16.val0 = load volatile half, half addrspace(1)* undef
- %f16.val1 = load volatile half, half addrspace(1)* undef
- %f32.val = load volatile float, float addrspace(1)* undef
- %f16.add0 = fadd half %f16.val0, 0xH3C00
- %f32.add = fadd float %f32.val, 1.000000e+00
- store volatile half %f16.add0, half addrspace(1)* undef
- store volatile float %f32.add, float addrspace(1)* undef
- ret void
- }
-
- define amdgpu_kernel void @add_f32_1.0_one_f32_use_multi_f16_use () #0 {
- %f16.val0 = load volatile half, half addrspace(1)* undef
- %f16.val1 = load volatile half, half addrspace(1)* undef
- %f32.val = load volatile float, float addrspace(1)* undef
- %f16.add0 = fadd half %f16.val0, 0xH3C00
- %f16.add1 = fadd half %f16.val1, 0xH3C00
- %f32.add = fadd float %f32.val, 1.000000e+00
- store volatile half %f16.add0, half addrspace(1)* undef
- store volatile half %f16.add1, half addrspace(1)* undef
- store volatile float %f32.add, float addrspace(1)* undef
- ret void
- }
-
- define amdgpu_kernel void @add_i32_1_multi_f16_use() #0 {
- %f16.val0 = load volatile half, half addrspace(1)* undef
- %f16.val1 = load volatile half, half addrspace(1)* undef
- %f16.add0 = fadd half %f16.val0, 0xH0001
- %f16.add1 = fadd half %f16.val1, 0xH0001
- store volatile half %f16.add0, half addrspace(1)* undef
- store volatile half %f16.add1,half addrspace(1)* undef
- ret void
- }
-
- define amdgpu_kernel void @add_i32_m2_one_f32_use_multi_f16_use () #0 {
- %f16.val0 = load volatile half, half addrspace(1)* undef
- %f16.val1 = load volatile half, half addrspace(1)* undef
- %f32.val = load volatile float, float addrspace(1)* undef
- %f16.add0 = fadd half %f16.val0, 0xHFFFE
- %f16.add1 = fadd half %f16.val1, 0xHFFFE
- %f32.add = fadd float %f32.val, 0xffffffffc0000000
- store volatile half %f16.add0, half addrspace(1)* undef
- store volatile half %f16.add1, half addrspace(1)* undef
- store volatile float %f32.add, float addrspace(1)* undef
- ret void
- }
-
- define amdgpu_kernel void @add_f16_1.0_multi_f32_use() #0 {
- %f32.val0 = load volatile float, float addrspace(1)* undef
- %f32.val1 = load volatile float, float addrspace(1)* undef
- %f32.val = load volatile float, float addrspace(1)* undef
- %f32.add0 = fadd float %f32.val0, 1.0
- %f32.add1 = fadd float %f32.val1, 1.0
- store volatile float %f32.add0, float addrspace(1)* undef
- store volatile float %f32.add1, float addrspace(1)* undef
- ret void
- }
-
- define amdgpu_kernel void @add_f16_1.0_other_high_bits_multi_f16_use() #0 {
- %f16.val0 = load volatile half, half addrspace(1)* undef
- %f16.val1 = load volatile half, half addrspace(1)* undef
- %f32.val = load volatile half, half addrspace(1)* undef
- %f16.add0 = fadd half %f16.val0, 0xH3C00
- %f32.add = fadd half %f32.val, 1.000000e+00
- store volatile half %f16.add0, half addrspace(1)* undef
- store volatile half %f32.add, half addrspace(1)* undef
- ret void
- }
-
- define amdgpu_kernel void @add_f16_1.0_other_high_bits_use_f16_f32() #0 {
- %f16.val0 = load volatile half, half addrspace(1)* undef
- %f16.val1 = load volatile half, half addrspace(1)* undef
- %f32.val = load volatile half, half addrspace(1)* undef
- %f16.add0 = fadd half %f16.val0, 0xH3C00
- %f32.add = fadd half %f32.val, 1.000000e+00
- store volatile half %f16.add0, half addrspace(1)* undef
- store volatile half %f32.add, half addrspace(1)* undef
- ret void
- }
-
- attributes #0 = { nounwind }
-
-...
----
-
-# f32 1.0 with a single use should be folded as the low 32-bits of a
-# literal constant.
-
-# CHECK-LABEL: name: add_f32_1.0_one_f16_use
-# CHECK: %13 = V_ADD_F16_e32 1065353216, killed %11, implicit %exec
-
-name: add_f32_1.0_one_f16_use
-alignment: 0
-exposesReturnsTwice: false
-legalized: false
-regBankSelected: false
-selected: false
-tracksRegLiveness: true
-registers:
- - { id: 0, class: sreg_64 }
- - { id: 1, class: sreg_32 }
- - { id: 2, class: sgpr_32 }
- - { id: 3, class: vgpr_32 }
- - { id: 4, class: sreg_64 }
- - { id: 5, class: sreg_32 }
- - { id: 6, class: sreg_64 }
- - { id: 7, class: sreg_32 }
- - { id: 8, class: sreg_32 }
- - { id: 9, class: sreg_32 }
- - { id: 10, class: sreg_128 }
- - { id: 11, class: vgpr_32 }
- - { id: 12, class: vgpr_32 }
- - { id: 13, class: vgpr_32 }
-frameInfo:
- isFrameAddressTaken: false
- isReturnAddressTaken: false
- hasStackMap: false
- hasPatchPoint: false
- stackSize: 0
- offsetAdjustment: 0
- maxAlignment: 0
- adjustsStack: false
- hasCalls: false
- maxCallFrameSize: 0
- hasOpaqueSPAdjustment: false
- hasVAStart: false
- hasMustTailInVarArgFunc: false
-body: |
- bb.0 (%ir-block.0):
- %4 = IMPLICIT_DEF
- %5 = COPY %4.sub1
- %6 = IMPLICIT_DEF
- %7 = COPY %6.sub0
- %8 = S_MOV_B32 61440
- %9 = S_MOV_B32 -1
- %10 = REG_SEQUENCE killed %7, 1, killed %5, 2, killed %9, 3, killed %8, 4
- %11 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile load 2 from `half addrspace(1)* undef`)
- %12 = V_MOV_B32_e32 1065353216, implicit %exec
- %13 = V_ADD_F16_e64 0, killed %11, 0, %12, 0, 0, implicit %exec
- BUFFER_STORE_SHORT_OFFSET killed %13, %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile store 2 into `half addrspace(1)* undef`)
- S_ENDPGM
-
-...
----
-# Materialized f32 inline immediate should not be folded into the f16
-# operands
-
-# CHECK-LABEL: name: add_f32_1.0_multi_f16_use
-# CHECK: %13 = V_MOV_B32_e32 1065353216, implicit %exec
-# CHECK: %14 = V_ADD_F16_e32 %13, killed %11, implicit %exec
-# CHECK: %15 = V_ADD_F16_e32 killed %13, killed %12, implicit %exec
-
-
-name: add_f32_1.0_multi_f16_use
-alignment: 0
-exposesReturnsTwice: false
-legalized: false
-regBankSelected: false
-selected: false
-tracksRegLiveness: true
-registers:
- - { id: 0, class: sreg_64 }
- - { id: 1, class: sreg_32 }
- - { id: 2, class: sgpr_32 }
- - { id: 3, class: vgpr_32 }
- - { id: 4, class: sreg_64 }
- - { id: 5, class: sreg_32 }
- - { id: 6, class: sreg_64 }
- - { id: 7, class: sreg_32 }
- - { id: 8, class: sreg_32 }
- - { id: 9, class: sreg_32 }
- - { id: 10, class: sreg_128 }
- - { id: 11, class: vgpr_32 }
- - { id: 12, class: vgpr_32 }
- - { id: 13, class: vgpr_32 }
- - { id: 14, class: vgpr_32 }
- - { id: 15, class: vgpr_32 }
-frameInfo:
- isFrameAddressTaken: false
- isReturnAddressTaken: false
- hasStackMap: false
- hasPatchPoint: false
- stackSize: 0
- offsetAdjustment: 0
- maxAlignment: 0
- adjustsStack: false
- hasCalls: false
- maxCallFrameSize: 0
- hasOpaqueSPAdjustment: false
- hasVAStart: false
- hasMustTailInVarArgFunc: false
-body: |
- bb.0 (%ir-block.0):
- %4 = IMPLICIT_DEF
- %5 = COPY %4.sub1
- %6 = IMPLICIT_DEF
- %7 = COPY %6.sub0
- %8 = S_MOV_B32 61440
- %9 = S_MOV_B32 -1
- %10 = REG_SEQUENCE killed %7, 1, killed %5, 2, killed %9, 3, killed %8, 4
- %11 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile load 2 from `half addrspace(1)* undef`)
- %12 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile load 4 from `float addrspace(1)* undef`)
- %13 = V_MOV_B32_e32 1065353216, implicit %exec
- %14 = V_ADD_F16_e64 0, killed %11, 0, %13, 0, 0, implicit %exec
- %15 = V_ADD_F16_e64 0, killed %12, 0, killed %13, 0, 0, implicit %exec
- BUFFER_STORE_SHORT_OFFSET killed %14, %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile store 2 into `half addrspace(1)* undef`)
- BUFFER_STORE_SHORT_OFFSET killed %15, %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile store 2 into `half addrspace(1)* undef`)
- S_ENDPGM
-
-...
----
-
-# f32 1.0 should be folded into the single f32 use as an inline
-# immediate, and folded into the single f16 use as a literal constant
-
-# CHECK-LABEL: name: add_f32_1.0_one_f32_use_one_f16_use
-# CHECK: %15 = V_ADD_F16_e32 1065353216, %11, implicit %exec
-# CHECK: %16 = V_ADD_F32_e32 1065353216, killed %13, implicit %exec
-
-name: add_f32_1.0_one_f32_use_one_f16_use
-alignment: 0
-exposesReturnsTwice: false
-legalized: false
-regBankSelected: false
-selected: false
-tracksRegLiveness: true
-registers:
- - { id: 0, class: sreg_64 }
- - { id: 1, class: sreg_32 }
- - { id: 2, class: sgpr_32 }
- - { id: 3, class: vgpr_32 }
- - { id: 4, class: sreg_64 }
- - { id: 5, class: sreg_32 }
- - { id: 6, class: sreg_64 }
- - { id: 7, class: sreg_32 }
- - { id: 8, class: sreg_32 }
- - { id: 9, class: sreg_32 }
- - { id: 10, class: sreg_128 }
- - { id: 11, class: vgpr_32 }
- - { id: 12, class: vgpr_32 }
- - { id: 13, class: vgpr_32 }
- - { id: 14, class: vgpr_32 }
- - { id: 15, class: vgpr_32 }
- - { id: 16, class: vgpr_32 }
-frameInfo:
- isFrameAddressTaken: false
- isReturnAddressTaken: false
- hasStackMap: false
- hasPatchPoint: false
- stackSize: 0
- offsetAdjustment: 0
- maxAlignment: 0
- adjustsStack: false
- hasCalls: false
- maxCallFrameSize: 0
- hasOpaqueSPAdjustment: false
- hasVAStart: false
- hasMustTailInVarArgFunc: false
-body: |
- bb.0 (%ir-block.0):
- %4 = IMPLICIT_DEF
- %5 = COPY %4.sub1
- %6 = IMPLICIT_DEF
- %7 = COPY %6.sub0
- %8 = S_MOV_B32 61440
- %9 = S_MOV_B32 -1
- %10 = REG_SEQUENCE killed %7, 1, killed %5, 2, killed %9, 3, killed %8, 4
- %11 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile load 2 from `half addrspace(1)* undef`)
- %12 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile load 2 from `half addrspace(1)* undef`)
- %13 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile load 4 from `float addrspace(1)* undef`)
- %14 = V_MOV_B32_e32 1065353216, implicit %exec
- %15 = V_ADD_F16_e64 0, %11, 0, %14, 0, 0, implicit %exec
- %16 = V_ADD_F32_e64 0, killed %13, 0, killed %14, 0, 0, implicit %exec
- BUFFER_STORE_SHORT_OFFSET killed %15, %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile store 2 into `half addrspace(1)* undef`)
- BUFFER_STORE_DWORD_OFFSET killed %16, %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile store 4 into `float addrspace(1)* undef`)
- S_ENDPGM
-
-...
----
-
-# f32 1.0 should be folded for the single f32 use as an inline
-# constant, and not folded as a multi-use literal for the f16 cases
-
-# CHECK-LABEL: name: add_f32_1.0_one_f32_use_multi_f16_use
-# CHECK: %14 = V_MOV_B32_e32 1065353216, implicit %exec
-# CHECK: %15 = V_ADD_F16_e32 %14, %11, implicit %exec
-# CHECK: %16 = V_ADD_F16_e32 %14, %12, implicit %exec
-# CHECK: %17 = V_ADD_F32_e32 1065353216, killed %13, implicit %exec
-
-name: add_f32_1.0_one_f32_use_multi_f16_use
-alignment: 0
-exposesReturnsTwice: false
-legalized: false
-regBankSelected: false
-selected: false
-tracksRegLiveness: true
-registers:
- - { id: 0, class: sreg_64 }
- - { id: 1, class: sreg_32 }
- - { id: 2, class: sgpr_32 }
- - { id: 3, class: vgpr_32 }
- - { id: 4, class: sreg_64 }
- - { id: 5, class: sreg_32 }
- - { id: 6, class: sreg_64 }
- - { id: 7, class: sreg_32 }
- - { id: 8, class: sreg_32 }
- - { id: 9, class: sreg_32 }
- - { id: 10, class: sreg_128 }
- - { id: 11, class: vgpr_32 }
- - { id: 12, class: vgpr_32 }
- - { id: 13, class: vgpr_32 }
- - { id: 14, class: vgpr_32 }
- - { id: 15, class: vgpr_32 }
- - { id: 16, class: vgpr_32 }
- - { id: 17, class: vgpr_32 }
-frameInfo:
- isFrameAddressTaken: false
- isReturnAddressTaken: false
- hasStackMap: false
- hasPatchPoint: false
- stackSize: 0
- offsetAdjustment: 0
- maxAlignment: 0
- adjustsStack: false
- hasCalls: false
- maxCallFrameSize: 0
- hasOpaqueSPAdjustment: false
- hasVAStart: false
- hasMustTailInVarArgFunc: false
-body: |
- bb.0 (%ir-block.0):
- %4 = IMPLICIT_DEF
- %5 = COPY %4.sub1
- %6 = IMPLICIT_DEF
- %7 = COPY %6.sub0
- %8 = S_MOV_B32 61440
- %9 = S_MOV_B32 -1
- %10 = REG_SEQUENCE killed %7, 1, killed %5, 2, killed %9, 3, killed %8, 4
- %11 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile load 2 from `half addrspace(1)* undef`)
- %12 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile load 2 from `half addrspace(1)* undef`)
- %13 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile load 4 from `float addrspace(1)* undef`)
- %14 = V_MOV_B32_e32 1065353216, implicit %exec
- %15 = V_ADD_F16_e64 0, %11, 0, %14, 0, 0, implicit %exec
- %16 = V_ADD_F16_e64 0, %12, 0, %14, 0, 0, implicit %exec
- %17 = V_ADD_F32_e64 0, killed %13, 0, killed %14, 0, 0, implicit %exec
- BUFFER_STORE_SHORT_OFFSET killed %15, %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile store 2 into `half addrspace(1)* undef`)
- BUFFER_STORE_SHORT_OFFSET killed %16, %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile store 2 into `half addrspace(1)* undef`)
- BUFFER_STORE_DWORD_OFFSET killed %17, %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile store 4 into `float addrspace(1)* undef`)
- S_ENDPGM
-
-...
----
-# CHECK-LABEL: name: add_i32_1_multi_f16_use
-# CHECK: %13 = V_MOV_B32_e32 1, implicit %exec
-# CHECK: %14 = V_ADD_F16_e32 1, killed %11, implicit %exec
-# CHECK: %15 = V_ADD_F16_e32 1, killed %12, implicit %exec
-
-
-name: add_i32_1_multi_f16_use
-alignment: 0
-exposesReturnsTwice: false
-legalized: false
-regBankSelected: false
-selected: false
-tracksRegLiveness: true
-registers:
- - { id: 0, class: sreg_64 }
- - { id: 1, class: sreg_32 }
- - { id: 2, class: sgpr_32 }
- - { id: 3, class: vgpr_32 }
- - { id: 4, class: sreg_64 }
- - { id: 5, class: sreg_32 }
- - { id: 6, class: sreg_64 }
- - { id: 7, class: sreg_32 }
- - { id: 8, class: sreg_32 }
- - { id: 9, class: sreg_32 }
- - { id: 10, class: sreg_128 }
- - { id: 11, class: vgpr_32 }
- - { id: 12, class: vgpr_32 }
- - { id: 13, class: vgpr_32 }
- - { id: 14, class: vgpr_32 }
- - { id: 15, class: vgpr_32 }
-frameInfo:
- isFrameAddressTaken: false
- isReturnAddressTaken: false
- hasStackMap: false
- hasPatchPoint: false
- stackSize: 0
- offsetAdjustment: 0
- maxAlignment: 0
- adjustsStack: false
- hasCalls: false
- maxCallFrameSize: 0
- hasOpaqueSPAdjustment: false
- hasVAStart: false
- hasMustTailInVarArgFunc: false
-body: |
- bb.0 (%ir-block.0):
- %4 = IMPLICIT_DEF
- %5 = COPY %4.sub1
- %6 = IMPLICIT_DEF
- %7 = COPY %6.sub0
- %8 = S_MOV_B32 61440
- %9 = S_MOV_B32 -1
- %10 = REG_SEQUENCE killed %7, 1, killed %5, 2, killed %9, 3, killed %8, 4
- %11 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile load 2 from `half addrspace(1)* undef`)
- %12 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile load 4 from `float addrspace(1)* undef`)
- %13 = V_MOV_B32_e32 1, implicit %exec
- %14 = V_ADD_F16_e64 0, killed %11, 0, %13, 0, 0, implicit %exec
- %15 = V_ADD_F16_e64 0, killed %12, 0, killed %13, 0, 0, implicit %exec
- BUFFER_STORE_SHORT_OFFSET killed %14, %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile store 2 into `half addrspace(1)* undef`)
- BUFFER_STORE_SHORT_OFFSET killed %15, %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile store 2 into `half addrspace(1)* undef`)
- S_ENDPGM
-
-...
----
-
-# CHECK-LABEL: name: add_i32_m2_one_f32_use_multi_f16_use
-# CHECK: %14 = V_MOV_B32_e32 -2, implicit %exec
-# CHECK: %15 = V_ADD_F16_e32 -2, %11, implicit %exec
-# CHECK: %16 = V_ADD_F16_e32 -2, %12, implicit %exec
-# CHECK: %17 = V_ADD_F32_e32 -2, killed %13, implicit %exec
-
-name: add_i32_m2_one_f32_use_multi_f16_use
-alignment: 0
-exposesReturnsTwice: false
-legalized: false
-regBankSelected: false
-selected: false
-tracksRegLiveness: true
-registers:
- - { id: 0, class: sreg_64 }
- - { id: 1, class: sreg_32 }
- - { id: 2, class: sgpr_32 }
- - { id: 3, class: vgpr_32 }
- - { id: 4, class: sreg_64 }
- - { id: 5, class: sreg_32 }
- - { id: 6, class: sreg_64 }
- - { id: 7, class: sreg_32 }
- - { id: 8, class: sreg_32 }
- - { id: 9, class: sreg_32 }
- - { id: 10, class: sreg_128 }
- - { id: 11, class: vgpr_32 }
- - { id: 12, class: vgpr_32 }
- - { id: 13, class: vgpr_32 }
- - { id: 14, class: vgpr_32 }
- - { id: 15, class: vgpr_32 }
- - { id: 16, class: vgpr_32 }
- - { id: 17, class: vgpr_32 }
-frameInfo:
- isFrameAddressTaken: false
- isReturnAddressTaken: false
- hasStackMap: false
- hasPatchPoint: false
- stackSize: 0
- offsetAdjustment: 0
- maxAlignment: 0
- adjustsStack: false
- hasCalls: false
- maxCallFrameSize: 0
- hasOpaqueSPAdjustment: false
- hasVAStart: false
- hasMustTailInVarArgFunc: false
-body: |
- bb.0 (%ir-block.0):
- %4 = IMPLICIT_DEF
- %5 = COPY %4.sub1
- %6 = IMPLICIT_DEF
- %7 = COPY %6.sub0
- %8 = S_MOV_B32 61440
- %9 = S_MOV_B32 -1
- %10 = REG_SEQUENCE killed %7, 1, killed %5, 2, killed %9, 3, killed %8, 4
- %11 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile load 2 from `half addrspace(1)* undef`)
- %12 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile load 2 from `half addrspace(1)* undef`)
- %13 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile load 4 from `float addrspace(1)* undef`)
- %14 = V_MOV_B32_e32 -2, implicit %exec
- %15 = V_ADD_F16_e64 0, %11, 0, %14, 0, 0, implicit %exec
- %16 = V_ADD_F16_e64 0, %12, 0, %14, 0, 0, implicit %exec
- %17 = V_ADD_F32_e64 0, killed %13, 0, killed %14, 0, 0, implicit %exec
- BUFFER_STORE_SHORT_OFFSET killed %15, %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile store 2 into `half addrspace(1)* undef`)
- BUFFER_STORE_SHORT_OFFSET killed %16, %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile store 2 into `half addrspace(1)* undef`)
- BUFFER_STORE_DWORD_OFFSET killed %17, %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile store 4 into `float addrspace(1)* undef`)
- S_ENDPGM
-
-...
----
-
-# f32 1.0 should be folded for the single f32 use as an inline
-# constant, and not folded as a multi-use literal for the f16 cases
-
-# CHECK-LABEL: name: add_f16_1.0_multi_f32_use
-# CHECK: %13 = V_MOV_B32_e32 15360, implicit %exec
-# CHECK: %14 = V_ADD_F32_e32 %13, %11, implicit %exec
-# CHECK: %15 = V_ADD_F32_e32 %13, %12, implicit %exec
-
-name: add_f16_1.0_multi_f32_use
-alignment: 0
-exposesReturnsTwice: false
-legalized: false
-regBankSelected: false
-selected: false
-tracksRegLiveness: true
-registers:
- - { id: 0, class: sreg_64 }
- - { id: 1, class: sreg_32 }
- - { id: 2, class: sgpr_32 }
- - { id: 3, class: vgpr_32 }
- - { id: 4, class: sreg_64 }
- - { id: 5, class: sreg_32 }
- - { id: 6, class: sreg_64 }
- - { id: 7, class: sreg_32 }
- - { id: 8, class: sreg_32 }
- - { id: 9, class: sreg_32 }
- - { id: 10, class: sreg_128 }
- - { id: 11, class: vgpr_32 }
- - { id: 12, class: vgpr_32 }
- - { id: 13, class: vgpr_32 }
- - { id: 14, class: vgpr_32 }
- - { id: 15, class: vgpr_32 }
-frameInfo:
- isFrameAddressTaken: false
- isReturnAddressTaken: false
- hasStackMap: false
- hasPatchPoint: false
- stackSize: 0
- offsetAdjustment: 0
- maxAlignment: 0
- adjustsStack: false
- hasCalls: false
- maxCallFrameSize: 0
- hasOpaqueSPAdjustment: false
- hasVAStart: false
- hasMustTailInVarArgFunc: false
-body: |
- bb.0 (%ir-block.0):
- %4 = IMPLICIT_DEF
- %5 = COPY %4.sub1
- %6 = IMPLICIT_DEF
- %7 = COPY %6.sub0
- %8 = S_MOV_B32 61440
- %9 = S_MOV_B32 -1
- %10 = REG_SEQUENCE killed %7, 1, killed %5, 2, killed %9, 3, killed %8, 4
- %11 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile load 4 from `float addrspace(1)* undef`)
- %12 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile load 4 from `float addrspace(1)* undef`)
- %13 = V_MOV_B32_e32 15360, implicit %exec
- %14 = V_ADD_F32_e64 0, %11, 0, %13, 0, 0, implicit %exec
- %15 = V_ADD_F32_e64 0, %12, 0, %13, 0, 0, implicit %exec
- BUFFER_STORE_DWORD_OFFSET killed %14, %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile store 4 into `float addrspace(1)* undef`)
- BUFFER_STORE_DWORD_OFFSET killed %15, %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile store 4 into `float addrspace(1)* undef`)
- S_ENDPGM
-
-...
----
-
-# The low 16-bits are an inline immediate, but the high bits are junk
-# FIXME: Should be able to fold this
-
-# CHECK-LABEL: name: add_f16_1.0_other_high_bits_multi_f16_use
-# CHECK: %13 = V_MOV_B32_e32 80886784, implicit %exec
-# CHECK: %14 = V_ADD_F16_e32 %13, %11, implicit %exec
-# CHECK: %15 = V_ADD_F16_e32 %13, %12, implicit %exec
-
-name: add_f16_1.0_other_high_bits_multi_f16_use
-alignment: 0
-exposesReturnsTwice: false
-legalized: false
-regBankSelected: false
-selected: false
-tracksRegLiveness: true
-registers:
- - { id: 0, class: sreg_64 }
- - { id: 1, class: sreg_32 }
- - { id: 2, class: sgpr_32 }
- - { id: 3, class: vgpr_32 }
- - { id: 4, class: sreg_64 }
- - { id: 5, class: sreg_32 }
- - { id: 6, class: sreg_64 }
- - { id: 7, class: sreg_32 }
- - { id: 8, class: sreg_32 }
- - { id: 9, class: sreg_32 }
- - { id: 10, class: sreg_128 }
- - { id: 11, class: vgpr_32 }
- - { id: 12, class: vgpr_32 }
- - { id: 13, class: vgpr_32 }
- - { id: 14, class: vgpr_32 }
- - { id: 15, class: vgpr_32 }
-frameInfo:
- isFrameAddressTaken: false
- isReturnAddressTaken: false
- hasStackMap: false
- hasPatchPoint: false
- stackSize: 0
- offsetAdjustment: 0
- maxAlignment: 0
- adjustsStack: false
- hasCalls: false
- maxCallFrameSize: 0
- hasOpaqueSPAdjustment: false
- hasVAStart: false
- hasMustTailInVarArgFunc: false
-body: |
- bb.0 (%ir-block.0):
- %4 = IMPLICIT_DEF
- %5 = COPY %4.sub1
- %6 = IMPLICIT_DEF
- %7 = COPY %6.sub0
- %8 = S_MOV_B32 61440
- %9 = S_MOV_B32 -1
- %10 = REG_SEQUENCE killed %7, 1, killed %5, 2, killed %9, 3, killed %8, 4
- %11 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile load 2 from `half addrspace(1)* undef`)
- %12 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile load 2 from `half addrspace(1)* undef`)
- %13 = V_MOV_B32_e32 80886784, implicit %exec
- %14 = V_ADD_F16_e64 0, %11, 0, %13, 0, 0, implicit %exec
- %15 = V_ADD_F16_e64 0, %12, 0, %13, 0, 0, implicit %exec
- BUFFER_STORE_SHORT_OFFSET killed %14, %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile store 2 into `half addrspace(1)* undef`)
- BUFFER_STORE_SHORT_OFFSET killed %15, %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile store 2 into `half addrspace(1)* undef`)
- S_ENDPGM
-
-...
----
-
-# FIXME: Should fold inline immediate into f16 and literal use into
-# f32 instruction.
-
-# CHECK-LABEL: name: add_f16_1.0_other_high_bits_use_f16_f32
-# CHECK: %13 = V_MOV_B32_e32 305413120, implicit %exec
-# CHECK: %14 = V_ADD_F32_e32 %13, %11, implicit %exec
-# CHECK: %15 = V_ADD_F16_e32 %13, %12, implicit %exec
-name: add_f16_1.0_other_high_bits_use_f16_f32
-alignment: 0
-exposesReturnsTwice: false
-legalized: false
-regBankSelected: false
-selected: false
-tracksRegLiveness: true
-registers:
- - { id: 0, class: sreg_64 }
- - { id: 1, class: sreg_32 }
- - { id: 2, class: sgpr_32 }
- - { id: 3, class: vgpr_32 }
- - { id: 4, class: sreg_64 }
- - { id: 5, class: sreg_32 }
- - { id: 6, class: sreg_64 }
- - { id: 7, class: sreg_32 }
- - { id: 8, class: sreg_32 }
- - { id: 9, class: sreg_32 }
- - { id: 10, class: sreg_128 }
- - { id: 11, class: vgpr_32 }
- - { id: 12, class: vgpr_32 }
- - { id: 13, class: vgpr_32 }
- - { id: 14, class: vgpr_32 }
- - { id: 15, class: vgpr_32 }
-frameInfo:
- isFrameAddressTaken: false
- isReturnAddressTaken: false
- hasStackMap: false
- hasPatchPoint: false
- stackSize: 0
- offsetAdjustment: 0
- maxAlignment: 0
- adjustsStack: false
- hasCalls: false
- maxCallFrameSize: 0
- hasOpaqueSPAdjustment: false
- hasVAStart: false
- hasMustTailInVarArgFunc: false
-body: |
- bb.0 (%ir-block.0):
- %4 = IMPLICIT_DEF
- %5 = COPY %4.sub1
- %6 = IMPLICIT_DEF
- %7 = COPY %6.sub0
- %8 = S_MOV_B32 61440
- %9 = S_MOV_B32 -1
- %10 = REG_SEQUENCE killed %7, 1, killed %5, 2, killed %9, 3, killed %8, 4
- %11 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile load 4 from `float addrspace(1)* undef`)
- %12 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile load 2 from `half addrspace(1)* undef`)
- %13 = V_MOV_B32_e32 305413120, implicit %exec
- %14 = V_ADD_F32_e64 0, %11, 0, %13, 0, 0, implicit %exec
- %15 = V_ADD_F16_e64 0, %12, 0, %13, 0, 0, implicit %exec
- BUFFER_STORE_DWORD_OFFSET killed %14, %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile store 4 into `float addrspace(1)* undef`)
- BUFFER_STORE_SHORT_OFFSET killed %15, %10, 0, 0, 0, 0, 0, implicit %exec :: (volatile store 2 into `half addrspace(1)* undef`)
- S_ENDPGM
-
-...
diff --git a/test/CodeGen/MIR/AMDGPU/intrinsics.mir b/test/CodeGen/MIR/AMDGPU/intrinsics.mir
deleted file mode 100644
index cb6e6190990b..000000000000
--- a/test/CodeGen/MIR/AMDGPU/intrinsics.mir
+++ /dev/null
@@ -1,19 +0,0 @@
-# RUN: llc -mtriple=amdgcn -run-pass none -o - %s | FileCheck %s
-
---- |
-
- define amdgpu_kernel void @use_intrin() {
- ret void
- }
-
-...
----
-# Completely invalid code, but it checks that intrinsics round-trip properly.
-# CHECK: %0(s64) = COPY intrinsic(@llvm.amdgcn.sbfe)
-name: use_intrin
-registers:
- - { id: 0, class: _ }
-body: |
- bb.0:
- %0(s64) = COPY intrinsic(@llvm.amdgcn.sbfe.i32)
-...
diff --git a/test/CodeGen/MIR/AMDGPU/invalid-target-index-operand.mir b/test/CodeGen/MIR/AMDGPU/invalid-target-index-operand.mir
deleted file mode 100644
index 8cffc86373a3..000000000000
--- a/test/CodeGen/MIR/AMDGPU/invalid-target-index-operand.mir
+++ /dev/null
@@ -1,49 +0,0 @@
-# RUN: not llc -march=amdgcn -run-pass none -o /dev/null %s 2>&1 | FileCheck %s
-
---- |
-
- %struct.foo = type { float, [5 x i32] }
-
- @float_gv = internal unnamed_addr addrspace(2) constant [5 x float] [float 0.000000e+00, float 1.000000e+00, float 2.000000e+00, float 3.000000e+00, float 4.000000e+00], align 4
-
- define amdgpu_kernel void @float(float addrspace(1)* %out, i32 %index) #0 {
- entry:
- %0 = getelementptr inbounds [5 x float], [5 x float] addrspace(2)* @float_gv, i32 0, i32 %index
- %1 = load float, float addrspace(2)* %0
- store float %1, float addrspace(1)* %out
- ret void
- }
-
- attributes #0 = { nounwind }
-
-...
----
-name: float
-liveins:
- - { reg: '%sgpr0_sgpr1' }
-frameInfo:
- maxAlignment: 8
-body: |
- bb.0.entry:
- liveins: %sgpr0_sgpr1
-
- %sgpr2_sgpr3 = S_GETPC_B64
- ; CHECK: [[@LINE+1]]:45: use of undefined target index 'constdata-start'
- %sgpr2 = S_ADD_U32 %sgpr2, target-index(constdata-start), implicit-def %scc, implicit-def %scc
- %sgpr3 = S_ADDC_U32 %sgpr3, 0, implicit-def %scc, implicit %scc, implicit-def %scc, implicit %scc
- %sgpr4_sgpr5 = S_LSHR_B64 %sgpr2_sgpr3, 32, implicit-def dead %scc
- %sgpr6 = S_LOAD_DWORD_IMM %sgpr0_sgpr1, 11
- %sgpr7 = S_ASHR_I32 %sgpr6, 31, implicit-def dead %scc
- %sgpr6_sgpr7 = S_LSHL_B64 %sgpr6_sgpr7, 2, implicit-def dead %scc
- %sgpr2 = S_ADD_U32 %sgpr2, @float_gv, implicit-def %scc
- %sgpr3 = S_ADDC_U32 %sgpr4, 0, implicit-def dead %scc, implicit %scc
- %sgpr4 = S_ADD_U32 %sgpr2, %sgpr6, implicit-def %scc
- %sgpr5 = S_ADDC_U32 %sgpr3, %sgpr7, implicit-def dead %scc, implicit %scc
- %sgpr2 = S_LOAD_DWORD_IMM %sgpr4_sgpr5, 0
- %sgpr4_sgpr5 = S_LOAD_DWORDX2_IMM killed %sgpr0_sgpr1, 9
- %sgpr7 = S_MOV_B32 61440
- %sgpr6 = S_MOV_B32 -1
- %vgpr0 = V_MOV_B32_e32 killed %sgpr2, implicit %exec
- BUFFER_STORE_DWORD_OFFSET killed %vgpr0, %sgpr4_sgpr5_sgpr6_sgpr7, 0, 0, 0, 0, 0, implicit %exec
- S_ENDPGM
-...
diff --git a/test/CodeGen/MIR/AMDGPU/lit.local.cfg b/test/CodeGen/MIR/AMDGPU/lit.local.cfg
deleted file mode 100644
index 2a665f06be72..000000000000
--- a/test/CodeGen/MIR/AMDGPU/lit.local.cfg
+++ /dev/null
@@ -1,2 +0,0 @@
-if not 'AMDGPU' in config.root.targets:
- config.unsupported = True
diff --git a/test/CodeGen/MIR/AMDGPU/target-index-operands.mir b/test/CodeGen/MIR/AMDGPU/target-index-operands.mir
deleted file mode 100644
index 32669de15ea3..000000000000
--- a/test/CodeGen/MIR/AMDGPU/target-index-operands.mir
+++ /dev/null
@@ -1,87 +0,0 @@
-# RUN: llc -march=amdgcn -run-pass none -o - %s | FileCheck %s
-# This test verifies that the MIR parser can parse target index operands.
-
---- |
-
- %struct.foo = type { float, [5 x i32] }
-
- @float_gv = internal unnamed_addr addrspace(2) constant [5 x float] [float 0.000000e+00, float 1.000000e+00, float 2.000000e+00, float 3.000000e+00, float 4.000000e+00], align 4
-
- define amdgpu_kernel void @float(float addrspace(1)* %out, i32 %index) #0 {
- entry:
- %0 = getelementptr inbounds [5 x float], [5 x float] addrspace(2)* @float_gv, i32 0, i32 %index
- %1 = load float, float addrspace(2)* %0
- store float %1, float addrspace(1)* %out
- ret void
- }
-
- define amdgpu_kernel void @float2(float addrspace(1)* %out, i32 %index) #0 {
- entry:
- %0 = getelementptr inbounds [5 x float], [5 x float] addrspace(2)* @float_gv, i32 0, i32 %index
- %1 = load float, float addrspace(2)* %0
- store float %1, float addrspace(1)* %out
- ret void
- }
- attributes #0 = { nounwind }
-
-...
----
-name: float
-liveins:
- - { reg: '%sgpr0_sgpr1' }
-frameInfo:
- maxAlignment: 8
-body: |
- bb.0.entry:
- liveins: %sgpr0_sgpr1
-
- %sgpr2_sgpr3 = S_GETPC_B64
- ; CHECK: %sgpr2 = S_ADD_U32 %sgpr2, target-index(amdgpu-constdata-start), implicit-def %scc, implicit-def %scc
- %sgpr2 = S_ADD_U32 %sgpr2, target-index(amdgpu-constdata-start), implicit-def %scc, implicit-def %scc
- %sgpr3 = S_ADDC_U32 %sgpr3, 0, implicit-def %scc, implicit %scc, implicit-def %scc, implicit %scc
- %sgpr4_sgpr5 = S_LSHR_B64 %sgpr2_sgpr3, 32, implicit-def dead %scc
- %sgpr6 = S_LOAD_DWORD_IMM %sgpr0_sgpr1, 11, 0
- %sgpr7 = S_ASHR_I32 %sgpr6, 31, implicit-def dead %scc
- %sgpr6_sgpr7 = S_LSHL_B64 %sgpr6_sgpr7, 2, implicit-def dead %scc
- %sgpr2 = S_ADD_U32 %sgpr2, @float_gv, implicit-def %scc
- %sgpr3 = S_ADDC_U32 %sgpr4, 0, implicit-def dead %scc, implicit %scc
- %sgpr4 = S_ADD_U32 %sgpr2, %sgpr6, implicit-def %scc
- %sgpr5 = S_ADDC_U32 %sgpr3, %sgpr7, implicit-def dead %scc, implicit %scc
- %sgpr2 = S_LOAD_DWORD_IMM %sgpr4_sgpr5, 0, 0
- %sgpr4_sgpr5 = S_LOAD_DWORDX2_IMM killed %sgpr0_sgpr1, 9, 0
- %sgpr7 = S_MOV_B32 61440
- %sgpr6 = S_MOV_B32 -1
- %vgpr0 = V_MOV_B32_e32 killed %sgpr2, implicit %exec
- BUFFER_STORE_DWORD_OFFSET killed %vgpr0, %sgpr4_sgpr5_sgpr6_sgpr7, 0, 0, 0, 0, 0, implicit %exec
- S_ENDPGM
-...
----
-name: float2
-liveins:
- - { reg: '%sgpr0_sgpr1' }
-frameInfo:
- maxAlignment: 8
-body: |
- bb.0.entry:
- liveins: %sgpr0_sgpr1
-
- %sgpr2_sgpr3 = S_GETPC_B64
- ; CHECK: %sgpr2 = S_ADD_U32 %sgpr2, target-index(amdgpu-constdata-start) + 1, implicit-def %scc, implicit-def %scc
- %sgpr2 = S_ADD_U32 %sgpr2, target-index(amdgpu-constdata-start) + 1, implicit-def %scc, implicit-def %scc
- %sgpr3 = S_ADDC_U32 %sgpr3, 0, implicit-def %scc, implicit %scc, implicit-def %scc, implicit %scc
- %sgpr4_sgpr5 = S_LSHR_B64 %sgpr2_sgpr3, 32, implicit-def dead %scc
- %sgpr6 = S_LOAD_DWORD_IMM %sgpr0_sgpr1, 11, 0
- %sgpr7 = S_ASHR_I32 %sgpr6, 31, implicit-def dead %scc
- %sgpr6_sgpr7 = S_LSHL_B64 %sgpr6_sgpr7, 2, implicit-def dead %scc
- %sgpr2 = S_ADD_U32 %sgpr2, @float_gv, implicit-def %scc
- %sgpr3 = S_ADDC_U32 %sgpr4, 0, implicit-def dead %scc, implicit %scc
- %sgpr4 = S_ADD_U32 %sgpr2, %sgpr6, implicit-def %scc
- %sgpr5 = S_ADDC_U32 %sgpr3, %sgpr7, implicit-def dead %scc, implicit %scc
- %sgpr2 = S_LOAD_DWORD_IMM %sgpr4_sgpr5, 0, 0
- %sgpr4_sgpr5 = S_LOAD_DWORDX2_IMM killed %sgpr0_sgpr1, 9, 0
- %sgpr7 = S_MOV_B32 61440
- %sgpr6 = S_MOV_B32 -1
- %vgpr0 = V_MOV_B32_e32 killed %sgpr2, implicit %exec
- BUFFER_STORE_DWORD_OFFSET killed %vgpr0, %sgpr4_sgpr5_sgpr6_sgpr7, 0, 0, 0, 0, 0, implicit %exec
- S_ENDPGM
-...