189 lines · plain
1// RUN: not llvm-mc -triple=amdgcn -mcpu=gfx1250 -show-encoding %s 2>&1 | FileCheck --check-prefixes=GFX1250-ERR --implicit-check-not=error: -strict-whitespace %s2 3s_load_b32 s4, s[2:3], 10 th:TH_LOAD_NT th:TH_LOAD_NT4// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction5// GFX1250-ERR: s_load_b32 s4, s[2:3], 10 th:TH_LOAD_NT th:TH_LOAD_NT6// GFX1250-ERR: ^7 8s_load_b32 s4, s[2:3], 10 scope:SCOPE_SE scope:SCOPE_SE9// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction10// GFX1250-ERR: s_load_b32 s4, s[2:3], 10 scope:SCOPE_SE scope:SCOPE_SE11// GFX1250-ERR: ^12 13s_load_b32 s4, s[2:3], 10 nv nv14// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction15// GFX1250-ERR: s_load_b32 s4, s[2:3], 10 nv nv16// GFX1250-ERR: ^17 18v_mov_b64 v[4:5], v[2:3] quad_perm:[1,1,1,1]19// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand.20// GFX1250-ERR: v_mov_b64 v[4:5], v[2:3] quad_perm:[1,1,1,1]21// GFX1250-ERR: ^22 23v_mov_b64 v[4:5], v[2:3] dpp8:[7,6,5,4,3,2,1,0]24// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand.25// GFX1250-ERR: v_mov_b64 v[4:5], v[2:3] dpp8:[7,6,5,4,3,2,1,0]26// GFX1250-ERR: ^27 28// For v_dual_cndmask_b32 use of the explicit src2 forces VOPD3 form even if it is vcc_lo.29// If src2 is omitted then it forces VOPD form. As a result a proper form of the instruction30// has to be used if the other component of the dual instruction cannot be used if that31// encoding.32 33v_dual_cndmask_b32 v2, v4, v1 :: v_dual_fma_f32 v7, v1, v2, v334// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid VOPDY instruction35// GFX1250-ERR: v_dual_cndmask_b32 v2, v4, v1 :: v_dual_fma_f32 v7, v1, v2, v336// GFX1250-ERR: ^37 38v_dual_fma_f32 v7, v1, v2, v3 :: v_dual_cndmask_b32 v2, v4, v139// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: too few operands for instruction40// GFX1250-ERR: v_dual_fma_f32 v7, v1, v2, v3 :: v_dual_cndmask_b32 v2, v4, v141// GFX1250-ERR: ^42 43v_dual_cndmask_b32 v7, v1, v2 :: v_dual_cndmask_b32 v2, v4, v1, vcc_lo44// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction45// GFX1250-ERR: v_dual_cndmask_b32 v7, v1, v2 :: v_dual_cndmask_b32 v2, v4, v1, vcc_lo46// GFX1250-ERR: ^47 48v_dual_cndmask_b32 v7, v1, v2, vcc_lo :: v_dual_cndmask_b32 v2, v4, v149// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: too few operands for instruction50// GFX1250-ERR: v_dual_cndmask_b32 v7, v1, v2, vcc_lo :: v_dual_cndmask_b32 v2, v4, v151// GFX1250-ERR: ^52 53// Check for unique 64-bit literal54 55v_mov_b64 v[4:5], v[2:3] quad_perm:[1,1,1,1]56// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand.57// GFX1250-ERR: v_mov_b64 v[4:5], v[2:3] quad_perm:[1,1,1,1]58// GFX1250-ERR: ^59 60v_mov_b64 v[4:5], v[2:3] dpp8:[7,6,5,4,3,2,1,0]61// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand.62// GFX1250-ERR: v_mov_b64 v[4:5], v[2:3] dpp8:[7,6,5,4,3,2,1,0]63// GFX1250-ERR: ^64 65s_andn2_b64 s[2:3], 0x10abcdef12345678, 0xabcdef1234567866// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: only one unique literal operand is allowed67// GFX1250-ERR: s_andn2_b64 s[2:3], 0x10abcdef12345678, 0xabcdef1234567868// GFX1250-ERR: ^69 70s_bfe_u64 s[2:3], 0x10abcdef12345678, 10071// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: only one unique literal operand is allowed72// GFX1250-ERR: s_bfe_u64 s[2:3], 0x10abcdef12345678, 10073// GFX1250-ERR: ^74 75s_call_b64 s[2:3], 0x10abcdef1234567876// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: expected a 16-bit signed jump offset77// GFX1250-ERR: s_call_b64 s[2:3], 0x10abcdef1234567878// GFX1250-ERR: ^79 80// VOP3 instructions cannot use 64-bit literals81 82v_ceil_f64_e64 v[254:255], 0x10abcdef1234567883// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction84// GFX1250-ERR: v_ceil_f64_e64 v[254:255], 0x10abcdef1234567885// GFX1250-ERR: ^86 87v_add_f64_e64 v[254:255], 0x10abcdef12345678, v[254:255]88// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction89// GFX1250-ERR: v_add_f64_e64 v[254:255], 0x10abcdef12345678, v[254:255]90// GFX1250-ERR: ^91 92v_cmp_lt_f64_e64 vcc_lo, 0x10abcdef12345678, v[254:255]93// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction94// GFX1250-ERR: v_cmp_lt_f64_e64 vcc_lo, 0x10abcdef12345678, v[254:255]95// GFX1250-ERR: ^96 97v_fma_f64 v[0:1], 0x10abcdef12345678, v[2:3], v[4:5]98// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction99// GFX1250-ERR: v_fma_f64 v[0:1], 0x10abcdef12345678, v[2:3], v[4:5]100// GFX1250-ERR: ^101 102// Do not allow 64-bit literals for 32-bit operands. This may be possible to103// encode but not practically useful and can be misleading.104 105s_bfe_u64 s[2:3], 0x10abcdef12345678, 0x10abcdef12345678106// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction107// GFX1250-ERR: s_bfe_u64 s[2:3], 0x10abcdef12345678, 0x10abcdef12345678108// GFX1250-ERR: ^109 110v_add_f32 v1, 0x12345678abcdef00, v2111// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction112// GFX1250-ERR: v_add_f32 v1, 0x12345678abcdef00, v2113// GFX1250-ERR: ^114 115v_ceil_f64 v[2:3], lit64(v[0:1])116// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: expected immediate with lit modifier117// GFX1250-ERR: v_ceil_f64 v[2:3], lit64(v[0:1]118// GFX1250-ERR: ^119 120v_ceil_f64 v[2:3], lit64(123121// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: expected closing parentheses122// GFX1250-ERR: v_ceil_f64 v[2:3], lit64(123123// GFX1250-ERR: ^124 125v_fmaak_f64 v[4:5], lit(lit64(0x7e8)), v[8:9], lit64(0x7e8)126// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand.127// GFX1250-ERR: v_fmaak_f64 v[4:5], lit(lit64(0x7e8)), v[8:9], lit64(0x7e8)128// GFX1250-ERR: ^129 130v_fmaak_f64 v[4:5], lit64(lit64(0x7e8)), v[8:9], lit64(0x7e8)131// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand.132// GFX1250-ERR: v_fmaak_f64 v[4:5], lit64(lit64(0x7e8)), v[8:9], lit64(0x7e8)133// GFX1250-ERR: ^134 135v_fmaak_f64 v[4:5], lit64(lit(0x7e8)), v[8:9], lit64(0x7e8)136// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand.137// GFX1250-ERR: v_fmaak_f64 v[4:5], lit64(lit(0x7e8)), v[8:9], lit64(0x7e8)138// GFX1250-ERR: ^139 140v_fmamk_f64 v[4:5], 123.0, 123.1, v[6:7]141// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: only one unique literal operand is allowed142// GFX1250-ERR: v_fmamk_f64 v[4:5], 123.0, 123.1, v[6:7]143// GFX1250-ERR: ^144 145v_fmamk_f64 v[4:5], 0x405ec00000000001, 123.0, v[6:7]146// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: only one unique literal operand is allowed147// GFX1250-ERR: v_fmamk_f64 v[4:5], 0x405ec00000000001, 123.0, v[6:7]148// GFX1250-ERR: ^149 150v_fmaak_f64 v[4:5], 123.1, v[6:7], 123.0151// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: only one unique literal operand is allowed152// GFX1250-ERR: v_fmaak_f64 v[4:5], 123.1, v[6:7], 123.0153// GFX1250-ERR: ^154 155v_fmaak_f64 v[4:5], 123.0, v[6:7], 0x405ec00000000001156// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: only one unique literal operand is allowed157// GFX1250-ERR: v_fmaak_f64 v[4:5], 123.0, v[6:7], 0x405ec00000000001158// GFX1250-ERR: ^159 160v_fmaak_f64 v[4:5], 0x7e8, v[8:9], lit64(0x7e8)161// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: only one unique literal operand is allowed162// GFX1250-ERR: v_fmaak_f64 v[4:5], 0x7e8, v[8:9], lit64(0x7e8)163// GFX1250-ERR: ^164 165v_pk_add_min_i16 v10, |v1|, v2, v3166// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand.167// GFX1250-ERR: v_pk_add_min_i16 v10, |v1|, v2, v3168// GFX1250-ERR: ^169 170v_pk_add_min_i16 v10, -v1, v2, v3171// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand.172// GFX1250-ERR: v_pk_add_min_i16 v10, -v1, v2, v3173// GFX1250-ERR: ^174 175v_pk_add_min_i16 v10, sext(v1), v2, v3176// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand.177// GFX1250-ERR: v_pk_add_min_i16 v10, sext(v1), v2, v3178// GFX1250-ERR: ^179 180v_pk_add_min_i16 v10, v1, v2, v3 neg_lo:[1,0,0]181// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand.182// GFX1250-ERR: v_pk_add_min_i16 v10, v1, v2, v3 neg_lo:[1,0,0]183// GFX1250-ERR: ^184 185v_pk_add_min_i16 v10, v1, v2, v3 neg_hi:[1,0,0]186// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand.187// GFX1250-ERR: v_pk_add_min_i16 v10, v1, v2, v3 neg_hi:[1,0,0]188// GFX1250-ERR: ^189