brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.8 KiB · 35d0214 Raw
210 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -global-isel=0 -mtriple=amdgcn-amd-amdpal -mcpu=tahiti < %s | FileCheck -check-prefixes=CHECK,SDAG %s3; RUN: llc -global-isel=1 -mtriple=amdgcn-amd-amdpal -mcpu=tahiti < %s | FileCheck -check-prefixes=CHECK,GISEL %s4 5define ptr @global_to_flat_addrspacecast(ptr addrspace(1) %ptr) {6; CHECK-LABEL: global_to_flat_addrspacecast:7; CHECK:       ; %bb.0:8; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9; CHECK-NEXT:    s_setpc_b64 s[30:31]10  %stof = addrspacecast ptr addrspace(1) %ptr to ptr11  ret ptr %stof12}13 14define ptr addrspace(1) @flat_to_gobal_addrspacecast(ptr %ptr) {15; CHECK-LABEL: flat_to_gobal_addrspacecast:16; CHECK:       ; %bb.0:17; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18; CHECK-NEXT:    s_setpc_b64 s[30:31]19  %stof = addrspacecast ptr %ptr to ptr addrspace(1)20  ret ptr addrspace(1) %stof21}22 23define ptr @group_to_flat_addrspacecast(ptr addrspace(3) %ptr) {24; CHECK-LABEL: group_to_flat_addrspacecast:25; CHECK:       ; %bb.0:26; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)27; CHECK-NEXT:    s_mov_b64 s[4:5], 0xc428; CHECK-NEXT:    s_load_dword s4, s[4:5], 0x029; CHECK-NEXT:    v_cmp_ne_u32_e32 vcc, -1, v030; CHECK-NEXT:    v_cndmask_b32_e32 v0, 0, v0, vcc31; CHECK-NEXT:    s_waitcnt lgkmcnt(0)32; CHECK-NEXT:    v_mov_b32_e32 v1, s433; CHECK-NEXT:    v_cndmask_b32_e32 v1, 0, v1, vcc34; CHECK-NEXT:    s_setpc_b64 s[30:31]35  %stof = addrspacecast ptr addrspace(3) %ptr to ptr36  ret ptr %stof37}38 39define ptr addrspace(3) @flat_to_group_addrspacecast(ptr %ptr) {40; CHECK-LABEL: flat_to_group_addrspacecast:41; CHECK:       ; %bb.0:42; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)43; CHECK-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]44; CHECK-NEXT:    v_cndmask_b32_e32 v0, -1, v0, vcc45; CHECK-NEXT:    s_setpc_b64 s[30:31]46  %stof = addrspacecast ptr %ptr to ptr addrspace(3)47  ret ptr addrspace(3) %stof48}49 50define ptr @private_to_flat_addrspacecast(ptr addrspace(5) %ptr) {51; CHECK-LABEL: private_to_flat_addrspacecast:52; CHECK:       ; %bb.0:53; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)54; CHECK-NEXT:    s_mov_b64 s[4:5], 0xc055; CHECK-NEXT:    s_load_dword s4, s[4:5], 0x056; CHECK-NEXT:    v_cmp_ne_u32_e32 vcc, -1, v057; CHECK-NEXT:    v_cndmask_b32_e32 v0, 0, v0, vcc58; CHECK-NEXT:    s_waitcnt lgkmcnt(0)59; CHECK-NEXT:    v_mov_b32_e32 v1, s460; CHECK-NEXT:    v_cndmask_b32_e32 v1, 0, v1, vcc61; CHECK-NEXT:    s_setpc_b64 s[30:31]62  %stof = addrspacecast ptr addrspace(5) %ptr to ptr63  ret ptr %stof64}65 66define ptr addrspace(5) @flat_to_private_addrspacecast(ptr %ptr) {67; CHECK-LABEL: flat_to_private_addrspacecast:68; CHECK:       ; %bb.0:69; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)70; CHECK-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]71; CHECK-NEXT:    v_cndmask_b32_e32 v0, -1, v0, vcc72; CHECK-NEXT:    s_setpc_b64 s[30:31]73  %stof = addrspacecast ptr %ptr to ptr addrspace(5)74  ret ptr addrspace(5) %stof75}76 77define ptr addrspace(6) @constant_to_constant32_addrspacecast(ptr addrspace(4) %ptr, i32 %offset) {78; CHECK-LABEL: constant_to_constant32_addrspacecast:79; CHECK:       ; %bb.0:80; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)81; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v0, v282; CHECK-NEXT:    s_setpc_b64 s[30:31]83  %addrspacecast = addrspacecast ptr addrspace(4) %ptr to ptr addrspace(6)84  %gep = getelementptr i8, ptr addrspace(6) %addrspacecast, i32 %offset85  ret ptr addrspace(6) %gep86}87 88define ptr addrspace(6) @global_to_constant32_addrspacecast(ptr addrspace(1) %ptr, i32 %offset) {89; CHECK-LABEL: global_to_constant32_addrspacecast:90; CHECK:       ; %bb.0:91; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)92; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v0, v293; CHECK-NEXT:    s_setpc_b64 s[30:31]94  %addrspacecast = addrspacecast ptr addrspace(1) %ptr to ptr addrspace(6)95  %gep = getelementptr i8, ptr addrspace(6) %addrspacecast, i32 %offset96  ret ptr addrspace(6) %gep97}98 99define ptr @constant32bit_to_flat_addrspacecast_0(ptr addrspace(6) %ptr) {100; CHECK-LABEL: constant32bit_to_flat_addrspacecast_0:101; CHECK:       ; %bb.0:102; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)103; CHECK-NEXT:    v_mov_b32_e32 v1, 0104; CHECK-NEXT:    s_setpc_b64 s[30:31]105  %stof = addrspacecast ptr addrspace(6) %ptr to ptr106  ret ptr %stof107}108 109define ptr @constant32bit_to_flat_addrspacecast_1(ptr addrspace(6) %ptr) #0 {110; CHECK-LABEL: constant32bit_to_flat_addrspacecast_1:111; CHECK:       ; %bb.0:112; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)113; CHECK-NEXT:    v_mov_b32_e32 v1, 0xffff8000114; CHECK-NEXT:    s_setpc_b64 s[30:31]115  %stof = addrspacecast ptr addrspace(6) %ptr to ptr116  ret ptr %stof117}118 119define ptr @constant32bit_to_flat_addrspacecast_null() {120; CHECK-LABEL: constant32bit_to_flat_addrspacecast_null:121; CHECK:       ; %bb.0:122; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)123; CHECK-NEXT:    v_mov_b32_e32 v0, 0124; CHECK-NEXT:    v_mov_b32_e32 v1, 0125; CHECK-NEXT:    s_setpc_b64 s[30:31]126  %stof = addrspacecast ptr addrspace(6) null to ptr127  ret ptr %stof128}129 130define ptr @constant32bit_to_flat_addrspacecast_undef() #0 {131; SDAG-LABEL: constant32bit_to_flat_addrspacecast_undef:132; SDAG:       ; %bb.0:133; SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)134; SDAG-NEXT:    v_mov_b32_e32 v1, 0135; SDAG-NEXT:    s_setpc_b64 s[30:31]136;137; GISEL-LABEL: constant32bit_to_flat_addrspacecast_undef:138; GISEL:       ; %bb.0:139; GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)140; GISEL-NEXT:    s_setpc_b64 s[30:31]141  %stof = addrspacecast ptr addrspace(6) undef to ptr142  ret ptr %stof143}144 145define ptr @constant32bit_to_flat_addrspacecast_poison() #0 {146; SDAG-LABEL: constant32bit_to_flat_addrspacecast_poison:147; SDAG:       ; %bb.0:148; SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)149; SDAG-NEXT:    v_mov_b32_e32 v1, 0150; SDAG-NEXT:    s_setpc_b64 s[30:31]151;152; GISEL-LABEL: constant32bit_to_flat_addrspacecast_poison:153; GISEL:       ; %bb.0:154; GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)155; GISEL-NEXT:    s_setpc_b64 s[30:31]156  %stof = addrspacecast ptr addrspace(6) poison to ptr157  ret ptr %stof158}159 160define ptr @constant32bit_to_flat_addrspacecast_constant() #0 {161; CHECK-LABEL: constant32bit_to_flat_addrspacecast_constant:162; CHECK:       ; %bb.0:163; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)164; CHECK-NEXT:    v_mov_b32_e32 v0, 0x3039165; CHECK-NEXT:    v_mov_b32_e32 v1, 0xffff8000166; CHECK-NEXT:    s_setpc_b64 s[30:31]167  %stof = addrspacecast ptr addrspace(6) inttoptr (i32 12345 to ptr addrspace(6)) to ptr168  ret ptr %stof169}170 171define ptr addrspace(1) @addrspacecast_flat_null_to_global() {172; CHECK-LABEL: addrspacecast_flat_null_to_global:173; CHECK:       ; %bb.0:174; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)175; CHECK-NEXT:    v_mov_b32_e32 v0, 0176; CHECK-NEXT:    v_mov_b32_e32 v1, 0177; CHECK-NEXT:    s_setpc_b64 s[30:31]178  ret ptr addrspace(1) addrspacecast (ptr null to ptr addrspace(1))179}180 181define ptr addrspace(3) @addrspacecast_flat_null_to_group() {182; CHECK-LABEL: addrspacecast_flat_null_to_group:183; CHECK:       ; %bb.0:184; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)185; CHECK-NEXT:    v_mov_b32_e32 v0, -1186; CHECK-NEXT:    s_setpc_b64 s[30:31]187  ret ptr addrspace(3) addrspacecast (ptr null to ptr addrspace(3))188}189 190define ptr addrspace(5) @addrspacecast_flat_null_to_private() {191; CHECK-LABEL: addrspacecast_flat_null_to_private:192; CHECK:       ; %bb.0:193; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)194; CHECK-NEXT:    v_mov_b32_e32 v0, -1195; CHECK-NEXT:    s_setpc_b64 s[30:31]196  ret ptr addrspace(5) addrspacecast (ptr null to ptr addrspace(5))197}198 199define ptr addrspace(6) @addrspacecast_flat_null_to_constant32bit() {200; CHECK-LABEL: addrspacecast_flat_null_to_constant32bit:201; CHECK:       ; %bb.0:202; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)203; CHECK-NEXT:    v_mov_b32_e32 v0, 0204; CHECK-NEXT:    s_setpc_b64 s[30:31]205  ret ptr addrspace(6) addrspacecast (ptr null to ptr addrspace(6))206}207 208attributes #0 = { "amdgpu-32bit-address-high-bits"="0xffff8000" }209 210