1303 lines · plain
1; RUN: not llc < %s -mtriple=amdgcn -mcpu=bonaire | FileCheck --check-prefix=GCN %s2; RUN: not llc < %s -mtriple=amdgcn -mcpu=tonga | FileCheck --check-prefix=GCN --check-prefix=VI %s3 4; RUN: not llc < %s -mtriple=amdgcn -mcpu=bonaire 2>&1 | FileCheck --check-prefix=NOGCN --check-prefix=NOSI %s5; RUN: not llc < %s -mtriple=amdgcn -mcpu=tonga 2>&1 | FileCheck --check-prefix=NOGCN %s6 7; GCN-LABEL: {{^}}inline_reg_constraints:8; GCN: flat_load_dword v{{[0-9]+}}, v[{{[0-9]+:[0-9]+}}]9; GCN: flat_load_dwordx2 v[{{[0-9]+:[0-9]+}}], v[{{[0-9]+:[0-9]+}}]10; GCN: flat_load_dwordx2 v[{{[0-9]+:[0-9]+}}], v[{{[0-9]+:[0-9]+}}]11; GCN: flat_load_dwordx4 v[{{[0-9]+:[0-9]+}}], v[{{[0-9]+:[0-9]+}}]12; GCN: flat_load_dwordx4 v[{{[0-9]+:[0-9]+}}], v[{{[0-9]+:[0-9]+}}]13; GCN: s_load_dword s{{[0-9]+}}, s[{{[0-9]+:[0-9]+}}]14; GCN: s_load_dwordx2 s[{{[0-9]+:[0-9]+}}], s[{{[0-9]+:[0-9]+}}]15; GCN: s_load_dwordx2 s[{{[0-9]+:[0-9]+}}], s[{{[0-9]+:[0-9]+}}]16; GCN: s_load_dwordx4 s[{{[0-9]+:[0-9]+}}], s[{{[0-9]+:[0-9]+}}]17; GCN: s_load_dwordx4 s[{{[0-9]+:[0-9]+}}], s[{{[0-9]+:[0-9]+}}]18; GCN: s_load_dwordx8 s[{{[0-9]+:[0-9]+}}], s[{{[0-9]+:[0-9]+}}]19 20define amdgpu_kernel void @inline_reg_constraints(ptr addrspace(1) %ptr) {21entry:22 %v32 = tail call i32 asm sideeffect "flat_load_dword $0, $1", "=v,v"(ptr addrspace(1) %ptr)23 %v2_32 = tail call <2 x i32> asm sideeffect "flat_load_dwordx2 $0, $1", "=v,v"(ptr addrspace(1) %ptr)24 %v64 = tail call i64 asm sideeffect "flat_load_dwordx2 $0, $1", "=v,v"(ptr addrspace(1) %ptr)25 %v4_32 = tail call <4 x i32> asm sideeffect "flat_load_dwordx4 $0, $1", "=v,v"(ptr addrspace(1) %ptr)26 %v128 = tail call i128 asm sideeffect "flat_load_dwordx4 $0, $1", "=v,v"(ptr addrspace(1) %ptr)27 %s32 = tail call i32 asm sideeffect "s_load_dword $0, $1", "=s,s"(ptr addrspace(1) %ptr)28 %s32_2 = tail call <2 x i32> asm sideeffect "s_load_dwordx2 $0, $1", "=s,s"(ptr addrspace(1) %ptr)29 %s64 = tail call i64 asm sideeffect "s_load_dwordx2 $0, $1", "=s,s"(ptr addrspace(1) %ptr)30 %s4_32 = tail call <4 x i32> asm sideeffect "s_load_dwordx4 $0, $1", "=s,s"(ptr addrspace(1) %ptr)31 %s128 = tail call i128 asm sideeffect "s_load_dwordx4 $0, $1", "=s,s"(ptr addrspace(1) %ptr)32 %s256 = tail call <8 x i32> asm sideeffect "s_load_dwordx8 $0, $1", "=s,s"(ptr addrspace(1) %ptr)33 ret void34}35 36; GCN-LABEL: {{^}}inline_sreg_constraint_m0:37; GCN: s_mov_b32 m0, -138; GCN-NOT: m039; GCN: ; use m040define amdgpu_kernel void @inline_sreg_constraint_m0() {41 %m0 = tail call i32 asm sideeffect "s_mov_b32 m0, -1", "={m0}"()42 tail call void asm sideeffect "; use $0", "s"(i32 %m0)43 ret void44}45 46; GCN-LABEL: {{^}}inline_sreg_constraint_imm_i32:47; GCN: s_mov_b32 [[REG:s[0-9]+]], 3248; GCN: ; use [[REG]]49define amdgpu_kernel void @inline_sreg_constraint_imm_i32() {50 tail call void asm sideeffect "; use $0", "s"(i32 32)51 ret void52}53 54; GCN-LABEL: {{^}}inline_sreg_constraint_imm_f32:55; GCN: s_mov_b32 [[REG:s[0-9]+]], 1.056; GCN: ; use [[REG]]57define amdgpu_kernel void @inline_sreg_constraint_imm_f32() {58 tail call void asm sideeffect "; use $0", "s"(float 1.0)59 ret void60}61 62; GCN-LABEL: {{^}}inline_sreg_constraint_imm_i64:63; GCN: s_mov_b64 [[REG:s\[[0-9:]+\]]], -4{{$}}64; GCN: ; use [[REG]]65define amdgpu_kernel void @inline_sreg_constraint_imm_i64() {66 tail call void asm sideeffect "; use $0", "s"(i64 -4)67 ret void68}69 70; GCN-LABEL: {{^}}inline_sreg_constraint_imm_f64:71; GCN: s_mov_b64 [[REG:s\[[0-9:]+\]]], 1.0{{$}}72; GCN: ; use [[REG]]73define amdgpu_kernel void @inline_sreg_constraint_imm_f64() {74 tail call void asm sideeffect "; use $0", "s"(double 1.0)75 ret void76}77 78;==============================================================================79; 'A' constraint, 16-bit operand80;==============================================================================81 82; NOSI: error: invalid operand for inline asm constraint 'A'83; VI-LABEL: {{^}}inline_A_constraint_H0:84; VI: v_mov_b32 {{v[0-9]+}}, 6485define i32 @inline_A_constraint_H0() {86 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,A"(i16 64)87 ret i32 %v088}89 90; NOSI: error: invalid operand for inline asm constraint 'A'91; VI-LABEL: {{^}}inline_A_constraint_H1:92; VI: v_mov_b32 {{v[0-9]+}}, -1693define i32 @inline_A_constraint_H1() {94 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,A"(i16 -16)95 ret i32 %v096}97 98; NOSI: error: invalid operand for inline asm constraint 'A'99; VI-LABEL: {{^}}inline_A_constraint_H2:100define i32 @inline_A_constraint_H2() {101 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,A"(i16 bitcast (half 1.0 to i16))102 ret i32 %v0103}104 105; NOSI: error: invalid operand for inline asm constraint 'A'106; VI-LABEL: {{^}}inline_A_constraint_H3:107define i32 @inline_A_constraint_H3() {108 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,A"(i16 bitcast (half -1.0 to i16))109 ret i32 %v0110}111 112; NOSI: error: invalid operand for inline asm constraint 'A'113; VI-LABEL: {{^}}inline_A_constraint_H4:114define i32 @inline_A_constraint_H4() {115 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,A"(half 0xH3118)116 ret i32 %v0117}118 119; NOSI: error: invalid operand for inline asm constraint 'A'120; VI-LABEL: {{^}}inline_A_constraint_H5:121define i32 @inline_A_constraint_H5() {122 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,A"(i16 bitcast (half 0xH3118 to i16))123 ret i32 %v0124}125 126; NOSI: error: invalid operand for inline asm constraint 'A'127; VI-LABEL: {{^}}inline_A_constraint_H6:128define i32 @inline_A_constraint_H6() {129 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,A"(half -0.5)130 ret i32 %v0131}132 133; NOGCN: error: invalid operand for inline asm constraint 'A'134define i32 @inline_A_constraint_H7() {135 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,A"(i16 bitcast (half 0xH3119 to i16))136 ret i32 %v0137}138 139; NOGCN: error: invalid operand for inline asm constraint 'A'140define i32 @inline_A_constraint_H8() {141 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,A"(i16 bitcast (half 0xH3117 to i16))142 ret i32 %v0143}144 145; NOGCN: error: invalid operand for inline asm constraint 'A'146define i32 @inline_A_constraint_H9() {147 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,A"(i16 65)148 ret i32 %v0149}150 151;==============================================================================152; 'A' constraint, 32-bit operand153;==============================================================================154 155; GCN-LABEL: {{^}}inline_A_constraint_F0:156; GCN: v_mov_b32 {{v[0-9]+}}, -16157define i32 @inline_A_constraint_F0() {158 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,A"(i32 -16)159 ret i32 %v0160}161 162; GCN-LABEL: {{^}}inline_A_constraint_F1:163; GCN: v_mov_b32 {{v[0-9]+}}, 1164define i32 @inline_A_constraint_F1() {165 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,A"(i32 1)166 ret i32 %v0167}168 169; GCN-LABEL: {{^}}inline_A_constraint_F2:170; GCN: v_mov_b32 {{v[0-9]+}}, 0xbf000000171define i32 @inline_A_constraint_F2() {172 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,A"(i32 bitcast (float -0.5 to i32))173 ret i32 %v0174}175 176; GCN-LABEL: {{^}}inline_A_constraint_F3:177; GCN: v_mov_b32 {{v[0-9]+}}, 0x40000000178define i32 @inline_A_constraint_F3() {179 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,A"(i32 bitcast (float 2.0 to i32))180 ret i32 %v0181}182 183; GCN-LABEL: {{^}}inline_A_constraint_F4:184; GCN: v_mov_b32 {{v[0-9]+}}, 0xc0800000185define i32 @inline_A_constraint_F4() {186 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,A"(float -4.0)187 ret i32 %v0188}189 190; NOSI: error: invalid operand for inline asm constraint 'A'191; VI-LABEL: {{^}}inline_A_constraint_F5:192; VI: v_mov_b32 {{v[0-9]+}}, 0x3e22f983193define i32 @inline_A_constraint_F5() {194 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,A"(i32 1042479491)195 ret i32 %v0196}197 198; GCN-LABEL: {{^}}inline_A_constraint_F6:199; GCN: v_mov_b32 {{v[0-9]+}}, 0x3f000000200define i32 @inline_A_constraint_F6() {201 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,A"(float 0.5)202 ret i32 %v0203}204 205; NOGCN: error: invalid operand for inline asm constraint 'A'206define i32 @inline_A_constraint_F7() {207 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,A"(i32 1042479490)208 ret i32 %v0209}210 211; NOGCN: error: invalid operand for inline asm constraint 'A'212define i32 @inline_A_constraint_F8() {213 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,A"(i32 -17)214 ret i32 %v0215}216 217;==============================================================================218; 'A' constraint, 64-bit operand219;==============================================================================220 221; GCN-LABEL: {{^}}inline_A_constraint_D0:222; GCN: v_mov_b32 {{v[0-9]+}}, -16223define i32 @inline_A_constraint_D0() {224 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,A"(i64 -16)225 ret i32 %v0226}227 228; GCN-LABEL: {{^}}inline_A_constraint_D1:229; GCN: v_cvt_f32_f64 {{v[0-9]+}}, 0xc000000000000000230define i32 @inline_A_constraint_D1() {231 %v0 = tail call i32 asm "v_cvt_f32_f64 $0, $1", "=v,A"(i64 bitcast (double -2.0 to i64))232 ret i32 %v0233}234 235; GCN-LABEL: {{^}}inline_A_constraint_D2:236; GCN: v_cvt_f32_f64 {{v[0-9]+}}, 0x3fe0000000000000237define i32 @inline_A_constraint_D2() {238 %v0 = tail call i32 asm "v_cvt_f32_f64 $0, $1", "=v,A"(double 0.5)239 ret i32 %v0240}241 242; NOSI: error: invalid operand for inline asm constraint 'A'243; VI-LABEL: {{^}}inline_A_constraint_D3:244; VI: v_cvt_f32_f64 {{v[0-9]+}}, 0x3fc45f306dc9c882245define i32 @inline_A_constraint_D3() {246 %v0 = tail call i32 asm "v_cvt_f32_f64 $0, $1", "=v,A"(double 0.15915494309189532)247 ret i32 %v0248}249 250; NOSI: error: invalid operand for inline asm constraint 'A'251; VI-LABEL: {{^}}inline_A_constraint_D4:252; VI: v_cvt_f32_f64 {{v[0-9]+}}, 0x3fc45f306dc9c882253define i32 @inline_A_constraint_D4() {254 %v0 = tail call i32 asm "v_cvt_f32_f64 $0, $1", "=v,A"(i64 bitcast (double 0.15915494309189532 to i64))255 ret i32 %v0256}257 258; GCN-LABEL: {{^}}inline_A_constraint_D5:259; GCN: v_cvt_f32_f64 {{v[0-9]+}}, 0xc000000000000000260define i32 @inline_A_constraint_D5() {261 %v0 = tail call i32 asm "v_cvt_f32_f64 $0, $1", "=v,A"(double -2.0)262 ret i32 %v0263}264 265; NOGCN: error: invalid operand for inline asm constraint 'A'266define i32 @inline_A_constraint_D8() {267 %v0 = tail call i32 asm "v_cvt_f32_f64 $0, $1", "=v,A"(double 1.1)268 ret i32 %v0269}270 271; NOGCN: error: invalid operand for inline asm constraint 'A'272define i32 @inline_A_constraint_D9() {273 %v0 = tail call i32 asm "v_cvt_f32_f64 $0, $1", "=v,A"(i64 bitcast (double 0.1 to i64))274 ret i32 %v0275}276 277;==============================================================================278; 'A' constraint, v2x16 operand279;==============================================================================280 281; NOSI: error: invalid operand for inline asm constraint 'A'282; VI-LABEL: {{^}}inline_A_constraint_V0:283; VI: v_mov_b32 {{v[0-9]+}}, -4284define i32 @inline_A_constraint_V0() {285 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,A"(<2 x i16> <i16 -4, i16 -4>)286 ret i32 %v0287}288 289; NOSI: error: invalid operand for inline asm constraint 'A'290; VI-LABEL: {{^}}inline_A_constraint_V1:291define i32 @inline_A_constraint_V1() {292 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,A"(<2 x half> <half -0.5, half -0.5>)293 ret i32 %v0294}295 296; NOGCN: error: invalid operand for inline asm constraint 'A'297define i32 @inline_A_constraint_V2() {298 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,A"(<2 x i16> <i16 -4, i16 poison>)299 ret i32 %v0300}301 302; NOGCN: error: invalid operand for inline asm constraint 'A'303define i32 @inline_A_constraint_V3() {304 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,A"(<2 x half> <half poison, half -0.5>)305 ret i32 %v0306}307 308; NOGCN: error: invalid operand for inline asm constraint 'A'309define i32 @inline_A_constraint_V4() {310 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,A"(<2 x i16> <i16 1, i16 2>)311 ret i32 %v0312}313 314; NOGCN: error: invalid operand for inline asm constraint 'A'315define i32 @inline_A_constraint_V5() {316 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,A"(<4 x i16> <i16 0, i16 0, i16 0, i16 0>)317 ret i32 %v0318}319 320; NOGCN: error: invalid operand for inline asm constraint 'A'321define i32 @inline_A_constraint_V6() {322 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,A"(<2 x i32> <i32 0, i32 0>)323 ret i32 %v0324}325 326;==============================================================================327; 'A' constraint, type errors328;==============================================================================329 330; NOGCN: error: invalid operand for inline asm constraint 'A'331define i32 @inline_A_constraint_E1(i32 %x) {332 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,A"(i32 %x)333 ret i32 %v0334}335 336; NOGCN: error: invalid operand for inline asm constraint 'A'337define i32 @inline_A_constraint_E2() {338 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,A"(i128 100000000000000000000)339 ret i32 %v0340}341 342;==============================================================================343; 'I' constraint, 16-bit operand344;==============================================================================345 346; NOSI: error: invalid operand for inline asm constraint 'I'347; VI-LABEL: {{^}}inline_I_constraint_H0:348; VI: v_mov_b32 {{v[0-9]+}}, 64349define i32 @inline_I_constraint_H0() {350 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,I"(i16 64)351 ret i32 %v0352}353 354; NOSI: error: invalid operand for inline asm constraint 'I'355; VI-LABEL: {{^}}inline_I_constraint_H1:356; VI: v_mov_b32 {{v[0-9]+}}, -16357define i32 @inline_I_constraint_H1() {358 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,I"(half bitcast (i16 -16 to half))359 ret i32 %v0360}361 362; NOGCN: error: invalid operand for inline asm constraint 'I'363define i32 @inline_I_constraint_H6() {364 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,I"(half 1.0)365 ret i32 %v0366}367 368; NOGCN: error: invalid operand for inline asm constraint 'I'369define i32 @inline_I_constraint_H7() {370 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,I"(i16 bitcast (half -1.0 to i16))371 ret i32 %v0372}373 374; NOGCN: error: invalid operand for inline asm constraint 'I'375define i32 @inline_I_constraint_H8() {376 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,I"(i16 -17)377 ret i32 %v0378}379 380; NOGCN: error: invalid operand for inline asm constraint 'I'381define i32 @inline_I_constraint_H9() {382 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,I"(i16 65)383 ret i32 %v0384}385 386;==============================================================================387; 'I' constraint, 32-bit operand388;==============================================================================389 390; GCN-LABEL: {{^}}inline_I_constraint_F0:391; GCN: v_mov_b32 {{v[0-9]+}}, -16392define i32 @inline_I_constraint_F0() {393 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,I"(i32 -16)394 ret i32 %v0395}396 397; GCN-LABEL: {{^}}inline_I_constraint_F1:398; GCN: v_mov_b32 {{v[0-9]+}}, -1399define i32 @inline_I_constraint_F1() {400 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,I"(float bitcast (i32 -1 to float))401 ret i32 %v0402}403 404; NOGCN: error: invalid operand for inline asm constraint 'I'405define i32 @inline_I_constraint_F8() {406 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,I"(float -4.0)407 ret i32 %v0408}409 410; NOGCN: error: invalid operand for inline asm constraint 'I'411define i32 @inline_I_constraint_F9() {412 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,I"(i32 -17)413 ret i32 %v0414}415 416;==============================================================================417; 'I' constraint, 64-bit operand418;==============================================================================419 420; GCN-LABEL: {{^}}inline_I_constraint_D0:421; GCN: v_mov_b32 {{v[0-9]+}}, -16422define i32 @inline_I_constraint_D0() {423 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,I"(i64 -16)424 ret i32 %v0425}426 427; NOGCN: error: invalid operand for inline asm constraint 'I'428define i32 @inline_I_constraint_D8() {429 %v0 = tail call i32 asm "v_cvt_f32_f64 $0, $1", "=v,I"(double 0.5)430 ret i32 %v0431}432 433; NOGCN: error: invalid operand for inline asm constraint 'I'434define i32 @inline_I_constraint_D9() {435 %v0 = tail call i32 asm "v_cvt_f32_f64 $0, $1", "=v,I"(i64 65)436 ret i32 %v0437}438 439;==============================================================================440; 'I' constraint, v2x16 operand441;==============================================================================442 443; NOSI: error: invalid operand for inline asm constraint 'I'444; VI-LABEL: {{^}}inline_I_constraint_V0:445; VI: v_mov_b32 {{v[0-9]+}}, -4446define i32 @inline_I_constraint_V0() {447 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,I"(<2 x i16> <i16 -4, i16 -4>)448 ret i32 %v0449}450 451; NOGCN: error: invalid operand for inline asm constraint 'I'452define i32 @inline_I_constraint_V1() {453 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,I"(<2 x half> <half -0.5, half -0.5>)454 ret i32 %v0455}456 457; NOGCN: error: invalid operand for inline asm constraint 'I'458define i32 @inline_I_constraint_V2() {459 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,I"(<2 x i16> <i16 -4, i16 poison>)460 ret i32 %v0461}462 463; NOGCN: error: invalid operand for inline asm constraint 'I'464define i32 @inline_I_constraint_V3() {465 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,I"(<2 x i16> <i16 1, i16 2>)466 ret i32 %v0467}468 469; NOGCN: error: invalid operand for inline asm constraint 'I'470define i32 @inline_I_constraint_V4() {471 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,I"(<4 x i16> <i16 0, i16 0, i16 0, i16 0>)472 ret i32 %v0473}474 475; NOGCN: error: invalid operand for inline asm constraint 'I'476define i32 @inline_I_constraint_V5() {477 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,I"(<2 x i32> <i32 0, i32 0>)478 ret i32 %v0479}480 481;==============================================================================482; 'I' constraint, type errors483;==============================================================================484 485; NOGCN: error: invalid operand for inline asm constraint 'I'486define i32 @inline_I_constraint_E1(i32 %x) {487 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,I"(i32 %x)488 ret i32 %v0489}490 491; NOGCN: error: invalid operand for inline asm constraint 'I'492define i32 @inline_I_constraint_E2() {493 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,I"(i128 100000000000000000000)494 ret i32 %v0495}496 497;==============================================================================498; 'J' constraint, 16-bit operand499;==============================================================================500 501; NOSI: error: invalid operand for inline asm constraint 'J'502; VI-LABEL: {{^}}inline_J_constraint_H0:503; VI: v_mov_b32 {{v[0-9]+}}, -1504define i32 @inline_J_constraint_H0() {505 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,J"(i16 65535)506 ret i32 %v0507}508 509; NOSI: error: invalid operand for inline asm constraint 'J'510; VI-LABEL: {{^}}inline_J_constraint_H1:511; VI: v_mov_b32 {{v[0-9]+}}, 0x7fff512define i32 @inline_J_constraint_H1() {513 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,J"(i16 32767)514 ret i32 %v0515}516 517; NOSI: error: invalid operand for inline asm constraint 'J'518; VI-LABEL: {{^}}inline_J_constraint_H2:519; VI: v_mov_b32 {{v[0-9]+}}, 0x8000520define i32 @inline_J_constraint_H2() {521 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,J"(i16 -32768)522 ret i32 %v0523}524 525; NOSI: error: invalid operand for inline asm constraint 'J'526; VI-LABEL: {{^}}inline_J_constraint_H3:527; VI: v_mov_b32 {{v[0-9]+}}, 0x4800528define i32 @inline_J_constraint_H3() {529 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,J"(half 8.0)530 ret i32 %v0531}532 533; NOSI: error: invalid operand for inline asm constraint 'J'534; VI-LABEL: {{^}}inline_J_constraint_H4:535; VI: v_mov_b32 {{v[0-9]+}}, -16536define i32 @inline_J_constraint_H4() {537 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,J"(half bitcast (i16 -16 to half))538 ret i32 %v0539}540 541;==============================================================================542; 'J' constraint, 32-bit operand543;==============================================================================544 545; GCN-LABEL: {{^}}inline_J_constraint_F0:546; GCN: v_mov_b32 {{v[0-9]+}}, -1547define i32 @inline_J_constraint_F0() {548 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,J"(i32 -1)549 ret i32 %v0550}551 552; GCN-LABEL: {{^}}inline_J_constraint_F1:553; GCN: v_mov_b32 {{v[0-9]+}}, 0x7fff554define i32 @inline_J_constraint_F1() {555 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,J"(i32 32767)556 ret i32 %v0557}558 559; GCN-LABEL: {{^}}inline_J_constraint_F2:560; GCN: v_mov_b32 {{v[0-9]+}}, 0xffff8000561define i32 @inline_J_constraint_F2() {562 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,J"(i32 -32768)563 ret i32 %v0564}565 566; NOGCN: error: invalid operand for inline asm constraint 'J'567define i32 @inline_J_constraint_F6() {568 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,J"(i32 32768)569 ret i32 %v0570}571 572; NOGCN: error: invalid operand for inline asm constraint 'J'573define i32 @inline_J_constraint_F7() {574 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,J"(i32 -32769)575 ret i32 %v0576}577 578; NOGCN: error: invalid operand for inline asm constraint 'J'579define i32 @inline_J_constraint_F8() {580 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,J"(float -4.0)581 ret i32 %v0582}583 584;==============================================================================585; 'J' constraint, 64-bit operand586;==============================================================================587 588; GCN-LABEL: {{^}}inline_J_constraint_D0:589; GCN: v_mov_b32 {{v[0-9]+}}, 0x7fff590define i32 @inline_J_constraint_D0() {591 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,J"(i64 32767)592 ret i32 %v0593}594 595; GCN-LABEL: {{^}}inline_J_constraint_D1:596; GCN: v_mov_b32 {{v[0-9]+}}, 0xffffffffffff8000597define i32 @inline_J_constraint_D1() {598 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,J"(i64 -32768)599 ret i32 %v0600}601 602; NOGCN: error: invalid operand for inline asm constraint 'J'603define i32 @inline_J_constraint_D8() {604 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,J"(i64 32768)605 ret i32 %v0606}607 608; NOGCN: error: invalid operand for inline asm constraint 'J'609define i32 @inline_J_constraint_D9() {610 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,J"(i64 -32769)611 ret i32 %v0612}613 614;==============================================================================615; 'J' constraint, v2x16 operand616;==============================================================================617 618; NOSI: error: invalid operand for inline asm constraint 'J'619; VI-LABEL: {{^}}inline_J_constraint_V0:620; VI: v_mov_b32 {{v[0-9]+}}, -4621define i32 @inline_J_constraint_V0() {622 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,J"(<2 x i16> <i16 -4, i16 -4>)623 ret i32 %v0624}625 626; NOSI: error: invalid operand for inline asm constraint 'J'627; VI-LABEL: {{^}}inline_J_constraint_V1:628; VI: v_mov_b32 {{v[0-9]+}}, 0x7fff629define i32 @inline_J_constraint_V1() {630 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,J"(<2 x i16> <i16 32767, i16 32767>)631 ret i32 %v0632}633 634; NOSI: error: invalid operand for inline asm constraint 'J'635; VI-LABEL: {{^}}inline_J_constraint_V2:636; VI: v_mov_b32 {{v[0-9]+}}, 0x8000637define i32 @inline_J_constraint_V2() {638 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,J"(<2 x i16> <i16 -32768, i16 -32768>)639 ret i32 %v0640}641 642; NOSI: error: invalid operand for inline asm constraint 'J'643; VI-LABEL: {{^}}inline_J_constraint_V3:644; VI: v_mov_b32 {{v[0-9]+}}, 0x4c00645define i32 @inline_J_constraint_V3() {646 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,J"(<2 x half> <half 16.0, half 16.0>)647 ret i32 %v0648}649 650;==============================================================================651; 'J' constraint, type errors652;==============================================================================653 654; NOGCN: error: invalid operand for inline asm constraint 'J'655define i32 @inline_J_constraint_E1(i32 %x) {656 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,J"(i32 %x)657 ret i32 %v0658}659 660; NOGCN: error: invalid operand for inline asm constraint 'J'661define i32 @inline_J_constraint_E2() {662 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,J"(i128 100000000000000000000)663 ret i32 %v0664}665 666;==============================================================================667; 'B' constraint, 16-bit operand668;==============================================================================669 670; NOSI: error: invalid operand for inline asm constraint 'B'671; VI-LABEL: {{^}}inline_B_constraint_H0:672; VI: v_mov_b32 {{v[0-9]+}}, 0x7fff673define i32 @inline_B_constraint_H0() {674 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,B"(i16 32767)675 ret i32 %v0676}677 678; NOSI: error: invalid operand for inline asm constraint 'B'679; VI-LABEL: {{^}}inline_B_constraint_H1:680; VI: v_mov_b32 {{v[0-9]+}}, -1681define i32 @inline_B_constraint_H1() {682 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,B"(i16 65535)683 ret i32 %v0684}685 686; NOSI: error: invalid operand for inline asm constraint 'B'687; VI-LABEL: {{^}}inline_B_constraint_H3:688; VI: v_mov_b32 {{v[0-9]+}}, 0x8000689define i32 @inline_B_constraint_H3() {690 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,B"(i16 -32768)691 ret i32 %v0692}693 694; NOSI: error: invalid operand for inline asm constraint 'B'695; VI-LABEL: {{^}}inline_B_constraint_H4:696; VI: v_mov_b32 {{v[0-9]+}}, 0x4a80697define i32 @inline_B_constraint_H4() {698 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,B"(half 13.0)699 ret i32 %v0700}701 702;==============================================================================703; 'B' constraint, 32-bit operand704;==============================================================================705 706; GCN-LABEL: {{^}}inline_B_constraint_F0:707; GCN: v_mov_b32 {{v[0-9]+}}, -1708define i32 @inline_B_constraint_F0() {709 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,B"(i32 4294967295)710 ret i32 %v0711}712 713; GCN-LABEL: {{^}}inline_B_constraint_F1:714; GCN: v_mov_b32 {{v[0-9]+}}, 0x80000000715define i32 @inline_B_constraint_F1() {716 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,B"(i32 2147483648)717 ret i32 %v0718}719 720; GCN-LABEL: {{^}}inline_B_constraint_F2:721; GCN: v_mov_b32 {{v[0-9]+}}, 0x42000000722define i32 @inline_B_constraint_F2() {723 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,B"(float 32.0)724 ret i32 %v0725}726 727;==============================================================================728; 'B' constraint, 64-bit operand729;==============================================================================730 731; GCN-LABEL: {{^}}inline_B_constraint_D0:732; GCN: v_mov_b32 {{v[0-9]+}}, 0x7fffffff733define i32 @inline_B_constraint_D0() {734 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,B"(i64 2147483647)735 ret i32 %v0736}737 738; GCN-LABEL: {{^}}inline_B_constraint_D1:739; GCN: v_mov_b32 {{v[0-9]+}}, -1740define i32 @inline_B_constraint_D1() {741 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,B"(i64 -1)742 ret i32 %v0743}744 745; GCN-LABEL: {{^}}inline_B_constraint_D2:746; GCN: v_mov_b32 {{v[0-9]+}}, 0xffffffff80000000747define i32 @inline_B_constraint_D2() {748 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,B"(i64 -2147483648)749 ret i32 %v0750}751 752; NOGCN: error: invalid operand for inline asm constraint 'B'753define i32 @inline_B_constraint_D7() {754 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,B"(i64 -2147483649)755 ret i32 %v0756}757 758; NOGCN: error: invalid operand for inline asm constraint 'B'759define i32 @inline_B_constraint_D8() {760 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,B"(i64 4294967295)761 ret i32 %v0762}763 764; NOGCN: error: invalid operand for inline asm constraint 'B'765define i32 @inline_B_constraint_D9() {766 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,B"(i64 2147483648)767 ret i32 %v0768}769 770;==============================================================================771; 'B' constraint, v2x16 operand772;==============================================================================773 774; NOSI: error: invalid operand for inline asm constraint 'B'775; VI-LABEL: {{^}}inline_B_constraint_V0:776; VI: v_mov_b32 {{v[0-9]+}}, 0x7fff777define i32 @inline_B_constraint_V0() {778 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,B"(<2 x i16> <i16 32767, i16 32767>)779 ret i32 %v0780}781 782; NOSI: error: invalid operand for inline asm constraint 'B'783; VI-LABEL: {{^}}inline_B_constraint_V1:784; VI: v_mov_b32 {{v[0-9]+}}, -1785define i32 @inline_B_constraint_V1() {786 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,B"(<2 x i16> <i16 -1, i16 -1>)787 ret i32 %v0788}789 790; NOSI: error: invalid operand for inline asm constraint 'B'791; VI-LABEL: {{^}}inline_B_constraint_V2:792; VI: v_mov_b32 {{v[0-9]+}}, 0x8000793define i32 @inline_B_constraint_V2() {794 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,B"(<2 x i16> <i16 -32768, i16 -32768>)795 ret i32 %v0796}797 798;==============================================================================799; 'C' constraint, 16-bit operand800;==============================================================================801 802; NOSI: error: invalid operand for inline asm constraint 'C'803; VI-LABEL: {{^}}inline_C_constraint_H0:804; VI: v_mov_b32 {{v[0-9]+}}, 0x7fff805define i32 @inline_C_constraint_H0() {806 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,C"(i16 32767)807 ret i32 %v0808}809 810; NOSI: error: invalid operand for inline asm constraint 'C'811; VI-LABEL: {{^}}inline_C_constraint_H1:812; VI: v_mov_b32 {{v[0-9]+}}, -1813define i32 @inline_C_constraint_H1() {814 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,C"(i16 65535)815 ret i32 %v0816}817 818; NOSI: error: invalid operand for inline asm constraint 'C'819; VI-LABEL: {{^}}inline_C_constraint_H3:820; VI: v_mov_b32 {{v[0-9]+}}, 0x8000821define i32 @inline_C_constraint_H3() {822 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,C"(i16 -32768)823 ret i32 %v0824}825 826; NOSI: error: invalid operand for inline asm constraint 'C'827; VI-LABEL: {{^}}inline_C_constraint_H4:828; VI: v_mov_b32 {{v[0-9]+}}, 0x4a80829define i32 @inline_C_constraint_H4() {830 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,C"(half 13.0)831 ret i32 %v0832}833 834;==============================================================================835; 'C' constraint, 32-bit operand836;==============================================================================837 838; GCN-LABEL: {{^}}inline_C_constraint_F0:839; GCN: v_mov_b32 {{v[0-9]+}}, -1840define i32 @inline_C_constraint_F0() {841 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,C"(i32 4294967295)842 ret i32 %v0843}844 845; GCN-LABEL: {{^}}inline_C_constraint_F1:846; GCN: v_mov_b32 {{v[0-9]+}}, 0x80000000847define i32 @inline_C_constraint_F1() {848 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,C"(i32 2147483648)849 ret i32 %v0850}851 852; GCN-LABEL: {{^}}inline_C_constraint_F2:853; GCN: v_mov_b32 {{v[0-9]+}}, 0x7fffffff854define i32 @inline_C_constraint_F2() {855 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,C"(i32 2147483647)856 ret i32 %v0857}858 859; GCN-LABEL: {{^}}inline_C_constraint_F3:860; GCN: v_mov_b32 {{v[0-9]+}}, 0x42000000861define i32 @inline_C_constraint_F3() {862 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,C"(float 32.0)863 ret i32 %v0864}865 866; GCN-LABEL: {{^}}inline_C_constraint_F4:867; GCN: v_mov_b32 {{v[0-9]+}}, -16868define i32 @inline_C_constraint_F4() {869 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,C"(i32 -16)870 ret i32 %v0871}872 873; GCN-LABEL: {{^}}inline_C_constraint_F5:874; GCN: v_mov_b32 {{v[0-9]+}}, 0xffffffef875define i32 @inline_C_constraint_F5() {876 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,C"(i32 -17)877 ret i32 %v0878}879 880;==============================================================================881; 'C' constraint, 64-bit operand882;==============================================================================883 884; GCN-LABEL: {{^}}inline_C_constraint_D0:885; GCN: v_mov_b32 {{v[0-9]+}}, 0xffffffff886define i32 @inline_C_constraint_D0() {887 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,C"(i64 4294967295)888 ret i32 %v0889}890 891; GCN-LABEL: {{^}}inline_C_constraint_D1:892; GCN: v_mov_b32 {{v[0-9]+}}, 0x80000000893define i32 @inline_C_constraint_D1() {894 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,C"(i64 2147483648)895 ret i32 %v0896}897 898; GCN-LABEL: {{^}}inline_C_constraint_D2:899; GCN: v_mov_b32 {{v[0-9]+}}, -16900define i32 @inline_C_constraint_D2() {901 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,C"(i64 -16)902 ret i32 %v0903}904 905; NOGCN: error: invalid operand for inline asm constraint 'C'906define i32 @inline_C_constraint_D8() {907 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,C"(i64 -17)908 ret i32 %v0909}910 911; NOGCN: error: invalid operand for inline asm constraint 'C'912define i32 @inline_C_constraint_D9() {913 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,C"(i64 4294967296)914 ret i32 %v0915}916 917;==============================================================================918; 'C' constraint, v2x16 operand919;==============================================================================920 921; NOSI: error: invalid operand for inline asm constraint 'C'922; VI-LABEL: {{^}}inline_C_constraint_V0:923; VI: v_mov_b32 {{v[0-9]+}}, 0x7fff924define i32 @inline_C_constraint_V0() {925 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,C"(<2 x i16> <i16 32767, i16 32767>)926 ret i32 %v0927}928 929; NOSI: error: invalid operand for inline asm constraint 'C'930; VI-LABEL: {{^}}inline_C_constraint_V1:931; VI: v_mov_b32 {{v[0-9]+}}, -1932define i32 @inline_C_constraint_V1() {933 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,C"(<2 x i16> <i16 -1, i16 -1>)934 ret i32 %v0935}936 937; NOSI: error: invalid operand for inline asm constraint 'C'938; VI-LABEL: {{^}}inline_C_constraint_V2:939; VI: v_mov_b32 {{v[0-9]+}}, 0x8000940define i32 @inline_C_constraint_V2() {941 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,C"(<2 x i16> <i16 -32768, i16 -32768>)942 ret i32 %v0943}944 945;==============================================================================946; 'DA' constraint, 16-bit operand947;==============================================================================948 949; NOSI: error: invalid operand for inline asm constraint 'DA'950; VI-LABEL: {{^}}inline_DA_constraint_H0:951; VI: v_mov_b32 {{v[0-9]+}}, 64952define i32 @inline_DA_constraint_H0() {953 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,^DA"(i16 64)954 ret i32 %v0955}956 957; NOSI: error: invalid operand for inline asm constraint 'DA'958; VI-LABEL: {{^}}inline_DA_constraint_H1:959; VI: v_mov_b32 {{v[0-9]+}}, -16960define i32 @inline_DA_constraint_H1() {961 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,^DA"(i16 -16)962 ret i32 %v0963}964 965; NOSI: error: invalid operand for inline asm constraint 'DA'966; VI-LABEL: {{^}}inline_DA_constraint_H2:967define i32 @inline_DA_constraint_H2() {968 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,^DA"(i16 bitcast (half 1.0 to i16))969 ret i32 %v0970}971 972; NOSI: error: invalid operand for inline asm constraint 'DA'973; VI-LABEL: {{^}}inline_DA_constraint_H3:974define i32 @inline_DA_constraint_H3() {975 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,^DA"(i16 bitcast (half -1.0 to i16))976 ret i32 %v0977}978 979; NOSI: error: invalid operand for inline asm constraint 'DA'980; VI-LABEL: {{^}}inline_DA_constraint_H4:981define i32 @inline_DA_constraint_H4() {982 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,^DA"(half 0xH3118)983 ret i32 %v0984}985 986; NOSI: error: invalid operand for inline asm constraint 'DA'987; VI-LABEL: {{^}}inline_DA_constraint_H5:988define i32 @inline_DA_constraint_H5() {989 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,^DA"(i16 bitcast (half 0xH3118 to i16))990 ret i32 %v0991}992 993; NOSI: error: invalid operand for inline asm constraint 'DA'994; VI-LABEL: {{^}}inline_DA_constraint_H6:995define i32 @inline_DA_constraint_H6() {996 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,^DA"(half -0.5)997 ret i32 %v0998}999 1000; NOGCN: error: invalid operand for inline asm constraint 'DA'1001define i32 @inline_DA_constraint_H7() {1002 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,^DA"(i16 bitcast (half 0xH3119 to i16))1003 ret i32 %v01004}1005 1006; NOGCN: error: invalid operand for inline asm constraint 'DA'1007define i32 @inline_DA_constraint_H8() {1008 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,^DA"(i16 -17)1009 ret i32 %v01010}1011 1012; NOGCN: error: invalid operand for inline asm constraint 'DA'1013define i32 @inline_DA_constraint_H9() {1014 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,^DA"(i16 65)1015 ret i32 %v01016}1017 1018;==============================================================================1019; 'DA' constraint, 32-bit operand1020;==============================================================================1021 1022; GCN-LABEL: {{^}}inline_DA_constraint_F0:1023; GCN: v_mov_b32 {{v[0-9]+}}, -161024define i32 @inline_DA_constraint_F0() {1025 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,^DA"(i32 -16)1026 ret i32 %v01027}1028 1029; GCN-LABEL: {{^}}inline_DA_constraint_F1:1030; GCN: v_mov_b32 {{v[0-9]+}}, 11031define i32 @inline_DA_constraint_F1() {1032 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,^DA"(i32 1)1033 ret i32 %v01034}1035 1036; GCN-LABEL: {{^}}inline_DA_constraint_F2:1037; GCN: v_mov_b32 {{v[0-9]+}}, 0xbf0000001038define i32 @inline_DA_constraint_F2() {1039 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,^DA"(i32 bitcast (float -0.5 to i32))1040 ret i32 %v01041}1042 1043; GCN-LABEL: {{^}}inline_DA_constraint_F3:1044; GCN: v_mov_b32 {{v[0-9]+}}, 0x400000001045define i32 @inline_DA_constraint_F3() {1046 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,^DA"(i32 bitcast (float 2.0 to i32))1047 ret i32 %v01048}1049 1050; GCN-LABEL: {{^}}inline_DA_constraint_F4:1051; GCN: v_mov_b32 {{v[0-9]+}}, 0xc08000001052define i32 @inline_DA_constraint_F4() {1053 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,^DA"(float -4.0)1054 ret i32 %v01055}1056 1057; NOSI: error: invalid operand for inline asm constraint 'DA'1058; VI-LABEL: {{^}}inline_DA_constraint_F5:1059; VI: v_mov_b32 {{v[0-9]+}}, 0x3e22f9831060define i32 @inline_DA_constraint_F5() {1061 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,^DA"(i32 1042479491)1062 ret i32 %v01063}1064 1065; GCN-LABEL: {{^}}inline_DA_constraint_F6:1066; GCN: v_mov_b32 {{v[0-9]+}}, 0x3f0000001067define i32 @inline_DA_constraint_F6() {1068 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,^DA"(float 0.5)1069 ret i32 %v01070}1071 1072; NOGCN: error: invalid operand for inline asm constraint 'DA'1073define i32 @inline_DA_constraint_F7() {1074 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,^DA"(i32 65)1075 ret i32 %v01076}1077 1078; NOGCN: error: invalid operand for inline asm constraint 'DA'1079define i32 @inline_DA_constraint_F8() {1080 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,^DA"(i32 -17)1081 ret i32 %v01082}1083 1084;==============================================================================1085; 'DA' constraint, 64-bit operand1086;==============================================================================1087 1088; GCN-LABEL: {{^}}inline_DA_constraint_D0:1089; GCN: v_mov_b32 {{v[0-9]+}}, 0x40fffffff01090define i32 @inline_DA_constraint_D0() {1091 %v0 = tail call i32 asm "v_mov_b32 $0, $1 >> 32", "=v,^DA"(i64 bitcast (double 0x40fffffff0 to i64))1092 ret i32 %v01093}1094 1095; GCN-LABEL: {{^}}inline_DA_constraint_D1:1096; GCN: v_mov_b32 {{v[0-9]+}}, 0xfffffff0000000401097define i32 @inline_DA_constraint_D1() {1098 %v0 = tail call i32 asm "v_mov_b32 $0, $1 >> 32", "=v,^DA"(i64 bitcast (double 0xfffffff000000040 to i64))1099 ret i32 %v01100}1101 1102; GCN-LABEL: {{^}}inline_DA_constraint_D2:1103; GCN: v_mov_b32 {{v[0-9]+}}, -11104define i32 @inline_DA_constraint_D2() {1105 %v0 = tail call i32 asm "v_mov_b32 $0, $1 >> 32", "=v,^DA"(i64 -1)1106 ret i32 %v01107}1108 1109; GCN-LABEL: {{^}}inline_DA_constraint_D3:1110; GCN: v_mov_b32 {{v[0-9]+}}, 0xbf000000c08000001111define i32 @inline_DA_constraint_D3() {1112 %v0 = tail call i32 asm "v_mov_b32 $0, $1 >> 32", "=v,^DA"(i64 bitcast (double 0xbf000000c0800000 to i64))1113 ret i32 %v01114}1115 1116; NOSI: error: invalid operand for inline asm constraint 'DA'1117; VI-LABEL: {{^}}inline_DA_constraint_D4:1118; VI: v_mov_b32 {{v[0-9]+}}, 0x3e22f9833e22f9831119define i32 @inline_DA_constraint_D4() {1120 %v0 = tail call i32 asm "v_mov_b32 $0, $1 >> 32", "=v,^DA"(i64 bitcast (double 0x3e22f9833e22f983 to i64))1121 ret i32 %v01122}1123 1124; NOGCN: error: invalid operand for inline asm constraint 'DA'1125define i32 @inline_DA_constraint_D5() {1126 %v0 = tail call i32 asm "v_mov_b32 $0, $1 >> 32", "=v,^DA"(i64 bitcast (double 0x0000004000000041 to i64))1127 ret i32 %v01128}1129 1130; NOGCN: error: invalid operand for inline asm constraint 'DA'1131define i32 @inline_DA_constraint_D8() {1132 %v0 = tail call i32 asm "v_mov_b32 $0, $1 >> 32", "=v,^DA"(i64 bitcast (double 0x0000004100000040 to i64))1133 ret i32 %v01134}1135 1136; NOGCN: error: invalid operand for inline asm constraint 'DA'1137define i32 @inline_DA_constraint_D9() {1138 %v0 = tail call i32 asm "v_mov_b32 $0, $1 >> 32", "=v,^DA"(double 100.0)1139 ret i32 %v01140}1141 1142;==============================================================================1143; 'DA' constraint, v2x16 operand1144;==============================================================================1145 1146; NOSI: error: invalid operand for inline asm constraint 'DA'1147; VI-LABEL: {{^}}inline_DA_constraint_V0:1148; VI: v_mov_b32 {{v[0-9]+}}, -41149define i32 @inline_DA_constraint_V0() {1150 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,^DA"(<2 x i16> <i16 -4, i16 -4>)1151 ret i32 %v01152}1153 1154; NOSI: error: invalid operand for inline asm constraint 'DA'1155; VI-LABEL: {{^}}inline_DA_constraint_V1:1156define i32 @inline_DA_constraint_V1() {1157 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,^DA"(<2 x half> <half -0.5, half -0.5>)1158 ret i32 %v01159}1160 1161; NOGCN: error: invalid operand for inline asm constraint 'DA'1162define i32 @inline_DA_constraint_V2() {1163 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,^DA"(<2 x i16> <i16 -4, i16 poison>)1164 ret i32 %v01165}1166 1167; NOGCN: error: invalid operand for inline asm constraint 'DA'1168define i32 @inline_DA_constraint_V6() {1169 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,^DA"(<2 x i32> <i32 0, i32 0>)1170 ret i32 %v01171}1172 1173;==============================================================================1174; 'DA' constraint, type errors1175;==============================================================================1176 1177; NOGCN: error: invalid operand for inline asm constraint 'DA'1178define i32 @inline_DA_constraint_E1(i32 %x) {1179 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,^DA"(i32 %x)1180 ret i32 %v01181}1182 1183; NOGCN: error: invalid operand for inline asm constraint 'DA'1184define i32 @inline_DA_constraint_E2() {1185 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,^DA"(i128 100000000000000000000)1186 ret i32 %v01187}1188 1189;==============================================================================1190; 'DB' constraint, 16-bit operand1191;==============================================================================1192 1193; NOSI: error: invalid operand for inline asm constraint 'DB'1194; VI-LABEL: {{^}}inline_DB_constraint_H0:1195; VI: v_mov_b32 {{v[0-9]+}}, 0x7fff1196define i32 @inline_DB_constraint_H0() {1197 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,^DB"(i16 32767)1198 ret i32 %v01199}1200 1201; NOSI: error: invalid operand for inline asm constraint 'DB'1202; VI-LABEL: {{^}}inline_DB_constraint_H1:1203; VI: v_mov_b32 {{v[0-9]+}}, -11204define i32 @inline_DB_constraint_H1() {1205 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,^DB"(i16 65535)1206 ret i32 %v01207}1208 1209; NOSI: error: invalid operand for inline asm constraint 'DB'1210; VI-LABEL: {{^}}inline_DB_constraint_H2:1211; VI: v_mov_b32 {{v[0-9]+}}, 0x4a801212define i32 @inline_DB_constraint_H2() {1213 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,^DB"(half 13.0)1214 ret i32 %v01215}1216 1217;==============================================================================1218; 'DB' constraint, 32-bit operand1219;==============================================================================1220 1221; GCN-LABEL: {{^}}inline_DB_constraint_F0:1222; GCN: v_mov_b32 {{v[0-9]+}}, -11223define i32 @inline_DB_constraint_F0() {1224 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,^DB"(i32 4294967295)1225 ret i32 %v01226}1227 1228; GCN-LABEL: {{^}}inline_DB_constraint_F1:1229; GCN: v_mov_b32 {{v[0-9]+}}, 0x800000001230define i32 @inline_DB_constraint_F1() {1231 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,^DB"(i32 2147483648)1232 ret i32 %v01233}1234 1235; GCN-LABEL: {{^}}inline_DB_constraint_F2:1236; GCN: v_mov_b32 {{v[0-9]+}}, 0x420000001237define i32 @inline_DB_constraint_F2() {1238 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,^DB"(float 32.0)1239 ret i32 %v01240}1241 1242;==============================================================================1243; 'DB' constraint, 64-bit operand1244;==============================================================================1245 1246; GCN-LABEL: {{^}}inline_DB_constraint_D0:1247; GCN: v_mov_b32 {{v[0-9]+}}, -11248define i32 @inline_DB_constraint_D0() {1249 %v0 = tail call i32 asm "v_mov_b32 $0, $1 >> 32", "=v,^DB"(i64 -1)1250 ret i32 %v01251}1252 1253; GCN-LABEL: {{^}}inline_DB_constraint_D1:1254; GCN: v_mov_b32 {{v[0-9]+}}, 0x1234567890abcdef1255define i32 @inline_DB_constraint_D1() {1256 %v0 = tail call i32 asm "v_mov_b32 $0, $1 >> 32", "=v,^DB"(i64 bitcast (double 0x1234567890abcdef to i64))1257 ret i32 %v01258}1259 1260;==============================================================================1261; 'DB' constraint, v2x16 operand1262;==============================================================================1263 1264; NOSI: error: invalid operand for inline asm constraint 'DB'1265; VI-LABEL: {{^}}inline_DB_constraint_V0:1266; VI: v_mov_b32 {{v[0-9]+}}, 0x7fff1267define i32 @inline_DB_constraint_V0() {1268 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,^DB"(<2 x i16> <i16 32767, i16 32767>)1269 ret i32 %v01270}1271 1272; NOSI: error: invalid operand for inline asm constraint 'DB'1273; VI-LABEL: {{^}}inline_DB_constraint_V1:1274; VI: v_mov_b32 {{v[0-9]+}}, -11275define i32 @inline_DB_constraint_V1() {1276 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,^DB"(<2 x i16> <i16 65535, i16 65535>)1277 ret i32 %v01278}1279 1280; NOSI: error: invalid operand for inline asm constraint 'DB'1281; VI-LABEL: {{^}}inline_DB_constraint_V2:1282; VI: v_mov_b32 {{v[0-9]+}}, 0xd6401283define i32 @inline_DB_constraint_V2() {1284 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,^DB"(<2 x half> <half -100.0, half -100.0>)1285 ret i32 %v01286}1287 1288;==============================================================================1289; 'DB' constraint, type errors1290;==============================================================================1291 1292; NOGCN: error: invalid operand for inline asm constraint 'DB'1293define i32 @inline_DB_constraint_E1(i32 %x) {1294 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,^DB"(i32 %x)1295 ret i32 %v01296}1297 1298; NOGCN: error: invalid operand for inline asm constraint 'DB'1299define i32 @inline_DB_constraint_E2() {1300 %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,^DB"(i128 100000000000000000000)1301 ret i32 %v01302}1303