| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,42 @@ | ||
| // This test verifies that loading an ELF file that has no section headers can | ||
| // load the dynamic symbol table using the DT_SYMTAB, DT_SYMENT, DT_HASH or | ||
| // the DT_GNU_HASH .dynamic key/value pairs that are loaded via the PT_DYNAMIC | ||
| // segment. | ||
|
|
||
| // RUN: llvm-mc -triple=x86_64-pc-linux -filetype=obj \ | ||
| // RUN: -o - - <<<".globl defined, undefined; defined:" | \ | ||
| // RUN: ld.lld /dev/stdin -o - --hash-style=gnu -export-dynamic -shared \ | ||
| // RUN: -z nosectionheader -o %t.gnu | ||
| // RUN: %lldb %t.gnu -b \ | ||
| // RUN: -o "image dump objfile" \ | ||
| // RUN: | FileCheck %s --dump-input=always --check-prefix=GNU | ||
| // GNU: (lldb) image dump objfile | ||
| // GNU: Dumping headers for 1 module(s). | ||
| // GNU: ObjectFileELF, file = | ||
| // GNU: ELF Header | ||
| // GNU: e_type = 0x0003 ET_DYN | ||
| // Make sure there are no section headers | ||
| // GNU: e_shnum = 0x00000000 | ||
| // Make sure we were able to load the symbols | ||
| // GNU: Symtab, file = {{.*}}elf-dynsym.test.tmp.gnu, num_symbols = 2: | ||
| // GNU-DAG: undefined | ||
| // GNU-DAG: defined | ||
|
|
||
| // RUN: llvm-mc -triple=x86_64-pc-linux -filetype=obj \ | ||
| // RUN: -o - - <<<".globl defined, undefined; defined:" | \ | ||
| // RUN: ld.lld /dev/stdin -o - --hash-style=sysv -export-dynamic -shared \ | ||
| // RUN: -z nosectionheader -o %t.sysv | ||
| // RUN: %lldb %t.sysv -b \ | ||
| // RUN: -o "image dump objfile" \ | ||
| // RUN: | FileCheck %s --dump-input=always --check-prefix=HASH | ||
| // HASH: (lldb) image dump objfile | ||
| // HASH: Dumping headers for 1 module(s). | ||
| // HASH: ObjectFileELF, file = | ||
| // HASH: ELF Header | ||
| // HASH: e_type = 0x0003 ET_DYN | ||
| // Make sure there are no section headers | ||
| // HASH: e_shnum = 0x00000000 | ||
| // Make sure we were able to load the symbols | ||
| // HASH: Symtab, file = {{.*}}elf-dynsym.test.tmp.sysv, num_symbols = 2: | ||
| // HASH-DAG: undefined | ||
| // HASH-DAG: defined |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,32 @@ | ||
| ; RUN: not llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx950 -filetype=null %s 2>&1 | FileCheck -check-prefix=ERROR-LIMIT160K %s | ||
| ; RUN: not llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx9-4-generic -filetype=null %s 2>&1 | FileCheck -check-prefix=ERROR-LIMIT64K %s | ||
| ; RUN: not llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx9-generic -filetype=null %s 2>&1 | FileCheck -check-prefix=ERROR-LIMIT64K %s | ||
| ; RUN: not llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx940 -filetype=null %s 2>&1 | FileCheck -check-prefix=ERROR-LIMIT64K %s | ||
| ; RUN: not llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx941 -filetype=null %s 2>&1 | FileCheck -check-prefix=ERROR-LIMIT64K %s | ||
| ; RUN: not llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx942 -filetype=null %s 2>&1 | FileCheck -check-prefix=ERROR-LIMIT64K %s | ||
| ; RUN: not llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -filetype=null %s 2>&1 | FileCheck -check-prefix=ERROR-LIMIT64K %s | ||
| ; RUN: not llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx906 -filetype=null %s 2>&1 | FileCheck -check-prefix=ERROR-LIMIT64K %s | ||
| ; RUN: not llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx908 -filetype=null %s 2>&1 | FileCheck -check-prefix=ERROR-LIMIT64K %s | ||
| ; RUN: not llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a -filetype=null %s 2>&1 | FileCheck -check-prefix=ERROR-LIMIT64K %s | ||
| ; RUN: not llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90c -filetype=null %s 2>&1 | FileCheck -check-prefix=ERROR-LIMIT64K %s | ||
| ; RUN: not llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 -filetype=null %s 2>&1 | FileCheck -check-prefix=ERROR-LIMIT64K %s | ||
| ; RUN: not llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1030 -filetype=null %s 2>&1 | FileCheck -check-prefix=ERROR-LIMIT64K %s | ||
| ; RUN: not llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -filetype=null %s 2>&1 | FileCheck -check-prefix=ERROR-LIMIT64K %s | ||
| ; RUN: not llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1200 -filetype=null %s 2>&1 | FileCheck -check-prefix=ERROR-LIMIT64K %s | ||
| ; RUN: not llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx803 -filetype=null %s 2>&1 | FileCheck -check-prefix=ERROR-LIMIT64K %s | ||
| ; RUN: not llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx700 -filetype=null %s 2>&1 | FileCheck -check-prefix=ERROR-LIMIT64K %s | ||
| ; RUN: not llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx600 -filetype=null %s 2>&1 | FileCheck -check-prefix=ERROR-LIMIT32K %s | ||
|
|
||
| ; gfx950 supports upto 160 KB LDS memory. The generic target does not. | ||
| ; This is a negative test to check when the LDS size exceeds the max usable limit. | ||
|
|
||
| ; ERROR-LIMIT160K: error: <unknown>:0:0: local memory (163844) exceeds limit (163840) in function 'test_lds_limit' | ||
| ; ERROR-LIMIT64K: error: <unknown>:0:0: local memory (163844) exceeds limit (65536) in function 'test_lds_limit' | ||
| ; ERROR-LIMIT32K: error: <unknown>:0:0: local memory (163844) exceeds limit (32768) in function 'test_lds_limit' | ||
| @dst = addrspace(3) global [40961 x i32] poison | ||
|
|
||
| define amdgpu_kernel void @test_lds_limit(i32 %val) { | ||
| %gep = getelementptr [40961 x i32], ptr addrspace(3) @dst, i32 0, i32 100 | ||
| store i32 %val, ptr addrspace(3) %gep | ||
| ret void | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,31 @@ | ||
| ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx950 -verify-machineinstrs < %s | FileCheck -check-prefix=GCN %s | ||
| ; RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx950 -verify-machineinstrs < %s | FileCheck -check-prefix=MESA %s | ||
|
|
||
| ; gfx950 supports upto 160 KB configurable LDS memory. | ||
| ; This test checks the max and above the old i.e. 128 KiB size of LDS that can be allocated. | ||
|
|
||
| @lds.i32 = addrspace(3) global i32 poison | ||
| @lds.array.size.131076 = addrspace(3) global [32768 x i32] poison | ||
| @lds.array.size.163840 = addrspace(3) global [40959 x i32] poison | ||
|
|
||
| ; GCN-LABEL: test_lds_array_size_131076: | ||
| ; GCN: .amdhsa_group_segment_fixed_size 131076 | ||
| ; GCN: ; LDSByteSize: 131076 bytes/workgroup | ||
| ; MESA: granulated_lds_size = 65 | ||
| define amdgpu_kernel void @test_lds_array_size_131076() { | ||
| %gep = getelementptr inbounds [32768 x i32], ptr addrspace(3) @lds.array.size.131076, i32 0, i32 20 | ||
| %val = load i32, ptr addrspace(3) %gep | ||
| store i32 %val, ptr addrspace(3) @lds.i32 | ||
| ret void | ||
| } | ||
|
|
||
| ; GCN-LABEL: test_lds_array_size_163840: | ||
| ; GCN: .amdhsa_group_segment_fixed_size 163840 | ||
| ; GCN: ; LDSByteSize: 163840 bytes/workgroup | ||
| ; MESA: granulated_lds_size = 80 | ||
| define amdgpu_kernel void @test_lds_array_size_163840() { | ||
| %gep = getelementptr inbounds [40959 x i32], ptr addrspace(3) @lds.array.size.163840 , i32 0, i32 20 | ||
| %val = load i32, ptr addrspace(3) %gep | ||
| store i32 %val, ptr addrspace(3) @lds.i32 | ||
| ret void | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,26 @@ | ||
| ; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx950 -verify-machineinstrs < %s | FileCheck -check-prefix=PAL %s | ||
|
|
||
| ; GFX950supports upto 160 KB configurable LDS memory. | ||
| ; This test checks the min and max size of LDS that can be allocated. | ||
|
|
||
| ; PAL: .shader_functions: | ||
| ; PAL: test_lds_array_i32: | ||
| ; PAL: .lds_size: 0x28000 | ||
| ; PAL: test_lds_i32: | ||
| ; PAL: .lds_size: 0x4 | ||
|
|
||
|
|
||
| @lds.i32 = addrspace(3) global i32 poison | ||
| @lds.array.i32 = addrspace(3) global [40959 x i32] poison | ||
|
|
||
| define amdgpu_gfx void @test_lds_i32(i32 %val) { | ||
| store i32 %val, ptr addrspace(3) @lds.i32 | ||
| ret void | ||
| } | ||
|
|
||
| define amdgpu_gfx void @test_lds_array_i32() { | ||
| %gep = getelementptr inbounds [40959 x i32], ptr addrspace(3) @lds.array.i32, i32 0, i32 20 | ||
| %val = load i32, ptr addrspace(3) %gep | ||
| store i32 %val, ptr addrspace(3) @lds.i32 | ||
| ret void | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,73 @@ | ||
| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 | ||
| ; RUN: llc -mtriple=riscv32 -verify-machineinstrs < %s \ | ||
| ; RUN: | FileCheck %s | ||
|
|
||
| define i64 @test_Pr_wide_scalar_simple(i64 noundef %0) nounwind { | ||
| ; CHECK-LABEL: test_Pr_wide_scalar_simple: | ||
| ; CHECK: # %bb.0: # %entry | ||
| ; CHECK-NEXT: #APP | ||
| ; CHECK-NEXT: # a2 <- a0 | ||
| ; CHECK-NEXT: #NO_APP | ||
| ; CHECK-NEXT: mv a0, a2 | ||
| ; CHECK-NEXT: mv a1, a3 | ||
| ; CHECK-NEXT: ret | ||
| entry: | ||
| %1 = call i64 asm sideeffect "/* $0 <- $1 */", "=&R,R"(i64 %0) | ||
| ret i64 %1 | ||
| } | ||
|
|
||
| define i32 @test_Pr_wide_scalar_with_ops(i32 noundef %0) nounwind { | ||
| ; CHECK-LABEL: test_Pr_wide_scalar_with_ops: | ||
| ; CHECK: # %bb.0: # %entry | ||
| ; CHECK-NEXT: mv a1, a0 | ||
| ; CHECK-NEXT: #APP | ||
| ; CHECK-NEXT: # a2 <- a0 | ||
| ; CHECK-NEXT: #NO_APP | ||
| ; CHECK-NEXT: or a0, a2, a3 | ||
| ; CHECK-NEXT: ret | ||
| entry: | ||
| %1 = zext i32 %0 to i64 | ||
| %2 = shl i64 %1, 32 | ||
| %3 = or i64 %1, %2 | ||
| %4 = call i64 asm sideeffect "/* $0 <- $1 */", "=&R,R"(i64 %3) | ||
| %5 = trunc i64 %4 to i32 | ||
| %6 = lshr i64 %4, 32 | ||
| %7 = trunc i64 %6 to i32 | ||
| %8 = or i32 %5, %7 | ||
| ret i32 %8 | ||
| } | ||
|
|
||
| define i64 @test_Pr_wide_scalar_inout(ptr %0, i64 noundef %1) nounwind { | ||
| ; CHECK-LABEL: test_Pr_wide_scalar_inout: | ||
| ; CHECK: # %bb.0: # %entry | ||
| ; CHECK-NEXT: addi sp, sp, -16 | ||
| ; CHECK-NEXT: mv a3, a2 | ||
| ; CHECK-NEXT: sw a0, 12(sp) | ||
| ; CHECK-NEXT: mv a2, a1 | ||
| ; CHECK-NEXT: sw a1, 0(sp) | ||
| ; CHECK-NEXT: sw a3, 4(sp) | ||
| ; CHECK-NEXT: #APP | ||
| ; CHECK-NEXT: # a0; a2 | ||
| ; CHECK-NEXT: #NO_APP | ||
| ; CHECK-NEXT: sw a0, 12(sp) | ||
| ; CHECK-NEXT: sw a2, 0(sp) | ||
| ; CHECK-NEXT: sw a3, 4(sp) | ||
| ; CHECK-NEXT: mv a0, a2 | ||
| ; CHECK-NEXT: mv a1, a3 | ||
| ; CHECK-NEXT: addi sp, sp, 16 | ||
| ; CHECK-NEXT: ret | ||
| entry: | ||
| %2 = alloca ptr, align 4 | ||
| %3 = alloca i64, align 8 | ||
| store ptr %0, ptr %2, align 4 | ||
| store i64 %1, ptr %3, align 8 | ||
| %4 = load ptr, ptr %2, align 4 | ||
| %5 = load i64, ptr %3, align 8 | ||
| %6 = call { ptr, i64 } asm sideeffect "/* $0; $1 */", "=r,=R,0,1"(ptr %4, i64 %5) | ||
| %7 = extractvalue { ptr, i64} %6, 0 | ||
| %8 = extractvalue { ptr, i64 } %6, 1 | ||
| store ptr %7, ptr %2, align 4 | ||
| store i64 %8, ptr %3, align 8 | ||
| %9 = load i64, ptr %3, align 8 | ||
| ret i64 %9 | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,73 @@ | ||
| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 | ||
| ; RUN: llc -mtriple=riscv64 -verify-machineinstrs < %s \ | ||
| ; RUN: | FileCheck %s | ||
|
|
||
| define i128 @test_R_wide_scalar_simple(i128 noundef %0) nounwind { | ||
| ; CHECK-LABEL: test_R_wide_scalar_simple: | ||
| ; CHECK: # %bb.0: # %entry | ||
| ; CHECK-NEXT: #APP | ||
| ; CHECK-NEXT: # a2 <- a0 | ||
| ; CHECK-NEXT: #NO_APP | ||
| ; CHECK-NEXT: mv a0, a2 | ||
| ; CHECK-NEXT: mv a1, a3 | ||
| ; CHECK-NEXT: ret | ||
| entry: | ||
| %1 = call i128 asm sideeffect "/* $0 <- $1 */", "=&R,R"(i128 %0) | ||
| ret i128 %1 | ||
| } | ||
|
|
||
| define i64 @test_R_wide_scalar_with_ops(i64 noundef %0) nounwind { | ||
| ; CHECK-LABEL: test_R_wide_scalar_with_ops: | ||
| ; CHECK: # %bb.0: # %entry | ||
| ; CHECK-NEXT: mv a1, a0 | ||
| ; CHECK-NEXT: #APP | ||
| ; CHECK-NEXT: # a2 <- a0 | ||
| ; CHECK-NEXT: #NO_APP | ||
| ; CHECK-NEXT: or a0, a2, a3 | ||
| ; CHECK-NEXT: ret | ||
| entry: | ||
| %1 = zext i64 %0 to i128 | ||
| %2 = shl i128 %1, 64 | ||
| %3 = or i128 %1, %2 | ||
| %4 = call i128 asm sideeffect "/* $0 <- $1 */", "=&R,R"(i128 %3) | ||
| %5 = trunc i128 %4 to i64 | ||
| %6 = lshr i128 %4, 64 | ||
| %7 = trunc i128 %6 to i64 | ||
| %8 = or i64 %5, %7 | ||
| ret i64 %8 | ||
| } | ||
|
|
||
| define i128 @test_R_wide_scalar_inout(ptr %0, i128 noundef %1) nounwind { | ||
| ; CHECK-LABEL: test_R_wide_scalar_inout: | ||
| ; CHECK: # %bb.0: # %entry | ||
| ; CHECK-NEXT: addi sp, sp, -32 | ||
| ; CHECK-NEXT: mv a3, a2 | ||
| ; CHECK-NEXT: sd a0, 24(sp) | ||
| ; CHECK-NEXT: mv a2, a1 | ||
| ; CHECK-NEXT: sd a1, 0(sp) | ||
| ; CHECK-NEXT: sd a3, 8(sp) | ||
| ; CHECK-NEXT: #APP | ||
| ; CHECK-NEXT: # a0; a2 | ||
| ; CHECK-NEXT: #NO_APP | ||
| ; CHECK-NEXT: sd a0, 24(sp) | ||
| ; CHECK-NEXT: sd a2, 0(sp) | ||
| ; CHECK-NEXT: sd a3, 8(sp) | ||
| ; CHECK-NEXT: mv a0, a2 | ||
| ; CHECK-NEXT: mv a1, a3 | ||
| ; CHECK-NEXT: addi sp, sp, 32 | ||
| ; CHECK-NEXT: ret | ||
| entry: | ||
| %2 = alloca ptr, align 8 | ||
| %3 = alloca i128, align 16 | ||
| store ptr %0, ptr %2, align 8 | ||
| store i128 %1, ptr %3, align 16 | ||
| %4 = load ptr, ptr %2, align 8 | ||
| %5 = load i128, ptr %3, align 16 | ||
| %6 = call { ptr, i128 } asm sideeffect "/* $0; $1 */", "=r,=R,0,1"(ptr %4, i128 %5) | ||
| %7 = extractvalue { ptr, i128} %6, 0 | ||
| %8 = extractvalue { ptr, i128 } %6, 1 | ||
| store ptr %7, ptr %2, align 8 | ||
| store i128 %8, ptr %3, align 16 | ||
| %9 = load i128, ptr %3, align 16 | ||
| ret i128 %9 | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,179 @@ | ||
| // RUN: not llvm-mc -triple=amdgcn -mcpu=gfx950 %s 2>&1 | FileCheck -check-prefix=ERR %s | ||
|
|
||
| //===----------------------------------------------------------------------===// | ||
| // v_mfma_f32_32x32x4_xf32 | ||
| //===----------------------------------------------------------------------===// | ||
|
|
||
| v_mfma_f32_32x32x4_xf32 a[0:3], v[2:3], v[4:5], a[2:5] | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_32x32x4_xf32 v[0:3], v[0:3], v[0:3], v[0:3] | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_32x32x4_xf32 v[0:3], v[0:3], v[0:3], v[0:3] | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_32x32x4_xf32 a[0:3], a[0:3], a[0:3], a[0:3] | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_32x32x4_xf32 a[0:3], a[0:3], a[0:3], a[0:3] | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_32x32x4_xf32 v[0:3], a[0:3], v[0:3], 1.0 | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_32x32x4_xf32 a[0:3], v[0:3], a[0:3], 1.0 | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_32x32x4_xf32 v[0:3], v[0:3], v[0:3], v[0:3] blgp:5 | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_32x32x4_xf32 a[0:3], a[0:3], a[0:3], a[0:3] blgp:1 | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_32x32x4_xf32 a[0:3], a[0:3], a[0:3], a[0:3] cbsz:3 | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_32x32x4_xf32 a[0:3], a[0:3], a[0:3], a[0:3] abid:1 | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_32x32x4_xf32 a[0:3], a[0:3], a[0:3], a[0:3] cbsz:3 abid:1 | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_32x32x4_xf32 a[0:3], v[0:3], v[0:3], a[4:7] | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_32x32x4_xf32 v[0:3], a[0:3], a[0:3], v[4:7] | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_32x32x4_xf32 a[0:3], v[2:3], v[4:5], a[2:5] | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_32x32x4_xf32 v[0:3], v[0:3], v[0:3], v[0:3] | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_32x32x4_xf32 v[0:3], v[0:3], v[0:3], v[0:3] | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_32x32x4_xf32 a[0:3], a[0:3], a[0:3], a[0:3] | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_32x32x4_xf32 a[0:3], a[0:3], a[0:3], a[0:3] | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_32x32x4_xf32 v[0:3], a[0:3], v[0:3], 1.0 | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_32x32x4_xf32 a[0:3], v[0:3], a[0:3], 1.0 | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_32x32x4_xf32 v[0:3], v[0:3], v[0:3], v[0:3] blgp:5 | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_32x32x4_xf32 a[0:3], a[0:3], a[0:3], a[0:3] blgp:1 | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_32x32x4_xf32 a[0:3], a[0:3], a[0:3], a[0:3] cbsz:3 | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_32x32x4_xf32 a[0:3], a[0:3], a[0:3], a[0:3] abid:1 | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_32x32x4_xf32 a[0:3], a[0:3], a[0:3], a[0:3] cbsz:3 abid:1 | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_32x32x4_xf32 a[0:3], v[0:3], v[0:3], a[4:7] | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_32x32x4_xf32 v[0:3], a[0:3], a[0:3], v[4:7] | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
|
|
||
| //===----------------------------------------------------------------------===// | ||
| // v_mfma_f32_16x16x8_xf32 | ||
| //===----------------------------------------------------------------------===// | ||
|
|
||
| v_mfma_f32_16x16x8_xf32 a[0:3], v[2:3], v[4:5], a[2:5] | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_16x16x8_xf32 v[0:3], v[0:3], v[0:3], v[0:3] | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_16x16x8_xf32 v[0:3], v[0:3], v[0:3], v[0:3] | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_16x16x8_xf32 a[0:3], a[0:3], a[0:3], a[0:3] | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_16x16x8_xf32 a[0:3], a[0:3], a[0:3], a[0:3] | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_16x16x8_xf32 v[0:3], a[0:3], v[0:3], 1.0 | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_16x16x8_xf32 a[0:3], v[0:3], a[0:3], 1.0 | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_16x16x8_xf32 v[0:3], v[0:3], v[0:3], v[0:3] blgp:5 | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_16x16x8_xf32 a[0:3], a[0:3], a[0:3], a[0:3] blgp:1 | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_16x16x8_xf32 a[0:3], a[0:3], a[0:3], a[0:3] cbsz:3 | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_16x16x8_xf32 a[0:3], a[0:3], a[0:3], a[0:3] abid:1 | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_16x16x8_xf32 a[0:3], a[0:3], a[0:3], a[0:3] cbsz:3 abid:1 | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_16x16x8_xf32 a[0:3], v[0:3], v[0:3], a[4:7] | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_16x16x8_xf32 v[0:3], a[0:3], a[0:3], v[4:7] | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
|
|
||
| v_mfma_f32_16x16x8_xf32 a[0:3], v[2:3], v[4:5], a[2:5] | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_16x16x8_xf32 v[0:3], v[0:3], v[0:3], v[0:3] | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_16x16x8_xf32 v[0:3], v[0:3], v[0:3], v[0:3] | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_16x16x8_xf32 a[0:3], a[0:3], a[0:3], a[0:3] | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_16x16x8_xf32 a[0:3], a[0:3], a[0:3], a[0:3] | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_16x16x8_xf32 v[0:3], a[0:3], v[0:3], 1.0 | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_16x16x8_xf32 a[0:3], v[0:3], a[0:3], 1.0 | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_16x16x8_xf32 v[0:3], v[0:3], v[0:3], v[0:3] blgp:5 | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_16x16x8_xf32 a[0:3], a[0:3], a[0:3], a[0:3] blgp:1 | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_16x16x8_xf32 a[0:3], a[0:3], a[0:3], a[0:3] cbsz:3 | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_16x16x8_xf32 a[0:3], a[0:3], a[0:3], a[0:3] abid:1 | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_16x16x8_xf32 a[0:3], a[0:3], a[0:3], a[0:3] cbsz:3 abid:1 | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_16x16x8_xf32 a[0:3], v[0:3], v[0:3], a[4:7] | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU | ||
|
|
||
| v_mfma_f32_16x16x8_xf32 v[0:3], a[0:3], a[0:3], v[4:7] | ||
| // ERR: :[[@LINE-1]]:{{[0-9]+}}: error: instruction not supported on this GPU |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,13 @@ | ||
| # RUN: llvm-mc -disassemble -arch=amdgcn -mcpu=gfx950 -show-encoding %s 2>&1 | FileCheck --implicit-check-not=warning: --check-prefix=GFX950 %s | ||
|
|
||
| # GFX950: warning: invalid instruction encoding | ||
| 0x00,0x80,0xbe,0xd3,0x02,0x09,0x0a,0x04 | ||
|
|
||
| # GFX950: warning: invalid instruction encoding | ||
| 0x00,0x00,0xbe,0xd3,0x02,0x09,0x0a,0x04 | ||
|
|
||
| # GFX950: warning: invalid instruction encoding | ||
| 0x00,0x00,0xbf,0xd3,0x02,0x09,0x0a,0x04 | ||
|
|
||
| # GFX950: warning: invalid instruction encoding | ||
| 0x00,0x80,0xbf,0xd3,0x02,0x09,0x0a,0x04 |