218 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: not llc -mtriple=amdgcn -mcpu=gfx908 -filetype=null %s 2>&1 | FileCheck -check-prefix=ERR %s3; RUN: llc -mtriple=amdgcn -mcpu=gfx90a < %s | FileCheck %s4 5; FIXME: Shouldn't emit and6; ERR: error: couldn't allocate input reg for constraint 'VA'7define void @use_A_i16(i16 %x) {8; CHECK-LABEL: use_A_i16:9; CHECK: ; %bb.0:10; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11; CHECK-NEXT: v_and_b32_e32 v0, 0xffff, v012; CHECK-NEXT: ;;#ASMSTART13; CHECK-NEXT: ; use v014; CHECK-NEXT: ;;#ASMEND15; CHECK-NEXT: s_setpc_b64 s[30:31]16 call void asm sideeffect "; use $0", "^VA"(i16 %x)17 ret void18}19 20; ERR: error: couldn't allocate input reg for constraint 'VA'21define void @use_A_f16(half %x) {22; CHECK-LABEL: use_A_f16:23; CHECK: ; %bb.0:24; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)25; CHECK-NEXT: ;;#ASMSTART26; CHECK-NEXT: ; use v027; CHECK-NEXT: ;;#ASMEND28; CHECK-NEXT: s_setpc_b64 s[30:31]29 call void asm sideeffect "; use $0", "^VA"(half %x)30 ret void31}32 33; ERR: error: couldn't allocate input reg for constraint 'VA'34define void @use_A_bf16(bfloat %x) {35; CHECK-LABEL: use_A_bf16:36; CHECK: ; %bb.0:37; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)38; CHECK-NEXT: ;;#ASMSTART39; CHECK-NEXT: ; use v040; CHECK-NEXT: ;;#ASMEND41; CHECK-NEXT: s_setpc_b64 s[30:31]42 call void asm sideeffect "; use $0", "^VA"(bfloat %x)43 ret void44}45 46; ERR: error: couldn't allocate input reg for constraint 'VA'47define void @use_A_v2i16(<2 x i16> %x) {48; CHECK-LABEL: use_A_v2i16:49; CHECK: ; %bb.0:50; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)51; CHECK-NEXT: ;;#ASMSTART52; CHECK-NEXT: ; use v053; CHECK-NEXT: ;;#ASMEND54; CHECK-NEXT: s_setpc_b64 s[30:31]55 call void asm sideeffect "; use $0", "^VA"(<2 x i16> %x)56 ret void57}58 59; ERR: error: couldn't allocate input reg for constraint 'VA'60define void @use_A_v2f16(<2 x half> %x) {61; CHECK-LABEL: use_A_v2f16:62; CHECK: ; %bb.0:63; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)64; CHECK-NEXT: ;;#ASMSTART65; CHECK-NEXT: ; use v066; CHECK-NEXT: ;;#ASMEND67; CHECK-NEXT: s_setpc_b64 s[30:31]68 call void asm sideeffect "; use $0", "^VA"(<2 x half> %x)69 ret void70}71 72; ERR: error: couldn't allocate input reg for constraint 'VA'73define void @use_A_v2bf16(<2 x bfloat> %x) {74; CHECK-LABEL: use_A_v2bf16:75; CHECK: ; %bb.0:76; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)77; CHECK-NEXT: ;;#ASMSTART78; CHECK-NEXT: ; use v079; CHECK-NEXT: ;;#ASMEND80; CHECK-NEXT: s_setpc_b64 s[30:31]81 call void asm sideeffect "; use $0", "^VA"(<2 x bfloat> %x)82 ret void83}84 85; ERR: error: couldn't allocate input reg for constraint 'VA'86define void @use_A_i32(i32 %x) {87; CHECK-LABEL: use_A_i32:88; CHECK: ; %bb.0:89; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)90; CHECK-NEXT: ;;#ASMSTART91; CHECK-NEXT: ; use v092; CHECK-NEXT: ;;#ASMEND93; CHECK-NEXT: s_setpc_b64 s[30:31]94 call void asm sideeffect "; use $0", "^VA"(i32 %x)95 ret void96}97 98; ERR: error: couldn't allocate input reg for constraint 'VA'99define void @use_A_f32(float %x) {100; CHECK-LABEL: use_A_f32:101; CHECK: ; %bb.0:102; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)103; CHECK-NEXT: ;;#ASMSTART104; CHECK-NEXT: ; use v0105; CHECK-NEXT: ;;#ASMEND106; CHECK-NEXT: s_setpc_b64 s[30:31]107 call void asm sideeffect "; use $0", "^VA"(float %x)108 ret void109}110 111; ERR: error: couldn't allocate input reg for constraint 'VA'112define void @use_A_i64(i64 %x) {113; CHECK-LABEL: use_A_i64:114; CHECK: ; %bb.0:115; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)116; CHECK-NEXT: ;;#ASMSTART117; CHECK-NEXT: ; use v[0:1]118; CHECK-NEXT: ;;#ASMEND119; CHECK-NEXT: s_setpc_b64 s[30:31]120 call void asm sideeffect "; use $0", "^VA"(i64 %x)121 ret void122}123 124; ERR: error: couldn't allocate input reg for constraint 'VA'125define void @use_A_f64(double %x) {126; CHECK-LABEL: use_A_f64:127; CHECK: ; %bb.0:128; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)129; CHECK-NEXT: ;;#ASMSTART130; CHECK-NEXT: ; use v[0:1]131; CHECK-NEXT: ;;#ASMEND132; CHECK-NEXT: s_setpc_b64 s[30:31]133 call void asm sideeffect "; use $0", "^VA"(double %x)134 ret void135}136 137; ERR: error: couldn't allocate input reg for constraint 'VA'138define void @use_A_p1(ptr addrspace(1) %x) {139; CHECK-LABEL: use_A_p1:140; CHECK: ; %bb.0:141; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)142; CHECK-NEXT: ;;#ASMSTART143; CHECK-NEXT: ; use v[0:1]144; CHECK-NEXT: ;;#ASMEND145; CHECK-NEXT: s_setpc_b64 s[30:31]146 call void asm sideeffect "; use $0", "^VA"(ptr addrspace(1) %x)147 ret void148}149 150; ERR: error: couldn't allocate input reg for constraint 'VA'151define void @use_A_v32i32(<32 x i32> %x) {152; CHECK-LABEL: use_A_v32i32:153; CHECK: ; %bb.0:154; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)155; CHECK-NEXT: buffer_load_dword v31, off, s[0:3], s32156; CHECK-NEXT: s_waitcnt vmcnt(0)157; CHECK-NEXT: ;;#ASMSTART158; CHECK-NEXT: ; use v[0:31]159; CHECK-NEXT: ;;#ASMEND160; CHECK-NEXT: s_setpc_b64 s[30:31]161 call void asm sideeffect "; use $0", "^VA"(<32 x i32> %x)162 ret void163}164 165; ERR: error: couldn't allocate input reg for constraint 'VA'166define void @use_A_v32f32(<32 x float> %x) {167; CHECK-LABEL: use_A_v32f32:168; CHECK: ; %bb.0:169; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)170; CHECK-NEXT: buffer_load_dword v31, off, s[0:3], s32171; CHECK-NEXT: s_waitcnt vmcnt(0)172; CHECK-NEXT: ;;#ASMSTART173; CHECK-NEXT: ; use v[0:31]174; CHECK-NEXT: ;;#ASMEND175; CHECK-NEXT: s_setpc_b64 s[30:31]176 call void asm sideeffect "; use $0", "^VA"(<32 x float> %x)177 ret void178}179 180; ERR: error: couldn't allocate output register for constraint 'VA'181define i16 @def_A_i16() {182; CHECK-LABEL: def_A_i16:183; CHECK: ; %bb.0:184; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)185; CHECK-NEXT: ;;#ASMSTART186; CHECK-NEXT: ; def v0187; CHECK-NEXT: ;;#ASMEND188; CHECK-NEXT: s_setpc_b64 s[30:31]189 %ret = call i16 asm sideeffect "; def $0", "=^VA"()190 ret i16 %ret191}192 193; ERR: error: couldn't allocate output register for constraint 'VA'194define i32 @def_A_i32() {195; CHECK-LABEL: def_A_i32:196; CHECK: ; %bb.0:197; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)198; CHECK-NEXT: ;;#ASMSTART199; CHECK-NEXT: ; def v0200; CHECK-NEXT: ;;#ASMEND201; CHECK-NEXT: s_setpc_b64 s[30:31]202 %ret = call i32 asm sideeffect "; def $0", "=^VA"()203 ret i32 %ret204}205 206; ERR: error: couldn't allocate output register for constraint 'VA'207define ptr addrspace(1) @def_A_p1() {208; CHECK-LABEL: def_A_p1:209; CHECK: ; %bb.0:210; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)211; CHECK-NEXT: ;;#ASMSTART212; CHECK-NEXT: ; def v[0:1]213; CHECK-NEXT: ;;#ASMEND214; CHECK-NEXT: s_setpc_b64 s[30:31]215 %ret = call ptr addrspace(1) asm sideeffect "; def $0", "=^VA"()216 ret ptr addrspace(1) %ret217}218