brintos

brintos / llvm-project-archived public Read only

0
0
Text · 38.7 KiB · 554f40b Raw
871 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx803 < %s | FileCheck -check-prefixes=GFX8 %s3; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx803 -mattr=+architected-flat-scratch < %s | FileCheck -check-prefixes=GFX8-ARCH-FLAT %s4; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefixes=GFX9 %s5; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -mattr=+architected-flat-scratch < %s | FileCheck -check-prefixes=GFX9-ARCH-FLAT %s6; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx942 -mattr=+architected-flat-scratch < %s | FileCheck -check-prefixes=GFX942-ARCH-FLAT %s7; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 < %s | FileCheck -check-prefixes=GFX10 %s8 9;10; None of these functions should have the attribute amdgpu-no-flat-scratch-init. In these tests11; we manually set the attribute for the functions. The purpose is to test how llc handles this.12;13 14;; tests of addrspacecast15 16define void @with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) #0 {17; GFX8-LABEL: with_private_to_flat_addrspacecast:18; GFX8:       ; %bb.0:19; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20; GFX8-NEXT:    s_mov_b64 s[4:5], 0xc021; GFX8-NEXT:    s_load_dword s4, s[4:5], 0x022; GFX8-NEXT:    v_cmp_ne_u32_e32 vcc, -1, v023; GFX8-NEXT:    v_mov_b32_e32 v2, 024; GFX8-NEXT:    v_cndmask_b32_e32 v0, 0, v0, vcc25; GFX8-NEXT:    s_waitcnt lgkmcnt(0)26; GFX8-NEXT:    v_mov_b32_e32 v1, s427; GFX8-NEXT:    v_cndmask_b32_e32 v1, 0, v1, vcc28; GFX8-NEXT:    flat_store_dword v[0:1], v229; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)30; GFX8-NEXT:    s_setpc_b64 s[30:31]31;32; GFX8-ARCH-FLAT-LABEL: with_private_to_flat_addrspacecast:33; GFX8-ARCH-FLAT:       ; %bb.0:34; GFX8-ARCH-FLAT-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)35; GFX8-ARCH-FLAT-NEXT:    s_mov_b64 s[0:1], 0xc036; GFX8-ARCH-FLAT-NEXT:    s_load_dword s0, s[0:1], 0x037; GFX8-ARCH-FLAT-NEXT:    v_cmp_ne_u32_e32 vcc, -1, v038; GFX8-ARCH-FLAT-NEXT:    v_mov_b32_e32 v2, 039; GFX8-ARCH-FLAT-NEXT:    v_cndmask_b32_e32 v0, 0, v0, vcc40; GFX8-ARCH-FLAT-NEXT:    s_waitcnt lgkmcnt(0)41; GFX8-ARCH-FLAT-NEXT:    v_mov_b32_e32 v1, s042; GFX8-ARCH-FLAT-NEXT:    v_cndmask_b32_e32 v1, 0, v1, vcc43; GFX8-ARCH-FLAT-NEXT:    flat_store_dword v[0:1], v244; GFX8-ARCH-FLAT-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)45; GFX8-ARCH-FLAT-NEXT:    s_setpc_b64 s[30:31]46;47; GFX9-LABEL: with_private_to_flat_addrspacecast:48; GFX9:       ; %bb.0:49; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)50; GFX9-NEXT:    s_mov_b64 s[4:5], src_private_base51; GFX9-NEXT:    v_mov_b32_e32 v1, s552; GFX9-NEXT:    v_cmp_ne_u32_e32 vcc, -1, v053; GFX9-NEXT:    v_mov_b32_e32 v2, 054; GFX9-NEXT:    v_cndmask_b32_e32 v1, 0, v1, vcc55; GFX9-NEXT:    v_cndmask_b32_e32 v0, 0, v0, vcc56; GFX9-NEXT:    flat_store_dword v[0:1], v257; GFX9-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)58; GFX9-NEXT:    s_setpc_b64 s[30:31]59;60; GFX9-ARCH-FLAT-LABEL: with_private_to_flat_addrspacecast:61; GFX9-ARCH-FLAT:       ; %bb.0:62; GFX9-ARCH-FLAT-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)63; GFX9-ARCH-FLAT-NEXT:    s_mov_b64 s[0:1], src_private_base64; GFX9-ARCH-FLAT-NEXT:    v_mov_b32_e32 v1, s165; GFX9-ARCH-FLAT-NEXT:    v_cmp_ne_u32_e32 vcc, -1, v066; GFX9-ARCH-FLAT-NEXT:    v_mov_b32_e32 v2, 067; GFX9-ARCH-FLAT-NEXT:    v_cndmask_b32_e32 v1, 0, v1, vcc68; GFX9-ARCH-FLAT-NEXT:    v_cndmask_b32_e32 v0, 0, v0, vcc69; GFX9-ARCH-FLAT-NEXT:    flat_store_dword v[0:1], v270; GFX9-ARCH-FLAT-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)71; GFX9-ARCH-FLAT-NEXT:    s_setpc_b64 s[30:31]72;73; GFX942-ARCH-FLAT-LABEL: with_private_to_flat_addrspacecast:74; GFX942-ARCH-FLAT:       ; %bb.0:75; GFX942-ARCH-FLAT-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)76; GFX942-ARCH-FLAT-NEXT:    s_mov_b64 s[0:1], src_private_base77; GFX942-ARCH-FLAT-NEXT:    v_mov_b32_e32 v1, s178; GFX942-ARCH-FLAT-NEXT:    v_cmp_ne_u32_e32 vcc, -1, v079; GFX942-ARCH-FLAT-NEXT:    v_mov_b32_e32 v2, 080; GFX942-ARCH-FLAT-NEXT:    s_nop 081; GFX942-ARCH-FLAT-NEXT:    v_cndmask_b32_e32 v1, 0, v1, vcc82; GFX942-ARCH-FLAT-NEXT:    v_cndmask_b32_e32 v0, 0, v0, vcc83; GFX942-ARCH-FLAT-NEXT:    flat_store_dword v[0:1], v2 sc0 sc184; GFX942-ARCH-FLAT-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)85; GFX942-ARCH-FLAT-NEXT:    s_setpc_b64 s[30:31]86;87; GFX10-LABEL: with_private_to_flat_addrspacecast:88; GFX10:       ; %bb.0:89; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)90; GFX10-NEXT:    v_cmp_ne_u32_e32 vcc_lo, -1, v091; GFX10-NEXT:    s_mov_b64 s[4:5], src_private_base92; GFX10-NEXT:    v_mov_b32_e32 v2, 093; GFX10-NEXT:    v_cndmask_b32_e64 v1, 0, s5, vcc_lo94; GFX10-NEXT:    v_cndmask_b32_e32 v0, 0, v0, vcc_lo95; GFX10-NEXT:    flat_store_dword v[0:1], v296; GFX10-NEXT:    s_waitcnt_vscnt null, 0x097; GFX10-NEXT:    s_waitcnt lgkmcnt(0)98; GFX10-NEXT:    s_setpc_b64 s[30:31]99  %stof = addrspacecast ptr addrspace(5) %ptr to ptr100  store volatile i32 0, ptr %stof101  ret void102}103 104define amdgpu_kernel void @with_private_to_flat_addrspacecast_cc_kernel(ptr addrspace(5) %ptr) #0 {105; GFX8-LABEL: with_private_to_flat_addrspacecast_cc_kernel:106; GFX8:       ; %bb.0:107; GFX8-NEXT:    s_load_dword s0, s[8:9], 0x0108; GFX8-NEXT:    s_load_dword s1, s[8:9], 0xc8109; GFX8-NEXT:    v_mov_b32_e32 v2, 0110; GFX8-NEXT:    s_waitcnt lgkmcnt(0)111; GFX8-NEXT:    s_cmp_lg_u32 s0, -1112; GFX8-NEXT:    s_cselect_b32 s1, s1, 0113; GFX8-NEXT:    s_cselect_b32 s0, s0, 0114; GFX8-NEXT:    v_mov_b32_e32 v0, s0115; GFX8-NEXT:    v_mov_b32_e32 v1, s1116; GFX8-NEXT:    flat_store_dword v[0:1], v2117; GFX8-NEXT:    s_waitcnt vmcnt(0)118; GFX8-NEXT:    s_endpgm119;120; GFX8-ARCH-FLAT-LABEL: with_private_to_flat_addrspacecast_cc_kernel:121; GFX8-ARCH-FLAT:       ; %bb.0:122; GFX8-ARCH-FLAT-NEXT:    s_load_dword s0, s[4:5], 0x0123; GFX8-ARCH-FLAT-NEXT:    s_load_dword s1, s[4:5], 0xc8124; GFX8-ARCH-FLAT-NEXT:    v_mov_b32_e32 v2, 0125; GFX8-ARCH-FLAT-NEXT:    s_waitcnt lgkmcnt(0)126; GFX8-ARCH-FLAT-NEXT:    s_cmp_lg_u32 s0, -1127; GFX8-ARCH-FLAT-NEXT:    s_cselect_b32 s1, s1, 0128; GFX8-ARCH-FLAT-NEXT:    s_cselect_b32 s0, s0, 0129; GFX8-ARCH-FLAT-NEXT:    v_mov_b32_e32 v0, s0130; GFX8-ARCH-FLAT-NEXT:    v_mov_b32_e32 v1, s1131; GFX8-ARCH-FLAT-NEXT:    flat_store_dword v[0:1], v2132; GFX8-ARCH-FLAT-NEXT:    s_waitcnt vmcnt(0)133; GFX8-ARCH-FLAT-NEXT:    s_endpgm134;135; GFX9-LABEL: with_private_to_flat_addrspacecast_cc_kernel:136; GFX9:       ; %bb.0:137; GFX9-NEXT:    s_mov_b64 s[0:1], src_private_base138; GFX9-NEXT:    s_load_dword s0, s[8:9], 0x0139; GFX9-NEXT:    v_mov_b32_e32 v2, 0140; GFX9-NEXT:    s_waitcnt lgkmcnt(0)141; GFX9-NEXT:    s_cmp_lg_u32 s0, -1142; GFX9-NEXT:    s_cselect_b32 s1, s1, 0143; GFX9-NEXT:    s_cselect_b32 s0, s0, 0144; GFX9-NEXT:    v_mov_b32_e32 v0, s0145; GFX9-NEXT:    v_mov_b32_e32 v1, s1146; GFX9-NEXT:    flat_store_dword v[0:1], v2147; GFX9-NEXT:    s_waitcnt vmcnt(0)148; GFX9-NEXT:    s_endpgm149;150; GFX9-ARCH-FLAT-LABEL: with_private_to_flat_addrspacecast_cc_kernel:151; GFX9-ARCH-FLAT:       ; %bb.0:152; GFX9-ARCH-FLAT-NEXT:    s_mov_b64 s[0:1], src_private_base153; GFX9-ARCH-FLAT-NEXT:    s_load_dword s0, s[4:5], 0x0154; GFX9-ARCH-FLAT-NEXT:    v_mov_b32_e32 v2, 0155; GFX9-ARCH-FLAT-NEXT:    s_waitcnt lgkmcnt(0)156; GFX9-ARCH-FLAT-NEXT:    s_cmp_lg_u32 s0, -1157; GFX9-ARCH-FLAT-NEXT:    s_cselect_b32 s1, s1, 0158; GFX9-ARCH-FLAT-NEXT:    s_cselect_b32 s0, s0, 0159; GFX9-ARCH-FLAT-NEXT:    v_mov_b32_e32 v0, s0160; GFX9-ARCH-FLAT-NEXT:    v_mov_b32_e32 v1, s1161; GFX9-ARCH-FLAT-NEXT:    flat_store_dword v[0:1], v2162; GFX9-ARCH-FLAT-NEXT:    s_waitcnt vmcnt(0)163; GFX9-ARCH-FLAT-NEXT:    s_endpgm164;165; GFX942-ARCH-FLAT-LABEL: with_private_to_flat_addrspacecast_cc_kernel:166; GFX942-ARCH-FLAT:       ; %bb.0:167; GFX942-ARCH-FLAT-NEXT:    s_mov_b64 s[0:1], src_private_base168; GFX942-ARCH-FLAT-NEXT:    s_load_dword s0, s[4:5], 0x0169; GFX942-ARCH-FLAT-NEXT:    v_mov_b32_e32 v2, 0170; GFX942-ARCH-FLAT-NEXT:    s_waitcnt lgkmcnt(0)171; GFX942-ARCH-FLAT-NEXT:    s_cmp_lg_u32 s0, -1172; GFX942-ARCH-FLAT-NEXT:    s_cselect_b32 s1, s1, 0173; GFX942-ARCH-FLAT-NEXT:    s_cselect_b32 s0, s0, 0174; GFX942-ARCH-FLAT-NEXT:    v_mov_b32_e32 v0, s0175; GFX942-ARCH-FLAT-NEXT:    v_mov_b32_e32 v1, s1176; GFX942-ARCH-FLAT-NEXT:    flat_store_dword v[0:1], v2 sc0 sc1177; GFX942-ARCH-FLAT-NEXT:    s_waitcnt vmcnt(0)178; GFX942-ARCH-FLAT-NEXT:    s_endpgm179;180; GFX10-LABEL: with_private_to_flat_addrspacecast_cc_kernel:181; GFX10:       ; %bb.0:182; GFX10-NEXT:    s_mov_b64 s[0:1], src_private_base183; GFX10-NEXT:    s_load_dword s0, s[8:9], 0x0184; GFX10-NEXT:    v_mov_b32_e32 v2, 0185; GFX10-NEXT:    s_waitcnt lgkmcnt(0)186; GFX10-NEXT:    s_cmp_lg_u32 s0, -1187; GFX10-NEXT:    s_cselect_b32 s0, s0, 0188; GFX10-NEXT:    s_cselect_b32 s1, s1, 0189; GFX10-NEXT:    v_mov_b32_e32 v0, s0190; GFX10-NEXT:    v_mov_b32_e32 v1, s1191; GFX10-NEXT:    flat_store_dword v[0:1], v2192; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0193; GFX10-NEXT:    s_endpgm194  %stof = addrspacecast ptr addrspace(5) %ptr to ptr195  store volatile i32 0, ptr %stof196  ret void197}198 199define void @call_with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) #0 {200; GFX8-LABEL: call_with_private_to_flat_addrspacecast:201; GFX8:       ; %bb.0:202; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)203; GFX8-NEXT:    s_mov_b32 s18, s33204; GFX8-NEXT:    s_mov_b32 s33, s32205; GFX8-NEXT:    s_xor_saveexec_b64 s[16:17], -1206; GFX8-NEXT:    buffer_store_dword v3, off, s[0:3], s33 ; 4-byte Folded Spill207; GFX8-NEXT:    s_mov_b64 exec, s[16:17]208; GFX8-NEXT:    s_addk_i32 s32, 0x400209; GFX8-NEXT:    s_getpc_b64 s[16:17]210; GFX8-NEXT:    s_add_u32 s16, s16, with_private_to_flat_addrspacecast@gotpcrel32@lo+4211; GFX8-NEXT:    s_addc_u32 s17, s17, with_private_to_flat_addrspacecast@gotpcrel32@hi+12212; GFX8-NEXT:    s_load_dwordx2 s[16:17], s[16:17], 0x0213; GFX8-NEXT:    v_writelane_b32 v3, s30, 0214; GFX8-NEXT:    v_writelane_b32 v3, s31, 1215; GFX8-NEXT:    s_waitcnt lgkmcnt(0)216; GFX8-NEXT:    s_swappc_b64 s[30:31], s[16:17]217; GFX8-NEXT:    v_readlane_b32 s31, v3, 1218; GFX8-NEXT:    v_readlane_b32 s30, v3, 0219; GFX8-NEXT:    s_mov_b32 s32, s33220; GFX8-NEXT:    s_xor_saveexec_b64 s[4:5], -1221; GFX8-NEXT:    buffer_load_dword v3, off, s[0:3], s33 ; 4-byte Folded Reload222; GFX8-NEXT:    s_mov_b64 exec, s[4:5]223; GFX8-NEXT:    s_mov_b32 s33, s18224; GFX8-NEXT:    s_waitcnt vmcnt(0)225; GFX8-NEXT:    s_setpc_b64 s[30:31]226;227; GFX8-ARCH-FLAT-LABEL: call_with_private_to_flat_addrspacecast:228; GFX8-ARCH-FLAT:       ; %bb.0:229; GFX8-ARCH-FLAT-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)230; GFX8-ARCH-FLAT-NEXT:    s_mov_b32 s2, s33231; GFX8-ARCH-FLAT-NEXT:    s_mov_b32 s33, s32232; GFX8-ARCH-FLAT-NEXT:    s_xor_saveexec_b64 s[0:1], -1233; GFX8-ARCH-FLAT-NEXT:    s_add_i32 s3, s33, 8234; GFX8-ARCH-FLAT-NEXT:    scratch_store_dword off, v3, s3 ; 4-byte Folded Spill235; GFX8-ARCH-FLAT-NEXT:    s_mov_b64 exec, s[0:1]236; GFX8-ARCH-FLAT-NEXT:    s_add_i32 s32, s32, 16237; GFX8-ARCH-FLAT-NEXT:    s_getpc_b64 s[0:1]238; GFX8-ARCH-FLAT-NEXT:    s_add_u32 s0, s0, with_private_to_flat_addrspacecast@gotpcrel32@lo+4239; GFX8-ARCH-FLAT-NEXT:    s_addc_u32 s1, s1, with_private_to_flat_addrspacecast@gotpcrel32@hi+12240; GFX8-ARCH-FLAT-NEXT:    s_load_dwordx2 s[0:1], s[0:1], 0x0241; GFX8-ARCH-FLAT-NEXT:    v_writelane_b32 v3, s30, 0242; GFX8-ARCH-FLAT-NEXT:    v_writelane_b32 v3, s31, 1243; GFX8-ARCH-FLAT-NEXT:    s_waitcnt lgkmcnt(0)244; GFX8-ARCH-FLAT-NEXT:    s_swappc_b64 s[30:31], s[0:1]245; GFX8-ARCH-FLAT-NEXT:    v_readlane_b32 s31, v3, 1246; GFX8-ARCH-FLAT-NEXT:    v_readlane_b32 s30, v3, 0247; GFX8-ARCH-FLAT-NEXT:    s_mov_b32 s32, s33248; GFX8-ARCH-FLAT-NEXT:    s_xor_saveexec_b64 s[0:1], -1249; GFX8-ARCH-FLAT-NEXT:    s_add_i32 s3, s33, 8250; GFX8-ARCH-FLAT-NEXT:    scratch_load_dword v3, off, s3 ; 4-byte Folded Reload251; GFX8-ARCH-FLAT-NEXT:    s_mov_b64 exec, s[0:1]252; GFX8-ARCH-FLAT-NEXT:    s_mov_b32 s33, s2253; GFX8-ARCH-FLAT-NEXT:    s_waitcnt vmcnt(0)254; GFX8-ARCH-FLAT-NEXT:    s_setpc_b64 s[30:31]255;256; GFX9-LABEL: call_with_private_to_flat_addrspacecast:257; GFX9:       ; %bb.0:258; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)259; GFX9-NEXT:    s_mov_b32 s18, s33260; GFX9-NEXT:    s_mov_b32 s33, s32261; GFX9-NEXT:    s_xor_saveexec_b64 s[16:17], -1262; GFX9-NEXT:    buffer_store_dword v3, off, s[0:3], s33 ; 4-byte Folded Spill263; GFX9-NEXT:    s_mov_b64 exec, s[16:17]264; GFX9-NEXT:    s_addk_i32 s32, 0x400265; GFX9-NEXT:    s_getpc_b64 s[16:17]266; GFX9-NEXT:    s_add_u32 s16, s16, with_private_to_flat_addrspacecast@gotpcrel32@lo+4267; GFX9-NEXT:    s_addc_u32 s17, s17, with_private_to_flat_addrspacecast@gotpcrel32@hi+12268; GFX9-NEXT:    s_load_dwordx2 s[16:17], s[16:17], 0x0269; GFX9-NEXT:    v_writelane_b32 v3, s30, 0270; GFX9-NEXT:    v_writelane_b32 v3, s31, 1271; GFX9-NEXT:    s_waitcnt lgkmcnt(0)272; GFX9-NEXT:    s_swappc_b64 s[30:31], s[16:17]273; GFX9-NEXT:    v_readlane_b32 s31, v3, 1274; GFX9-NEXT:    v_readlane_b32 s30, v3, 0275; GFX9-NEXT:    s_mov_b32 s32, s33276; GFX9-NEXT:    s_xor_saveexec_b64 s[4:5], -1277; GFX9-NEXT:    buffer_load_dword v3, off, s[0:3], s33 ; 4-byte Folded Reload278; GFX9-NEXT:    s_mov_b64 exec, s[4:5]279; GFX9-NEXT:    s_mov_b32 s33, s18280; GFX9-NEXT:    s_waitcnt vmcnt(0)281; GFX9-NEXT:    s_setpc_b64 s[30:31]282;283; GFX9-ARCH-FLAT-LABEL: call_with_private_to_flat_addrspacecast:284; GFX9-ARCH-FLAT:       ; %bb.0:285; GFX9-ARCH-FLAT-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)286; GFX9-ARCH-FLAT-NEXT:    s_mov_b32 s2, s33287; GFX9-ARCH-FLAT-NEXT:    s_mov_b32 s33, s32288; GFX9-ARCH-FLAT-NEXT:    s_xor_saveexec_b64 s[0:1], -1289; GFX9-ARCH-FLAT-NEXT:    scratch_store_dword off, v3, s33 ; 4-byte Folded Spill290; GFX9-ARCH-FLAT-NEXT:    s_mov_b64 exec, s[0:1]291; GFX9-ARCH-FLAT-NEXT:    s_add_i32 s32, s32, 16292; GFX9-ARCH-FLAT-NEXT:    s_getpc_b64 s[0:1]293; GFX9-ARCH-FLAT-NEXT:    s_add_u32 s0, s0, with_private_to_flat_addrspacecast@gotpcrel32@lo+4294; GFX9-ARCH-FLAT-NEXT:    s_addc_u32 s1, s1, with_private_to_flat_addrspacecast@gotpcrel32@hi+12295; GFX9-ARCH-FLAT-NEXT:    s_load_dwordx2 s[0:1], s[0:1], 0x0296; GFX9-ARCH-FLAT-NEXT:    v_writelane_b32 v3, s30, 0297; GFX9-ARCH-FLAT-NEXT:    v_writelane_b32 v3, s31, 1298; GFX9-ARCH-FLAT-NEXT:    s_waitcnt lgkmcnt(0)299; GFX9-ARCH-FLAT-NEXT:    s_swappc_b64 s[30:31], s[0:1]300; GFX9-ARCH-FLAT-NEXT:    v_readlane_b32 s31, v3, 1301; GFX9-ARCH-FLAT-NEXT:    v_readlane_b32 s30, v3, 0302; GFX9-ARCH-FLAT-NEXT:    s_mov_b32 s32, s33303; GFX9-ARCH-FLAT-NEXT:    s_xor_saveexec_b64 s[0:1], -1304; GFX9-ARCH-FLAT-NEXT:    scratch_load_dword v3, off, s33 ; 4-byte Folded Reload305; GFX9-ARCH-FLAT-NEXT:    s_mov_b64 exec, s[0:1]306; GFX9-ARCH-FLAT-NEXT:    s_mov_b32 s33, s2307; GFX9-ARCH-FLAT-NEXT:    s_waitcnt vmcnt(0)308; GFX9-ARCH-FLAT-NEXT:    s_setpc_b64 s[30:31]309;310; GFX942-ARCH-FLAT-LABEL: call_with_private_to_flat_addrspacecast:311; GFX942-ARCH-FLAT:       ; %bb.0:312; GFX942-ARCH-FLAT-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)313; GFX942-ARCH-FLAT-NEXT:    s_mov_b32 s2, s33314; GFX942-ARCH-FLAT-NEXT:    s_mov_b32 s33, s32315; GFX942-ARCH-FLAT-NEXT:    s_xor_saveexec_b64 s[0:1], -1316; GFX942-ARCH-FLAT-NEXT:    scratch_store_dword off, v3, s33 ; 4-byte Folded Spill317; GFX942-ARCH-FLAT-NEXT:    s_mov_b64 exec, s[0:1]318; GFX942-ARCH-FLAT-NEXT:    s_add_i32 s32, s32, 16319; GFX942-ARCH-FLAT-NEXT:    s_getpc_b64 s[0:1]320; GFX942-ARCH-FLAT-NEXT:    s_add_u32 s0, s0, with_private_to_flat_addrspacecast@gotpcrel32@lo+4321; GFX942-ARCH-FLAT-NEXT:    s_addc_u32 s1, s1, with_private_to_flat_addrspacecast@gotpcrel32@hi+12322; GFX942-ARCH-FLAT-NEXT:    s_load_dwordx2 s[0:1], s[0:1], 0x0323; GFX942-ARCH-FLAT-NEXT:    v_writelane_b32 v3, s30, 0324; GFX942-ARCH-FLAT-NEXT:    v_writelane_b32 v3, s31, 1325; GFX942-ARCH-FLAT-NEXT:    s_waitcnt lgkmcnt(0)326; GFX942-ARCH-FLAT-NEXT:    s_swappc_b64 s[30:31], s[0:1]327; GFX942-ARCH-FLAT-NEXT:    v_readlane_b32 s31, v3, 1328; GFX942-ARCH-FLAT-NEXT:    v_readlane_b32 s30, v3, 0329; GFX942-ARCH-FLAT-NEXT:    s_mov_b32 s32, s33330; GFX942-ARCH-FLAT-NEXT:    s_xor_saveexec_b64 s[0:1], -1331; GFX942-ARCH-FLAT-NEXT:    scratch_load_dword v3, off, s33 ; 4-byte Folded Reload332; GFX942-ARCH-FLAT-NEXT:    s_mov_b64 exec, s[0:1]333; GFX942-ARCH-FLAT-NEXT:    s_mov_b32 s33, s2334; GFX942-ARCH-FLAT-NEXT:    s_waitcnt vmcnt(0)335; GFX942-ARCH-FLAT-NEXT:    s_setpc_b64 s[30:31]336;337; GFX10-LABEL: call_with_private_to_flat_addrspacecast:338; GFX10:       ; %bb.0:339; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)340; GFX10-NEXT:    s_mov_b32 s18, s33341; GFX10-NEXT:    s_mov_b32 s33, s32342; GFX10-NEXT:    s_xor_saveexec_b32 s16, -1343; GFX10-NEXT:    buffer_store_dword v3, off, s[0:3], s33 ; 4-byte Folded Spill344; GFX10-NEXT:    s_waitcnt_depctr depctr_vm_vsrc(0)345; GFX10-NEXT:    s_mov_b32 exec_lo, s16346; GFX10-NEXT:    s_addk_i32 s32, 0x200347; GFX10-NEXT:    s_getpc_b64 s[16:17]348; GFX10-NEXT:    s_add_u32 s16, s16, with_private_to_flat_addrspacecast@gotpcrel32@lo+4349; GFX10-NEXT:    s_addc_u32 s17, s17, with_private_to_flat_addrspacecast@gotpcrel32@hi+12350; GFX10-NEXT:    v_writelane_b32 v3, s30, 0351; GFX10-NEXT:    s_load_dwordx2 s[16:17], s[16:17], 0x0352; GFX10-NEXT:    v_writelane_b32 v3, s31, 1353; GFX10-NEXT:    s_waitcnt lgkmcnt(0)354; GFX10-NEXT:    s_swappc_b64 s[30:31], s[16:17]355; GFX10-NEXT:    v_readlane_b32 s31, v3, 1356; GFX10-NEXT:    v_readlane_b32 s30, v3, 0357; GFX10-NEXT:    s_mov_b32 s32, s33358; GFX10-NEXT:    s_xor_saveexec_b32 s4, -1359; GFX10-NEXT:    buffer_load_dword v3, off, s[0:3], s33 ; 4-byte Folded Reload360; GFX10-NEXT:    s_waitcnt_depctr depctr_vm_vsrc(0)361; GFX10-NEXT:    s_mov_b32 exec_lo, s4362; GFX10-NEXT:    s_mov_b32 s33, s18363; GFX10-NEXT:    s_waitcnt vmcnt(0)364; GFX10-NEXT:    s_setpc_b64 s[30:31]365  call void @with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr)366  ret void367}368 369define amdgpu_kernel void @call_with_private_to_flat_addrspacecast_cc_kernel(ptr addrspace(5) %ptr) #0 {370; GFX8-LABEL: call_with_private_to_flat_addrspacecast_cc_kernel:371; GFX8:       ; %bb.0:372; GFX8-NEXT:    s_add_u32 s0, s0, s15373; GFX8-NEXT:    s_addc_u32 s1, s1, 0374; GFX8-NEXT:    s_load_dword s15, s[8:9], 0x0375; GFX8-NEXT:    s_add_u32 s8, s8, 8376; GFX8-NEXT:    s_addc_u32 s9, s9, 0377; GFX8-NEXT:    s_getpc_b64 s[16:17]378; GFX8-NEXT:    s_add_u32 s16, s16, with_private_to_flat_addrspacecast@gotpcrel32@lo+4379; GFX8-NEXT:    s_addc_u32 s17, s17, with_private_to_flat_addrspacecast@gotpcrel32@hi+12380; GFX8-NEXT:    s_load_dwordx2 s[16:17], s[16:17], 0x0381; GFX8-NEXT:    v_lshlrev_b32_e32 v1, 10, v1382; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 20, v2383; GFX8-NEXT:    v_or_b32_e32 v0, v0, v1384; GFX8-NEXT:    v_or_b32_e32 v31, v0, v2385; GFX8-NEXT:    s_waitcnt lgkmcnt(0)386; GFX8-NEXT:    v_mov_b32_e32 v0, s15387; GFX8-NEXT:    s_mov_b32 s32, 0388; GFX8-NEXT:    s_swappc_b64 s[30:31], s[16:17]389; GFX8-NEXT:    s_endpgm390;391; GFX8-ARCH-FLAT-LABEL: call_with_private_to_flat_addrspacecast_cc_kernel:392; GFX8-ARCH-FLAT:       ; %bb.0:393; GFX8-ARCH-FLAT-NEXT:    s_mov_b32 s12, s8394; GFX8-ARCH-FLAT-NEXT:    s_add_u32 s8, s4, 8395; GFX8-ARCH-FLAT-NEXT:    s_mov_b32 s13, s9396; GFX8-ARCH-FLAT-NEXT:    s_addc_u32 s9, s5, 0397; GFX8-ARCH-FLAT-NEXT:    s_load_dword s15, s[4:5], 0x0398; GFX8-ARCH-FLAT-NEXT:    s_getpc_b64 s[4:5]399; GFX8-ARCH-FLAT-NEXT:    s_add_u32 s4, s4, with_private_to_flat_addrspacecast@gotpcrel32@lo+4400; GFX8-ARCH-FLAT-NEXT:    s_addc_u32 s5, s5, with_private_to_flat_addrspacecast@gotpcrel32@hi+12401; GFX8-ARCH-FLAT-NEXT:    s_load_dwordx2 s[16:17], s[4:5], 0x0402; GFX8-ARCH-FLAT-NEXT:    v_lshlrev_b32_e32 v1, 10, v1403; GFX8-ARCH-FLAT-NEXT:    v_lshlrev_b32_e32 v2, 20, v2404; GFX8-ARCH-FLAT-NEXT:    v_or_b32_e32 v0, v0, v1405; GFX8-ARCH-FLAT-NEXT:    s_mov_b32 s14, s10406; GFX8-ARCH-FLAT-NEXT:    s_mov_b64 s[10:11], s[6:7]407; GFX8-ARCH-FLAT-NEXT:    v_or_b32_e32 v31, v0, v2408; GFX8-ARCH-FLAT-NEXT:    s_mov_b64 s[4:5], s[0:1]409; GFX8-ARCH-FLAT-NEXT:    s_mov_b64 s[6:7], s[2:3]410; GFX8-ARCH-FLAT-NEXT:    s_waitcnt lgkmcnt(0)411; GFX8-ARCH-FLAT-NEXT:    v_mov_b32_e32 v0, s15412; GFX8-ARCH-FLAT-NEXT:    s_mov_b32 s32, 0413; GFX8-ARCH-FLAT-NEXT:    s_swappc_b64 s[30:31], s[16:17]414; GFX8-ARCH-FLAT-NEXT:    s_endpgm415;416; GFX9-LABEL: call_with_private_to_flat_addrspacecast_cc_kernel:417; GFX9:       ; %bb.0:418; GFX9-NEXT:    s_add_u32 s0, s0, s15419; GFX9-NEXT:    s_addc_u32 s1, s1, 0420; GFX9-NEXT:    s_load_dword s15, s[8:9], 0x0421; GFX9-NEXT:    s_add_u32 s8, s8, 8422; GFX9-NEXT:    s_addc_u32 s9, s9, 0423; GFX9-NEXT:    s_getpc_b64 s[16:17]424; GFX9-NEXT:    s_add_u32 s16, s16, with_private_to_flat_addrspacecast@gotpcrel32@lo+4425; GFX9-NEXT:    s_addc_u32 s17, s17, with_private_to_flat_addrspacecast@gotpcrel32@hi+12426; GFX9-NEXT:    s_load_dwordx2 s[16:17], s[16:17], 0x0427; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 20, v2428; GFX9-NEXT:    v_lshlrev_b32_e32 v1, 10, v1429; GFX9-NEXT:    v_or3_b32 v31, v0, v1, v2430; GFX9-NEXT:    s_waitcnt lgkmcnt(0)431; GFX9-NEXT:    v_mov_b32_e32 v0, s15432; GFX9-NEXT:    s_mov_b32 s32, 0433; GFX9-NEXT:    s_swappc_b64 s[30:31], s[16:17]434; GFX9-NEXT:    s_endpgm435;436; GFX9-ARCH-FLAT-LABEL: call_with_private_to_flat_addrspacecast_cc_kernel:437; GFX9-ARCH-FLAT:       ; %bb.0:438; GFX9-ARCH-FLAT-NEXT:    s_mov_b32 s12, s8439; GFX9-ARCH-FLAT-NEXT:    s_add_u32 s8, s4, 8440; GFX9-ARCH-FLAT-NEXT:    s_mov_b32 s13, s9441; GFX9-ARCH-FLAT-NEXT:    s_addc_u32 s9, s5, 0442; GFX9-ARCH-FLAT-NEXT:    s_load_dword s15, s[4:5], 0x0443; GFX9-ARCH-FLAT-NEXT:    s_getpc_b64 s[4:5]444; GFX9-ARCH-FLAT-NEXT:    s_add_u32 s4, s4, with_private_to_flat_addrspacecast@gotpcrel32@lo+4445; GFX9-ARCH-FLAT-NEXT:    s_addc_u32 s5, s5, with_private_to_flat_addrspacecast@gotpcrel32@hi+12446; GFX9-ARCH-FLAT-NEXT:    s_load_dwordx2 s[16:17], s[4:5], 0x0447; GFX9-ARCH-FLAT-NEXT:    v_lshlrev_b32_e32 v2, 20, v2448; GFX9-ARCH-FLAT-NEXT:    v_lshlrev_b32_e32 v1, 10, v1449; GFX9-ARCH-FLAT-NEXT:    s_mov_b32 s14, s10450; GFX9-ARCH-FLAT-NEXT:    s_mov_b64 s[10:11], s[6:7]451; GFX9-ARCH-FLAT-NEXT:    v_or3_b32 v31, v0, v1, v2452; GFX9-ARCH-FLAT-NEXT:    s_mov_b64 s[4:5], s[0:1]453; GFX9-ARCH-FLAT-NEXT:    s_mov_b64 s[6:7], s[2:3]454; GFX9-ARCH-FLAT-NEXT:    s_waitcnt lgkmcnt(0)455; GFX9-ARCH-FLAT-NEXT:    v_mov_b32_e32 v0, s15456; GFX9-ARCH-FLAT-NEXT:    s_mov_b32 s32, 0457; GFX9-ARCH-FLAT-NEXT:    s_swappc_b64 s[30:31], s[16:17]458; GFX9-ARCH-FLAT-NEXT:    s_endpgm459;460; GFX942-ARCH-FLAT-LABEL: call_with_private_to_flat_addrspacecast_cc_kernel:461; GFX942-ARCH-FLAT:       ; %bb.0:462; GFX942-ARCH-FLAT-NEXT:    s_mov_b32 s12, s8463; GFX942-ARCH-FLAT-NEXT:    s_add_u32 s8, s4, 8464; GFX942-ARCH-FLAT-NEXT:    s_mov_b32 s13, s9465; GFX942-ARCH-FLAT-NEXT:    s_addc_u32 s9, s5, 0466; GFX942-ARCH-FLAT-NEXT:    s_load_dword s15, s[4:5], 0x0467; GFX942-ARCH-FLAT-NEXT:    s_getpc_b64 s[4:5]468; GFX942-ARCH-FLAT-NEXT:    s_add_u32 s4, s4, with_private_to_flat_addrspacecast@gotpcrel32@lo+4469; GFX942-ARCH-FLAT-NEXT:    s_addc_u32 s5, s5, with_private_to_flat_addrspacecast@gotpcrel32@hi+12470; GFX942-ARCH-FLAT-NEXT:    s_load_dwordx2 s[16:17], s[4:5], 0x0471; GFX942-ARCH-FLAT-NEXT:    s_mov_b32 s14, s10472; GFX942-ARCH-FLAT-NEXT:    s_mov_b64 s[10:11], s[6:7]473; GFX942-ARCH-FLAT-NEXT:    s_mov_b64 s[4:5], s[0:1]474; GFX942-ARCH-FLAT-NEXT:    s_mov_b64 s[6:7], s[2:3]475; GFX942-ARCH-FLAT-NEXT:    v_mov_b32_e32 v31, v0476; GFX942-ARCH-FLAT-NEXT:    s_waitcnt lgkmcnt(0)477; GFX942-ARCH-FLAT-NEXT:    v_mov_b32_e32 v0, s15478; GFX942-ARCH-FLAT-NEXT:    s_mov_b32 s32, 0479; GFX942-ARCH-FLAT-NEXT:    s_swappc_b64 s[30:31], s[16:17]480; GFX942-ARCH-FLAT-NEXT:    s_endpgm481;482; GFX10-LABEL: call_with_private_to_flat_addrspacecast_cc_kernel:483; GFX10:       ; %bb.0:484; GFX10-NEXT:    s_add_u32 s0, s0, s15485; GFX10-NEXT:    s_addc_u32 s1, s1, 0486; GFX10-NEXT:    s_load_dword s15, s[8:9], 0x0487; GFX10-NEXT:    s_add_u32 s8, s8, 8488; GFX10-NEXT:    s_addc_u32 s9, s9, 0489; GFX10-NEXT:    s_getpc_b64 s[16:17]490; GFX10-NEXT:    s_add_u32 s16, s16, with_private_to_flat_addrspacecast@gotpcrel32@lo+4491; GFX10-NEXT:    s_addc_u32 s17, s17, with_private_to_flat_addrspacecast@gotpcrel32@hi+12492; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 20, v2493; GFX10-NEXT:    s_load_dwordx2 s[16:17], s[16:17], 0x0494; GFX10-NEXT:    v_lshlrev_b32_e32 v1, 10, v1495; GFX10-NEXT:    s_mov_b32 s32, 0496; GFX10-NEXT:    v_or3_b32 v31, v0, v1, v2497; GFX10-NEXT:    s_waitcnt lgkmcnt(0)498; GFX10-NEXT:    v_mov_b32_e32 v0, s15499; GFX10-NEXT:    s_swappc_b64 s[30:31], s[16:17]500; GFX10-NEXT:    s_endpgm501  call void @with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr)502  ret void503}504 505;; tests of addrspacecast in a constant506 507define amdgpu_kernel void @private_constant_expression_use(ptr addrspace(1) nocapture %out) #0 {508; GFX8-LABEL: private_constant_expression_use:509; GFX8:       ; %bb.0:510; GFX8-NEXT:    s_load_dword s2, s[8:9], 0xc8511; GFX8-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0512; GFX8-NEXT:    v_mov_b32_e32 v0, 0x7b513; GFX8-NEXT:    s_waitcnt lgkmcnt(0)514; GFX8-NEXT:    v_mov_b32_e32 v1, s2515; GFX8-NEXT:    v_mov_b32_e32 v3, s1516; GFX8-NEXT:    v_mov_b32_e32 v2, s0517; GFX8-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]518; GFX8-NEXT:    s_waitcnt vmcnt(0)519; GFX8-NEXT:    s_endpgm520;521; GFX8-ARCH-FLAT-LABEL: private_constant_expression_use:522; GFX8-ARCH-FLAT:       ; %bb.0:523; GFX8-ARCH-FLAT-NEXT:    s_load_dword s2, s[4:5], 0xc8524; GFX8-ARCH-FLAT-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0525; GFX8-ARCH-FLAT-NEXT:    v_mov_b32_e32 v0, 0x7b526; GFX8-ARCH-FLAT-NEXT:    s_waitcnt lgkmcnt(0)527; GFX8-ARCH-FLAT-NEXT:    v_mov_b32_e32 v1, s2528; GFX8-ARCH-FLAT-NEXT:    v_mov_b32_e32 v3, s1529; GFX8-ARCH-FLAT-NEXT:    v_mov_b32_e32 v2, s0530; GFX8-ARCH-FLAT-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]531; GFX8-ARCH-FLAT-NEXT:    s_waitcnt vmcnt(0)532; GFX8-ARCH-FLAT-NEXT:    s_endpgm533;534; GFX9-LABEL: private_constant_expression_use:535; GFX9:       ; %bb.0:536; GFX9-NEXT:    s_load_dwordx2 s[2:3], s[8:9], 0x0537; GFX9-NEXT:    s_mov_b64 s[0:1], src_private_base538; GFX9-NEXT:    v_mov_b32_e32 v2, 0539; GFX9-NEXT:    v_mov_b32_e32 v0, 0x7b540; GFX9-NEXT:    v_mov_b32_e32 v1, s1541; GFX9-NEXT:    s_waitcnt lgkmcnt(0)542; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[2:3]543; GFX9-NEXT:    s_waitcnt vmcnt(0)544; GFX9-NEXT:    s_endpgm545;546; GFX9-ARCH-FLAT-LABEL: private_constant_expression_use:547; GFX9-ARCH-FLAT:       ; %bb.0:548; GFX9-ARCH-FLAT-NEXT:    s_load_dwordx2 s[2:3], s[4:5], 0x0549; GFX9-ARCH-FLAT-NEXT:    s_mov_b64 s[0:1], src_private_base550; GFX9-ARCH-FLAT-NEXT:    v_mov_b32_e32 v2, 0551; GFX9-ARCH-FLAT-NEXT:    v_mov_b32_e32 v0, 0x7b552; GFX9-ARCH-FLAT-NEXT:    v_mov_b32_e32 v1, s1553; GFX9-ARCH-FLAT-NEXT:    s_waitcnt lgkmcnt(0)554; GFX9-ARCH-FLAT-NEXT:    global_store_dwordx2 v2, v[0:1], s[2:3]555; GFX9-ARCH-FLAT-NEXT:    s_waitcnt vmcnt(0)556; GFX9-ARCH-FLAT-NEXT:    s_endpgm557;558; GFX942-ARCH-FLAT-LABEL: private_constant_expression_use:559; GFX942-ARCH-FLAT:       ; %bb.0:560; GFX942-ARCH-FLAT-NEXT:    s_load_dwordx2 s[2:3], s[4:5], 0x0561; GFX942-ARCH-FLAT-NEXT:    s_mov_b64 s[0:1], src_private_base562; GFX942-ARCH-FLAT-NEXT:    v_mov_b32_e32 v2, 0563; GFX942-ARCH-FLAT-NEXT:    v_mov_b32_e32 v0, 0x7b564; GFX942-ARCH-FLAT-NEXT:    v_mov_b32_e32 v1, s1565; GFX942-ARCH-FLAT-NEXT:    s_waitcnt lgkmcnt(0)566; GFX942-ARCH-FLAT-NEXT:    global_store_dwordx2 v2, v[0:1], s[2:3] sc0 sc1567; GFX942-ARCH-FLAT-NEXT:    s_waitcnt vmcnt(0)568; GFX942-ARCH-FLAT-NEXT:    s_endpgm569;570; GFX10-LABEL: private_constant_expression_use:571; GFX10:       ; %bb.0:572; GFX10-NEXT:    s_load_dwordx2 s[2:3], s[8:9], 0x0573; GFX10-NEXT:    s_mov_b64 s[0:1], src_private_base574; GFX10-NEXT:    v_mov_b32_e32 v2, 0575; GFX10-NEXT:    v_mov_b32_e32 v0, 0x7b576; GFX10-NEXT:    v_mov_b32_e32 v1, s1577; GFX10-NEXT:    s_waitcnt lgkmcnt(0)578; GFX10-NEXT:    global_store_dwordx2 v2, v[0:1], s[2:3]579; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0580; GFX10-NEXT:    s_endpgm581  store volatile ptr addrspacecast (ptr addrspace(5) inttoptr (i32 123 to ptr addrspace(5)) to ptr), ptr addrspace(1) %out, align 8582  ret void583}584 585;; tests of intrinsics586 587define amdgpu_kernel void @calls_intrin_ascast_cc_kernel(ptr addrspace(3) %ptr) #0 {588; GFX8-LABEL: calls_intrin_ascast_cc_kernel:589; GFX8:       ; %bb.0:590; GFX8-NEXT:    s_load_dword s0, s[8:9], 0x0591; GFX8-NEXT:    s_load_dword s1, s[8:9], 0xcc592; GFX8-NEXT:    v_mov_b32_e32 v2, 7593; GFX8-NEXT:    s_waitcnt lgkmcnt(0)594; GFX8-NEXT:    v_mov_b32_e32 v0, s0595; GFX8-NEXT:    v_mov_b32_e32 v1, s1596; GFX8-NEXT:    flat_store_dword v[0:1], v2597; GFX8-NEXT:    s_waitcnt vmcnt(0)598; GFX8-NEXT:    s_endpgm599;600; GFX8-ARCH-FLAT-LABEL: calls_intrin_ascast_cc_kernel:601; GFX8-ARCH-FLAT:       ; %bb.0:602; GFX8-ARCH-FLAT-NEXT:    s_load_dword s0, s[4:5], 0x0603; GFX8-ARCH-FLAT-NEXT:    s_load_dword s1, s[4:5], 0xcc604; GFX8-ARCH-FLAT-NEXT:    v_mov_b32_e32 v2, 7605; GFX8-ARCH-FLAT-NEXT:    s_waitcnt lgkmcnt(0)606; GFX8-ARCH-FLAT-NEXT:    v_mov_b32_e32 v0, s0607; GFX8-ARCH-FLAT-NEXT:    v_mov_b32_e32 v1, s1608; GFX8-ARCH-FLAT-NEXT:    flat_store_dword v[0:1], v2609; GFX8-ARCH-FLAT-NEXT:    s_waitcnt vmcnt(0)610; GFX8-ARCH-FLAT-NEXT:    s_endpgm611;612; GFX9-LABEL: calls_intrin_ascast_cc_kernel:613; GFX9:       ; %bb.0:614; GFX9-NEXT:    s_mov_b64 s[0:1], src_shared_base615; GFX9-NEXT:    s_load_dword s0, s[8:9], 0x0616; GFX9-NEXT:    v_mov_b32_e32 v1, s1617; GFX9-NEXT:    v_mov_b32_e32 v2, 7618; GFX9-NEXT:    s_waitcnt lgkmcnt(0)619; GFX9-NEXT:    v_mov_b32_e32 v0, s0620; GFX9-NEXT:    flat_store_dword v[0:1], v2621; GFX9-NEXT:    s_waitcnt vmcnt(0)622; GFX9-NEXT:    s_endpgm623;624; GFX9-ARCH-FLAT-LABEL: calls_intrin_ascast_cc_kernel:625; GFX9-ARCH-FLAT:       ; %bb.0:626; GFX9-ARCH-FLAT-NEXT:    s_mov_b64 s[0:1], src_shared_base627; GFX9-ARCH-FLAT-NEXT:    s_load_dword s0, s[4:5], 0x0628; GFX9-ARCH-FLAT-NEXT:    v_mov_b32_e32 v1, s1629; GFX9-ARCH-FLAT-NEXT:    v_mov_b32_e32 v2, 7630; GFX9-ARCH-FLAT-NEXT:    s_waitcnt lgkmcnt(0)631; GFX9-ARCH-FLAT-NEXT:    v_mov_b32_e32 v0, s0632; GFX9-ARCH-FLAT-NEXT:    flat_store_dword v[0:1], v2633; GFX9-ARCH-FLAT-NEXT:    s_waitcnt vmcnt(0)634; GFX9-ARCH-FLAT-NEXT:    s_endpgm635;636; GFX942-ARCH-FLAT-LABEL: calls_intrin_ascast_cc_kernel:637; GFX942-ARCH-FLAT:       ; %bb.0:638; GFX942-ARCH-FLAT-NEXT:    s_mov_b64 s[0:1], src_shared_base639; GFX942-ARCH-FLAT-NEXT:    s_load_dword s0, s[4:5], 0x0640; GFX942-ARCH-FLAT-NEXT:    v_mov_b32_e32 v1, s1641; GFX942-ARCH-FLAT-NEXT:    v_mov_b32_e32 v2, 7642; GFX942-ARCH-FLAT-NEXT:    s_waitcnt lgkmcnt(0)643; GFX942-ARCH-FLAT-NEXT:    v_mov_b32_e32 v0, s0644; GFX942-ARCH-FLAT-NEXT:    flat_store_dword v[0:1], v2 sc0 sc1645; GFX942-ARCH-FLAT-NEXT:    s_waitcnt vmcnt(0)646; GFX942-ARCH-FLAT-NEXT:    s_endpgm647;648; GFX10-LABEL: calls_intrin_ascast_cc_kernel:649; GFX10:       ; %bb.0:650; GFX10-NEXT:    s_mov_b64 s[0:1], src_shared_base651; GFX10-NEXT:    s_load_dword s0, s[8:9], 0x0652; GFX10-NEXT:    v_mov_b32_e32 v1, s1653; GFX10-NEXT:    v_mov_b32_e32 v2, 7654; GFX10-NEXT:    s_waitcnt lgkmcnt(0)655; GFX10-NEXT:    v_mov_b32_e32 v0, s0656; GFX10-NEXT:    flat_store_dword v[0:1], v2657; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0658; GFX10-NEXT:    s_endpgm659  %1 = call ptr @llvm.amdgcn.addrspacecast.nonnull.p0.p3(ptr addrspace(3) %ptr)660  store volatile i32 7, ptr %1, align 4661  ret void662}663 664define void @calls_intrin_ascast(ptr addrspace(3) %ptr) #0 {665; GFX8-LABEL: calls_intrin_ascast:666; GFX8:       ; %bb.0:667; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)668; GFX8-NEXT:    s_mov_b64 s[4:5], 0xc4669; GFX8-NEXT:    s_load_dword s4, s[4:5], 0x0670; GFX8-NEXT:    v_mov_b32_e32 v2, 7671; GFX8-NEXT:    s_waitcnt lgkmcnt(0)672; GFX8-NEXT:    v_mov_b32_e32 v1, s4673; GFX8-NEXT:    flat_store_dword v[0:1], v2674; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)675; GFX8-NEXT:    s_setpc_b64 s[30:31]676;677; GFX8-ARCH-FLAT-LABEL: calls_intrin_ascast:678; GFX8-ARCH-FLAT:       ; %bb.0:679; GFX8-ARCH-FLAT-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)680; GFX8-ARCH-FLAT-NEXT:    s_mov_b64 s[0:1], 0xc4681; GFX8-ARCH-FLAT-NEXT:    s_load_dword s0, s[0:1], 0x0682; GFX8-ARCH-FLAT-NEXT:    v_mov_b32_e32 v2, 7683; GFX8-ARCH-FLAT-NEXT:    s_waitcnt lgkmcnt(0)684; GFX8-ARCH-FLAT-NEXT:    v_mov_b32_e32 v1, s0685; GFX8-ARCH-FLAT-NEXT:    flat_store_dword v[0:1], v2686; GFX8-ARCH-FLAT-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)687; GFX8-ARCH-FLAT-NEXT:    s_setpc_b64 s[30:31]688;689; GFX9-LABEL: calls_intrin_ascast:690; GFX9:       ; %bb.0:691; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)692; GFX9-NEXT:    s_mov_b64 s[4:5], src_shared_base693; GFX9-NEXT:    v_mov_b32_e32 v1, s5694; GFX9-NEXT:    v_mov_b32_e32 v2, 7695; GFX9-NEXT:    flat_store_dword v[0:1], v2696; GFX9-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)697; GFX9-NEXT:    s_setpc_b64 s[30:31]698;699; GFX9-ARCH-FLAT-LABEL: calls_intrin_ascast:700; GFX9-ARCH-FLAT:       ; %bb.0:701; GFX9-ARCH-FLAT-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)702; GFX9-ARCH-FLAT-NEXT:    s_mov_b64 s[0:1], src_shared_base703; GFX9-ARCH-FLAT-NEXT:    v_mov_b32_e32 v1, s1704; GFX9-ARCH-FLAT-NEXT:    v_mov_b32_e32 v2, 7705; GFX9-ARCH-FLAT-NEXT:    flat_store_dword v[0:1], v2706; GFX9-ARCH-FLAT-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)707; GFX9-ARCH-FLAT-NEXT:    s_setpc_b64 s[30:31]708;709; GFX942-ARCH-FLAT-LABEL: calls_intrin_ascast:710; GFX942-ARCH-FLAT:       ; %bb.0:711; GFX942-ARCH-FLAT-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)712; GFX942-ARCH-FLAT-NEXT:    s_mov_b64 s[0:1], src_shared_base713; GFX942-ARCH-FLAT-NEXT:    v_mov_b32_e32 v1, s1714; GFX942-ARCH-FLAT-NEXT:    v_mov_b32_e32 v2, 7715; GFX942-ARCH-FLAT-NEXT:    flat_store_dword v[0:1], v2 sc0 sc1716; GFX942-ARCH-FLAT-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)717; GFX942-ARCH-FLAT-NEXT:    s_setpc_b64 s[30:31]718;719; GFX10-LABEL: calls_intrin_ascast:720; GFX10:       ; %bb.0:721; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)722; GFX10-NEXT:    s_mov_b64 s[4:5], src_shared_base723; GFX10-NEXT:    v_mov_b32_e32 v2, 7724; GFX10-NEXT:    v_mov_b32_e32 v1, s5725; GFX10-NEXT:    flat_store_dword v[0:1], v2726; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0727; GFX10-NEXT:    s_waitcnt lgkmcnt(0)728; GFX10-NEXT:    s_setpc_b64 s[30:31]729  %1 = call ptr @llvm.amdgcn.addrspacecast.nonnull.p0.p3(ptr addrspace(3) %ptr)730  store volatile i32 7, ptr %1, align 4731  ret void732}733 734define amdgpu_kernel void @call_calls_intrin_ascast_cc_kernel(ptr addrspace(3) %ptr) #0 {735; GFX8-LABEL: call_calls_intrin_ascast_cc_kernel:736; GFX8:       ; %bb.0:737; GFX8-NEXT:    s_add_u32 s0, s0, s15738; GFX8-NEXT:    s_addc_u32 s1, s1, 0739; GFX8-NEXT:    s_load_dword s15, s[8:9], 0x0740; GFX8-NEXT:    s_add_u32 s8, s8, 8741; GFX8-NEXT:    s_addc_u32 s9, s9, 0742; GFX8-NEXT:    s_getpc_b64 s[16:17]743; GFX8-NEXT:    s_add_u32 s16, s16, calls_intrin_ascast@gotpcrel32@lo+4744; GFX8-NEXT:    s_addc_u32 s17, s17, calls_intrin_ascast@gotpcrel32@hi+12745; GFX8-NEXT:    s_load_dwordx2 s[16:17], s[16:17], 0x0746; GFX8-NEXT:    v_lshlrev_b32_e32 v1, 10, v1747; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 20, v2748; GFX8-NEXT:    v_or_b32_e32 v0, v0, v1749; GFX8-NEXT:    v_or_b32_e32 v31, v0, v2750; GFX8-NEXT:    s_waitcnt lgkmcnt(0)751; GFX8-NEXT:    v_mov_b32_e32 v0, s15752; GFX8-NEXT:    s_mov_b32 s32, 0753; GFX8-NEXT:    s_swappc_b64 s[30:31], s[16:17]754; GFX8-NEXT:    s_endpgm755;756; GFX8-ARCH-FLAT-LABEL: call_calls_intrin_ascast_cc_kernel:757; GFX8-ARCH-FLAT:       ; %bb.0:758; GFX8-ARCH-FLAT-NEXT:    s_mov_b32 s12, s8759; GFX8-ARCH-FLAT-NEXT:    s_add_u32 s8, s4, 8760; GFX8-ARCH-FLAT-NEXT:    s_mov_b32 s13, s9761; GFX8-ARCH-FLAT-NEXT:    s_addc_u32 s9, s5, 0762; GFX8-ARCH-FLAT-NEXT:    s_load_dword s15, s[4:5], 0x0763; GFX8-ARCH-FLAT-NEXT:    s_getpc_b64 s[4:5]764; GFX8-ARCH-FLAT-NEXT:    s_add_u32 s4, s4, calls_intrin_ascast@gotpcrel32@lo+4765; GFX8-ARCH-FLAT-NEXT:    s_addc_u32 s5, s5, calls_intrin_ascast@gotpcrel32@hi+12766; GFX8-ARCH-FLAT-NEXT:    s_load_dwordx2 s[16:17], s[4:5], 0x0767; GFX8-ARCH-FLAT-NEXT:    v_lshlrev_b32_e32 v1, 10, v1768; GFX8-ARCH-FLAT-NEXT:    v_lshlrev_b32_e32 v2, 20, v2769; GFX8-ARCH-FLAT-NEXT:    v_or_b32_e32 v0, v0, v1770; GFX8-ARCH-FLAT-NEXT:    s_mov_b32 s14, s10771; GFX8-ARCH-FLAT-NEXT:    s_mov_b64 s[10:11], s[6:7]772; GFX8-ARCH-FLAT-NEXT:    v_or_b32_e32 v31, v0, v2773; GFX8-ARCH-FLAT-NEXT:    s_mov_b64 s[4:5], s[0:1]774; GFX8-ARCH-FLAT-NEXT:    s_mov_b64 s[6:7], s[2:3]775; GFX8-ARCH-FLAT-NEXT:    s_waitcnt lgkmcnt(0)776; GFX8-ARCH-FLAT-NEXT:    v_mov_b32_e32 v0, s15777; GFX8-ARCH-FLAT-NEXT:    s_mov_b32 s32, 0778; GFX8-ARCH-FLAT-NEXT:    s_swappc_b64 s[30:31], s[16:17]779; GFX8-ARCH-FLAT-NEXT:    s_endpgm780;781; GFX9-LABEL: call_calls_intrin_ascast_cc_kernel:782; GFX9:       ; %bb.0:783; GFX9-NEXT:    s_add_u32 s0, s0, s15784; GFX9-NEXT:    s_addc_u32 s1, s1, 0785; GFX9-NEXT:    s_load_dword s15, s[8:9], 0x0786; GFX9-NEXT:    s_add_u32 s8, s8, 8787; GFX9-NEXT:    s_addc_u32 s9, s9, 0788; GFX9-NEXT:    s_getpc_b64 s[16:17]789; GFX9-NEXT:    s_add_u32 s16, s16, calls_intrin_ascast@gotpcrel32@lo+4790; GFX9-NEXT:    s_addc_u32 s17, s17, calls_intrin_ascast@gotpcrel32@hi+12791; GFX9-NEXT:    s_load_dwordx2 s[16:17], s[16:17], 0x0792; GFX9-NEXT:    v_lshlrev_b32_e32 v2, 20, v2793; GFX9-NEXT:    v_lshlrev_b32_e32 v1, 10, v1794; GFX9-NEXT:    v_or3_b32 v31, v0, v1, v2795; GFX9-NEXT:    s_waitcnt lgkmcnt(0)796; GFX9-NEXT:    v_mov_b32_e32 v0, s15797; GFX9-NEXT:    s_mov_b32 s32, 0798; GFX9-NEXT:    s_swappc_b64 s[30:31], s[16:17]799; GFX9-NEXT:    s_endpgm800;801; GFX9-ARCH-FLAT-LABEL: call_calls_intrin_ascast_cc_kernel:802; GFX9-ARCH-FLAT:       ; %bb.0:803; GFX9-ARCH-FLAT-NEXT:    s_mov_b32 s12, s8804; GFX9-ARCH-FLAT-NEXT:    s_add_u32 s8, s4, 8805; GFX9-ARCH-FLAT-NEXT:    s_mov_b32 s13, s9806; GFX9-ARCH-FLAT-NEXT:    s_addc_u32 s9, s5, 0807; GFX9-ARCH-FLAT-NEXT:    s_load_dword s15, s[4:5], 0x0808; GFX9-ARCH-FLAT-NEXT:    s_getpc_b64 s[4:5]809; GFX9-ARCH-FLAT-NEXT:    s_add_u32 s4, s4, calls_intrin_ascast@gotpcrel32@lo+4810; GFX9-ARCH-FLAT-NEXT:    s_addc_u32 s5, s5, calls_intrin_ascast@gotpcrel32@hi+12811; GFX9-ARCH-FLAT-NEXT:    s_load_dwordx2 s[16:17], s[4:5], 0x0812; GFX9-ARCH-FLAT-NEXT:    v_lshlrev_b32_e32 v2, 20, v2813; GFX9-ARCH-FLAT-NEXT:    v_lshlrev_b32_e32 v1, 10, v1814; GFX9-ARCH-FLAT-NEXT:    s_mov_b32 s14, s10815; GFX9-ARCH-FLAT-NEXT:    s_mov_b64 s[10:11], s[6:7]816; GFX9-ARCH-FLAT-NEXT:    v_or3_b32 v31, v0, v1, v2817; GFX9-ARCH-FLAT-NEXT:    s_mov_b64 s[4:5], s[0:1]818; GFX9-ARCH-FLAT-NEXT:    s_mov_b64 s[6:7], s[2:3]819; GFX9-ARCH-FLAT-NEXT:    s_waitcnt lgkmcnt(0)820; GFX9-ARCH-FLAT-NEXT:    v_mov_b32_e32 v0, s15821; GFX9-ARCH-FLAT-NEXT:    s_mov_b32 s32, 0822; GFX9-ARCH-FLAT-NEXT:    s_swappc_b64 s[30:31], s[16:17]823; GFX9-ARCH-FLAT-NEXT:    s_endpgm824;825; GFX942-ARCH-FLAT-LABEL: call_calls_intrin_ascast_cc_kernel:826; GFX942-ARCH-FLAT:       ; %bb.0:827; GFX942-ARCH-FLAT-NEXT:    s_mov_b32 s12, s8828; GFX942-ARCH-FLAT-NEXT:    s_add_u32 s8, s4, 8829; GFX942-ARCH-FLAT-NEXT:    s_mov_b32 s13, s9830; GFX942-ARCH-FLAT-NEXT:    s_addc_u32 s9, s5, 0831; GFX942-ARCH-FLAT-NEXT:    s_load_dword s15, s[4:5], 0x0832; GFX942-ARCH-FLAT-NEXT:    s_getpc_b64 s[4:5]833; GFX942-ARCH-FLAT-NEXT:    s_add_u32 s4, s4, calls_intrin_ascast@gotpcrel32@lo+4834; GFX942-ARCH-FLAT-NEXT:    s_addc_u32 s5, s5, calls_intrin_ascast@gotpcrel32@hi+12835; GFX942-ARCH-FLAT-NEXT:    s_load_dwordx2 s[16:17], s[4:5], 0x0836; GFX942-ARCH-FLAT-NEXT:    s_mov_b32 s14, s10837; GFX942-ARCH-FLAT-NEXT:    s_mov_b64 s[10:11], s[6:7]838; GFX942-ARCH-FLAT-NEXT:    s_mov_b64 s[4:5], s[0:1]839; GFX942-ARCH-FLAT-NEXT:    s_mov_b64 s[6:7], s[2:3]840; GFX942-ARCH-FLAT-NEXT:    v_mov_b32_e32 v31, v0841; GFX942-ARCH-FLAT-NEXT:    s_waitcnt lgkmcnt(0)842; GFX942-ARCH-FLAT-NEXT:    v_mov_b32_e32 v0, s15843; GFX942-ARCH-FLAT-NEXT:    s_mov_b32 s32, 0844; GFX942-ARCH-FLAT-NEXT:    s_swappc_b64 s[30:31], s[16:17]845; GFX942-ARCH-FLAT-NEXT:    s_endpgm846;847; GFX10-LABEL: call_calls_intrin_ascast_cc_kernel:848; GFX10:       ; %bb.0:849; GFX10-NEXT:    s_add_u32 s0, s0, s15850; GFX10-NEXT:    s_addc_u32 s1, s1, 0851; GFX10-NEXT:    s_load_dword s15, s[8:9], 0x0852; GFX10-NEXT:    s_add_u32 s8, s8, 8853; GFX10-NEXT:    s_addc_u32 s9, s9, 0854; GFX10-NEXT:    s_getpc_b64 s[16:17]855; GFX10-NEXT:    s_add_u32 s16, s16, calls_intrin_ascast@gotpcrel32@lo+4856; GFX10-NEXT:    s_addc_u32 s17, s17, calls_intrin_ascast@gotpcrel32@hi+12857; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 20, v2858; GFX10-NEXT:    s_load_dwordx2 s[16:17], s[16:17], 0x0859; GFX10-NEXT:    v_lshlrev_b32_e32 v1, 10, v1860; GFX10-NEXT:    s_mov_b32 s32, 0861; GFX10-NEXT:    v_or3_b32 v31, v0, v1, v2862; GFX10-NEXT:    s_waitcnt lgkmcnt(0)863; GFX10-NEXT:    v_mov_b32_e32 v0, s15864; GFX10-NEXT:    s_swappc_b64 s[30:31], s[16:17]865; GFX10-NEXT:    s_endpgm866  call void @calls_intrin_ascast(ptr addrspace(3) %ptr)867  ret void868}869 870attributes #0 = { "amdgpu-no-flat-scratch-init" }871