brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.3 KiB · fa32ee1 Raw
278 lines · plain
1; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx90a < %s | FileCheck --check-prefixes=GCN,GFX90A %s2; RUN: llc -global-isel=1 -global-isel-abort=2 -mtriple=amdgcn -mcpu=gfx90a < %s | FileCheck --check-prefixes=GCN,GFX90A %s3; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx942 < %s | FileCheck --check-prefixes=GCN,GFX942 %s4; RUN: llc -global-isel=1 -global-isel-abort=2 -mtriple=amdgcn -mcpu=gfx942 < %s | FileCheck --check-prefixes=GCN,GFX942 %s5; RUN: llc -global-isel=1 -global-isel-abort=2 -mtriple=amdgcn -mcpu=gfx9-4-generic --amdhsa-code-object-version=6 < %s | FileCheck --check-prefixes=GCN,GFX942 %s6 7; DPP control value 337 is valid for 64-bit DPP on gfx9428 9; GCN-LABEL: update_dpp_i64:10;11; GFX90A-DAG:    v_mov_b32_dpp v2, v0 row_newbcast:1 row_mask:0x1 bank_mask:0x112; GFX90A-DAG:    v_mov_b32_dpp v3, v1 row_newbcast:1 row_mask:0x1 bank_mask:0x113;14; GFX942:        v_mov_b64_dpp v[2:3], v[0:1] row_newbcast:1 row_mask:0x1 bank_mask:0x115;16; GCN:           global_store_dwordx2 v[4:5], v[2:3], off17 18define amdgpu_ps void @update_dpp_i64(i64 %in, i64 %old, ptr addrspace(1) %out) {19  %tmp0 = call i64 @llvm.amdgcn.update.dpp.i64(i64 %old, i64 %in, i32 337, i32 1, i32 1, i1 0)20  store i64 %tmp0, ptr addrspace(1) %out21  ret void22}23 24; GCN-LABEL: update_dpp_v2i32:25;26; GFX90A-DAG:    v_mov_b32_dpp v2, v0 row_newbcast:1 row_mask:0x1 bank_mask:0x127; GFX90A-DAG:    v_mov_b32_dpp v3, v1 row_newbcast:1 row_mask:0x1 bank_mask:0x128;29; GFX942:        v_mov_b64_dpp v[2:3], v[0:1] row_newbcast:1 row_mask:0x1 bank_mask:0x130;31; GCN:           global_store_dwordx2 v[4:5], v[2:3], off32 33define amdgpu_ps void @update_dpp_v2i32(<2 x i32> %in, <2 x i32> %old, ptr addrspace(1) %out) {34  %tmp0 = call <2 x i32> @llvm.amdgcn.update.dpp.v2i32(<2 x i32> %old, <2 x i32> %in, i32 337, i32 1, i32 1, i1 0)35  store <2 x i32> %tmp0, ptr addrspace(1) %out36  ret void37}38 39; GCN-LABEL: update_dpp_v3i32:40;41; GCN-DAG:    v_mov_b32_dpp v{{[0-9]+}}, v2 row_newbcast:1 row_mask:0x1 bank_mask:0x142; GCN-DAG:    v_mov_b32_dpp v{{[0-9]+}}, v1 row_newbcast:1 row_mask:0x1 bank_mask:0x143; GCN-DAG:    v_mov_b32_dpp v{{[0-9]+}}, v0 row_newbcast:1 row_mask:0x1 bank_mask:0x144;45; GCN:        global_store_dwordx346 47define amdgpu_ps void @update_dpp_v3i32(<3 x i32> %in, <3 x i32> %old, ptr addrspace(1) %out) {48  %tmp0 = call <3 x i32> @llvm.amdgcn.update.dpp.v3i32(<3 x i32> %old, <3 x i32> %in, i32 337, i32 1, i32 1, i1 0)49  store <3 x i32> %tmp0, ptr addrspace(1) %out50  ret void51}52 53; GCN-LABEL: update_dpp_v4i32:54;55; GFX90A-DAG:    v_mov_b32_dpp v6, v2 row_newbcast:1 row_mask:0x1 bank_mask:0x156; GFX90A-DAG:    v_mov_b32_dpp v7, v3 row_newbcast:1 row_mask:0x1 bank_mask:0x157; GFX90A-DAG:    v_mov_b32_dpp v4, v0 row_newbcast:1 row_mask:0x1 bank_mask:0x158; GFX90A-DAG:    v_mov_b32_dpp v5, v1 row_newbcast:1 row_mask:0x1 bank_mask:0x159;60; GFX942-DAG:    v_mov_b64_dpp v[6:7], v[2:3] row_newbcast:1 row_mask:0x1 bank_mask:0x161; GFX942-DAG:    v_mov_b64_dpp v[4:5], v[0:1] row_newbcast:1 row_mask:0x1 bank_mask:0x162;63; GCN:           global_store_dwordx4 v[8:9], v[4:7], off64 65define amdgpu_ps void @update_dpp_v4i32(<4 x i32> %in, <4 x i32> %old, ptr addrspace(1) %out) {66  %tmp0 = call <4 x i32> @llvm.amdgcn.update.dpp.v4i32(<4 x i32> %old, <4 x i32> %in, i32 337, i32 1, i32 1, i1 0)67  store <4 x i32> %tmp0, ptr addrspace(1) %out68  ret void69}70 71; GCN-LABEL: update_dpp_v2i32_poison:72;73; GFX90A-DAG:    v_mov_b32_dpp v0, v0 row_newbcast:1 row_mask:0x1 bank_mask:0x174; GFX90A-DAG:    v_mov_b32_dpp v1, v1 row_newbcast:1 row_mask:0x1 bank_mask:0x175;76; GFX942:        v_mov_b64_dpp v[0:1], v[0:1] row_newbcast:1 row_mask:0x1 bank_mask:0x177;78; GCN:           global_store_dwordx2 v[2:3], v[0:1], off79 80define amdgpu_ps void @update_dpp_v2i32_poison(<2 x i32> %in, ptr addrspace(1) %out) {81  %tmp0 = call <2 x i32> @llvm.amdgcn.update.dpp.v2i32(<2 x i32> poison, <2 x i32> %in, i32 337, i32 1, i32 1, i1 0)82  store <2 x i32> %tmp0, ptr addrspace(1) %out83  ret void84}85 86; GCN-LABEL: update_dpp_float:87;88; GCN:        v_mov_b32_dpp v1, v0 row_newbcast:1 row_mask:0x1 bank_mask:0x189;90; GCN:        global_store_dword v[2:3], v1, off91 92define amdgpu_ps void @update_dpp_float(float %in, float %old, ptr addrspace(1) %out) {93  %tmp0 = call float @llvm.amdgcn.update.dpp.f32(float %old, float %in, i32 337, i32 1, i32 1, i1 0)94  store float %tmp0, ptr addrspace(1) %out95  ret void96}97 98; GCN-LABEL: update_dpp_double:99;100; GFX90A-DAG:    v_mov_b32_dpp v2, v0 row_newbcast:1 row_mask:0x1 bank_mask:0x1101; GFX90A-DAG:    v_mov_b32_dpp v3, v1 row_newbcast:1 row_mask:0x1 bank_mask:0x1102;103; GFX942:        v_mov_b64_dpp v[2:3], v[0:1] row_newbcast:1 row_mask:0x1 bank_mask:0x1104;105; GCN:           global_store_dwordx2 v[4:5], v[2:3], off106 107define amdgpu_ps void @update_dpp_double(double %in, double %old, ptr addrspace(1) %out) {108  %tmp0 = call double @llvm.amdgcn.update.dpp.f64(double %old, double %in, i32 337, i32 1, i32 1, i1 0)109  store double %tmp0, ptr addrspace(1) %out110  ret void111}112 113; GCN-LABEL: update_dpp_float_poison:114;115; GCN:        v_mov_b32_dpp v0, v0 row_newbcast:1 row_mask:0x1 bank_mask:0x1116;117; GCN:        global_store_dword v[{{[0-9:]+}}], v0, off118 119define amdgpu_ps void @update_dpp_float_poison(float %in, ptr addrspace(1) %out) {120  %tmp0 = call float @llvm.amdgcn.update.dpp.f32(float poison, float %in, i32 337, i32 1, i32 1, i1 0)121  store float %tmp0, ptr addrspace(1) %out122  ret void123}124 125; GCN-LABEL: update_dpp_double_poison:126;127; GFX90A-DAG:    v_mov_b32_dpp v0, v0 row_newbcast:1 row_mask:0x1 bank_mask:0x1128; GFX90A-DAG:    v_mov_b32_dpp v1, v1 row_newbcast:1 row_mask:0x1 bank_mask:0x1129;130; GFX942:        v_mov_b64_dpp v[0:1], v[0:1] row_newbcast:1 row_mask:0x1 bank_mask:0x1131;132; GCN:           global_store_dwordx2 v[2:3], v[0:1], off133 134define amdgpu_ps void @update_dpp_double_poison(double %in, ptr addrspace(1) %out) {135  %tmp0 = call double @llvm.amdgcn.update.dpp.f64(double poison, double %in, i32 337, i32 1, i32 1, i1 0)136  store double %tmp0, ptr addrspace(1) %out137  ret void138}139 140; GCN-LABEL: update_dpp_v2f32_poison:141;142; GFX90A-DAG:    v_mov_b32_dpp v0, v0 row_newbcast:1 row_mask:0x1 bank_mask:0x1143; GFX90A-DAG:    v_mov_b32_dpp v1, v1 row_newbcast:1 row_mask:0x1 bank_mask:0x1144;145; GFX942:        v_mov_b64_dpp v[0:1], v[0:1] row_newbcast:1 row_mask:0x1 bank_mask:0x1146;147; GCN:           global_store_dwordx2 v[2:3], v[0:1], off148 149define amdgpu_ps void @update_dpp_v2f32_poison(<2 x float> %in, ptr addrspace(1) %out) {150  %tmp0 = call <2 x float> @llvm.amdgcn.update.dpp.v2f32(<2 x float> poison, <2 x float> %in, i32 337, i32 1, i32 1, i1 0)151  store <2 x float> %tmp0, ptr addrspace(1) %out152  ret void153}154 155; GCN-LABEL: update_dpp_v2f16_poison:156;157; GCN:         v_mov_b32_dpp v0, v0 row_newbcast:1 row_mask:0x1 bank_mask:0x1158;159; GCN:         global_store_dword v[{{[0-9:]+}}], v0, off160 161define amdgpu_ps void @update_dpp_v2f16_poison(<2 x half> %in, ptr addrspace(1) %out) {162  %tmp0 = call <2 x half> @llvm.amdgcn.update.dpp.v2f16(<2 x half> poison, <2 x half> %in, i32 337, i32 1, i32 1, i1 0)163  store <2 x half> %tmp0, ptr addrspace(1) %out164  ret void165}166 167; GCN-LABEL: update_dpp_v8f16_poison:168;169; GFX90A-DAG:    v_mov_b32_dpp v0, v0 row_newbcast:1 row_mask:0x1 bank_mask:0x1170; GFX90A-DAG:    v_mov_b32_dpp v1, v1 row_newbcast:1 row_mask:0x1 bank_mask:0x1171; GFX90A-DAG:    v_mov_b32_dpp v2, v2 row_newbcast:1 row_mask:0x1 bank_mask:0x1172; GFX90A-DAG:    v_mov_b32_dpp v3, v3 row_newbcast:1 row_mask:0x1 bank_mask:0x1173;174; GFX942-DAG:    v_mov_b64_dpp v[2:3], v[2:3] row_newbcast:1 row_mask:0x1 bank_mask:0x1175; GFX942-DAG:    v_mov_b64_dpp v[0:1], v[0:1] row_newbcast:1 row_mask:0x1 bank_mask:0x1176;177; GCN:           global_store_dwordx4 v[4:5], v[0:3], off178 179define amdgpu_ps void @update_dpp_v8f16_poison(<8 x half> %in, ptr addrspace(1) %out) {180  %tmp0 = call <8 x half> @llvm.amdgcn.update.dpp.v8f16(<8 x half> poison, <8 x half> %in, i32 337, i32 1, i32 1, i1 0)181  store <8 x half> %tmp0, ptr addrspace(1) %out182  ret void183}184 185; GCN-LABEL: update_dpp_p3_poison:186;187; GCN:        v_mov_b32_dpp v0, v0 row_newbcast:1 row_mask:0x1 bank_mask:0x1188;189; GCN:        global_store_dword v[{{[0-9:]+}}], v0, off190 191define amdgpu_ps void @update_dpp_p3_poison(ptr addrspace(3) %in, ptr addrspace(1) %out) {192  %tmp0 = call ptr addrspace(3) @llvm.amdgcn.update.dpp.p3(ptr addrspace(3) poison, ptr addrspace(3) %in, i32 337, i32 1, i32 1, i1 0)193  store ptr addrspace(3) %tmp0, ptr addrspace(1) %out194  ret void195}196 197; GCN-LABEL: update_dpp_p0_poison:198;199; GFX90A-DAG:    v_mov_b32_dpp v0, v0 row_newbcast:1 row_mask:0x1 bank_mask:0x1200; GFX90A-DAG:    v_mov_b32_dpp v1, v1 row_newbcast:1 row_mask:0x1 bank_mask:0x1201;202; GFX942-DAG:    v_mov_b64_dpp v[0:1], v[0:1] row_newbcast:1 row_mask:0x1 bank_mask:0x1203;204; GCN:            global_store_dwordx2 v[2:3], v[0:1], off205 206define amdgpu_ps void @update_dpp_p0_poison(ptr %in, ptr addrspace(1) %out) {207  %tmp0 = call ptr @llvm.amdgcn.update.dpp.p0(ptr poison, ptr %in, i32 337, i32 1, i32 1, i1 0)208  store ptr %tmp0, ptr addrspace(1) %out209  ret void210}211 212; GCN-LABEL: update_dpp_i64_unsupported_dpp64_op:213;214; GCN-DAG:    v_mov_b32_dpp v3, v1 quad_perm:[1,0,0,0] row_mask:0x1 bank_mask:0x1215; GCN-DAG:    v_mov_b32_dpp v2, v0 quad_perm:[1,0,0,0] row_mask:0x1 bank_mask:0x1216;217; GCN:        global_store_dwordx2 v[4:5], v[2:3], off218 219define amdgpu_ps void @update_dpp_i64_unsupported_dpp64_op(i64 %in, i64 %old, ptr addrspace(1) %out) {220  %tmp0 = call i64 @llvm.amdgcn.update.dpp.i64(i64 %old, i64 %in, i32 1, i32 1, i32 1, i1 0)221  store i64 %tmp0, ptr addrspace(1) %out222  ret void223}224 225; GCN-LABEL: update_dpp_i16:226;227; GCN:        v_mov_b32_dpp v1, v0 row_newbcast:1 row_mask:0x1 bank_mask:0x1228;229; GCN:        global_store_short v[2:3], v1, off230 231define amdgpu_ps void @update_dpp_i16(i16 %in, i16 %old, ptr addrspace(1) %out) {232  %tmp0 = call i16 @llvm.amdgcn.update.dpp.i16(i16 %old, i16 %in, i32 337, i32 1, i32 1, i1 0)233  store i16 %tmp0, ptr addrspace(1) %out234  ret void235}236 237; GCN-LABEL: update_dpp_half:238;239; GCN-DAG:    v_mov_b32_dpp v1, v0 row_newbcast:1 row_mask:0x1 bank_mask:0x1240;241; GCN:        global_store_short v[2:3], v1, off242 243define amdgpu_ps void @update_dpp_half(half %in, half %old, ptr addrspace(1) %out) {244  %tmp0 = call half @llvm.amdgcn.update.dpp.f16(half %old, half %in, i32 337, i32 1, i32 1, i1 0)245  store half %tmp0, ptr addrspace(1) %out246  ret void247}248 249; GCN-LABEL: update_dpp_bfloat:250;251; GCN-DAG:    v_mov_b32_dpp v1, v0 row_newbcast:1 row_mask:0x1 bank_mask:0x1252;253; GCN:        global_store_short v[2:3], v1, off254 255define amdgpu_ps void @update_dpp_bfloat(bfloat %in, bfloat %old, ptr addrspace(1) %out) {256  %tmp0 = call bfloat @llvm.amdgcn.update.dpp.bf16(bfloat %old, bfloat %in, i32 337, i32 1, i32 1, i1 0)257  store bfloat %tmp0, ptr addrspace(1) %out258  ret void259}260 261; GCN-LABEL: update_dpp_v2p0_poison:262;263; GFX90A-DAG:    v_mov_b32_dpp v0, v0 row_newbcast:1 row_mask:0x1 bank_mask:0x2264; GFX90A-DAG:    v_mov_b32_dpp v1, v1 row_newbcast:1 row_mask:0x1 bank_mask:0x2265; GFX90A-DAG:    v_mov_b32_dpp v2, v2 row_newbcast:1 row_mask:0x1 bank_mask:0x2266; GFX90A-DAG:    v_mov_b32_dpp v3, v3 row_newbcast:1 row_mask:0x1 bank_mask:0x2267;268; GFX942-DAG:    v_mov_b64_dpp v[2:3], v[2:3] row_newbcast:1 row_mask:0x1 bank_mask:0x2269; GFX942-DAG:    v_mov_b64_dpp v[0:1], v[0:1] row_newbcast:1 row_mask:0x1 bank_mask:0x2270;271; GCN:           global_store_dwordx4 v[4:5], v[0:3], off272 273define amdgpu_ps void @update_dpp_v2p0_poison(<2 x ptr> %in, ptr addrspace(1) %out) {274  %tmp0 = call <2 x ptr> @llvm.amdgcn.update.dpp.v2p0(<2 x ptr> poison, <2 x ptr> %in, i32 337, i32 1, i32 2, i1 0)275  store <2 x ptr> %tmp0, ptr addrspace(1) %out276  ret void277}278