mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +01:00
[AMDGPU][MC] Added tests for checking error position
See bug 47519: https://bugs.llvm.org/show_bug.cgi?id=47519 Reviewers: arsenm, rampitec Differential Revision: https://reviews.llvm.org/D90925
This commit is contained in:
parent
6a6e7afc31
commit
f9396b47fe
1044
test/MC/AMDGPU/gfx10_err_pos.s
Normal file
1044
test/MC/AMDGPU/gfx10_err_pos.s
Normal file
File diff suppressed because it is too large
Load Diff
25
test/MC/AMDGPU/gfx7_err_pos.s
Normal file
25
test/MC/AMDGPU/gfx7_err_pos.s
Normal file
@ -0,0 +1,25 @@
|
||||
// RUN: not llvm-mc -arch=amdgcn -mcpu=bonaire %s 2>&1 | FileCheck %s --implicit-check-not=error: --strict-whitespace
|
||||
|
||||
//==============================================================================
|
||||
// d16 modifier is not supported on this GPU
|
||||
|
||||
image_gather4 v[5:6], v1, s[8:15], s[12:15] dmask:0x1 d16
|
||||
// CHECK: error: d16 modifier is not supported on this GPU
|
||||
// CHECK-NEXT:{{^}}image_gather4 v[5:6], v1, s[8:15], s[12:15] dmask:0x1 d16
|
||||
// CHECK-NEXT:{{^}}^
|
||||
|
||||
//==============================================================================
|
||||
// integer clamping is not supported on this GPU
|
||||
|
||||
v_add_co_u32 v84, s[4:5], v13, v31 clamp
|
||||
// CHECK: error: integer clamping is not supported on this GPU
|
||||
// CHECK-NEXT:{{^}}v_add_co_u32 v84, s[4:5], v13, v31 clamp
|
||||
// CHECK-NEXT:{{^}}^
|
||||
|
||||
//==============================================================================
|
||||
// invalid literal operand
|
||||
|
||||
v_and_b32_e64 v0, 0.159154943091895317852646485335, v1
|
||||
// CHECK: error: invalid literal operand
|
||||
// CHECK-NEXT:{{^}}v_and_b32_e64 v0, 0.159154943091895317852646485335, v1
|
||||
// CHECK-NEXT:{{^}}^
|
38
test/MC/AMDGPU/gfx8_err_pos.s
Normal file
38
test/MC/AMDGPU/gfx8_err_pos.s
Normal file
@ -0,0 +1,38 @@
|
||||
// RUN: not llvm-mc -arch=amdgcn -mcpu=tonga %s 2>&1 | FileCheck %s --implicit-check-not=error: --strict-whitespace
|
||||
|
||||
//==============================================================================
|
||||
// a16 modifier is not supported on this GPU
|
||||
|
||||
image_gather4 v[5:8], v1, s[8:15], s[12:15] dmask:0x1 a16
|
||||
// CHECK: error: a16 modifier is not supported on this GPU
|
||||
// CHECK-NEXT:{{^}}image_gather4 v[5:8], v1, s[8:15], s[12:15] dmask:0x1 a16
|
||||
// CHECK-NEXT:{{^}} ^
|
||||
|
||||
//==============================================================================
|
||||
// expected a 20-bit unsigned offset
|
||||
|
||||
s_atc_probe 0x7, s[4:5], -1
|
||||
// CHECK: error: expected a 20-bit unsigned offset
|
||||
// CHECK-NEXT:{{^}}s_atc_probe 0x7, s[4:5], -1
|
||||
// CHECK-NEXT:{{^}} ^
|
||||
|
||||
s_store_dword s1, s[2:3], 0xFFFFFFFFFFF00000
|
||||
// CHECK: error: expected a 20-bit unsigned offset
|
||||
// CHECK-NEXT:{{^}}s_store_dword s1, s[2:3], 0xFFFFFFFFFFF00000
|
||||
// CHECK-NEXT:{{^}} ^
|
||||
|
||||
//==============================================================================
|
||||
// flat offset modifier is not supported on this GPU
|
||||
|
||||
flat_atomic_add v[3:4], v5 inst_offset:8 slc
|
||||
// CHECK: error: flat offset modifier is not supported on this GPU
|
||||
// CHECK-NEXT:{{^}}flat_atomic_add v[3:4], v5 inst_offset:8 slc
|
||||
// CHECK-NEXT:{{^}} ^
|
||||
|
||||
//==============================================================================
|
||||
// image data size does not match dmask and tfe
|
||||
|
||||
image_gather4 v[5:6], v1, s[8:15], s[12:15] dmask:0x1 d16
|
||||
// CHECK: error: image data size does not match dmask and tfe
|
||||
// CHECK-NEXT:{{^}}image_gather4 v[5:6], v1, s[8:15], s[12:15] dmask:0x1 d16
|
||||
// CHECK-NEXT:{{^}}^
|
33
test/MC/AMDGPU/gfx908_err_pos.s
Normal file
33
test/MC/AMDGPU/gfx908_err_pos.s
Normal file
@ -0,0 +1,33 @@
|
||||
// RUN: not llvm-mc -arch=amdgcn -mcpu=gfx908 %s 2>&1 | FileCheck %s --implicit-check-not=error: --strict-whitespace
|
||||
|
||||
//==============================================================================
|
||||
// invalid neg_hi value
|
||||
|
||||
v_dot2_f32_f16 v0, v1, v2, v3 neg_hi:[0,2]
|
||||
// CHECK: error: invalid neg_hi value
|
||||
// CHECK-NEXT:{{^}}v_dot2_f32_f16 v0, v1, v2, v3 neg_hi:[0,2]
|
||||
// CHECK-NEXT:{{^}} ^
|
||||
|
||||
//==============================================================================
|
||||
// invalid neg_lo value
|
||||
|
||||
v_dot2_f32_f16 v0, v1, v2, v3 neg_lo:[2,0]
|
||||
// CHECK: error: invalid neg_lo value
|
||||
// CHECK-NEXT:{{^}}v_dot2_f32_f16 v0, v1, v2, v3 neg_lo:[2,0]
|
||||
// CHECK-NEXT:{{^}} ^
|
||||
|
||||
//==============================================================================
|
||||
// invalid op_sel_hi value
|
||||
|
||||
v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[2,0]
|
||||
// CHECK: error: invalid op_sel_hi value
|
||||
// CHECK-NEXT:{{^}}v_dot2_f32_f16 v0, v1, v2, v3 op_sel_hi:[2,0]
|
||||
// CHECK-NEXT:{{^}} ^
|
||||
|
||||
//==============================================================================
|
||||
// source operand must be either a VGPR or an inline constant
|
||||
|
||||
v_accvgpr_write a2, execz
|
||||
// CHECK: error: source operand must be either a VGPR or an inline constant
|
||||
// CHECK-NEXT:{{^}}v_accvgpr_write a2, execz
|
||||
// CHECK-NEXT:{{^}} ^
|
157
test/MC/AMDGPU/gfx9_err_pos.s
Normal file
157
test/MC/AMDGPU/gfx9_err_pos.s
Normal file
@ -0,0 +1,157 @@
|
||||
// RUN: not llvm-mc -arch=amdgcn -mcpu=gfx900 %s 2>&1 | FileCheck %s --implicit-check-not=error: --strict-whitespace
|
||||
|
||||
//==============================================================================
|
||||
// 'null' operand is not supported on this GPU
|
||||
|
||||
s_add_u32 null, null, null
|
||||
// CHECK: error: 'null' operand is not supported on this GPU
|
||||
// CHECK-NEXT:{{^}}s_add_u32 null, null, null
|
||||
// CHECK-NEXT:{{^}} ^
|
||||
|
||||
//==============================================================================
|
||||
// duplicate VGPR index mode
|
||||
|
||||
s_set_gpr_idx_on s0, gpr_idx(SRC0,DST,SRC1,DST)
|
||||
// CHECK: error: duplicate VGPR index mode
|
||||
// CHECK-NEXT:{{^}}s_set_gpr_idx_on s0, gpr_idx(SRC0,DST,SRC1,DST)
|
||||
// CHECK-NEXT:{{^}} ^
|
||||
|
||||
//==============================================================================
|
||||
// expected a 12-bit unsigned offset
|
||||
|
||||
flat_load_dword v1, v[3:4] offset:-1
|
||||
// CHECK: error: expected a 12-bit unsigned offset
|
||||
// CHECK-NEXT:{{^}}flat_load_dword v1, v[3:4] offset:-1
|
||||
// CHECK-NEXT:{{^}} ^
|
||||
|
||||
flat_load_dword v1, v[3:4] offset:4096
|
||||
// CHECK: error: expected a 12-bit unsigned offset
|
||||
// CHECK-NEXT:{{^}}flat_load_dword v1, v[3:4] offset:4096
|
||||
// CHECK-NEXT:{{^}} ^
|
||||
|
||||
//==============================================================================
|
||||
// expected a 13-bit signed offset
|
||||
|
||||
global_load_dword v1, v[3:4] off, offset:-4097
|
||||
// CHECK: error: expected a 13-bit signed offset
|
||||
// CHECK-NEXT:{{^}}global_load_dword v1, v[3:4] off, offset:-4097
|
||||
// CHECK-NEXT:{{^}} ^
|
||||
|
||||
//==============================================================================
|
||||
// expected a VGPR index mode
|
||||
|
||||
s_set_gpr_idx_on s0, gpr_idx(SRC0,
|
||||
// CHECK: error: expected a VGPR index mode
|
||||
// CHECK-NEXT:{{^}}s_set_gpr_idx_on s0, gpr_idx(SRC0,
|
||||
// CHECK-NEXT:{{^}} ^
|
||||
|
||||
//==============================================================================
|
||||
// expected a VGPR index mode or a closing parenthesis
|
||||
|
||||
s_set_gpr_idx_on s0, gpr_idx(
|
||||
// CHECK: error: expected a VGPR index mode or a closing parenthesis
|
||||
// CHECK-NEXT:{{^}}s_set_gpr_idx_on s0, gpr_idx(
|
||||
// CHECK-NEXT:{{^}} ^
|
||||
|
||||
s_set_gpr_idx_on s0, gpr_idx(X)
|
||||
// CHECK: error: expected a VGPR index mode or a closing parenthesis
|
||||
// CHECK-NEXT:{{^}}s_set_gpr_idx_on s0, gpr_idx(X)
|
||||
// CHECK-NEXT:{{^}} ^
|
||||
|
||||
//==============================================================================
|
||||
// expected a comma or a closing parenthesis
|
||||
|
||||
s_set_gpr_idx_on s0, gpr_idx(DST
|
||||
// CHECK: error: expected a comma or a closing parenthesis
|
||||
// CHECK-NEXT:{{^}}s_set_gpr_idx_on s0, gpr_idx(DST
|
||||
// CHECK-NEXT:{{^}} ^
|
||||
|
||||
//==============================================================================
|
||||
// expected absolute expression
|
||||
|
||||
s_set_gpr_idx_on s0, gpr_idx
|
||||
// CHECK: error: expected absolute expression
|
||||
// CHECK-NEXT:{{^}}s_set_gpr_idx_on s0, gpr_idx
|
||||
// CHECK-NEXT:{{^}} ^
|
||||
|
||||
s_set_gpr_idx_on s0, s1
|
||||
// CHECK: error: expected absolute expression
|
||||
// CHECK-NEXT:{{^}}s_set_gpr_idx_on s0, s1
|
||||
// CHECK-NEXT:{{^}} ^
|
||||
|
||||
//==============================================================================
|
||||
// invalid atomic image dmask
|
||||
|
||||
image_atomic_add v252, v2, s[8:15]
|
||||
// CHECK: error: invalid atomic image dmask
|
||||
// CHECK-NEXT:{{^}}image_atomic_add v252, v2, s[8:15]
|
||||
// CHECK-NEXT:{{^}}^
|
||||
|
||||
image_atomic_cmpswap v[4:7], v[192:195], s[28:35] dmask:0xe tfe
|
||||
// CHECK: error: invalid atomic image dmask
|
||||
// CHECK-NEXT:{{^}}image_atomic_cmpswap v[4:7], v[192:195], s[28:35] dmask:0xe tfe
|
||||
// CHECK-NEXT:{{^}}^
|
||||
|
||||
//==============================================================================
|
||||
// invalid image_gather dmask: only one bit must be set
|
||||
|
||||
image_gather4_cl v[5:8], v[1:4], s[8:15], s[12:15] dmask:0x3
|
||||
// CHECK: error: invalid image_gather dmask: only one bit must be set
|
||||
// CHECK-NEXT:{{^}}image_gather4_cl v[5:8], v[1:4], s[8:15], s[12:15] dmask:0x3
|
||||
// CHECK-NEXT:{{^}}^
|
||||
|
||||
//==============================================================================
|
||||
// invalid immediate: only 4-bit values are legal
|
||||
|
||||
s_set_gpr_idx_on s0, 16
|
||||
// CHECK: error: invalid immediate: only 4-bit values are legal
|
||||
// CHECK-NEXT:{{^}}s_set_gpr_idx_on s0, 16
|
||||
// CHECK-NEXT:{{^}} ^
|
||||
|
||||
//==============================================================================
|
||||
// invalid operand (violates constant bus restrictions)
|
||||
|
||||
v_add_f32_e64 v0, flat_scratch_hi, m0
|
||||
// CHECK: error: invalid operand (violates constant bus restrictions)
|
||||
// CHECK-NEXT:{{^}}v_add_f32_e64 v0, flat_scratch_hi, m0
|
||||
// CHECK-NEXT:{{^}}^
|
||||
|
||||
//==============================================================================
|
||||
// r128 modifier is not supported on this GPU
|
||||
|
||||
image_atomic_add v10, v6, s[8:15] dmask:0x1 r128
|
||||
// CHECK: error: r128 modifier is not supported on this GPU
|
||||
// CHECK-NEXT:{{^}}image_atomic_add v10, v6, s[8:15] dmask:0x1 r128
|
||||
// CHECK-NEXT:{{^}} ^
|
||||
|
||||
//==============================================================================
|
||||
// unified format is not supported on this GPU
|
||||
|
||||
tbuffer_store_format_xyzw v[1:4], v1, s[4:7], s0 format:[BUF_FMT_8_SNORM,BUF_DATA_FORMAT_8] idxen
|
||||
// CHECK: error: unified format is not supported on this GPU
|
||||
// CHECK-NEXT:{{^}}tbuffer_store_format_xyzw v[1:4], v1, s[4:7], s0 format:[BUF_FMT_8_SNORM,BUF_DATA_FORMAT_8] idxen
|
||||
// CHECK-NEXT:{{^}} ^
|
||||
|
||||
//==============================================================================
|
||||
// duplicate format
|
||||
|
||||
tbuffer_store_format_xyzw v[1:4], off, ttmp[4:7], dfmt:1 s0 format:[BUF_NUM_FORMAT_FLOAT]
|
||||
// CHECK: error: duplicate format
|
||||
// CHECK-NEXT:{{^}}tbuffer_store_format_xyzw v[1:4], off, ttmp[4:7], dfmt:1 s0 format:[BUF_NUM_FORMAT_FLOAT]
|
||||
// CHECK-NEXT:{{^}} ^
|
||||
|
||||
//==============================================================================
|
||||
// out of range dfmt
|
||||
|
||||
tbuffer_store_format_xyzw v[1:4], off, ttmp[4:7] dfmt:16 nfmt:1 s0
|
||||
// CHECK: error: out of range dfmt
|
||||
// CHECK-NEXT:{{^}}tbuffer_store_format_xyzw v[1:4], off, ttmp[4:7] dfmt:16 nfmt:1 s0
|
||||
// CHECK-NEXT:{{^}} ^
|
||||
|
||||
//==============================================================================
|
||||
// out of range nfmt
|
||||
|
||||
tbuffer_store_format_xyzw v[1:4], off, ttmp[4:7] dfmt:1 nfmt:-1 s0
|
||||
// CHECK: error: out of range nfmt
|
||||
// CHECK-NEXT:{{^}}tbuffer_store_format_xyzw v[1:4], off, ttmp[4:7] dfmt:1 nfmt:-1 s0
|
||||
// CHECK-NEXT:{{^}} ^
|
Loading…
x
Reference in New Issue
Block a user