diff options
Diffstat (limited to 'llvm/test')
| -rw-r--r-- | llvm/test/MC/AMDGPU/elf-lds-error.s | 19 | ||||
| -rw-r--r-- | llvm/test/MC/AMDGPU/elf-lds.s | 82 |
2 files changed, 101 insertions, 0 deletions
diff --git a/llvm/test/MC/AMDGPU/elf-lds-error.s b/llvm/test/MC/AMDGPU/elf-lds-error.s new file mode 100644 index 00000000000..4e0ec6a5778 --- /dev/null +++ b/llvm/test/MC/AMDGPU/elf-lds-error.s @@ -0,0 +1,19 @@ +// RUN: not llvm-mc -triple amdgcn-- -mcpu gfx900 %s -o - 2>&1 | FileCheck %s + +// CHECK: :[[@LINE+1]]:27: error: size is too large + .amdgpu_lds huge, 200000 + +// CHECK: :[[@LINE+1]]:30: error: size must be non-negative + .amdgpu_lds negsize, -4 + +// CHECK: :[[@LINE+1]]:36: error: alignment must be a power of two + .amdgpu_lds zero_align, 5, 0 + +// CHECK: :[[@LINE+1]]:39: error: alignment must be a power of two + .amdgpu_lds non_pot_align, 0, 12 + +// CHECK: :[[@LINE+1]]:36: error: alignment is too large + .amdgpu_lds huge_align, 0, 1099511627776 + +// CHECK: :[[@LINE+1]]:9: error: unknown directive + .amdgpu_ldsnowhitespace, 8 diff --git a/llvm/test/MC/AMDGPU/elf-lds.s b/llvm/test/MC/AMDGPU/elf-lds.s new file mode 100644 index 00000000000..e03f8a29583 --- /dev/null +++ b/llvm/test/MC/AMDGPU/elf-lds.s @@ -0,0 +1,82 @@ +// RUN: llvm-mc -filetype=obj -triple amdgcn-- -mcpu gfx900 %s -o - | llvm-readobj -t -r | FileCheck %s + + .text + .globl test_kernel + .p2align 8 + .type test_kernel,@function +test_kernel: + s_mov_b32 s0, lds0@abs32@lo + v_lshl_add_u32 v3, v0, 2, s0 + ds_read2_b32 v[1:2], v3 offset1:1 + + s_mov_b32 s0, lds4@abs32@lo + v_lshl_add_u32 v3, v0, 2, s0 + ds_write_b32 v3, v1 + s_endpgm +.Lfunc_end: + .size test_kernel, .Lfunc_end-test_kernel + + .globl lds0 + .amdgpu_lds lds0, 192, 16 + + .globl lds1 + .amdgpu_lds lds1,387,8 + + ; Weird whitespace cases + .globl lds2 + .amdgpu_lds lds2, 12 + + ; No alignment or .globl directive, not mentioned anywhere + .amdgpu_lds lds3, 16 + + ; No alignment or .globl directive, size 0, but mentioned in .text + .amdgpu_lds lds4, 0 + +// CHECK: Relocations [ +// CHECK: Section (3) .rel.text { +// CHECK-NEXT: 0x4 R_AMDGPU_ABS32 lds0 0x0 +// CHECK-NEXT: 0x1C R_AMDGPU_ABS32 lds4 0x0 +// CHECK-NEXT: } +// CHECK: ] + +// CHECK: Symbol { +// CHECK: Name: lds0 (54) +// CHECK-NEXT: Value: 0x10 +// CHECK-NEXT: Size: 192 +// CHECK-NEXT: Binding: Global (0x1) +// CHECK-NEXT: Type: Object (0x1) +// CHECK-NEXT: Other: 0 +// CHECK-NEXT: Section: Processor Specific (0xFF00) +// CHECK-NEXT: } + +// CHECK: Symbol { +// CHECK: Name: lds1 (49) +// CHECK-NEXT: Value: 0x8 +// CHECK-NEXT: Size: 387 +// CHECK-NEXT: Binding: Global (0x1) +// CHECK-NEXT: Type: Object (0x1) +// CHECK-NEXT: Other: 0 +// CHECK-NEXT: Section: Processor Specific (0xFF00) +// CHECK-NEXT: } + +// CHECK: Symbol { +// CHECK: Name: lds2 (44) +// CHECK-NEXT: Value: 0x4 +// CHECK-NEXT: Size: 12 +// CHECK-NEXT: Binding: Global (0x1) +// CHECK-NEXT: Type: Object (0x1) +// CHECK-NEXT: Other: 0 +// CHECK-NEXT: Section: Processor Specific (0xFF00) +// CHECK-NEXT: } + +// CHECK-NOT: Name: lds3 + +// CHECK: Symbol { +// CHECK: Name: lds4 (39) +// CHECK-NEXT: Value: 0x4 +// CHECK-NEXT: Size: 0 +// CHECK-NEXT: Binding: Global (0x1) +// CHECK-NEXT: Type: Object (0x1) +// CHECK-NEXT: Other: 0 +// CHECK-NEXT: Section: Processor Specific (0xFF00) +// CHECK-NEXT: } |

