1// RUN: not llvm-mc -triple=amdgcn -mcpu=tahiti %s 2>&1 | FileCheck %s --check-prefix=NOGCN --implicit-check-not=error: 2// RUN: not llvm-mc -triple=amdgcn -mcpu=fiji %s 2>&1 | FileCheck %s --check-prefix=NOGCN --implicit-check-not=error: 3// RUN: not llvm-mc -triple=amdgcn -mcpu=gfx900 %s 2>&1 | FileCheck %s --check-prefix=NOGFX9 --implicit-check-not=error: 4// RUN: not llvm-mc -triple=amdgcn -mcpu=gfx90a %s 2>&1 | FileCheck %s --check-prefix=NOGFX90A --implicit-check-not=error: 5 6//===----------------------------------------------------------------------===// 7// Image Load/Store 8//===----------------------------------------------------------------------===// 9 10image_load v[4:6], v[237:240], s[28:35] dmask:0x7 tfe 11// NOGCN: error: image data size does not match dmask and tfe 12// NOGFX9: error: image data size does not match dmask, d16 and tfe 13// NOGFX90A: :[[@LINE-3]]:{{[0-9]+}}: error: invalid operand for instruction 14 15image_load v[4:5], v[237:240], s[28:35] dmask:0x7 16// NOGCN: error: image data size does not match dmask and tfe 17// NOGFX9: error: image data size does not match dmask, d16 and tfe 18// NOGFX90A: :[[@LINE-3]]:{{[0-9]+}}: error: image data size does not match dmask and d16 19 20image_store v[4:7], v[237:240], s[28:35] dmask:0x7 21// NOGCN: error: image data size does not match dmask and tfe 22// NOGFX9: error: image data size does not match dmask, d16 and tfe 23// NOGFX90A: :[[@LINE-3]]:{{[0-9]+}}: error: image data size does not match dmask and d16 24 25image_store v[4:7], v[237:240], s[28:35] dmask:0xe 26// NOGCN: error: image data size does not match dmask and tfe 27// NOGFX9: error: image data size does not match dmask, d16 and tfe 28// NOGFX90A: :[[@LINE-3]]:{{[0-9]+}}: error: image data size does not match dmask and d16 29 30image_load v4, v[237:240], s[28:35] tfe 31// NOGCN: error: image data size does not match dmask and tfe 32// NOGFX9: error: image data size does not match dmask, d16 and tfe 33// NOGFX90A: :[[@LINE-3]]:{{[0-9]+}}: error: invalid operand for instruction 34 35//===----------------------------------------------------------------------===// 36// Image Sample 37//===----------------------------------------------------------------------===// 38 39image_sample v[193:195], v[237:240], s[28:35], s[4:7] dmask:0x7 tfe 40// NOGCN: error: image data size does not match dmask and tfe 41// NOGFX9: error: image data size does not match dmask, d16 and tfe 42// NOGFX90A: :[[@LINE-3]]:{{[0-9]+}}: error: invalid operand for instruction 43 44image_sample v[193:195], v[237:240], s[28:35], s[4:7] dmask:0x3 45// NOGCN: error: image data size does not match dmask and tfe 46// NOGFX9: error: image data size does not match dmask, d16 and tfe 47// NOGFX90A: :[[@LINE-3]]:{{[0-9]+}}: error: image data size does not match dmask and d16 48 49image_sample v[193:195], v[237:240], s[28:35], s[4:7] dmask:0xf 50// NOGCN: error: image data size does not match dmask and tfe 51// NOGFX9: error: image data size does not match dmask, d16 and tfe 52// NOGFX90A: :[[@LINE-3]]:{{[0-9]+}}: error: image data size does not match dmask and d16 53 54//===----------------------------------------------------------------------===// 55// Image Atomics 56//===----------------------------------------------------------------------===// 57 58image_atomic_add v252, v2, s[8:15] dmask:0x1 tfe 59// NOGCN: error: image data size does not match dmask and tfe 60// NOGFX9: error: image data size does not match dmask and tfe 61// NOGFX90A: :[[@LINE-3]]:{{[0-9]+}}: error: invalid operand for instruction 62 63image_atomic_add v[6:7], v255, s[8:15] dmask:0x2 64// NOGCN: error: image data size does not match dmask and tfe 65// NOGFX9: error: image data size does not match dmask and tfe 66// NOGFX90A: :[[@LINE-3]]:{{[0-9]+}}: error: image data size does not match dmask 67 68image_atomic_add v[6:7], v255, s[8:15] dmask:0xf 69// NOGCN: error: image data size does not match dmask and tfe 70// NOGFX9: error: image data size does not match dmask and tfe 71// NOGFX90A: :[[@LINE-3]]:{{[0-9]+}}: error: image data size does not match dmask 72 73image_atomic_cmpswap v[4:7], v[192:195], s[28:35] dmask:0xf tfe 74// NOGCN: error: image data size does not match dmask and tfe 75// NOGFX9: error: image data size does not match dmask and tfe 76// NOGFX90A: :[[@LINE-3]]:{{[0-9]+}}: error: invalid operand for instruction 77 78image_atomic_add v252, v2, s[8:15] 79// NOGCN: error: invalid atomic image dmask 80// NOGFX9: error: invalid atomic image dmask 81// NOGFX90A: :[[@LINE-3]]:{{[0-9]+}}: error: invalid atomic image dmask 82 83image_atomic_add v[6:7], v255, s[8:15] dmask:0x2 tfe 84// NOGCN: error: invalid atomic image dmask 85// NOGFX9: error: invalid atomic image dmask 86// NOGFX90A: :[[@LINE-3]]:{{[0-9]+}}: error: invalid operand for instruction 87 88image_atomic_cmpswap v[4:7], v[192:195], s[28:35] dmask:0xe tfe 89// NOGCN: error: invalid atomic image dmask 90// NOGFX9: error: invalid atomic image dmask 91// NOGFX90A: :[[@LINE-3]]:{{[0-9]+}}: error: invalid operand for instruction 92 93//===----------------------------------------------------------------------===// 94// Image Gather 95//===----------------------------------------------------------------------===// 96 97image_gather4_cl v[5:8], v[1:4], s[8:15], s[12:15] dmask:0x3 98// NOGCN: error: invalid image_gather dmask: only one bit must be set 99// NOGFX9: error: invalid image_gather dmask: only one bit must be set 100// NOGFX90A: :[[@LINE-3]]:{{[0-9]+}}: error: instruction not supported on this GPU 101