brintos

brintos / llvm-project-archived public Read only

0
0
Text · 41.1 KiB · 75638c5 Raw
848 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx906 < %s | FileCheck -check-prefix=GFX906 %s3; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx908 < %s | FileCheck -check-prefix=GFX908 %s4 5; Due to high register pressure, regalloc would split the liverange of wwm VGPR register used for SGPR spills6; and introduce a copy. The copy should be of whole-wave with exec mask manipulation around it.7; FIXME: The destination register involved in the whole-wave copy should be considered for preserving all the lanes8; with a spill/restore at function prolog/epilog. The copy might otherwise clobber its inactive lanes unwantedly.9define void @preserve_wwm_copy_dstreg(ptr %parg0, ptr %parg1, ptr %parg2) #0 {10; GFX906-LABEL: preserve_wwm_copy_dstreg:11; GFX906:       ; %bb.0:12; GFX906-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13; GFX906-NEXT:    s_mov_b32 s16, s3314; GFX906-NEXT:    s_mov_b32 s33, s3215; GFX906-NEXT:    s_xor_saveexec_b64 s[18:19], -116; GFX906-NEXT:    buffer_store_dword v39, off, s[0:3], s33 offset:8 ; 4-byte Folded Spill17; GFX906-NEXT:    s_mov_b64 exec, -118; GFX906-NEXT:    buffer_store_dword v41, off, s[0:3], s33 offset:148 ; 4-byte Folded Spill19; GFX906-NEXT:    s_mov_b64 exec, s[18:19]20; GFX906-NEXT:    s_mov_b32 s21, s1521; GFX906-NEXT:    ; implicit-def: $vgpr39 : SGPR spill to VGPR lane22; GFX906-NEXT:    s_mov_b32 s22, s1423; GFX906-NEXT:    v_writelane_b32 v39, s21, 024; GFX906-NEXT:    v_writelane_b32 v39, s22, 125; GFX906-NEXT:    s_mov_b32 s23, s1326; GFX906-NEXT:    v_writelane_b32 v39, s23, 227; GFX906-NEXT:    s_mov_b32 s24, s1228; GFX906-NEXT:    v_writelane_b32 v39, s24, 329; GFX906-NEXT:    s_mov_b64 s[26:27], s[10:11]30; GFX906-NEXT:    v_writelane_b32 v39, s26, 431; GFX906-NEXT:    v_writelane_b32 v39, s27, 532; GFX906-NEXT:    v_writelane_b32 v39, s8, 633; GFX906-NEXT:    v_writelane_b32 v41, s16, 434; GFX906-NEXT:    v_writelane_b32 v39, s9, 735; GFX906-NEXT:    v_writelane_b32 v41, s34, 236; GFX906-NEXT:    v_writelane_b32 v39, s6, 837; GFX906-NEXT:    v_writelane_b32 v41, s35, 338; GFX906-NEXT:    v_writelane_b32 v39, s7, 939; GFX906-NEXT:    v_writelane_b32 v41, s30, 040; GFX906-NEXT:    v_writelane_b32 v39, s4, 1041; GFX906-NEXT:    s_addk_i32 s32, 0x280042; GFX906-NEXT:    buffer_store_dword v40, off, s[0:3], s33 ; 4-byte Folded Spill43; GFX906-NEXT:    v_writelane_b32 v41, s31, 144; GFX906-NEXT:    v_mov_b32_e32 v32, v3145; GFX906-NEXT:    buffer_store_dword v0, off, s[0:3], s33 offset:12 ; 4-byte Folded Spill46; GFX906-NEXT:    s_nop 047; GFX906-NEXT:    buffer_store_dword v1, off, s[0:3], s33 offset:16 ; 4-byte Folded Spill48; GFX906-NEXT:    v_writelane_b32 v39, s5, 1149; GFX906-NEXT:    s_or_saveexec_b64 s[34:35], -150; GFX906-NEXT:    s_mov_b64 exec, s[34:35]51; GFX906-NEXT:    ;;#ASMSTART52; GFX906-NEXT:    ; def v[0:31]53; GFX906-NEXT:    ;;#ASMEND54; GFX906-NEXT:    buffer_store_dword v0, off, s[0:3], s33 offset:20 ; 4-byte Folded Spill55; GFX906-NEXT:    s_nop 056; GFX906-NEXT:    buffer_store_dword v1, off, s[0:3], s33 offset:24 ; 4-byte Folded Spill57; GFX906-NEXT:    buffer_store_dword v2, off, s[0:3], s33 offset:28 ; 4-byte Folded Spill58; GFX906-NEXT:    buffer_store_dword v3, off, s[0:3], s33 offset:32 ; 4-byte Folded Spill59; GFX906-NEXT:    buffer_store_dword v4, off, s[0:3], s33 offset:36 ; 4-byte Folded Spill60; GFX906-NEXT:    buffer_store_dword v5, off, s[0:3], s33 offset:40 ; 4-byte Folded Spill61; GFX906-NEXT:    buffer_store_dword v6, off, s[0:3], s33 offset:44 ; 4-byte Folded Spill62; GFX906-NEXT:    buffer_store_dword v7, off, s[0:3], s33 offset:48 ; 4-byte Folded Spill63; GFX906-NEXT:    buffer_store_dword v8, off, s[0:3], s33 offset:52 ; 4-byte Folded Spill64; GFX906-NEXT:    buffer_store_dword v9, off, s[0:3], s33 offset:56 ; 4-byte Folded Spill65; GFX906-NEXT:    buffer_store_dword v10, off, s[0:3], s33 offset:60 ; 4-byte Folded Spill66; GFX906-NEXT:    buffer_store_dword v11, off, s[0:3], s33 offset:64 ; 4-byte Folded Spill67; GFX906-NEXT:    buffer_store_dword v12, off, s[0:3], s33 offset:68 ; 4-byte Folded Spill68; GFX906-NEXT:    buffer_store_dword v13, off, s[0:3], s33 offset:72 ; 4-byte Folded Spill69; GFX906-NEXT:    buffer_store_dword v14, off, s[0:3], s33 offset:76 ; 4-byte Folded Spill70; GFX906-NEXT:    buffer_store_dword v15, off, s[0:3], s33 offset:80 ; 4-byte Folded Spill71; GFX906-NEXT:    buffer_store_dword v16, off, s[0:3], s33 offset:84 ; 4-byte Folded Spill72; GFX906-NEXT:    buffer_store_dword v17, off, s[0:3], s33 offset:88 ; 4-byte Folded Spill73; GFX906-NEXT:    buffer_store_dword v18, off, s[0:3], s33 offset:92 ; 4-byte Folded Spill74; GFX906-NEXT:    buffer_store_dword v19, off, s[0:3], s33 offset:96 ; 4-byte Folded Spill75; GFX906-NEXT:    buffer_store_dword v20, off, s[0:3], s33 offset:100 ; 4-byte Folded Spill76; GFX906-NEXT:    buffer_store_dword v21, off, s[0:3], s33 offset:104 ; 4-byte Folded Spill77; GFX906-NEXT:    buffer_store_dword v22, off, s[0:3], s33 offset:108 ; 4-byte Folded Spill78; GFX906-NEXT:    buffer_store_dword v23, off, s[0:3], s33 offset:112 ; 4-byte Folded Spill79; GFX906-NEXT:    buffer_store_dword v24, off, s[0:3], s33 offset:116 ; 4-byte Folded Spill80; GFX906-NEXT:    buffer_store_dword v25, off, s[0:3], s33 offset:120 ; 4-byte Folded Spill81; GFX906-NEXT:    buffer_store_dword v26, off, s[0:3], s33 offset:124 ; 4-byte Folded Spill82; GFX906-NEXT:    buffer_store_dword v27, off, s[0:3], s33 offset:128 ; 4-byte Folded Spill83; GFX906-NEXT:    buffer_store_dword v28, off, s[0:3], s33 offset:132 ; 4-byte Folded Spill84; GFX906-NEXT:    buffer_store_dword v29, off, s[0:3], s33 offset:136 ; 4-byte Folded Spill85; GFX906-NEXT:    buffer_store_dword v30, off, s[0:3], s33 offset:140 ; 4-byte Folded Spill86; GFX906-NEXT:    buffer_store_dword v31, off, s[0:3], s33 offset:144 ; 4-byte Folded Spill87; GFX906-NEXT:    ;;#ASMSTART88; GFX906-NEXT:    ; def v4089; GFX906-NEXT:    ;;#ASMEND90; GFX906-NEXT:    ;;#ASMSTART91; GFX906-NEXT:    ; def s1192; GFX906-NEXT:    ;;#ASMEND93; GFX906-NEXT:    v_writelane_b32 v39, s11, 1294; GFX906-NEXT:    ;;#ASMSTART95; GFX906-NEXT:    ; def s1296; GFX906-NEXT:    ;;#ASMEND97; GFX906-NEXT:    v_writelane_b32 v39, s12, 1398; GFX906-NEXT:    ;;#ASMSTART99; GFX906-NEXT:    ; def s13100; GFX906-NEXT:    ;;#ASMEND101; GFX906-NEXT:    v_writelane_b32 v39, s13, 14102; GFX906-NEXT:    ;;#ASMSTART103; GFX906-NEXT:    ; def s14104; GFX906-NEXT:    ;;#ASMEND105; GFX906-NEXT:    v_writelane_b32 v39, s14, 15106; GFX906-NEXT:    ;;#ASMSTART107; GFX906-NEXT:    ; def s15108; GFX906-NEXT:    ;;#ASMEND109; GFX906-NEXT:    v_writelane_b32 v39, s15, 16110; GFX906-NEXT:    s_getpc_b64 s[10:11]111; GFX906-NEXT:    s_add_u32 s10, s10, foo@gotpcrel32@lo+4112; GFX906-NEXT:    s_addc_u32 s11, s11, foo@gotpcrel32@hi+12113; GFX906-NEXT:    ;;#ASMSTART114; GFX906-NEXT:    ; def s16115; GFX906-NEXT:    ;;#ASMEND116; GFX906-NEXT:    v_writelane_b32 v39, s16, 17117; GFX906-NEXT:    s_load_dwordx2 s[10:11], s[10:11], 0x0118; GFX906-NEXT:    ;;#ASMSTART119; GFX906-NEXT:    ; def s17120; GFX906-NEXT:    ;;#ASMEND121; GFX906-NEXT:    v_writelane_b32 v39, s17, 18122; GFX906-NEXT:    ;;#ASMSTART123; GFX906-NEXT:    ; def s18124; GFX906-NEXT:    ;;#ASMEND125; GFX906-NEXT:    v_writelane_b32 v39, s18, 19126; GFX906-NEXT:    ;;#ASMSTART127; GFX906-NEXT:    ; def s19128; GFX906-NEXT:    ;;#ASMEND129; GFX906-NEXT:    v_writelane_b32 v39, s19, 20130; GFX906-NEXT:    ;;#ASMSTART131; GFX906-NEXT:    ; def s20132; GFX906-NEXT:    ;;#ASMEND133; GFX906-NEXT:    v_writelane_b32 v39, s20, 21134; GFX906-NEXT:    s_waitcnt lgkmcnt(0)135; GFX906-NEXT:    v_writelane_b32 v39, s10, 22136; GFX906-NEXT:    v_writelane_b32 v39, s11, 23137; GFX906-NEXT:    s_or_saveexec_b64 s[34:35], -1138; GFX906-NEXT:    s_mov_b64 exec, s[34:35]139; GFX906-NEXT:    s_or_saveexec_b64 s[34:35], -1140; GFX906-NEXT:    buffer_store_dword v39, off, s[0:3], s33 offset:4 ; 4-byte Folded Spill141; GFX906-NEXT:    s_mov_b64 exec, s[34:35]142; GFX906-NEXT:    v_readlane_b32 s16, v39, 22143; GFX906-NEXT:    s_mov_b32 s12, s24144; GFX906-NEXT:    s_mov_b32 s13, s23145; GFX906-NEXT:    s_mov_b32 s14, s22146; GFX906-NEXT:    v_mov_b32_e32 v31, v32147; GFX906-NEXT:    s_mov_b32 s15, s21148; GFX906-NEXT:    s_mov_b64 s[10:11], s[26:27]149; GFX906-NEXT:    v_readlane_b32 s17, v39, 23150; GFX906-NEXT:    v_mov_b32_e32 v40, v32151; GFX906-NEXT:    s_swappc_b64 s[30:31], s[16:17]152; GFX906-NEXT:    s_or_saveexec_b64 s[34:35], -1153; GFX906-NEXT:    buffer_load_dword v39, off, s[0:3], s33 offset:4 ; 4-byte Folded Reload154; GFX906-NEXT:    s_mov_b64 exec, s[34:35]155; GFX906-NEXT:    s_waitcnt vmcnt(0)156; GFX906-NEXT:    v_readlane_b32 s11, v39, 12157; GFX906-NEXT:    ;;#ASMSTART158; GFX906-NEXT:    ; use s11159; GFX906-NEXT:    ;;#ASMEND160; GFX906-NEXT:    v_readlane_b32 s12, v39, 13161; GFX906-NEXT:    ;;#ASMSTART162; GFX906-NEXT:    ; use s12163; GFX906-NEXT:    ;;#ASMEND164; GFX906-NEXT:    v_readlane_b32 s13, v39, 14165; GFX906-NEXT:    ;;#ASMSTART166; GFX906-NEXT:    ; use s13167; GFX906-NEXT:    ;;#ASMEND168; GFX906-NEXT:    v_readlane_b32 s14, v39, 15169; GFX906-NEXT:    ;;#ASMSTART170; GFX906-NEXT:    ; use s14171; GFX906-NEXT:    ;;#ASMEND172; GFX906-NEXT:    v_readlane_b32 s15, v39, 16173; GFX906-NEXT:    ;;#ASMSTART174; GFX906-NEXT:    ; use s15175; GFX906-NEXT:    ;;#ASMEND176; GFX906-NEXT:    v_readlane_b32 s16, v39, 17177; GFX906-NEXT:    ;;#ASMSTART178; GFX906-NEXT:    ; use s16179; GFX906-NEXT:    ;;#ASMEND180; GFX906-NEXT:    v_readlane_b32 s17, v39, 18181; GFX906-NEXT:    ;;#ASMSTART182; GFX906-NEXT:    ; use s17183; GFX906-NEXT:    ;;#ASMEND184; GFX906-NEXT:    v_readlane_b32 s18, v39, 19185; GFX906-NEXT:    ;;#ASMSTART186; GFX906-NEXT:    ; use s18187; GFX906-NEXT:    ;;#ASMEND188; GFX906-NEXT:    v_readlane_b32 s19, v39, 20189; GFX906-NEXT:    ;;#ASMSTART190; GFX906-NEXT:    ; use s19191; GFX906-NEXT:    ;;#ASMEND192; GFX906-NEXT:    v_readlane_b32 s20, v39, 21193; GFX906-NEXT:    ;;#ASMSTART194; GFX906-NEXT:    ; use s20195; GFX906-NEXT:    ;;#ASMEND196; GFX906-NEXT:    ;;#ASMSTART197; GFX906-NEXT:    ; def s21198; GFX906-NEXT:    ;;#ASMEND199; GFX906-NEXT:    v_writelane_b32 v39, s21, 12200; GFX906-NEXT:    ;;#ASMSTART201; GFX906-NEXT:    ; def s22202; GFX906-NEXT:    ;;#ASMEND203; GFX906-NEXT:    v_writelane_b32 v39, s22, 13204; GFX906-NEXT:    ;;#ASMSTART205; GFX906-NEXT:    ; def s23206; GFX906-NEXT:    ;;#ASMEND207; GFX906-NEXT:    v_writelane_b32 v39, s23, 14208; GFX906-NEXT:    ;;#ASMSTART209; GFX906-NEXT:    ; def s24210; GFX906-NEXT:    ;;#ASMEND211; GFX906-NEXT:    v_writelane_b32 v39, s24, 15212; GFX906-NEXT:    ;;#ASMSTART213; GFX906-NEXT:    ; def s25214; GFX906-NEXT:    ;;#ASMEND215; GFX906-NEXT:    v_writelane_b32 v39, s25, 16216; GFX906-NEXT:    ;;#ASMSTART217; GFX906-NEXT:    ; def s26218; GFX906-NEXT:    ;;#ASMEND219; GFX906-NEXT:    v_writelane_b32 v39, s26, 17220; GFX906-NEXT:    ;;#ASMSTART221; GFX906-NEXT:    ; def s27222; GFX906-NEXT:    ;;#ASMEND223; GFX906-NEXT:    v_writelane_b32 v39, s27, 18224; GFX906-NEXT:    ;;#ASMSTART225; GFX906-NEXT:    ; def s28226; GFX906-NEXT:    ;;#ASMEND227; GFX906-NEXT:    v_writelane_b32 v39, s28, 19228; GFX906-NEXT:    ;;#ASMSTART229; GFX906-NEXT:    ; def s29230; GFX906-NEXT:    ;;#ASMEND231; GFX906-NEXT:    v_writelane_b32 v39, s29, 20232; GFX906-NEXT:    s_or_saveexec_b64 s[34:35], -1233; GFX906-NEXT:    buffer_store_dword v39, off, s[0:3], s33 offset:4 ; 4-byte Folded Spill234; GFX906-NEXT:    s_mov_b64 exec, s[34:35]235; GFX906-NEXT:    v_readlane_b32 s4, v39, 10236; GFX906-NEXT:    v_readlane_b32 s6, v39, 8237; GFX906-NEXT:    v_readlane_b32 s8, v39, 6238; GFX906-NEXT:    v_readlane_b32 s10, v39, 4239; GFX906-NEXT:    v_readlane_b32 s16, v39, 22240; GFX906-NEXT:    v_readlane_b32 s12, v39, 3241; GFX906-NEXT:    v_mov_b32_e32 v31, v40242; GFX906-NEXT:    v_readlane_b32 s13, v39, 2243; GFX906-NEXT:    v_readlane_b32 s14, v39, 1244; GFX906-NEXT:    v_readlane_b32 s15, v39, 0245; GFX906-NEXT:    v_readlane_b32 s5, v39, 11246; GFX906-NEXT:    v_readlane_b32 s7, v39, 9247; GFX906-NEXT:    v_readlane_b32 s9, v39, 7248; GFX906-NEXT:    v_readlane_b32 s11, v39, 5249; GFX906-NEXT:    v_readlane_b32 s17, v39, 23250; GFX906-NEXT:    s_swappc_b64 s[30:31], s[16:17]251; GFX906-NEXT:    s_or_saveexec_b64 s[34:35], -1252; GFX906-NEXT:    buffer_load_dword v39, off, s[0:3], s33 offset:4 ; 4-byte Folded Reload253; GFX906-NEXT:    s_mov_b64 exec, s[34:35]254; GFX906-NEXT:    s_waitcnt vmcnt(0)255; GFX906-NEXT:    v_readlane_b32 s4, v39, 10256; GFX906-NEXT:    v_readlane_b32 s6, v39, 8257; GFX906-NEXT:    v_readlane_b32 s8, v39, 6258; GFX906-NEXT:    v_readlane_b32 s10, v39, 4259; GFX906-NEXT:    v_readlane_b32 s16, v39, 22260; GFX906-NEXT:    v_readlane_b32 s5, v39, 11261; GFX906-NEXT:    v_readlane_b32 s7, v39, 9262; GFX906-NEXT:    v_readlane_b32 s9, v39, 7263; GFX906-NEXT:    v_readlane_b32 s11, v39, 5264; GFX906-NEXT:    v_readlane_b32 s12, v39, 3265; GFX906-NEXT:    v_readlane_b32 s13, v39, 2266; GFX906-NEXT:    v_readlane_b32 s14, v39, 1267; GFX906-NEXT:    v_readlane_b32 s15, v39, 0268; GFX906-NEXT:    v_mov_b32_e32 v31, v40269; GFX906-NEXT:    v_readlane_b32 s17, v39, 23270; GFX906-NEXT:    v_readlane_b32 s21, v39, 12271; GFX906-NEXT:    ;;#ASMSTART272; GFX906-NEXT:    ; use s21273; GFX906-NEXT:    ;;#ASMEND274; GFX906-NEXT:    v_readlane_b32 s22, v39, 13275; GFX906-NEXT:    ;;#ASMSTART276; GFX906-NEXT:    ; use s22277; GFX906-NEXT:    ;;#ASMEND278; GFX906-NEXT:    v_readlane_b32 s23, v39, 14279; GFX906-NEXT:    ;;#ASMSTART280; GFX906-NEXT:    ; use s23281; GFX906-NEXT:    ;;#ASMEND282; GFX906-NEXT:    v_readlane_b32 s24, v39, 15283; GFX906-NEXT:    ;;#ASMSTART284; GFX906-NEXT:    ; use s24285; GFX906-NEXT:    ;;#ASMEND286; GFX906-NEXT:    v_readlane_b32 s25, v39, 16287; GFX906-NEXT:    ;;#ASMSTART288; GFX906-NEXT:    ; use s25289; GFX906-NEXT:    ;;#ASMEND290; GFX906-NEXT:    v_readlane_b32 s26, v39, 17291; GFX906-NEXT:    ;;#ASMSTART292; GFX906-NEXT:    ; use s26293; GFX906-NEXT:    ;;#ASMEND294; GFX906-NEXT:    v_readlane_b32 s27, v39, 18295; GFX906-NEXT:    ;;#ASMSTART296; GFX906-NEXT:    ; use s27297; GFX906-NEXT:    ;;#ASMEND298; GFX906-NEXT:    v_readlane_b32 s28, v39, 19299; GFX906-NEXT:    ;;#ASMSTART300; GFX906-NEXT:    ; use s28301; GFX906-NEXT:    ;;#ASMEND302; GFX906-NEXT:    v_readlane_b32 s29, v39, 20303; GFX906-NEXT:    ;;#ASMSTART304; GFX906-NEXT:    ; use s29305; GFX906-NEXT:    ;;#ASMEND306; GFX906-NEXT:    s_swappc_b64 s[30:31], s[16:17]307; GFX906-NEXT:    buffer_load_dword v2, off, s[0:3], s33 offset:12 ; 4-byte Folded Reload308; GFX906-NEXT:    buffer_load_dword v3, off, s[0:3], s33 offset:16 ; 4-byte Folded Reload309; GFX906-NEXT:    buffer_load_dword v4, off, s[0:3], s33 offset:20 ; 4-byte Folded Reload310; GFX906-NEXT:    buffer_load_dword v5, off, s[0:3], s33 offset:24 ; 4-byte Folded Reload311; GFX906-NEXT:    buffer_load_dword v6, off, s[0:3], s33 offset:28 ; 4-byte Folded Reload312; GFX906-NEXT:    buffer_load_dword v7, off, s[0:3], s33 offset:32 ; 4-byte Folded Reload313; GFX906-NEXT:    buffer_load_dword v8, off, s[0:3], s33 offset:36 ; 4-byte Folded Reload314; GFX906-NEXT:    buffer_load_dword v9, off, s[0:3], s33 offset:40 ; 4-byte Folded Reload315; GFX906-NEXT:    buffer_load_dword v10, off, s[0:3], s33 offset:44 ; 4-byte Folded Reload316; GFX906-NEXT:    buffer_load_dword v11, off, s[0:3], s33 offset:48 ; 4-byte Folded Reload317; GFX906-NEXT:    buffer_load_dword v12, off, s[0:3], s33 offset:52 ; 4-byte Folded Reload318; GFX906-NEXT:    buffer_load_dword v13, off, s[0:3], s33 offset:56 ; 4-byte Folded Reload319; GFX906-NEXT:    buffer_load_dword v14, off, s[0:3], s33 offset:60 ; 4-byte Folded Reload320; GFX906-NEXT:    buffer_load_dword v15, off, s[0:3], s33 offset:64 ; 4-byte Folded Reload321; GFX906-NEXT:    buffer_load_dword v16, off, s[0:3], s33 offset:68 ; 4-byte Folded Reload322; GFX906-NEXT:    buffer_load_dword v17, off, s[0:3], s33 offset:72 ; 4-byte Folded Reload323; GFX906-NEXT:    buffer_load_dword v18, off, s[0:3], s33 offset:76 ; 4-byte Folded Reload324; GFX906-NEXT:    buffer_load_dword v19, off, s[0:3], s33 offset:80 ; 4-byte Folded Reload325; GFX906-NEXT:    buffer_load_dword v20, off, s[0:3], s33 offset:84 ; 4-byte Folded Reload326; GFX906-NEXT:    buffer_load_dword v21, off, s[0:3], s33 offset:88 ; 4-byte Folded Reload327; GFX906-NEXT:    buffer_load_dword v22, off, s[0:3], s33 offset:92 ; 4-byte Folded Reload328; GFX906-NEXT:    buffer_load_dword v23, off, s[0:3], s33 offset:96 ; 4-byte Folded Reload329; GFX906-NEXT:    buffer_load_dword v24, off, s[0:3], s33 offset:100 ; 4-byte Folded Reload330; GFX906-NEXT:    buffer_load_dword v25, off, s[0:3], s33 offset:104 ; 4-byte Folded Reload331; GFX906-NEXT:    buffer_load_dword v26, off, s[0:3], s33 offset:108 ; 4-byte Folded Reload332; GFX906-NEXT:    buffer_load_dword v27, off, s[0:3], s33 offset:112 ; 4-byte Folded Reload333; GFX906-NEXT:    buffer_load_dword v28, off, s[0:3], s33 offset:116 ; 4-byte Folded Reload334; GFX906-NEXT:    buffer_load_dword v29, off, s[0:3], s33 offset:120 ; 4-byte Folded Reload335; GFX906-NEXT:    buffer_load_dword v30, off, s[0:3], s33 offset:124 ; 4-byte Folded Reload336; GFX906-NEXT:    buffer_load_dword v31, off, s[0:3], s33 offset:128 ; 4-byte Folded Reload337; GFX906-NEXT:    buffer_load_dword v32, off, s[0:3], s33 offset:132 ; 4-byte Folded Reload338; GFX906-NEXT:    buffer_load_dword v33, off, s[0:3], s33 offset:136 ; 4-byte Folded Reload339; GFX906-NEXT:    buffer_load_dword v34, off, s[0:3], s33 offset:140 ; 4-byte Folded Reload340; GFX906-NEXT:    buffer_load_dword v35, off, s[0:3], s33 offset:144 ; 4-byte Folded Reload341; GFX906-NEXT:    v_readlane_b32 s31, v41, 1342; GFX906-NEXT:    v_readlane_b32 s30, v41, 0343; GFX906-NEXT:    s_mov_b32 s32, s33344; GFX906-NEXT:    v_readlane_b32 s4, v41, 4345; GFX906-NEXT:    v_readlane_b32 s34, v41, 2346; GFX906-NEXT:    v_readlane_b32 s35, v41, 3347; GFX906-NEXT:    s_waitcnt vmcnt(33)348; GFX906-NEXT:    v_add_co_u32_e32 v0, vcc, 0x70, v2349; GFX906-NEXT:    s_waitcnt vmcnt(32)350; GFX906-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v3, vcc351; GFX906-NEXT:    s_waitcnt vmcnt(0)352; GFX906-NEXT:    flat_store_dwordx4 v[0:1], v[32:35]353; GFX906-NEXT:    s_waitcnt vmcnt(0)354; GFX906-NEXT:    v_add_co_u32_e32 v0, vcc, 0x60, v2355; GFX906-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v3, vcc356; GFX906-NEXT:    flat_store_dwordx4 v[0:1], v[28:31]357; GFX906-NEXT:    s_waitcnt vmcnt(0)358; GFX906-NEXT:    v_add_co_u32_e32 v0, vcc, 0x50, v2359; GFX906-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v3, vcc360; GFX906-NEXT:    flat_store_dwordx4 v[0:1], v[24:27]361; GFX906-NEXT:    s_waitcnt vmcnt(0)362; GFX906-NEXT:    flat_store_dwordx4 v[2:3], v[20:23] offset:64363; GFX906-NEXT:    s_waitcnt vmcnt(0)364; GFX906-NEXT:    v_add_co_u32_e32 v0, vcc, 48, v2365; GFX906-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v3, vcc366; GFX906-NEXT:    flat_store_dwordx4 v[0:1], v[16:19]367; GFX906-NEXT:    s_waitcnt vmcnt(0)368; GFX906-NEXT:    flat_store_dwordx4 v[2:3], v[12:15] offset:32369; GFX906-NEXT:    s_waitcnt vmcnt(0)370; GFX906-NEXT:    flat_store_dwordx4 v[2:3], v[8:11] offset:16371; GFX906-NEXT:    s_waitcnt vmcnt(0)372; GFX906-NEXT:    flat_store_dwordx4 v[2:3], v[4:7]373; GFX906-NEXT:    s_waitcnt vmcnt(0)374; GFX906-NEXT:    buffer_load_dword v40, off, s[0:3], s33 ; 4-byte Folded Reload375; GFX906-NEXT:    s_xor_saveexec_b64 s[6:7], -1376; GFX906-NEXT:    buffer_load_dword v39, off, s[0:3], s33 offset:8 ; 4-byte Folded Reload377; GFX906-NEXT:    s_mov_b64 exec, -1378; GFX906-NEXT:    buffer_load_dword v41, off, s[0:3], s33 offset:148 ; 4-byte Folded Reload379; GFX906-NEXT:    s_mov_b64 exec, s[6:7]380; GFX906-NEXT:    s_mov_b32 s33, s4381; GFX906-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)382; GFX906-NEXT:    s_setpc_b64 s[30:31]383;384; GFX908-LABEL: preserve_wwm_copy_dstreg:385; GFX908:       ; %bb.0:386; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)387; GFX908-NEXT:    s_mov_b32 s16, s33388; GFX908-NEXT:    s_mov_b32 s33, s32389; GFX908-NEXT:    s_xor_saveexec_b64 s[18:19], -1390; GFX908-NEXT:    buffer_store_dword v39, off, s[0:3], s33 offset:16 ; 4-byte Folded Spill391; GFX908-NEXT:    s_mov_b64 exec, s[18:19]392; GFX908-NEXT:    v_mov_b32_e32 v2, s16393; GFX908-NEXT:    buffer_store_dword v2, off, s[0:3], s33 offset:164 ; 4-byte Folded Spill394; GFX908-NEXT:    v_mov_b32_e32 v2, s34395; GFX908-NEXT:    buffer_store_dword v2, off, s[0:3], s33 offset:156 ; 4-byte Folded Spill396; GFX908-NEXT:    v_mov_b32_e32 v2, s35397; GFX908-NEXT:    buffer_store_dword v2, off, s[0:3], s33 offset:160 ; 4-byte Folded Spill398; GFX908-NEXT:    s_addk_i32 s32, 0x2c00399; GFX908-NEXT:    buffer_store_dword v40, off, s[0:3], s33 ; 4-byte Folded Spill400; GFX908-NEXT:    s_mov_b64 s[16:17], exec401; GFX908-NEXT:    s_mov_b64 exec, 1402; GFX908-NEXT:    buffer_store_dword v2, off, s[0:3], s33 offset:168403; GFX908-NEXT:    v_writelane_b32 v2, s30, 0404; GFX908-NEXT:    buffer_store_dword v2, off, s[0:3], s33 offset:4 ; 4-byte Folded Spill405; GFX908-NEXT:    buffer_load_dword v2, off, s[0:3], s33 offset:168406; GFX908-NEXT:    s_waitcnt vmcnt(0)407; GFX908-NEXT:    s_mov_b64 exec, s[16:17]408; GFX908-NEXT:    s_mov_b64 s[16:17], exec409; GFX908-NEXT:    s_mov_b64 exec, 1410; GFX908-NEXT:    buffer_store_dword v2, off, s[0:3], s33 offset:168411; GFX908-NEXT:    v_writelane_b32 v2, s31, 0412; GFX908-NEXT:    buffer_store_dword v2, off, s[0:3], s33 offset:8 ; 4-byte Folded Spill413; GFX908-NEXT:    buffer_load_dword v2, off, s[0:3], s33 offset:168414; GFX908-NEXT:    s_waitcnt vmcnt(0)415; GFX908-NEXT:    s_mov_b64 exec, s[16:17]416; GFX908-NEXT:    s_mov_b32 s21, s15417; GFX908-NEXT:    ; implicit-def: $vgpr39 : SGPR spill to VGPR lane418; GFX908-NEXT:    s_mov_b32 s22, s14419; GFX908-NEXT:    v_writelane_b32 v39, s21, 0420; GFX908-NEXT:    v_writelane_b32 v39, s22, 1421; GFX908-NEXT:    s_mov_b32 s23, s13422; GFX908-NEXT:    v_writelane_b32 v39, s23, 2423; GFX908-NEXT:    s_mov_b32 s24, s12424; GFX908-NEXT:    v_writelane_b32 v39, s24, 3425; GFX908-NEXT:    s_mov_b64 s[26:27], s[10:11]426; GFX908-NEXT:    v_writelane_b32 v39, s26, 4427; GFX908-NEXT:    v_writelane_b32 v39, s27, 5428; GFX908-NEXT:    v_writelane_b32 v39, s8, 6429; GFX908-NEXT:    v_writelane_b32 v39, s9, 7430; GFX908-NEXT:    v_writelane_b32 v39, s6, 8431; GFX908-NEXT:    v_writelane_b32 v39, s7, 9432; GFX908-NEXT:    v_writelane_b32 v39, s4, 10433; GFX908-NEXT:    v_mov_b32_e32 v32, v31434; GFX908-NEXT:    buffer_store_dword v0, off, s[0:3], s33 offset:20 ; 4-byte Folded Spill435; GFX908-NEXT:    s_nop 0436; GFX908-NEXT:    buffer_store_dword v1, off, s[0:3], s33 offset:24 ; 4-byte Folded Spill437; GFX908-NEXT:    v_writelane_b32 v39, s5, 11438; GFX908-NEXT:    s_or_saveexec_b64 s[34:35], -1439; GFX908-NEXT:    s_mov_b64 exec, s[34:35]440; GFX908-NEXT:    ;;#ASMSTART441; GFX908-NEXT:    ; def v[0:31]442; GFX908-NEXT:    ;;#ASMEND443; GFX908-NEXT:    buffer_store_dword v0, off, s[0:3], s33 offset:28 ; 4-byte Folded Spill444; GFX908-NEXT:    s_nop 0445; GFX908-NEXT:    buffer_store_dword v1, off, s[0:3], s33 offset:32 ; 4-byte Folded Spill446; GFX908-NEXT:    buffer_store_dword v2, off, s[0:3], s33 offset:36 ; 4-byte Folded Spill447; GFX908-NEXT:    buffer_store_dword v3, off, s[0:3], s33 offset:40 ; 4-byte Folded Spill448; GFX908-NEXT:    buffer_store_dword v4, off, s[0:3], s33 offset:44 ; 4-byte Folded Spill449; GFX908-NEXT:    buffer_store_dword v5, off, s[0:3], s33 offset:48 ; 4-byte Folded Spill450; GFX908-NEXT:    buffer_store_dword v6, off, s[0:3], s33 offset:52 ; 4-byte Folded Spill451; GFX908-NEXT:    buffer_store_dword v7, off, s[0:3], s33 offset:56 ; 4-byte Folded Spill452; GFX908-NEXT:    buffer_store_dword v8, off, s[0:3], s33 offset:60 ; 4-byte Folded Spill453; GFX908-NEXT:    buffer_store_dword v9, off, s[0:3], s33 offset:64 ; 4-byte Folded Spill454; GFX908-NEXT:    buffer_store_dword v10, off, s[0:3], s33 offset:68 ; 4-byte Folded Spill455; GFX908-NEXT:    buffer_store_dword v11, off, s[0:3], s33 offset:72 ; 4-byte Folded Spill456; GFX908-NEXT:    buffer_store_dword v12, off, s[0:3], s33 offset:76 ; 4-byte Folded Spill457; GFX908-NEXT:    buffer_store_dword v13, off, s[0:3], s33 offset:80 ; 4-byte Folded Spill458; GFX908-NEXT:    buffer_store_dword v14, off, s[0:3], s33 offset:84 ; 4-byte Folded Spill459; GFX908-NEXT:    buffer_store_dword v15, off, s[0:3], s33 offset:88 ; 4-byte Folded Spill460; GFX908-NEXT:    buffer_store_dword v16, off, s[0:3], s33 offset:92 ; 4-byte Folded Spill461; GFX908-NEXT:    buffer_store_dword v17, off, s[0:3], s33 offset:96 ; 4-byte Folded Spill462; GFX908-NEXT:    buffer_store_dword v18, off, s[0:3], s33 offset:100 ; 4-byte Folded Spill463; GFX908-NEXT:    buffer_store_dword v19, off, s[0:3], s33 offset:104 ; 4-byte Folded Spill464; GFX908-NEXT:    buffer_store_dword v20, off, s[0:3], s33 offset:108 ; 4-byte Folded Spill465; GFX908-NEXT:    buffer_store_dword v21, off, s[0:3], s33 offset:112 ; 4-byte Folded Spill466; GFX908-NEXT:    buffer_store_dword v22, off, s[0:3], s33 offset:116 ; 4-byte Folded Spill467; GFX908-NEXT:    buffer_store_dword v23, off, s[0:3], s33 offset:120 ; 4-byte Folded Spill468; GFX908-NEXT:    buffer_store_dword v24, off, s[0:3], s33 offset:124 ; 4-byte Folded Spill469; GFX908-NEXT:    buffer_store_dword v25, off, s[0:3], s33 offset:128 ; 4-byte Folded Spill470; GFX908-NEXT:    buffer_store_dword v26, off, s[0:3], s33 offset:132 ; 4-byte Folded Spill471; GFX908-NEXT:    buffer_store_dword v27, off, s[0:3], s33 offset:136 ; 4-byte Folded Spill472; GFX908-NEXT:    buffer_store_dword v28, off, s[0:3], s33 offset:140 ; 4-byte Folded Spill473; GFX908-NEXT:    buffer_store_dword v29, off, s[0:3], s33 offset:144 ; 4-byte Folded Spill474; GFX908-NEXT:    buffer_store_dword v30, off, s[0:3], s33 offset:148 ; 4-byte Folded Spill475; GFX908-NEXT:    buffer_store_dword v31, off, s[0:3], s33 offset:152 ; 4-byte Folded Spill476; GFX908-NEXT:    ;;#ASMSTART477; GFX908-NEXT:    ; def v40478; GFX908-NEXT:    ;;#ASMEND479; GFX908-NEXT:    ;;#ASMSTART480; GFX908-NEXT:    ; def s11481; GFX908-NEXT:    ;;#ASMEND482; GFX908-NEXT:    v_writelane_b32 v39, s11, 12483; GFX908-NEXT:    ;;#ASMSTART484; GFX908-NEXT:    ; def s12485; GFX908-NEXT:    ;;#ASMEND486; GFX908-NEXT:    v_writelane_b32 v39, s12, 13487; GFX908-NEXT:    ;;#ASMSTART488; GFX908-NEXT:    ; def s13489; GFX908-NEXT:    ;;#ASMEND490; GFX908-NEXT:    v_writelane_b32 v39, s13, 14491; GFX908-NEXT:    ;;#ASMSTART492; GFX908-NEXT:    ; def s14493; GFX908-NEXT:    ;;#ASMEND494; GFX908-NEXT:    v_writelane_b32 v39, s14, 15495; GFX908-NEXT:    ;;#ASMSTART496; GFX908-NEXT:    ; def s15497; GFX908-NEXT:    ;;#ASMEND498; GFX908-NEXT:    v_writelane_b32 v39, s15, 16499; GFX908-NEXT:    s_getpc_b64 s[10:11]500; GFX908-NEXT:    s_add_u32 s10, s10, foo@gotpcrel32@lo+4501; GFX908-NEXT:    s_addc_u32 s11, s11, foo@gotpcrel32@hi+12502; GFX908-NEXT:    ;;#ASMSTART503; GFX908-NEXT:    ; def s16504; GFX908-NEXT:    ;;#ASMEND505; GFX908-NEXT:    v_writelane_b32 v39, s16, 17506; GFX908-NEXT:    s_load_dwordx2 s[10:11], s[10:11], 0x0507; GFX908-NEXT:    ;;#ASMSTART508; GFX908-NEXT:    ; def s17509; GFX908-NEXT:    ;;#ASMEND510; GFX908-NEXT:    v_writelane_b32 v39, s17, 18511; GFX908-NEXT:    ;;#ASMSTART512; GFX908-NEXT:    ; def s18513; GFX908-NEXT:    ;;#ASMEND514; GFX908-NEXT:    v_writelane_b32 v39, s18, 19515; GFX908-NEXT:    ;;#ASMSTART516; GFX908-NEXT:    ; def s19517; GFX908-NEXT:    ;;#ASMEND518; GFX908-NEXT:    v_writelane_b32 v39, s19, 20519; GFX908-NEXT:    ;;#ASMSTART520; GFX908-NEXT:    ; def s20521; GFX908-NEXT:    ;;#ASMEND522; GFX908-NEXT:    v_writelane_b32 v39, s20, 21523; GFX908-NEXT:    s_waitcnt lgkmcnt(0)524; GFX908-NEXT:    v_writelane_b32 v39, s10, 22525; GFX908-NEXT:    v_writelane_b32 v39, s11, 23526; GFX908-NEXT:    s_or_saveexec_b64 s[34:35], -1527; GFX908-NEXT:    s_mov_b64 exec, s[34:35]528; GFX908-NEXT:    s_or_saveexec_b64 s[34:35], -1529; GFX908-NEXT:    buffer_store_dword v39, off, s[0:3], s33 offset:12 ; 4-byte Folded Spill530; GFX908-NEXT:    s_mov_b64 exec, s[34:35]531; GFX908-NEXT:    v_readlane_b32 s16, v39, 22532; GFX908-NEXT:    s_mov_b32 s12, s24533; GFX908-NEXT:    s_mov_b32 s13, s23534; GFX908-NEXT:    s_mov_b32 s14, s22535; GFX908-NEXT:    v_mov_b32_e32 v31, v32536; GFX908-NEXT:    s_mov_b32 s15, s21537; GFX908-NEXT:    s_mov_b64 s[10:11], s[26:27]538; GFX908-NEXT:    v_readlane_b32 s17, v39, 23539; GFX908-NEXT:    v_mov_b32_e32 v40, v32540; GFX908-NEXT:    s_swappc_b64 s[30:31], s[16:17]541; GFX908-NEXT:    s_or_saveexec_b64 s[34:35], -1542; GFX908-NEXT:    buffer_load_dword v39, off, s[0:3], s33 offset:12 ; 4-byte Folded Reload543; GFX908-NEXT:    s_mov_b64 exec, s[34:35]544; GFX908-NEXT:    s_waitcnt vmcnt(0)545; GFX908-NEXT:    v_readlane_b32 s11, v39, 12546; GFX908-NEXT:    ;;#ASMSTART547; GFX908-NEXT:    ; use s11548; GFX908-NEXT:    ;;#ASMEND549; GFX908-NEXT:    v_readlane_b32 s12, v39, 13550; GFX908-NEXT:    ;;#ASMSTART551; GFX908-NEXT:    ; use s12552; GFX908-NEXT:    ;;#ASMEND553; GFX908-NEXT:    v_readlane_b32 s13, v39, 14554; GFX908-NEXT:    ;;#ASMSTART555; GFX908-NEXT:    ; use s13556; GFX908-NEXT:    ;;#ASMEND557; GFX908-NEXT:    v_readlane_b32 s14, v39, 15558; GFX908-NEXT:    ;;#ASMSTART559; GFX908-NEXT:    ; use s14560; GFX908-NEXT:    ;;#ASMEND561; GFX908-NEXT:    v_readlane_b32 s15, v39, 16562; GFX908-NEXT:    ;;#ASMSTART563; GFX908-NEXT:    ; use s15564; GFX908-NEXT:    ;;#ASMEND565; GFX908-NEXT:    v_readlane_b32 s16, v39, 17566; GFX908-NEXT:    ;;#ASMSTART567; GFX908-NEXT:    ; use s16568; GFX908-NEXT:    ;;#ASMEND569; GFX908-NEXT:    v_readlane_b32 s17, v39, 18570; GFX908-NEXT:    ;;#ASMSTART571; GFX908-NEXT:    ; use s17572; GFX908-NEXT:    ;;#ASMEND573; GFX908-NEXT:    v_readlane_b32 s18, v39, 19574; GFX908-NEXT:    ;;#ASMSTART575; GFX908-NEXT:    ; use s18576; GFX908-NEXT:    ;;#ASMEND577; GFX908-NEXT:    v_readlane_b32 s19, v39, 20578; GFX908-NEXT:    ;;#ASMSTART579; GFX908-NEXT:    ; use s19580; GFX908-NEXT:    ;;#ASMEND581; GFX908-NEXT:    v_readlane_b32 s20, v39, 21582; GFX908-NEXT:    ;;#ASMSTART583; GFX908-NEXT:    ; use s20584; GFX908-NEXT:    ;;#ASMEND585; GFX908-NEXT:    ;;#ASMSTART586; GFX908-NEXT:    ; def s21587; GFX908-NEXT:    ;;#ASMEND588; GFX908-NEXT:    v_writelane_b32 v39, s21, 12589; GFX908-NEXT:    ;;#ASMSTART590; GFX908-NEXT:    ; def s22591; GFX908-NEXT:    ;;#ASMEND592; GFX908-NEXT:    v_writelane_b32 v39, s22, 13593; GFX908-NEXT:    ;;#ASMSTART594; GFX908-NEXT:    ; def s23595; GFX908-NEXT:    ;;#ASMEND596; GFX908-NEXT:    v_writelane_b32 v39, s23, 14597; GFX908-NEXT:    ;;#ASMSTART598; GFX908-NEXT:    ; def s24599; GFX908-NEXT:    ;;#ASMEND600; GFX908-NEXT:    v_writelane_b32 v39, s24, 15601; GFX908-NEXT:    ;;#ASMSTART602; GFX908-NEXT:    ; def s25603; GFX908-NEXT:    ;;#ASMEND604; GFX908-NEXT:    v_writelane_b32 v39, s25, 16605; GFX908-NEXT:    ;;#ASMSTART606; GFX908-NEXT:    ; def s26607; GFX908-NEXT:    ;;#ASMEND608; GFX908-NEXT:    v_writelane_b32 v39, s26, 17609; GFX908-NEXT:    ;;#ASMSTART610; GFX908-NEXT:    ; def s27611; GFX908-NEXT:    ;;#ASMEND612; GFX908-NEXT:    v_writelane_b32 v39, s27, 18613; GFX908-NEXT:    ;;#ASMSTART614; GFX908-NEXT:    ; def s28615; GFX908-NEXT:    ;;#ASMEND616; GFX908-NEXT:    v_writelane_b32 v39, s28, 19617; GFX908-NEXT:    ;;#ASMSTART618; GFX908-NEXT:    ; def s29619; GFX908-NEXT:    ;;#ASMEND620; GFX908-NEXT:    v_writelane_b32 v39, s29, 20621; GFX908-NEXT:    s_or_saveexec_b64 s[34:35], -1622; GFX908-NEXT:    buffer_store_dword v39, off, s[0:3], s33 offset:12 ; 4-byte Folded Spill623; GFX908-NEXT:    s_mov_b64 exec, s[34:35]624; GFX908-NEXT:    v_readlane_b32 s4, v39, 10625; GFX908-NEXT:    v_readlane_b32 s6, v39, 8626; GFX908-NEXT:    v_readlane_b32 s8, v39, 6627; GFX908-NEXT:    v_readlane_b32 s10, v39, 4628; GFX908-NEXT:    v_readlane_b32 s16, v39, 22629; GFX908-NEXT:    v_readlane_b32 s12, v39, 3630; GFX908-NEXT:    v_mov_b32_e32 v31, v40631; GFX908-NEXT:    v_readlane_b32 s13, v39, 2632; GFX908-NEXT:    v_readlane_b32 s14, v39, 1633; GFX908-NEXT:    v_readlane_b32 s15, v39, 0634; GFX908-NEXT:    v_readlane_b32 s5, v39, 11635; GFX908-NEXT:    v_readlane_b32 s7, v39, 9636; GFX908-NEXT:    v_readlane_b32 s9, v39, 7637; GFX908-NEXT:    v_readlane_b32 s11, v39, 5638; GFX908-NEXT:    v_readlane_b32 s17, v39, 23639; GFX908-NEXT:    s_swappc_b64 s[30:31], s[16:17]640; GFX908-NEXT:    s_or_saveexec_b64 s[34:35], -1641; GFX908-NEXT:    buffer_load_dword v39, off, s[0:3], s33 offset:12 ; 4-byte Folded Reload642; GFX908-NEXT:    s_mov_b64 exec, s[34:35]643; GFX908-NEXT:    s_waitcnt vmcnt(0)644; GFX908-NEXT:    v_readlane_b32 s4, v39, 10645; GFX908-NEXT:    v_readlane_b32 s6, v39, 8646; GFX908-NEXT:    v_readlane_b32 s8, v39, 6647; GFX908-NEXT:    v_readlane_b32 s10, v39, 4648; GFX908-NEXT:    v_readlane_b32 s16, v39, 22649; GFX908-NEXT:    v_readlane_b32 s5, v39, 11650; GFX908-NEXT:    v_readlane_b32 s7, v39, 9651; GFX908-NEXT:    v_readlane_b32 s9, v39, 7652; GFX908-NEXT:    v_readlane_b32 s11, v39, 5653; GFX908-NEXT:    v_readlane_b32 s12, v39, 3654; GFX908-NEXT:    v_readlane_b32 s13, v39, 2655; GFX908-NEXT:    v_readlane_b32 s14, v39, 1656; GFX908-NEXT:    v_readlane_b32 s15, v39, 0657; GFX908-NEXT:    v_mov_b32_e32 v31, v40658; GFX908-NEXT:    v_readlane_b32 s17, v39, 23659; GFX908-NEXT:    v_readlane_b32 s21, v39, 12660; GFX908-NEXT:    ;;#ASMSTART661; GFX908-NEXT:    ; use s21662; GFX908-NEXT:    ;;#ASMEND663; GFX908-NEXT:    v_readlane_b32 s22, v39, 13664; GFX908-NEXT:    ;;#ASMSTART665; GFX908-NEXT:    ; use s22666; GFX908-NEXT:    ;;#ASMEND667; GFX908-NEXT:    v_readlane_b32 s23, v39, 14668; GFX908-NEXT:    ;;#ASMSTART669; GFX908-NEXT:    ; use s23670; GFX908-NEXT:    ;;#ASMEND671; GFX908-NEXT:    v_readlane_b32 s24, v39, 15672; GFX908-NEXT:    ;;#ASMSTART673; GFX908-NEXT:    ; use s24674; GFX908-NEXT:    ;;#ASMEND675; GFX908-NEXT:    v_readlane_b32 s25, v39, 16676; GFX908-NEXT:    ;;#ASMSTART677; GFX908-NEXT:    ; use s25678; GFX908-NEXT:    ;;#ASMEND679; GFX908-NEXT:    v_readlane_b32 s26, v39, 17680; GFX908-NEXT:    ;;#ASMSTART681; GFX908-NEXT:    ; use s26682; GFX908-NEXT:    ;;#ASMEND683; GFX908-NEXT:    v_readlane_b32 s27, v39, 18684; GFX908-NEXT:    ;;#ASMSTART685; GFX908-NEXT:    ; use s27686; GFX908-NEXT:    ;;#ASMEND687; GFX908-NEXT:    v_readlane_b32 s28, v39, 19688; GFX908-NEXT:    ;;#ASMSTART689; GFX908-NEXT:    ; use s28690; GFX908-NEXT:    ;;#ASMEND691; GFX908-NEXT:    v_readlane_b32 s29, v39, 20692; GFX908-NEXT:    ;;#ASMSTART693; GFX908-NEXT:    ; use s29694; GFX908-NEXT:    ;;#ASMEND695; GFX908-NEXT:    s_swappc_b64 s[30:31], s[16:17]696; GFX908-NEXT:    buffer_load_dword v2, off, s[0:3], s33 offset:20 ; 4-byte Folded Reload697; GFX908-NEXT:    buffer_load_dword v3, off, s[0:3], s33 offset:24 ; 4-byte Folded Reload698; GFX908-NEXT:    buffer_load_dword v4, off, s[0:3], s33 offset:28 ; 4-byte Folded Reload699; GFX908-NEXT:    buffer_load_dword v5, off, s[0:3], s33 offset:32 ; 4-byte Folded Reload700; GFX908-NEXT:    buffer_load_dword v6, off, s[0:3], s33 offset:36 ; 4-byte Folded Reload701; GFX908-NEXT:    buffer_load_dword v7, off, s[0:3], s33 offset:40 ; 4-byte Folded Reload702; GFX908-NEXT:    buffer_load_dword v8, off, s[0:3], s33 offset:44 ; 4-byte Folded Reload703; GFX908-NEXT:    buffer_load_dword v9, off, s[0:3], s33 offset:48 ; 4-byte Folded Reload704; GFX908-NEXT:    buffer_load_dword v10, off, s[0:3], s33 offset:52 ; 4-byte Folded Reload705; GFX908-NEXT:    buffer_load_dword v11, off, s[0:3], s33 offset:56 ; 4-byte Folded Reload706; GFX908-NEXT:    buffer_load_dword v12, off, s[0:3], s33 offset:60 ; 4-byte Folded Reload707; GFX908-NEXT:    buffer_load_dword v13, off, s[0:3], s33 offset:64 ; 4-byte Folded Reload708; GFX908-NEXT:    buffer_load_dword v14, off, s[0:3], s33 offset:68 ; 4-byte Folded Reload709; GFX908-NEXT:    buffer_load_dword v15, off, s[0:3], s33 offset:72 ; 4-byte Folded Reload710; GFX908-NEXT:    buffer_load_dword v16, off, s[0:3], s33 offset:76 ; 4-byte Folded Reload711; GFX908-NEXT:    buffer_load_dword v17, off, s[0:3], s33 offset:80 ; 4-byte Folded Reload712; GFX908-NEXT:    buffer_load_dword v18, off, s[0:3], s33 offset:84 ; 4-byte Folded Reload713; GFX908-NEXT:    buffer_load_dword v19, off, s[0:3], s33 offset:88 ; 4-byte Folded Reload714; GFX908-NEXT:    buffer_load_dword v20, off, s[0:3], s33 offset:92 ; 4-byte Folded Reload715; GFX908-NEXT:    buffer_load_dword v21, off, s[0:3], s33 offset:96 ; 4-byte Folded Reload716; GFX908-NEXT:    buffer_load_dword v22, off, s[0:3], s33 offset:100 ; 4-byte Folded Reload717; GFX908-NEXT:    buffer_load_dword v23, off, s[0:3], s33 offset:104 ; 4-byte Folded Reload718; GFX908-NEXT:    buffer_load_dword v24, off, s[0:3], s33 offset:108 ; 4-byte Folded Reload719; GFX908-NEXT:    buffer_load_dword v25, off, s[0:3], s33 offset:112 ; 4-byte Folded Reload720; GFX908-NEXT:    buffer_load_dword v26, off, s[0:3], s33 offset:116 ; 4-byte Folded Reload721; GFX908-NEXT:    buffer_load_dword v27, off, s[0:3], s33 offset:120 ; 4-byte Folded Reload722; GFX908-NEXT:    buffer_load_dword v28, off, s[0:3], s33 offset:124 ; 4-byte Folded Reload723; GFX908-NEXT:    buffer_load_dword v29, off, s[0:3], s33 offset:128 ; 4-byte Folded Reload724; GFX908-NEXT:    buffer_load_dword v30, off, s[0:3], s33 offset:132 ; 4-byte Folded Reload725; GFX908-NEXT:    buffer_load_dword v31, off, s[0:3], s33 offset:136 ; 4-byte Folded Reload726; GFX908-NEXT:    buffer_load_dword v32, off, s[0:3], s33 offset:140 ; 4-byte Folded Reload727; GFX908-NEXT:    buffer_load_dword v33, off, s[0:3], s33 offset:144 ; 4-byte Folded Reload728; GFX908-NEXT:    buffer_load_dword v34, off, s[0:3], s33 offset:148 ; 4-byte Folded Reload729; GFX908-NEXT:    buffer_load_dword v35, off, s[0:3], s33 offset:152 ; 4-byte Folded Reload730; GFX908-NEXT:    s_mov_b64 s[4:5], exec731; GFX908-NEXT:    s_waitcnt vmcnt(33)732; GFX908-NEXT:    v_add_co_u32_e32 v0, vcc, 0x70, v2733; GFX908-NEXT:    s_waitcnt vmcnt(32)734; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v3, vcc735; GFX908-NEXT:    s_waitcnt vmcnt(0)736; GFX908-NEXT:    flat_store_dwordx4 v[0:1], v[32:35]737; GFX908-NEXT:    s_waitcnt vmcnt(0)738; GFX908-NEXT:    v_add_co_u32_e32 v0, vcc, 0x60, v2739; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v3, vcc740; GFX908-NEXT:    flat_store_dwordx4 v[0:1], v[28:31]741; GFX908-NEXT:    s_waitcnt vmcnt(0)742; GFX908-NEXT:    v_add_co_u32_e32 v0, vcc, 0x50, v2743; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v3, vcc744; GFX908-NEXT:    flat_store_dwordx4 v[0:1], v[24:27]745; GFX908-NEXT:    s_waitcnt vmcnt(0)746; GFX908-NEXT:    flat_store_dwordx4 v[2:3], v[20:23] offset:64747; GFX908-NEXT:    s_waitcnt vmcnt(0)748; GFX908-NEXT:    v_add_co_u32_e32 v0, vcc, 48, v2749; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v3, vcc750; GFX908-NEXT:    flat_store_dwordx4 v[0:1], v[16:19]751; GFX908-NEXT:    s_waitcnt vmcnt(0)752; GFX908-NEXT:    flat_store_dwordx4 v[2:3], v[12:15] offset:32753; GFX908-NEXT:    s_waitcnt vmcnt(0)754; GFX908-NEXT:    flat_store_dwordx4 v[2:3], v[8:11] offset:16755; GFX908-NEXT:    s_waitcnt vmcnt(0)756; GFX908-NEXT:    flat_store_dwordx4 v[2:3], v[4:7]757; GFX908-NEXT:    s_waitcnt vmcnt(0)758; GFX908-NEXT:    s_mov_b64 exec, 1759; GFX908-NEXT:    buffer_store_dword v0, off, s[0:3], s33 offset:168760; GFX908-NEXT:    buffer_load_dword v0, off, s[0:3], s33 offset:8 ; 4-byte Folded Reload761; GFX908-NEXT:    s_waitcnt vmcnt(0)762; GFX908-NEXT:    v_readlane_b32 s31, v0, 0763; GFX908-NEXT:    buffer_load_dword v0, off, s[0:3], s33 offset:168764; GFX908-NEXT:    s_waitcnt vmcnt(0)765; GFX908-NEXT:    s_mov_b64 exec, s[4:5]766; GFX908-NEXT:    s_mov_b64 s[4:5], exec767; GFX908-NEXT:    s_mov_b64 exec, 1768; GFX908-NEXT:    buffer_store_dword v0, off, s[0:3], s33 offset:168769; GFX908-NEXT:    buffer_load_dword v0, off, s[0:3], s33 offset:4 ; 4-byte Folded Reload770; GFX908-NEXT:    s_waitcnt vmcnt(0)771; GFX908-NEXT:    v_readlane_b32 s30, v0, 0772; GFX908-NEXT:    buffer_load_dword v0, off, s[0:3], s33 offset:168773; GFX908-NEXT:    s_waitcnt vmcnt(0)774; GFX908-NEXT:    s_mov_b64 exec, s[4:5]775; GFX908-NEXT:    buffer_load_dword v0, off, s[0:3], s33 offset:164 ; 4-byte Folded Reload776; GFX908-NEXT:    buffer_load_dword v40, off, s[0:3], s33 ; 4-byte Folded Reload777; GFX908-NEXT:    s_mov_b32 s32, s33778; GFX908-NEXT:    s_waitcnt vmcnt(0)779; GFX908-NEXT:    v_readfirstlane_b32 s4, v0780; GFX908-NEXT:    buffer_load_dword v0, off, s[0:3], s33 offset:156 ; 4-byte Folded Reload781; GFX908-NEXT:    s_waitcnt vmcnt(0)782; GFX908-NEXT:    v_readfirstlane_b32 s34, v0783; GFX908-NEXT:    buffer_load_dword v0, off, s[0:3], s33 offset:160 ; 4-byte Folded Reload784; GFX908-NEXT:    s_waitcnt vmcnt(0)785; GFX908-NEXT:    v_readfirstlane_b32 s35, v0786; GFX908-NEXT:    s_xor_saveexec_b64 s[6:7], -1787; GFX908-NEXT:    buffer_load_dword v39, off, s[0:3], s33 offset:16 ; 4-byte Folded Reload788; GFX908-NEXT:    s_mov_b64 exec, s[6:7]789; GFX908-NEXT:    s_mov_b32 s33, s4790; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)791; GFX908-NEXT:    s_setpc_b64 s[30:31]792  %vreg0 = call <32 x float> asm sideeffect "; def $0", "=v"()793  %v40 = call i32 asm sideeffect "; def $0","=${v40}"()794 795  %s11 = call i32 asm sideeffect "; def $0","=${s11}"()796  %s12 = call i32 asm sideeffect "; def $0","=${s12}"()797  %s13 = call i32 asm sideeffect "; def $0","=${s13}"()798  %s14 = call i32 asm sideeffect "; def $0","=${s14}"()799  %s15 = call i32 asm sideeffect "; def $0","=${s15}"()800  %s16 = call i32 asm sideeffect "; def $0","=${s16}"()801  %s17 = call i32 asm sideeffect "; def $0","=${s17}"()802  %s18 = call i32 asm sideeffect "; def $0","=${s18}"()803  %s19 = call i32 asm sideeffect "; def $0","=${s19}"()804  %s20 = call i32 asm sideeffect "; def $0","=${s20}"()805  call void @foo()806  call void asm sideeffect "; use $0","${s11}"(i32 %s11)807  call void asm sideeffect "; use $0","${s12}"(i32 %s12)808  call void asm sideeffect "; use $0","${s13}"(i32 %s13)809  call void asm sideeffect "; use $0","${s14}"(i32 %s14)810  call void asm sideeffect "; use $0","${s15}"(i32 %s15)811  call void asm sideeffect "; use $0","${s16}"(i32 %s16)812  call void asm sideeffect "; use $0","${s17}"(i32 %s17)813  call void asm sideeffect "; use $0","${s18}"(i32 %s18)814  call void asm sideeffect "; use $0","${s19}"(i32 %s19)815  call void asm sideeffect "; use $0","${s20}"(i32 %s20)816 817  %s21 = call i32 asm sideeffect "; def $0","=${s21}"()818  %s22 = call i32 asm sideeffect "; def $0","=${s22}"()819  %s23 = call i32 asm sideeffect "; def $0","=${s23}"()820  %s24 = call i32 asm sideeffect "; def $0","=${s24}"()821  %s25 = call i32 asm sideeffect "; def $0","=${s25}"()822  %s26 = call i32 asm sideeffect "; def $0","=${s26}"()823  %s27 = call i32 asm sideeffect "; def $0","=${s27}"()824  %s28 = call i32 asm sideeffect "; def $0","=${s28}"()825  %s29 = call i32 asm sideeffect "; def $0","=${s29}"()826  call void @foo()827  call void asm sideeffect "; use $0","${s21}"(i32 %s21)828  call void asm sideeffect "; use $0","${s22}"(i32 %s22)829  call void asm sideeffect "; use $0","${s23}"(i32 %s23)830  call void asm sideeffect "; use $0","${s24}"(i32 %s24)831  call void asm sideeffect "; use $0","${s25}"(i32 %s25)832  call void asm sideeffect "; use $0","${s26}"(i32 %s26)833  call void asm sideeffect "; use $0","${s27}"(i32 %s27)834  call void asm sideeffect "; use $0","${s28}"(i32 %s28)835  call void asm sideeffect "; use $0","${s29}"(i32 %s29)836 837  call void @foo()838 839  store volatile <32 x float> %vreg0, ptr %parg0840 841  ret void842}843 844declare void @foo()845 846attributes #0 = { "amdgpu-num-vgpr"="42" "amdgpu-num-sgpr"="40"}847 848