brintos

brintos / llvm-project-archived public Read only

0
0
Text · 14.7 KiB · 5d5b752 Raw
413 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 @load_P0_B16_D16(<2 x i16> %vec, ptr addrspace(0) %ptra, ptr addrspace(0) %out) {5; GFX12-LABEL: load_P0_B16_D16:6; GFX12:       ; %bb.0:7; GFX12-NEXT:    flat_load_d16_b16 v0, v[1:2]8; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x09; GFX12-NEXT:    flat_store_b32 v[3:4], v010; GFX12-NEXT:    s_endpgm11  %a = load i16, ptr addrspace(0) %ptra12  %res = insertelement <2 x i16> %vec, i16 %a, i32 013  store <2 x i16> %res, ptr addrspace(0) %out14  ret void15}16 17define amdgpu_ps void @load_P0_B16_D16_Hi(<2 x i16> %vec, ptr addrspace(0) %ptra, ptr addrspace(0) %out) {18; GFX12-LABEL: load_P0_B16_D16_Hi:19; GFX12:       ; %bb.0:20; GFX12-NEXT:    flat_load_d16_hi_b16 v0, v[1:2]21; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x022; GFX12-NEXT:    flat_store_b32 v[3:4], v023; GFX12-NEXT:    s_endpgm24  %a = load i16, ptr addrspace(0) %ptra25  %res = insertelement <2 x i16> %vec, i16 %a, i32 126  store <2 x i16> %res, ptr addrspace(0) %out27  ret void28}29 30define amdgpu_ps void @sextload_P0_i8_D16(<2 x i16> %vec, ptr addrspace(0) %ptra, ptr addrspace(0) %out) {31; GFX12-LABEL: sextload_P0_i8_D16:32; GFX12:       ; %bb.0:33; GFX12-NEXT:    flat_load_d16_i8 v0, v[1:2]34; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x035; GFX12-NEXT:    flat_store_b32 v[3:4], v036; GFX12-NEXT:    s_endpgm37  %a = load i8, ptr addrspace(0) %ptra38  %a16 = sext i8 %a to i1639  %res = insertelement <2 x i16> %vec, i16 %a16, i32 040  store <2 x i16> %res, ptr addrspace(0) %out41  ret void42}43 44define amdgpu_ps void @sextload_P0_i8_D16_Hi(<2 x i16> %vec, ptr addrspace(0) %ptra, ptr addrspace(0) %out) {45; GFX12-LABEL: sextload_P0_i8_D16_Hi:46; GFX12:       ; %bb.0:47; GFX12-NEXT:    flat_load_d16_hi_i8 v0, v[1:2]48; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x049; GFX12-NEXT:    flat_store_b32 v[3:4], v050; GFX12-NEXT:    s_endpgm51  %a = load i8, ptr addrspace(0) %ptra52  %a16 = sext i8 %a to i1653  %res = insertelement <2 x i16> %vec, i16 %a16, i32 154  store <2 x i16> %res, ptr addrspace(0) %out55  ret void56}57 58define amdgpu_ps void @zextload_P0_i8_D16(<2 x i16> %vec, ptr addrspace(0) %ptra, ptr addrspace(0) %out) {59; GFX12-LABEL: zextload_P0_i8_D16:60; GFX12:       ; %bb.0:61; GFX12-NEXT:    flat_load_d16_u8 v0, v[1:2]62; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x063; GFX12-NEXT:    flat_store_b32 v[3:4], v064; GFX12-NEXT:    s_endpgm65  %a = load i8, ptr addrspace(0) %ptra66  %a16 = zext i8 %a to i1667  %res = insertelement <2 x i16> %vec, i16 %a16, i32 068  store <2 x i16> %res, ptr addrspace(0) %out69  ret void70}71 72define amdgpu_ps void @zextload_P0_i8_D16_Hi(<2 x i16> %vec, ptr addrspace(0) %ptra, ptr addrspace(0) %out) {73; GFX12-LABEL: zextload_P0_i8_D16_Hi:74; GFX12:       ; %bb.0:75; GFX12-NEXT:    flat_load_d16_hi_u8 v0, v[1:2]76; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x077; GFX12-NEXT:    flat_store_b32 v[3:4], v078; GFX12-NEXT:    s_endpgm79  %a = load i8, ptr addrspace(0) %ptra80  %a16 = zext i8 %a to i1681  %res = insertelement <2 x i16> %vec, i16 %a16, i32 182  store <2 x i16> %res, ptr addrspace(0) %out83  ret void84}85 86define amdgpu_ps void @load_P1_B16_D16(<2 x i16> %vec, ptr addrspace(1) %ptra, ptr addrspace(1) %out) {87; GFX12-LABEL: load_P1_B16_D16:88; GFX12:       ; %bb.0:89; GFX12-NEXT:    global_load_d16_b16 v0, v[1:2], off90; GFX12-NEXT:    s_wait_loadcnt 0x091; GFX12-NEXT:    global_store_b32 v[3:4], v0, off92; GFX12-NEXT:    s_endpgm93  %a = load i16, ptr addrspace(1) %ptra94  %res = insertelement <2 x i16> %vec, i16 %a, i32 095  store <2 x i16> %res, ptr addrspace(1) %out96  ret void97}98 99define amdgpu_ps void @load_P1_B16_D16_Hi(<2 x i16> %vec, ptr addrspace(1) %ptra, ptr addrspace(1) %out) {100; GFX12-LABEL: load_P1_B16_D16_Hi:101; GFX12:       ; %bb.0:102; GFX12-NEXT:    global_load_d16_hi_b16 v0, v[1:2], off103; GFX12-NEXT:    s_wait_loadcnt 0x0104; GFX12-NEXT:    global_store_b32 v[3:4], v0, off105; GFX12-NEXT:    s_endpgm106  %a = load i16, ptr addrspace(1) %ptra107  %res = insertelement <2 x i16> %vec, i16 %a, i32 1108  store <2 x i16> %res, ptr addrspace(1) %out109  ret void110}111 112define amdgpu_ps void @sextload_P1_i8_D16(<2 x i16> %vec, ptr addrspace(1) %ptra, ptr addrspace(1) %out) {113; GFX12-LABEL: sextload_P1_i8_D16:114; GFX12:       ; %bb.0:115; GFX12-NEXT:    global_load_d16_i8 v0, v[1:2], off116; GFX12-NEXT:    s_wait_loadcnt 0x0117; GFX12-NEXT:    global_store_b32 v[3:4], v0, off118; GFX12-NEXT:    s_endpgm119  %a = load i8, ptr addrspace(1) %ptra120  %a16 = sext i8 %a to i16121  %res = insertelement <2 x i16> %vec, i16 %a16, i32 0122  store <2 x i16> %res, ptr addrspace(1) %out123  ret void124}125 126define amdgpu_ps void @sextload_P1_i8_D16_Hi(<2 x i16> %vec, ptr addrspace(1) %ptra, ptr addrspace(1) %out) {127; GFX12-LABEL: sextload_P1_i8_D16_Hi:128; GFX12:       ; %bb.0:129; GFX12-NEXT:    global_load_d16_hi_i8 v0, v[1:2], off130; GFX12-NEXT:    s_wait_loadcnt 0x0131; GFX12-NEXT:    global_store_b32 v[3:4], v0, off132; GFX12-NEXT:    s_endpgm133  %a = load i8, ptr addrspace(1) %ptra134  %a16 = sext i8 %a to i16135  %res = insertelement <2 x i16> %vec, i16 %a16, i32 1136  store <2 x i16> %res, ptr addrspace(1) %out137  ret void138}139 140define amdgpu_ps void @zextload_P1_i8_D16(<2 x i16> %vec, ptr addrspace(1) %ptra, ptr addrspace(1) %out) {141; GFX12-LABEL: zextload_P1_i8_D16:142; GFX12:       ; %bb.0:143; GFX12-NEXT:    global_load_d16_u8 v0, v[1:2], off144; GFX12-NEXT:    s_wait_loadcnt 0x0145; GFX12-NEXT:    global_store_b32 v[3:4], v0, off146; GFX12-NEXT:    s_endpgm147  %a = load i8, ptr addrspace(1) %ptra148  %a16 = zext i8 %a to i16149  %res = insertelement <2 x i16> %vec, i16 %a16, i32 0150  store <2 x i16> %res, ptr addrspace(1) %out151  ret void152}153 154define amdgpu_ps void @zextload_P1_i8_D16_Hi(<2 x i16> %vec, ptr addrspace(1) %ptra, ptr addrspace(1) %out) {155; GFX12-LABEL: zextload_P1_i8_D16_Hi:156; GFX12:       ; %bb.0:157; GFX12-NEXT:    global_load_d16_hi_u8 v0, v[1:2], off158; GFX12-NEXT:    s_wait_loadcnt 0x0159; GFX12-NEXT:    global_store_b32 v[3:4], v0, off160; GFX12-NEXT:    s_endpgm161  %a = load i8, ptr addrspace(1) %ptra162  %a16 = zext i8 %a to i16163  %res = insertelement <2 x i16> %vec, i16 %a16, i32 1164  store <2 x i16> %res, ptr addrspace(1) %out165  ret void166}167 168define amdgpu_ps void @load_P3_B16_D16(<2 x i16> %vec, ptr addrspace(3) %ptra, ptr addrspace(3) %out) {169; GFX12-LABEL: load_P3_B16_D16:170; GFX12:       ; %bb.0:171; GFX12-NEXT:    ds_load_u16_d16 v0, v1172; GFX12-NEXT:    s_wait_dscnt 0x0173; GFX12-NEXT:    ds_store_b32 v2, v0174; GFX12-NEXT:    s_endpgm175  %a = load i16, ptr addrspace(3) %ptra176  %res = insertelement <2 x i16> %vec, i16 %a, i32 0177  store <2 x i16> %res, ptr addrspace(3) %out178  ret void179}180 181define amdgpu_ps void @load_P3_B16_D16_Hi(<2 x i16> %vec, ptr addrspace(3) %ptra, ptr addrspace(3) %out) {182; GFX12-LABEL: load_P3_B16_D16_Hi:183; GFX12:       ; %bb.0:184; GFX12-NEXT:    ds_load_u16_d16_hi v0, v1185; GFX12-NEXT:    s_wait_dscnt 0x0186; GFX12-NEXT:    ds_store_b32 v2, v0187; GFX12-NEXT:    s_endpgm188  %a = load i16, ptr addrspace(3) %ptra189  %res = insertelement <2 x i16> %vec, i16 %a, i32 1190  store <2 x i16> %res, ptr addrspace(3) %out191  ret void192}193 194define amdgpu_ps void @sextload_P3_i8_D16(<2 x i16> %vec, ptr addrspace(3) %ptra, ptr addrspace(3) %out) {195; GFX12-LABEL: sextload_P3_i8_D16:196; GFX12:       ; %bb.0:197; GFX12-NEXT:    ds_load_i8_d16 v0, v1198; GFX12-NEXT:    s_wait_dscnt 0x0199; GFX12-NEXT:    ds_store_b32 v2, v0200; GFX12-NEXT:    s_endpgm201  %a = load i8, ptr addrspace(3) %ptra202  %a16 = sext i8 %a to i16203  %res = insertelement <2 x i16> %vec, i16 %a16, i32 0204  store <2 x i16> %res, ptr addrspace(3) %out205  ret void206}207 208define amdgpu_ps void @sextload_P3_i8_D16_Hi(<2 x i16> %vec, ptr addrspace(3) %ptra, ptr addrspace(3) %out) {209; GFX12-LABEL: sextload_P3_i8_D16_Hi:210; GFX12:       ; %bb.0:211; GFX12-NEXT:    ds_load_i8_d16_hi v0, v1212; GFX12-NEXT:    s_wait_dscnt 0x0213; GFX12-NEXT:    ds_store_b32 v2, v0214; GFX12-NEXT:    s_endpgm215  %a = load i8, ptr addrspace(3) %ptra216  %a16 = sext i8 %a to i16217  %res = insertelement <2 x i16> %vec, i16 %a16, i32 1218  store <2 x i16> %res, ptr addrspace(3) %out219  ret void220}221 222define amdgpu_ps void @zextload_P3_i8_D16(<2 x i16> %vec, ptr addrspace(3) %ptra, ptr addrspace(3) %out) {223; GFX12-LABEL: zextload_P3_i8_D16:224; GFX12:       ; %bb.0:225; GFX12-NEXT:    ds_load_u8_d16 v0, v1226; GFX12-NEXT:    s_wait_dscnt 0x0227; GFX12-NEXT:    ds_store_b32 v2, v0228; GFX12-NEXT:    s_endpgm229  %a = load i8, ptr addrspace(3) %ptra230  %a16 = zext i8 %a to i16231  %res = insertelement <2 x i16> %vec, i16 %a16, i32 0232  store <2 x i16> %res, ptr addrspace(3) %out233  ret void234}235 236define amdgpu_ps void @zextload_P3_i8_D16_Hi(<2 x i16> %vec, ptr addrspace(3) %ptra, ptr addrspace(3) %out) {237; GFX12-LABEL: zextload_P3_i8_D16_Hi:238; GFX12:       ; %bb.0:239; GFX12-NEXT:    ds_load_u8_d16_hi v0, v1240; GFX12-NEXT:    s_wait_dscnt 0x0241; GFX12-NEXT:    ds_store_b32 v2, v0242; GFX12-NEXT:    s_endpgm243  %a = load i8, ptr addrspace(3) %ptra244  %a16 = zext i8 %a to i16245  %res = insertelement <2 x i16> %vec, i16 %a16, i32 1246  store <2 x i16> %res, ptr addrspace(3) %out247  ret void248}249 250define amdgpu_ps void @load_P4_B16_D16(<2 x i16> %vec, ptr addrspace(4) %ptra, ptr addrspace(1) %out) {251; GFX12-LABEL: load_P4_B16_D16:252; GFX12:       ; %bb.0:253; GFX12-NEXT:    global_load_d16_b16 v0, v[1:2], off254; GFX12-NEXT:    s_wait_loadcnt 0x0255; GFX12-NEXT:    global_store_b32 v[3:4], v0, off256; GFX12-NEXT:    s_endpgm257  %a = load i16, ptr addrspace(4) %ptra258  %res = insertelement <2 x i16> %vec, i16 %a, i32 0259  store <2 x i16> %res, ptr addrspace(1) %out260  ret void261}262 263define amdgpu_ps void @load_P4_B16_D16_Hi(<2 x i16> %vec, ptr addrspace(4) %ptra, ptr addrspace(1) %out) {264; GFX12-LABEL: load_P4_B16_D16_Hi:265; GFX12:       ; %bb.0:266; GFX12-NEXT:    global_load_d16_hi_b16 v0, v[1:2], off267; GFX12-NEXT:    s_wait_loadcnt 0x0268; GFX12-NEXT:    global_store_b32 v[3:4], v0, off269; GFX12-NEXT:    s_endpgm270  %a = load i16, ptr addrspace(4) %ptra271  %res = insertelement <2 x i16> %vec, i16 %a, i32 1272  store <2 x i16> %res, ptr addrspace(1) %out273  ret void274}275 276define amdgpu_ps void @sextload_P4_i8_D16(<2 x i16> %vec, ptr addrspace(4) %ptra, ptr addrspace(1) %out) {277; GFX12-LABEL: sextload_P4_i8_D16:278; GFX12:       ; %bb.0:279; GFX12-NEXT:    global_load_d16_i8 v0, v[1:2], off280; GFX12-NEXT:    s_wait_loadcnt 0x0281; GFX12-NEXT:    global_store_b32 v[3:4], v0, off282; GFX12-NEXT:    s_endpgm283  %a = load i8, ptr addrspace(4) %ptra284  %a16 = sext i8 %a to i16285  %res = insertelement <2 x i16> %vec, i16 %a16, i32 0286  store <2 x i16> %res, ptr addrspace(1) %out287  ret void288}289 290define amdgpu_ps void @sextload_P4_i8_D16_Hi(<2 x i16> %vec, ptr addrspace(4) %ptra, ptr addrspace(1) %out) {291; GFX12-LABEL: sextload_P4_i8_D16_Hi:292; GFX12:       ; %bb.0:293; GFX12-NEXT:    global_load_d16_hi_i8 v0, v[1:2], off294; GFX12-NEXT:    s_wait_loadcnt 0x0295; GFX12-NEXT:    global_store_b32 v[3:4], v0, off296; GFX12-NEXT:    s_endpgm297  %a = load i8, ptr addrspace(4) %ptra298  %a16 = sext i8 %a to i16299  %res = insertelement <2 x i16> %vec, i16 %a16, i32 1300  store <2 x i16> %res, ptr addrspace(1) %out301  ret void302}303 304define amdgpu_ps void @zextload_P4_i8_D16(<2 x i16> %vec, ptr addrspace(4) %ptra, ptr addrspace(1) %out) {305; GFX12-LABEL: zextload_P4_i8_D16:306; GFX12:       ; %bb.0:307; GFX12-NEXT:    global_load_d16_u8 v0, v[1:2], off308; GFX12-NEXT:    s_wait_loadcnt 0x0309; GFX12-NEXT:    global_store_b32 v[3:4], v0, off310; GFX12-NEXT:    s_endpgm311  %a = load i8, ptr addrspace(4) %ptra312  %a16 = zext i8 %a to i16313  %res = insertelement <2 x i16> %vec, i16 %a16, i32 0314  store <2 x i16> %res, ptr addrspace(1) %out315  ret void316}317 318define amdgpu_ps void @zextload_P4_i8_D16_Hi(<2 x i16> %vec, ptr addrspace(4) %ptra, ptr addrspace(1) %out) {319; GFX12-LABEL: zextload_P4_i8_D16_Hi:320; GFX12:       ; %bb.0:321; GFX12-NEXT:    global_load_d16_hi_u8 v0, v[1:2], off322; GFX12-NEXT:    s_wait_loadcnt 0x0323; GFX12-NEXT:    global_store_b32 v[3:4], v0, off324; GFX12-NEXT:    s_endpgm325  %a = load i8, ptr addrspace(4) %ptra326  %a16 = zext i8 %a to i16327  %res = insertelement <2 x i16> %vec, i16 %a16, i32 1328  store <2 x i16> %res, ptr addrspace(1) %out329  ret void330}331 332define amdgpu_ps void @load_P5_B16_D16(<2 x i16> %vec, ptr addrspace(5) %ptra, ptr addrspace(5) %out) {333; GFX12-LABEL: load_P5_B16_D16:334; GFX12:       ; %bb.0:335; GFX12-NEXT:    scratch_load_d16_b16 v0, v1, off336; GFX12-NEXT:    s_wait_loadcnt 0x0337; GFX12-NEXT:    scratch_store_b32 v2, v0, off338; GFX12-NEXT:    s_endpgm339  %a = load i16, ptr addrspace(5) %ptra340  %res = insertelement <2 x i16> %vec, i16 %a, i32 0341  store <2 x i16> %res, ptr addrspace(5) %out342  ret void343}344 345define amdgpu_ps void @load_P5_B16_D16_Hi(<2 x i16> %vec, ptr addrspace(5) %ptra, ptr addrspace(5) %out) {346; GFX12-LABEL: load_P5_B16_D16_Hi:347; GFX12:       ; %bb.0:348; GFX12-NEXT:    scratch_load_d16_hi_b16 v0, v1, off349; GFX12-NEXT:    s_wait_loadcnt 0x0350; GFX12-NEXT:    scratch_store_b32 v2, v0, off351; GFX12-NEXT:    s_endpgm352  %a = load i16, ptr addrspace(5) %ptra353  %res = insertelement <2 x i16> %vec, i16 %a, i32 1354  store <2 x i16> %res, ptr addrspace(5) %out355  ret void356}357 358define amdgpu_ps void @sextload_P5_i8_D16(<2 x i16> %vec, ptr addrspace(5) %ptra, ptr addrspace(5) %out) {359; GFX12-LABEL: sextload_P5_i8_D16:360; GFX12:       ; %bb.0:361; GFX12-NEXT:    scratch_load_d16_i8 v0, v1, off362; GFX12-NEXT:    s_wait_loadcnt 0x0363; GFX12-NEXT:    scratch_store_b32 v2, v0, off364; GFX12-NEXT:    s_endpgm365  %a = load i8, ptr addrspace(5) %ptra366  %a16 = sext i8 %a to i16367  %res = insertelement <2 x i16> %vec, i16 %a16, i32 0368  store <2 x i16> %res, ptr addrspace(5) %out369  ret void370}371 372define amdgpu_ps void @sextload_P5_i8_D16_Hi(<2 x i16> %vec, ptr addrspace(5) %ptra, ptr addrspace(5) %out) {373; GFX12-LABEL: sextload_P5_i8_D16_Hi:374; GFX12:       ; %bb.0:375; GFX12-NEXT:    scratch_load_d16_hi_i8 v0, v1, off376; GFX12-NEXT:    s_wait_loadcnt 0x0377; GFX12-NEXT:    scratch_store_b32 v2, v0, off378; GFX12-NEXT:    s_endpgm379  %a = load i8, ptr addrspace(5) %ptra380  %a16 = sext i8 %a to i16381  %res = insertelement <2 x i16> %vec, i16 %a16, i32 1382  store <2 x i16> %res, ptr addrspace(5) %out383  ret void384}385 386define amdgpu_ps void @zextload_P5_i8_D16(<2 x i16> %vec, ptr addrspace(5) %ptra, ptr addrspace(5) %out) {387; GFX12-LABEL: zextload_P5_i8_D16:388; GFX12:       ; %bb.0:389; GFX12-NEXT:    scratch_load_d16_u8 v0, v1, off390; GFX12-NEXT:    s_wait_loadcnt 0x0391; GFX12-NEXT:    scratch_store_b32 v2, v0, off392; GFX12-NEXT:    s_endpgm393  %a = load i8, ptr addrspace(5) %ptra394  %a16 = zext i8 %a to i16395  %res = insertelement <2 x i16> %vec, i16 %a16, i32 0396  store <2 x i16> %res, ptr addrspace(5) %out397  ret void398}399 400define amdgpu_ps void @zextload_P5_i8_D16_Hi(<2 x i16> %vec, ptr addrspace(5) %ptra, ptr addrspace(5) %out) {401; GFX12-LABEL: zextload_P5_i8_D16_Hi:402; GFX12:       ; %bb.0:403; GFX12-NEXT:    scratch_load_d16_hi_u8 v0, v1, off404; GFX12-NEXT:    s_wait_loadcnt 0x0405; GFX12-NEXT:    scratch_store_b32 v2, v0, off406; GFX12-NEXT:    s_endpgm407  %a = load i8, ptr addrspace(5) %ptra408  %a16 = zext i8 %a to i16409  %res = insertelement <2 x i16> %vec, i16 %a16, i32 1410  store <2 x i16> %res, ptr addrspace(5) %out411  ret void412}413