brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.7 KiB · 312d5b4 Raw
303 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=gfx1200 < %s | FileCheck --check-prefixes=GFX12 %s3 4define amdgpu_ps void @sextload_P0_i8(ptr addrspace(0) %ptra, ptr addrspace(0) %out) {5; GFX12-LABEL: sextload_P0_i8:6; GFX12:       ; %bb.0:7; GFX12-NEXT:    flat_load_i8 v0, v[0:1]8; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x09; GFX12-NEXT:    v_add_nc_u32_e32 v0, v0, v010; GFX12-NEXT:    flat_store_b32 v[2:3], v011; GFX12-NEXT:    s_endpgm12  %a = load i8, ptr addrspace(0) %ptra13  %a32 = sext i8 %a to i3214  %res = add i32 %a32, %a3215  store i32 %res, ptr addrspace(0) %out16  ret void17}18 19define amdgpu_ps void @sextload_P0_i16(ptr addrspace(0) %ptra, ptr addrspace(0) %out) {20; GFX12-LABEL: sextload_P0_i16:21; GFX12:       ; %bb.0:22; GFX12-NEXT:    flat_load_i16 v0, v[0:1]23; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x024; GFX12-NEXT:    v_add_nc_u32_e32 v0, v0, v025; GFX12-NEXT:    flat_store_b32 v[2:3], v026; GFX12-NEXT:    s_endpgm27  %a = load i16, ptr addrspace(0) %ptra28  %a32 = sext i16 %a to i3229  %res = add i32 %a32, %a3230  store i32 %res, ptr addrspace(0) %out31  ret void32}33 34define amdgpu_ps void @zextload_P0_i8(ptr addrspace(0) %ptra, ptr addrspace(0) %out) {35; GFX12-LABEL: zextload_P0_i8:36; GFX12:       ; %bb.0:37; GFX12-NEXT:    flat_load_u8 v0, v[0:1]38; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x039; GFX12-NEXT:    v_add_nc_u32_e32 v0, v0, v040; GFX12-NEXT:    flat_store_b32 v[2:3], v041; GFX12-NEXT:    s_endpgm42  %a = load i8, ptr addrspace(0) %ptra43  %a32 = zext i8 %a to i3244  %res = add i32 %a32, %a3245  store i32 %res, ptr addrspace(0) %out46  ret void47}48 49define amdgpu_ps void @zextload_P0_i16(ptr addrspace(0) %ptra, ptr addrspace(0) %out) {50; GFX12-LABEL: zextload_P0_i16:51; GFX12:       ; %bb.0:52; GFX12-NEXT:    flat_load_u16 v0, v[0:1]53; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x054; GFX12-NEXT:    v_add_nc_u32_e32 v0, v0, v055; GFX12-NEXT:    flat_store_b32 v[2:3], v056; GFX12-NEXT:    s_endpgm57  %a = load i16, ptr addrspace(0) %ptra58  %a32 = zext i16 %a to i3259  %res = add i32 %a32, %a3260  store i32 %res, ptr addrspace(0) %out61  ret void62}63 64define amdgpu_ps void @sextload_P1_i8(ptr addrspace(1) %ptra, ptr addrspace(1) %out) {65; GFX12-LABEL: sextload_P1_i8:66; GFX12:       ; %bb.0:67; GFX12-NEXT:    global_load_i8 v0, v[0:1], off68; GFX12-NEXT:    s_wait_loadcnt 0x069; GFX12-NEXT:    v_add_nc_u32_e32 v0, v0, v070; GFX12-NEXT:    global_store_b32 v[2:3], v0, off71; GFX12-NEXT:    s_endpgm72  %a = load i8, ptr addrspace(1) %ptra73  %a32 = sext i8 %a to i3274  %res = add i32 %a32, %a3275  store i32 %res, ptr addrspace(1) %out76  ret void77}78 79define amdgpu_ps void @sextload_P1_i16(ptr addrspace(1) %ptra, ptr addrspace(1) %out) {80; GFX12-LABEL: sextload_P1_i16:81; GFX12:       ; %bb.0:82; GFX12-NEXT:    global_load_i16 v0, v[0:1], off83; GFX12-NEXT:    s_wait_loadcnt 0x084; GFX12-NEXT:    v_add_nc_u32_e32 v0, v0, v085; GFX12-NEXT:    global_store_b32 v[2:3], v0, off86; GFX12-NEXT:    s_endpgm87  %a = load i16, ptr addrspace(1) %ptra88  %a32 = sext i16 %a to i3289  %res = add i32 %a32, %a3290  store i32 %res, ptr addrspace(1) %out91  ret void92}93 94define amdgpu_ps void @zextload_P1_i8(ptr addrspace(1) %ptra, ptr addrspace(1) %out) {95; GFX12-LABEL: zextload_P1_i8:96; GFX12:       ; %bb.0:97; GFX12-NEXT:    global_load_u8 v0, v[0:1], off98; GFX12-NEXT:    s_wait_loadcnt 0x099; GFX12-NEXT:    v_add_nc_u32_e32 v0, v0, v0100; GFX12-NEXT:    global_store_b32 v[2:3], v0, off101; GFX12-NEXT:    s_endpgm102  %a = load i8, ptr addrspace(1) %ptra103  %a32 = zext i8 %a to i32104  %res = add i32 %a32, %a32105  store i32 %res, ptr addrspace(1) %out106  ret void107}108 109define amdgpu_ps void @zextload_P1_i16(ptr addrspace(1) %ptra, ptr addrspace(1) %out) {110; GFX12-LABEL: zextload_P1_i16:111; GFX12:       ; %bb.0:112; GFX12-NEXT:    global_load_u16 v0, v[0:1], off113; GFX12-NEXT:    s_wait_loadcnt 0x0114; GFX12-NEXT:    v_add_nc_u32_e32 v0, v0, v0115; GFX12-NEXT:    global_store_b32 v[2:3], v0, off116; GFX12-NEXT:    s_endpgm117  %a = load i16, ptr addrspace(1) %ptra118  %a32 = zext i16 %a to i32119  %res = add i32 %a32, %a32120  store i32 %res, ptr addrspace(1) %out121  ret void122}123 124define amdgpu_ps void @sextload_P3_i8(ptr addrspace(3) %ptra, ptr addrspace(3) %out) {125; GFX12-LABEL: sextload_P3_i8:126; GFX12:       ; %bb.0:127; GFX12-NEXT:    ds_load_i8 v0, v0128; GFX12-NEXT:    s_wait_dscnt 0x0129; GFX12-NEXT:    v_add_nc_u32_e32 v0, v0, v0130; GFX12-NEXT:    ds_store_b32 v1, v0131; GFX12-NEXT:    s_endpgm132  %a = load i8, ptr addrspace(3) %ptra133  %a32 = sext i8 %a to i32134  %res = add i32 %a32, %a32135  store i32 %res, ptr addrspace(3) %out136  ret void137}138 139define amdgpu_ps void @sextload_P3_i16(ptr addrspace(3) %ptra, ptr addrspace(3) %out) {140; GFX12-LABEL: sextload_P3_i16:141; GFX12:       ; %bb.0:142; GFX12-NEXT:    ds_load_i16 v0, v0143; GFX12-NEXT:    s_wait_dscnt 0x0144; GFX12-NEXT:    v_add_nc_u32_e32 v0, v0, v0145; GFX12-NEXT:    ds_store_b32 v1, v0146; GFX12-NEXT:    s_endpgm147  %a = load i16, ptr addrspace(3) %ptra148  %a32 = sext i16 %a to i32149  %res = add i32 %a32, %a32150  store i32 %res, ptr addrspace(3) %out151  ret void152}153 154define amdgpu_ps void @zextload_P3_i8(ptr addrspace(3) %ptra, ptr addrspace(3) %out) {155; GFX12-LABEL: zextload_P3_i8:156; GFX12:       ; %bb.0:157; GFX12-NEXT:    ds_load_u8 v0, v0158; GFX12-NEXT:    s_wait_dscnt 0x0159; GFX12-NEXT:    v_add_nc_u32_e32 v0, v0, v0160; GFX12-NEXT:    ds_store_b32 v1, v0161; GFX12-NEXT:    s_endpgm162  %a = load i8, ptr addrspace(3) %ptra163  %a32 = zext i8 %a to i32164  %res = add i32 %a32, %a32165  store i32 %res, ptr addrspace(3) %out166  ret void167}168 169define amdgpu_ps void @zextload_P3_i16(ptr addrspace(3) %ptra, ptr addrspace(3) %out) {170; GFX12-LABEL: zextload_P3_i16:171; GFX12:       ; %bb.0:172; GFX12-NEXT:    ds_load_u16 v0, v0173; GFX12-NEXT:    s_wait_dscnt 0x0174; GFX12-NEXT:    v_add_nc_u32_e32 v0, v0, v0175; GFX12-NEXT:    ds_store_b32 v1, v0176; GFX12-NEXT:    s_endpgm177  %a = load i16, ptr addrspace(3) %ptra178  %a32 = zext i16 %a to i32179  %res = add i32 %a32, %a32180  store i32 %res, ptr addrspace(3) %out181  ret void182}183 184define amdgpu_ps void @sextload_P4_i8(ptr addrspace(4) %ptra, ptr addrspace(1) %out) {185; GFX12-LABEL: sextload_P4_i8:186; GFX12:       ; %bb.0:187; GFX12-NEXT:    global_load_i8 v0, v[0:1], off188; GFX12-NEXT:    s_wait_loadcnt 0x0189; GFX12-NEXT:    v_add_nc_u32_e32 v0, v0, v0190; GFX12-NEXT:    global_store_b32 v[2:3], v0, off191; GFX12-NEXT:    s_endpgm192  %a = load i8, ptr addrspace(4) %ptra193  %a32 = sext i8 %a to i32194  %res = add i32 %a32, %a32195  store i32 %res, ptr addrspace(1) %out196  ret void197}198 199define amdgpu_ps void @sextload_P4_i16(ptr addrspace(4) %ptra, ptr addrspace(1) %out) {200; GFX12-LABEL: sextload_P4_i16:201; GFX12:       ; %bb.0:202; GFX12-NEXT:    global_load_i16 v0, v[0:1], off203; GFX12-NEXT:    s_wait_loadcnt 0x0204; GFX12-NEXT:    v_add_nc_u32_e32 v0, v0, v0205; GFX12-NEXT:    global_store_b32 v[2:3], v0, off206; GFX12-NEXT:    s_endpgm207  %a = load i16, ptr addrspace(4) %ptra208  %a32 = sext i16 %a to i32209  %res = add i32 %a32, %a32210  store i32 %res, ptr addrspace(1) %out211  ret void212}213 214define amdgpu_ps void @zextload_P4_i8(ptr addrspace(4) %ptra, ptr addrspace(1) %out) {215; GFX12-LABEL: zextload_P4_i8:216; GFX12:       ; %bb.0:217; GFX12-NEXT:    global_load_u8 v0, v[0:1], off218; GFX12-NEXT:    s_wait_loadcnt 0x0219; GFX12-NEXT:    v_add_nc_u32_e32 v0, v0, v0220; GFX12-NEXT:    global_store_b32 v[2:3], v0, off221; GFX12-NEXT:    s_endpgm222  %a = load i8, ptr addrspace(4) %ptra223  %a32 = zext i8 %a to i32224  %res = add i32 %a32, %a32225  store i32 %res, ptr addrspace(1) %out226  ret void227}228 229define amdgpu_ps void @zextload_P4_i16(ptr addrspace(4) %ptra, ptr addrspace(1) %out) {230; GFX12-LABEL: zextload_P4_i16:231; GFX12:       ; %bb.0:232; GFX12-NEXT:    global_load_u16 v0, v[0:1], off233; GFX12-NEXT:    s_wait_loadcnt 0x0234; GFX12-NEXT:    v_add_nc_u32_e32 v0, v0, v0235; GFX12-NEXT:    global_store_b32 v[2:3], v0, off236; GFX12-NEXT:    s_endpgm237  %a = load i16, ptr addrspace(4) %ptra238  %a32 = zext i16 %a to i32239  %res = add i32 %a32, %a32240  store i32 %res, ptr addrspace(1) %out241  ret void242}243 244define amdgpu_ps void @sextload_P5_i8(ptr addrspace(5) %ptra, ptr addrspace(5) %out) {245; GFX12-LABEL: sextload_P5_i8:246; GFX12:       ; %bb.0:247; GFX12-NEXT:    scratch_load_i8 v0, v0, off248; GFX12-NEXT:    s_wait_loadcnt 0x0249; GFX12-NEXT:    v_add_nc_u32_e32 v0, v0, v0250; GFX12-NEXT:    scratch_store_b32 v1, v0, off251; GFX12-NEXT:    s_endpgm252  %a = load i8, ptr addrspace(5) %ptra253  %a32 = sext i8 %a to i32254  %res = add i32 %a32, %a32255  store i32 %res, ptr addrspace(5) %out256  ret void257}258 259define amdgpu_ps void @sextload_P5_i16(ptr addrspace(5) %ptra, ptr addrspace(5) %out) {260; GFX12-LABEL: sextload_P5_i16:261; GFX12:       ; %bb.0:262; GFX12-NEXT:    scratch_load_i16 v0, v0, off263; GFX12-NEXT:    s_wait_loadcnt 0x0264; GFX12-NEXT:    v_add_nc_u32_e32 v0, v0, v0265; GFX12-NEXT:    scratch_store_b32 v1, v0, off266; GFX12-NEXT:    s_endpgm267  %a = load i16, ptr addrspace(5) %ptra268  %a32 = sext i16 %a to i32269  %res = add i32 %a32, %a32270  store i32 %res, ptr addrspace(5) %out271  ret void272}273 274define amdgpu_ps void @zextload_P5_i8(ptr addrspace(5) %ptra, ptr addrspace(5) %out) {275; GFX12-LABEL: zextload_P5_i8:276; GFX12:       ; %bb.0:277; GFX12-NEXT:    scratch_load_u8 v0, v0, off278; GFX12-NEXT:    s_wait_loadcnt 0x0279; GFX12-NEXT:    v_add_nc_u32_e32 v0, v0, v0280; GFX12-NEXT:    scratch_store_b32 v1, v0, off281; GFX12-NEXT:    s_endpgm282  %a = load i8, ptr addrspace(5) %ptra283  %a32 = zext i8 %a to i32284  %res = add i32 %a32, %a32285  store i32 %res, ptr addrspace(5) %out286  ret void287}288 289define amdgpu_ps void @zextload_P5_i16(ptr addrspace(5) %ptra, ptr addrspace(5) %out) {290; GFX12-LABEL: zextload_P5_i16:291; GFX12:       ; %bb.0:292; GFX12-NEXT:    scratch_load_u16 v0, v0, off293; GFX12-NEXT:    s_wait_loadcnt 0x0294; GFX12-NEXT:    v_add_nc_u32_e32 v0, v0, v0295; GFX12-NEXT:    scratch_store_b32 v1, v0, off296; GFX12-NEXT:    s_endpgm297  %a = load i16, ptr addrspace(5) %ptra298  %a32 = zext i16 %a to i32299  %res = add i32 %a32, %a32300  store i32 %res, ptr addrspace(5) %out301  ret void302}303