437 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -global-isel -new-reg-bank-select -mtriple=amdgcn -mcpu=fiji -o - %s | FileCheck -check-prefix=GFX8 %s3; RUN: llc -global-isel -new-reg-bank-select -mtriple=amdgcn -mcpu=gfx900 -o - %s | FileCheck -check-prefix=GFX9 %s4; RUN: llc -global-isel -new-reg-bank-select -mtriple=amdgcn -mcpu=gfx1010 -o - %s | FileCheck -check-prefix=GFX10 %s5 6; FixMe: need to decide to move multiple instructions to vgpr7 8define amdgpu_kernel void @constant_load_i8_align4(ptr addrspace (1) %out, ptr addrspace(4) %in) #0 {9; GFX8-LABEL: constant_load_i8_align4:10; GFX8: ; %bb.0:11; GFX8-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x2412; GFX8-NEXT: s_waitcnt lgkmcnt(0)13; GFX8-NEXT: s_load_dword s2, s[2:3], 0x014; GFX8-NEXT: v_mov_b32_e32 v0, s015; GFX8-NEXT: v_mov_b32_e32 v1, s116; GFX8-NEXT: s_waitcnt lgkmcnt(0)17; GFX8-NEXT: v_mov_b32_e32 v2, s218; GFX8-NEXT: flat_store_byte v[0:1], v219; GFX8-NEXT: s_endpgm20;21; GFX9-LABEL: constant_load_i8_align4:22; GFX9: ; %bb.0:23; GFX9-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x2424; GFX9-NEXT: v_mov_b32_e32 v1, 025; GFX9-NEXT: s_waitcnt lgkmcnt(0)26; GFX9-NEXT: s_load_dword s2, s[2:3], 0x027; GFX9-NEXT: s_waitcnt lgkmcnt(0)28; GFX9-NEXT: v_mov_b32_e32 v0, s229; GFX9-NEXT: global_store_byte v1, v0, s[0:1]30; GFX9-NEXT: s_endpgm31;32; GFX10-LABEL: constant_load_i8_align4:33; GFX10: ; %bb.0:34; GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x2435; GFX10-NEXT: v_mov_b32_e32 v1, 036; GFX10-NEXT: s_waitcnt lgkmcnt(0)37; GFX10-NEXT: s_load_dword s2, s[2:3], 0x038; GFX10-NEXT: s_waitcnt lgkmcnt(0)39; GFX10-NEXT: v_mov_b32_e32 v0, s240; GFX10-NEXT: global_store_byte v1, v0, s[0:1]41; GFX10-NEXT: s_endpgm42 %ld = load i8, ptr addrspace(4) %in, align 443 store i8 %ld, ptr addrspace(1) %out, align 444 ret void45}46 47define amdgpu_kernel void @constant_load_i16_align4(ptr addrspace (1) %out, ptr addrspace(4) %in) #0 {48; GFX8-LABEL: constant_load_i16_align4:49; GFX8: ; %bb.0:50; GFX8-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x2451; GFX8-NEXT: s_waitcnt lgkmcnt(0)52; GFX8-NEXT: s_load_dword s2, s[2:3], 0x053; GFX8-NEXT: v_mov_b32_e32 v0, s054; GFX8-NEXT: v_mov_b32_e32 v1, s155; GFX8-NEXT: s_waitcnt lgkmcnt(0)56; GFX8-NEXT: v_mov_b32_e32 v2, s257; GFX8-NEXT: flat_store_short v[0:1], v258; GFX8-NEXT: s_endpgm59;60; GFX9-LABEL: constant_load_i16_align4:61; GFX9: ; %bb.0:62; GFX9-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x2463; GFX9-NEXT: v_mov_b32_e32 v1, 064; GFX9-NEXT: s_waitcnt lgkmcnt(0)65; GFX9-NEXT: s_load_dword s2, s[2:3], 0x066; GFX9-NEXT: s_waitcnt lgkmcnt(0)67; GFX9-NEXT: v_mov_b32_e32 v0, s268; GFX9-NEXT: global_store_short v1, v0, s[0:1]69; GFX9-NEXT: s_endpgm70;71; GFX10-LABEL: constant_load_i16_align4:72; GFX10: ; %bb.0:73; GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x2474; GFX10-NEXT: v_mov_b32_e32 v1, 075; GFX10-NEXT: s_waitcnt lgkmcnt(0)76; GFX10-NEXT: s_load_dword s2, s[2:3], 0x077; GFX10-NEXT: s_waitcnt lgkmcnt(0)78; GFX10-NEXT: v_mov_b32_e32 v0, s279; GFX10-NEXT: global_store_short v1, v0, s[0:1]80; GFX10-NEXT: s_endpgm81 %ld = load i16, ptr addrspace(4) %in, align 482 store i16 %ld, ptr addrspace(1) %out, align 483 ret void84}85 86define amdgpu_kernel void @sextload_i8_to_i32_align4(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {87; GFX8-LABEL: sextload_i8_to_i32_align4:88; GFX8: ; %bb.0:89; GFX8-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x2490; GFX8-NEXT: s_waitcnt lgkmcnt(0)91; GFX8-NEXT: s_load_dword s2, s[2:3], 0x092; GFX8-NEXT: v_mov_b32_e32 v0, s093; GFX8-NEXT: v_mov_b32_e32 v1, s194; GFX8-NEXT: s_waitcnt lgkmcnt(0)95; GFX8-NEXT: s_sext_i32_i8 s2, s296; GFX8-NEXT: v_mov_b32_e32 v2, s297; GFX8-NEXT: flat_store_dword v[0:1], v298; GFX8-NEXT: s_endpgm99;100; GFX9-LABEL: sextload_i8_to_i32_align4:101; GFX9: ; %bb.0:102; GFX9-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24103; GFX9-NEXT: v_mov_b32_e32 v1, 0104; GFX9-NEXT: s_waitcnt lgkmcnt(0)105; GFX9-NEXT: s_load_dword s2, s[2:3], 0x0106; GFX9-NEXT: s_waitcnt lgkmcnt(0)107; GFX9-NEXT: s_sext_i32_i8 s2, s2108; GFX9-NEXT: v_mov_b32_e32 v0, s2109; GFX9-NEXT: global_store_dword v1, v0, s[0:1]110; GFX9-NEXT: s_endpgm111;112; GFX10-LABEL: sextload_i8_to_i32_align4:113; GFX10: ; %bb.0:114; GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24115; GFX10-NEXT: v_mov_b32_e32 v1, 0116; GFX10-NEXT: s_waitcnt lgkmcnt(0)117; GFX10-NEXT: s_load_dword s2, s[2:3], 0x0118; GFX10-NEXT: s_waitcnt lgkmcnt(0)119; GFX10-NEXT: s_sext_i32_i8 s2, s2120; GFX10-NEXT: v_mov_b32_e32 v0, s2121; GFX10-NEXT: global_store_dword v1, v0, s[0:1]122; GFX10-NEXT: s_endpgm123 %load = load i8, ptr addrspace(1) %in, align 4124 %sext = sext i8 %load to i32125 store i32 %sext, ptr addrspace(1) %out, align 4126 ret void127}128 129define amdgpu_kernel void @sextload_i16_to_i32_align4(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {130; GFX8-LABEL: sextload_i16_to_i32_align4:131; GFX8: ; %bb.0:132; GFX8-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24133; GFX8-NEXT: s_waitcnt lgkmcnt(0)134; GFX8-NEXT: s_load_dword s2, s[2:3], 0x0135; GFX8-NEXT: v_mov_b32_e32 v0, s0136; GFX8-NEXT: v_mov_b32_e32 v1, s1137; GFX8-NEXT: s_waitcnt lgkmcnt(0)138; GFX8-NEXT: s_sext_i32_i16 s2, s2139; GFX8-NEXT: v_mov_b32_e32 v2, s2140; GFX8-NEXT: flat_store_dword v[0:1], v2141; GFX8-NEXT: s_endpgm142;143; GFX9-LABEL: sextload_i16_to_i32_align4:144; GFX9: ; %bb.0:145; GFX9-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24146; GFX9-NEXT: v_mov_b32_e32 v1, 0147; GFX9-NEXT: s_waitcnt lgkmcnt(0)148; GFX9-NEXT: s_load_dword s2, s[2:3], 0x0149; GFX9-NEXT: s_waitcnt lgkmcnt(0)150; GFX9-NEXT: s_sext_i32_i16 s2, s2151; GFX9-NEXT: v_mov_b32_e32 v0, s2152; GFX9-NEXT: global_store_dword v1, v0, s[0:1]153; GFX9-NEXT: s_endpgm154;155; GFX10-LABEL: sextload_i16_to_i32_align4:156; GFX10: ; %bb.0:157; GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24158; GFX10-NEXT: v_mov_b32_e32 v1, 0159; GFX10-NEXT: s_waitcnt lgkmcnt(0)160; GFX10-NEXT: s_load_dword s2, s[2:3], 0x0161; GFX10-NEXT: s_waitcnt lgkmcnt(0)162; GFX10-NEXT: s_sext_i32_i16 s2, s2163; GFX10-NEXT: v_mov_b32_e32 v0, s2164; GFX10-NEXT: global_store_dword v1, v0, s[0:1]165; GFX10-NEXT: s_endpgm166 %load = load i16, ptr addrspace(1) %in, align 4167 %sext = sext i16 %load to i32168 store i32 %sext, ptr addrspace(1) %out, align 4169 ret void170}171 172define amdgpu_kernel void @zextload_i8_to_i32_align4(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {173; GFX8-LABEL: zextload_i8_to_i32_align4:174; GFX8: ; %bb.0:175; GFX8-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24176; GFX8-NEXT: s_waitcnt lgkmcnt(0)177; GFX8-NEXT: s_load_dword s2, s[2:3], 0x0178; GFX8-NEXT: v_mov_b32_e32 v0, s0179; GFX8-NEXT: v_mov_b32_e32 v1, s1180; GFX8-NEXT: s_waitcnt lgkmcnt(0)181; GFX8-NEXT: s_and_b32 s2, s2, 0xff182; GFX8-NEXT: v_mov_b32_e32 v2, s2183; GFX8-NEXT: flat_store_dword v[0:1], v2184; GFX8-NEXT: s_endpgm185;186; GFX9-LABEL: zextload_i8_to_i32_align4:187; GFX9: ; %bb.0:188; GFX9-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24189; GFX9-NEXT: v_mov_b32_e32 v1, 0190; GFX9-NEXT: s_waitcnt lgkmcnt(0)191; GFX9-NEXT: s_load_dword s2, s[2:3], 0x0192; GFX9-NEXT: s_waitcnt lgkmcnt(0)193; GFX9-NEXT: s_and_b32 s2, s2, 0xff194; GFX9-NEXT: v_mov_b32_e32 v0, s2195; GFX9-NEXT: global_store_dword v1, v0, s[0:1]196; GFX9-NEXT: s_endpgm197;198; GFX10-LABEL: zextload_i8_to_i32_align4:199; GFX10: ; %bb.0:200; GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24201; GFX10-NEXT: v_mov_b32_e32 v1, 0202; GFX10-NEXT: s_waitcnt lgkmcnt(0)203; GFX10-NEXT: s_load_dword s2, s[2:3], 0x0204; GFX10-NEXT: s_waitcnt lgkmcnt(0)205; GFX10-NEXT: s_and_b32 s2, s2, 0xff206; GFX10-NEXT: v_mov_b32_e32 v0, s2207; GFX10-NEXT: global_store_dword v1, v0, s[0:1]208; GFX10-NEXT: s_endpgm209 %load = load i8, ptr addrspace(1) %in, align 4210 %zext = zext i8 %load to i32211 store i32 %zext, ptr addrspace(1) %out, align 4212 ret void213}214 215define amdgpu_kernel void @zextload_i16_to_i32_align4(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {216; GFX8-LABEL: zextload_i16_to_i32_align4:217; GFX8: ; %bb.0:218; GFX8-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24219; GFX8-NEXT: s_waitcnt lgkmcnt(0)220; GFX8-NEXT: s_load_dword s2, s[2:3], 0x0221; GFX8-NEXT: v_mov_b32_e32 v0, s0222; GFX8-NEXT: v_mov_b32_e32 v1, s1223; GFX8-NEXT: s_waitcnt lgkmcnt(0)224; GFX8-NEXT: s_and_b32 s2, s2, 0xffff225; GFX8-NEXT: v_mov_b32_e32 v2, s2226; GFX8-NEXT: flat_store_dword v[0:1], v2227; GFX8-NEXT: s_endpgm228;229; GFX9-LABEL: zextload_i16_to_i32_align4:230; GFX9: ; %bb.0:231; GFX9-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24232; GFX9-NEXT: v_mov_b32_e32 v1, 0233; GFX9-NEXT: s_waitcnt lgkmcnt(0)234; GFX9-NEXT: s_load_dword s2, s[2:3], 0x0235; GFX9-NEXT: s_waitcnt lgkmcnt(0)236; GFX9-NEXT: s_and_b32 s2, s2, 0xffff237; GFX9-NEXT: v_mov_b32_e32 v0, s2238; GFX9-NEXT: global_store_dword v1, v0, s[0:1]239; GFX9-NEXT: s_endpgm240;241; GFX10-LABEL: zextload_i16_to_i32_align4:242; GFX10: ; %bb.0:243; GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24244; GFX10-NEXT: v_mov_b32_e32 v1, 0245; GFX10-NEXT: s_waitcnt lgkmcnt(0)246; GFX10-NEXT: s_load_dword s2, s[2:3], 0x0247; GFX10-NEXT: s_waitcnt lgkmcnt(0)248; GFX10-NEXT: s_and_b32 s2, s2, 0xffff249; GFX10-NEXT: v_mov_b32_e32 v0, s2250; GFX10-NEXT: global_store_dword v1, v0, s[0:1]251; GFX10-NEXT: s_endpgm252 %load = load i16, ptr addrspace(1) %in, align 4253 %zext = zext i16 %load to i32254 store i32 %zext, ptr addrspace(1) %out, align 4255 ret void256}257 258define amdgpu_kernel void @constant_load_i8_align2(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {259; GFX8-LABEL: constant_load_i8_align2:260; GFX8: ; %bb.0:261; GFX8-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24262; GFX8-NEXT: s_waitcnt lgkmcnt(0)263; GFX8-NEXT: v_mov_b32_e32 v0, s2264; GFX8-NEXT: v_mov_b32_e32 v1, s3265; GFX8-NEXT: flat_load_ubyte v2, v[0:1]266; GFX8-NEXT: v_mov_b32_e32 v0, s0267; GFX8-NEXT: v_mov_b32_e32 v1, s1268; GFX8-NEXT: s_waitcnt vmcnt(0)269; GFX8-NEXT: flat_store_byte v[0:1], v2270; GFX8-NEXT: s_endpgm271;272; GFX9-LABEL: constant_load_i8_align2:273; GFX9: ; %bb.0:274; GFX9-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24275; GFX9-NEXT: v_mov_b32_e32 v0, 0276; GFX9-NEXT: s_waitcnt lgkmcnt(0)277; GFX9-NEXT: global_load_ubyte v1, v0, s[2:3]278; GFX9-NEXT: s_waitcnt vmcnt(0)279; GFX9-NEXT: global_store_byte v0, v1, s[0:1]280; GFX9-NEXT: s_endpgm281;282; GFX10-LABEL: constant_load_i8_align2:283; GFX10: ; %bb.0:284; GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24285; GFX10-NEXT: v_mov_b32_e32 v0, 0286; GFX10-NEXT: s_waitcnt lgkmcnt(0)287; GFX10-NEXT: global_load_ubyte v1, v0, s[2:3]288; GFX10-NEXT: s_waitcnt vmcnt(0)289; GFX10-NEXT: global_store_byte v0, v1, s[0:1]290; GFX10-NEXT: s_endpgm291 %load = load i8, ptr addrspace(1) %in, align 2292 store i8 %load, ptr addrspace(1) %out, align 2293 ret void294}295 296define amdgpu_kernel void @constant_load_i16_align2(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {297; GFX8-LABEL: constant_load_i16_align2:298; GFX8: ; %bb.0:299; GFX8-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24300; GFX8-NEXT: s_waitcnt lgkmcnt(0)301; GFX8-NEXT: v_mov_b32_e32 v0, s2302; GFX8-NEXT: v_mov_b32_e32 v1, s3303; GFX8-NEXT: flat_load_ushort v2, v[0:1]304; GFX8-NEXT: v_mov_b32_e32 v0, s0305; GFX8-NEXT: v_mov_b32_e32 v1, s1306; GFX8-NEXT: s_waitcnt vmcnt(0)307; GFX8-NEXT: flat_store_short v[0:1], v2308; GFX8-NEXT: s_endpgm309;310; GFX9-LABEL: constant_load_i16_align2:311; GFX9: ; %bb.0:312; GFX9-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24313; GFX9-NEXT: v_mov_b32_e32 v0, 0314; GFX9-NEXT: s_waitcnt lgkmcnt(0)315; GFX9-NEXT: global_load_ushort v1, v0, s[2:3]316; GFX9-NEXT: s_waitcnt vmcnt(0)317; GFX9-NEXT: global_store_short v0, v1, s[0:1]318; GFX9-NEXT: s_endpgm319;320; GFX10-LABEL: constant_load_i16_align2:321; GFX10: ; %bb.0:322; GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24323; GFX10-NEXT: v_mov_b32_e32 v0, 0324; GFX10-NEXT: s_waitcnt lgkmcnt(0)325; GFX10-NEXT: global_load_ushort v1, v0, s[2:3]326; GFX10-NEXT: s_waitcnt vmcnt(0)327; GFX10-NEXT: global_store_short v0, v1, s[0:1]328; GFX10-NEXT: s_endpgm329 %load = load i16, ptr addrspace(1) %in, align 2330 store i16 %load, ptr addrspace(1) %out, align 2331 ret void332}333 334define amdgpu_kernel void @constant_sextload_i8_align2(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {335; GFX8-LABEL: constant_sextload_i8_align2:336; GFX8: ; %bb.0:337; GFX8-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24338; GFX8-NEXT: s_waitcnt lgkmcnt(0)339; GFX8-NEXT: v_mov_b32_e32 v0, s2340; GFX8-NEXT: v_mov_b32_e32 v1, s3341; GFX8-NEXT: flat_load_sbyte v2, v[0:1]342; GFX8-NEXT: v_mov_b32_e32 v0, s0343; GFX8-NEXT: v_mov_b32_e32 v1, s1344; GFX8-NEXT: s_waitcnt vmcnt(0)345; GFX8-NEXT: v_readfirstlane_b32 s2, v2346; GFX8-NEXT: s_lshr_b32 s2, s2, 16347; GFX8-NEXT: s_add_u32 s0, s0, 2348; GFX8-NEXT: flat_store_short v[0:1], v2349; GFX8-NEXT: s_addc_u32 s1, s1, 0350; GFX8-NEXT: v_mov_b32_e32 v0, s0351; GFX8-NEXT: v_mov_b32_e32 v2, s2352; GFX8-NEXT: v_mov_b32_e32 v1, s1353; GFX8-NEXT: flat_store_short v[0:1], v2354; GFX8-NEXT: s_endpgm355;356; GFX9-LABEL: constant_sextload_i8_align2:357; GFX9: ; %bb.0:358; GFX9-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24359; GFX9-NEXT: v_mov_b32_e32 v0, 0360; GFX9-NEXT: s_waitcnt lgkmcnt(0)361; GFX9-NEXT: global_load_sbyte v1, v0, s[2:3]362; GFX9-NEXT: s_waitcnt vmcnt(0)363; GFX9-NEXT: v_readfirstlane_b32 s2, v1364; GFX9-NEXT: s_lshr_b32 s2, s2, 16365; GFX9-NEXT: global_store_short v0, v1, s[0:1]366; GFX9-NEXT: v_mov_b32_e32 v1, s2367; GFX9-NEXT: global_store_short v0, v1, s[0:1] offset:2368; GFX9-NEXT: s_endpgm369;370; GFX10-LABEL: constant_sextload_i8_align2:371; GFX10: ; %bb.0:372; GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24373; GFX10-NEXT: v_mov_b32_e32 v0, 0374; GFX10-NEXT: s_waitcnt lgkmcnt(0)375; GFX10-NEXT: global_load_sbyte v1, v0, s[2:3]376; GFX10-NEXT: s_waitcnt vmcnt(0)377; GFX10-NEXT: v_readfirstlane_b32 s2, v1378; GFX10-NEXT: s_lshr_b32 s2, s2, 16379; GFX10-NEXT: v_mov_b32_e32 v2, s2380; GFX10-NEXT: global_store_short v0, v1, s[0:1]381; GFX10-NEXT: global_store_short v0, v2, s[0:1] offset:2382; GFX10-NEXT: s_endpgm383 %load = load i8, ptr addrspace(1) %in, align 2384 %sextload = sext i8 %load to i32385 store i32 %sextload, ptr addrspace(1) %out, align 2386 ret void387}388 389define amdgpu_kernel void @constant_zextload_i8_align2(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {390; GFX8-LABEL: constant_zextload_i8_align2:391; GFX8: ; %bb.0:392; GFX8-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24393; GFX8-NEXT: v_mov_b32_e32 v5, 0394; GFX8-NEXT: s_waitcnt lgkmcnt(0)395; GFX8-NEXT: v_mov_b32_e32 v0, s2396; GFX8-NEXT: v_mov_b32_e32 v1, s3397; GFX8-NEXT: flat_load_ubyte v4, v[0:1]398; GFX8-NEXT: s_add_u32 s2, s0, 2399; GFX8-NEXT: v_mov_b32_e32 v0, s0400; GFX8-NEXT: v_mov_b32_e32 v1, s1401; GFX8-NEXT: s_addc_u32 s3, s1, 0402; GFX8-NEXT: v_mov_b32_e32 v2, s2403; GFX8-NEXT: v_mov_b32_e32 v3, s3404; GFX8-NEXT: s_waitcnt vmcnt(0)405; GFX8-NEXT: flat_store_short v[0:1], v4406; GFX8-NEXT: flat_store_short v[2:3], v5407; GFX8-NEXT: s_endpgm408;409; GFX9-LABEL: constant_zextload_i8_align2:410; GFX9: ; %bb.0:411; GFX9-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24412; GFX9-NEXT: v_mov_b32_e32 v0, 0413; GFX9-NEXT: s_waitcnt lgkmcnt(0)414; GFX9-NEXT: global_load_ubyte v1, v0, s[2:3]415; GFX9-NEXT: s_waitcnt vmcnt(0)416; GFX9-NEXT: global_store_short v0, v1, s[0:1]417; GFX9-NEXT: global_store_short v0, v0, s[0:1] offset:2418; GFX9-NEXT: s_endpgm419;420; GFX10-LABEL: constant_zextload_i8_align2:421; GFX10: ; %bb.0:422; GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24423; GFX10-NEXT: v_mov_b32_e32 v0, 0424; GFX10-NEXT: s_waitcnt lgkmcnt(0)425; GFX10-NEXT: global_load_ubyte v1, v0, s[2:3]426; GFX10-NEXT: s_waitcnt vmcnt(0)427; GFX10-NEXT: global_store_short v0, v1, s[0:1]428; GFX10-NEXT: global_store_short v0, v0, s[0:1] offset:2429; GFX10-NEXT: s_endpgm430 %load = load i8, ptr addrspace(1) %in, align 2431 %zextload = zext i8 %load to i32432 store i32 %zextload, ptr addrspace(1) %out, align 2433 ret void434}435 436attributes #0 = { nounwind }437