5599 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx900 < %s | FileCheck -check-prefixes=GFX9,GFX9-SDAG %s3; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1010 < %s | FileCheck -check-prefixes=GFX10,GFX10-SDAG %s4; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1100 -mattr=+real-true16 < %s | FileCheck -check-prefixes=GFX11,GFX11-SDAG,GFX11-SDAG-TRUE16 %s5; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1100 -mattr=-real-true16 < %s | FileCheck -check-prefixes=GFX11,GFX11-SDAG,GFX11-SDAG-FAKE16 %s6; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1200 -mattr=+real-true16 < %s | FileCheck -check-prefixes=GFX12,GFX12-SDAG,GFX12-SDAG-TRUE16 %s7; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1200 -mattr=-real-true16 < %s | FileCheck -check-prefixes=GFX12,GFX12-SDAG,GFX12-SDAG-FAKE16 %s8; RUN: llc -global-isel=1 -new-reg-bank-select -mtriple=amdgcn -mcpu=gfx900 < %s | FileCheck -check-prefixes=GFX9,GFX9-GISEL %s9; RUN: llc -global-isel=1 -new-reg-bank-select -mtriple=amdgcn -mcpu=gfx1010 < %s | FileCheck -check-prefixes=GFX10,GFX10-GISEL %s10; RUN: llc -global-isel=1 -new-reg-bank-select -mtriple=amdgcn -mcpu=gfx1100 -mattr=+real-true16 < %s | FileCheck -check-prefixes=GFX11,GFX11-GISEL,GFX11-GISEL-TRUE16 %s11; RUN: llc -global-isel=1 -new-reg-bank-select -mtriple=amdgcn -mcpu=gfx1100 -mattr=-real-true16 < %s | FileCheck -check-prefixes=GFX11,GFX11-GISEL,GFX11-GISEL-FAKE16 %s12; RUN: llc -global-isel=1 -new-reg-bank-select -mtriple=amdgcn -mcpu=gfx1200 -mattr=+real-true16 < %s | FileCheck -check-prefixes=GFX12,GFX12-GISEL,GFX12-GISEL-TRUE16 %s13; RUN: llc -global-isel=1 -new-reg-bank-select -mtriple=amdgcn -mcpu=gfx1200 -mattr=-real-true16 < %s | FileCheck -check-prefixes=GFX12,GFX12-GISEL,GFX12-GISEL-FAKE16 %s14 15; Test splitting flat instruction offsets into the low and high bits16; when the offset doesn't fit in the offset field.17 18define i8 @flat_inst_valu_offset_1(ptr %p) {19; GFX9-LABEL: flat_inst_valu_offset_1:20; GFX9: ; %bb.0:21; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)22; GFX9-NEXT: flat_load_ubyte v0, v[0:1] offset:123; GFX9-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)24; GFX9-NEXT: s_setpc_b64 s[30:31]25;26; GFX10-LABEL: flat_inst_valu_offset_1:27; GFX10: ; %bb.0:28; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)29; GFX10-NEXT: v_add_co_u32 v0, vcc_lo, v0, 130; GFX10-NEXT: v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo31; GFX10-NEXT: flat_load_ubyte v0, v[0:1]32; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)33; GFX10-NEXT: s_setpc_b64 s[30:31]34;35; GFX11-SDAG-TRUE16-LABEL: flat_inst_valu_offset_1:36; GFX11-SDAG-TRUE16: ; %bb.0:37; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)38; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:139; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)40; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]41;42; GFX11-SDAG-FAKE16-LABEL: flat_inst_valu_offset_1:43; GFX11-SDAG-FAKE16: ; %bb.0:44; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)45; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:146; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)47; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]48;49; GFX12-SDAG-TRUE16-LABEL: flat_inst_valu_offset_1:50; GFX12-SDAG-TRUE16: ; %bb.0:51; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x052; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x053; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x054; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x055; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x056; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:157; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x058; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]59;60; GFX12-SDAG-FAKE16-LABEL: flat_inst_valu_offset_1:61; GFX12-SDAG-FAKE16: ; %bb.0:62; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x063; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x064; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x065; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x066; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x067; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:168; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x069; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]70;71; GFX11-GISEL-LABEL: flat_inst_valu_offset_1:72; GFX11-GISEL: ; %bb.0:73; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)74; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1] offset:175; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)76; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]77;78; GFX12-GISEL-LABEL: flat_inst_valu_offset_1:79; GFX12-GISEL: ; %bb.0:80; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x081; GFX12-GISEL-NEXT: s_wait_expcnt 0x082; GFX12-GISEL-NEXT: s_wait_samplecnt 0x083; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x084; GFX12-GISEL-NEXT: s_wait_kmcnt 0x085; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] offset:186; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x087; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]88 %gep = getelementptr inbounds i8, ptr %p, i64 189 %load = load i8, ptr %gep, align 490 ret i8 %load91}92 93define i8 @flat_inst_valu_offset_11bit_max(ptr %p) {94; GFX9-LABEL: flat_inst_valu_offset_11bit_max:95; GFX9: ; %bb.0:96; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)97; GFX9-NEXT: flat_load_ubyte v0, v[0:1] offset:204798; GFX9-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)99; GFX9-NEXT: s_setpc_b64 s[30:31]100;101; GFX10-LABEL: flat_inst_valu_offset_11bit_max:102; GFX10: ; %bb.0:103; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)104; GFX10-NEXT: v_add_co_u32 v0, vcc_lo, 0x7ff, v0105; GFX10-NEXT: v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo106; GFX10-NEXT: flat_load_ubyte v0, v[0:1]107; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)108; GFX10-NEXT: s_setpc_b64 s[30:31]109;110; GFX11-SDAG-TRUE16-LABEL: flat_inst_valu_offset_11bit_max:111; GFX11-SDAG-TRUE16: ; %bb.0:112; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)113; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:2047114; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)115; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]116;117; GFX11-SDAG-FAKE16-LABEL: flat_inst_valu_offset_11bit_max:118; GFX11-SDAG-FAKE16: ; %bb.0:119; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)120; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:2047121; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)122; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]123;124; GFX12-SDAG-TRUE16-LABEL: flat_inst_valu_offset_11bit_max:125; GFX12-SDAG-TRUE16: ; %bb.0:126; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0127; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x0128; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x0129; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x0130; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x0131; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:2047132; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0133; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]134;135; GFX12-SDAG-FAKE16-LABEL: flat_inst_valu_offset_11bit_max:136; GFX12-SDAG-FAKE16: ; %bb.0:137; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0138; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x0139; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x0140; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x0141; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x0142; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:2047143; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0144; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]145;146; GFX11-GISEL-LABEL: flat_inst_valu_offset_11bit_max:147; GFX11-GISEL: ; %bb.0:148; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)149; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1] offset:2047150; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)151; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]152;153; GFX12-GISEL-LABEL: flat_inst_valu_offset_11bit_max:154; GFX12-GISEL: ; %bb.0:155; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x0156; GFX12-GISEL-NEXT: s_wait_expcnt 0x0157; GFX12-GISEL-NEXT: s_wait_samplecnt 0x0158; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x0159; GFX12-GISEL-NEXT: s_wait_kmcnt 0x0160; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] offset:2047161; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x0162; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]163 %gep = getelementptr inbounds i8, ptr %p, i64 2047164 %load = load i8, ptr %gep, align 4165 ret i8 %load166}167 168define i8 @flat_inst_valu_offset_12bit_max(ptr %p) {169; GFX9-LABEL: flat_inst_valu_offset_12bit_max:170; GFX9: ; %bb.0:171; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)172; GFX9-NEXT: flat_load_ubyte v0, v[0:1] offset:4095173; GFX9-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)174; GFX9-NEXT: s_setpc_b64 s[30:31]175;176; GFX10-LABEL: flat_inst_valu_offset_12bit_max:177; GFX10: ; %bb.0:178; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)179; GFX10-NEXT: v_add_co_u32 v0, vcc_lo, 0xfff, v0180; GFX10-NEXT: v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo181; GFX10-NEXT: flat_load_ubyte v0, v[0:1]182; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)183; GFX10-NEXT: s_setpc_b64 s[30:31]184;185; GFX11-SDAG-TRUE16-LABEL: flat_inst_valu_offset_12bit_max:186; GFX11-SDAG-TRUE16: ; %bb.0:187; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)188; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:4095189; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)190; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]191;192; GFX11-SDAG-FAKE16-LABEL: flat_inst_valu_offset_12bit_max:193; GFX11-SDAG-FAKE16: ; %bb.0:194; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)195; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:4095196; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)197; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]198;199; GFX12-SDAG-TRUE16-LABEL: flat_inst_valu_offset_12bit_max:200; GFX12-SDAG-TRUE16: ; %bb.0:201; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0202; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x0203; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x0204; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x0205; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x0206; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:4095207; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0208; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]209;210; GFX12-SDAG-FAKE16-LABEL: flat_inst_valu_offset_12bit_max:211; GFX12-SDAG-FAKE16: ; %bb.0:212; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0213; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x0214; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x0215; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x0216; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x0217; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:4095218; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0219; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]220;221; GFX11-GISEL-LABEL: flat_inst_valu_offset_12bit_max:222; GFX11-GISEL: ; %bb.0:223; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)224; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1] offset:4095225; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)226; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]227;228; GFX12-GISEL-LABEL: flat_inst_valu_offset_12bit_max:229; GFX12-GISEL: ; %bb.0:230; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x0231; GFX12-GISEL-NEXT: s_wait_expcnt 0x0232; GFX12-GISEL-NEXT: s_wait_samplecnt 0x0233; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x0234; GFX12-GISEL-NEXT: s_wait_kmcnt 0x0235; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] offset:4095236; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x0237; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]238 %gep = getelementptr inbounds i8, ptr %p, i64 4095239 %load = load i8, ptr %gep, align 4240 ret i8 %load241}242 243define i8 @flat_inst_valu_offset_13bit_max(ptr %p) {244; GFX9-SDAG-LABEL: flat_inst_valu_offset_13bit_max:245; GFX9-SDAG: ; %bb.0:246; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)247; GFX9-SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0x1000, v0248; GFX9-SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, 0, v1, vcc249; GFX9-SDAG-NEXT: flat_load_ubyte v0, v[0:1] offset:4095250; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)251; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]252;253; GFX10-LABEL: flat_inst_valu_offset_13bit_max:254; GFX10: ; %bb.0:255; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)256; GFX10-NEXT: v_add_co_u32 v0, vcc_lo, 0x1fff, v0257; GFX10-NEXT: v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo258; GFX10-NEXT: flat_load_ubyte v0, v[0:1]259; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)260; GFX10-NEXT: s_setpc_b64 s[30:31]261;262; GFX11-SDAG-TRUE16-LABEL: flat_inst_valu_offset_13bit_max:263; GFX11-SDAG-TRUE16: ; %bb.0:264; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)265; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x1000, v0266; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)267; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo268; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:4095269; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)270; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]271;272; GFX11-SDAG-FAKE16-LABEL: flat_inst_valu_offset_13bit_max:273; GFX11-SDAG-FAKE16: ; %bb.0:274; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)275; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x1000, v0276; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)277; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo278; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:4095279; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)280; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]281;282; GFX12-SDAG-TRUE16-LABEL: flat_inst_valu_offset_13bit_max:283; GFX12-SDAG-TRUE16: ; %bb.0:284; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0285; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x0286; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x0287; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x0288; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x0289; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:8191290; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0291; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]292;293; GFX12-SDAG-FAKE16-LABEL: flat_inst_valu_offset_13bit_max:294; GFX12-SDAG-FAKE16: ; %bb.0:295; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0296; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x0297; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x0298; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x0299; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x0300; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:8191301; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0302; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]303;304; GFX9-GISEL-LABEL: flat_inst_valu_offset_13bit_max:305; GFX9-GISEL: ; %bb.0:306; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)307; GFX9-GISEL-NEXT: v_add_co_u32_e32 v0, vcc, 0x1fff, v0308; GFX9-GISEL-NEXT: v_addc_co_u32_e32 v1, vcc, 0, v1, vcc309; GFX9-GISEL-NEXT: flat_load_ubyte v0, v[0:1]310; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)311; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]312;313; GFX11-GISEL-LABEL: flat_inst_valu_offset_13bit_max:314; GFX11-GISEL: ; %bb.0:315; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)316; GFX11-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0x1fff, v0317; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)318; GFX11-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo319; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1]320; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)321; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]322;323; GFX12-GISEL-LABEL: flat_inst_valu_offset_13bit_max:324; GFX12-GISEL: ; %bb.0:325; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x0326; GFX12-GISEL-NEXT: s_wait_expcnt 0x0327; GFX12-GISEL-NEXT: s_wait_samplecnt 0x0328; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x0329; GFX12-GISEL-NEXT: s_wait_kmcnt 0x0330; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] offset:8191331; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x0332; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]333 %gep = getelementptr inbounds i8, ptr %p, i64 8191334 %load = load i8, ptr %gep, align 4335 ret i8 %load336}337 338define i8 @flat_inst_valu_offset_24bit_max(ptr %p) {339; GFX9-SDAG-LABEL: flat_inst_valu_offset_24bit_max:340; GFX9-SDAG: ; %bb.0:341; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)342; GFX9-SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0x7ff000, v0343; GFX9-SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, 0, v1, vcc344; GFX9-SDAG-NEXT: flat_load_ubyte v0, v[0:1] offset:4095345; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)346; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]347;348; GFX10-LABEL: flat_inst_valu_offset_24bit_max:349; GFX10: ; %bb.0:350; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)351; GFX10-NEXT: v_add_co_u32 v0, vcc_lo, 0x7fffff, v0352; GFX10-NEXT: v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo353; GFX10-NEXT: flat_load_ubyte v0, v[0:1]354; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)355; GFX10-NEXT: s_setpc_b64 s[30:31]356;357; GFX11-SDAG-TRUE16-LABEL: flat_inst_valu_offset_24bit_max:358; GFX11-SDAG-TRUE16: ; %bb.0:359; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)360; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x7ff000, v0361; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)362; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo363; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:4095364; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)365; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]366;367; GFX11-SDAG-FAKE16-LABEL: flat_inst_valu_offset_24bit_max:368; GFX11-SDAG-FAKE16: ; %bb.0:369; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)370; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x7ff000, v0371; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)372; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo373; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:4095374; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)375; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]376;377; GFX12-SDAG-TRUE16-LABEL: flat_inst_valu_offset_24bit_max:378; GFX12-SDAG-TRUE16: ; %bb.0:379; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0380; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x0381; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x0382; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x0383; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x0384; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:8388607385; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0386; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]387;388; GFX12-SDAG-FAKE16-LABEL: flat_inst_valu_offset_24bit_max:389; GFX12-SDAG-FAKE16: ; %bb.0:390; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0391; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x0392; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x0393; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x0394; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x0395; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:8388607396; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0397; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]398;399; GFX9-GISEL-LABEL: flat_inst_valu_offset_24bit_max:400; GFX9-GISEL: ; %bb.0:401; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)402; GFX9-GISEL-NEXT: v_add_co_u32_e32 v0, vcc, 0x7fffff, v0403; GFX9-GISEL-NEXT: v_addc_co_u32_e32 v1, vcc, 0, v1, vcc404; GFX9-GISEL-NEXT: flat_load_ubyte v0, v[0:1]405; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)406; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]407;408; GFX11-GISEL-LABEL: flat_inst_valu_offset_24bit_max:409; GFX11-GISEL: ; %bb.0:410; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)411; GFX11-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0x7fffff, v0412; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)413; GFX11-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo414; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1]415; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)416; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]417;418; GFX12-GISEL-LABEL: flat_inst_valu_offset_24bit_max:419; GFX12-GISEL: ; %bb.0:420; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x0421; GFX12-GISEL-NEXT: s_wait_expcnt 0x0422; GFX12-GISEL-NEXT: s_wait_samplecnt 0x0423; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x0424; GFX12-GISEL-NEXT: s_wait_kmcnt 0x0425; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] offset:8388607426; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x0427; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]428 %gep = getelementptr inbounds i8, ptr %p, i64 8388607429 %load = load i8, ptr %gep, align 4430 ret i8 %load431}432 433define i8 @flat_inst_valu_offset_neg_11bit_max(ptr %p) {434; GFX9-LABEL: flat_inst_valu_offset_neg_11bit_max:435; GFX9: ; %bb.0:436; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)437; GFX9-NEXT: v_add_co_u32_e32 v0, vcc, 0xfffff800, v0438; GFX9-NEXT: v_addc_co_u32_e32 v1, vcc, -1, v1, vcc439; GFX9-NEXT: flat_load_ubyte v0, v[0:1]440; GFX9-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)441; GFX9-NEXT: s_setpc_b64 s[30:31]442;443; GFX10-LABEL: flat_inst_valu_offset_neg_11bit_max:444; GFX10: ; %bb.0:445; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)446; GFX10-NEXT: v_add_co_u32 v0, vcc_lo, 0xfffff800, v0447; GFX10-NEXT: v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo448; GFX10-NEXT: flat_load_ubyte v0, v[0:1]449; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)450; GFX10-NEXT: s_setpc_b64 s[30:31]451;452; GFX11-SDAG-TRUE16-LABEL: flat_inst_valu_offset_neg_11bit_max:453; GFX11-SDAG-TRUE16: ; %bb.0:454; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)455; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0xfffff800, v0456; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)457; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo458; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1]459; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)460; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]461;462; GFX11-SDAG-FAKE16-LABEL: flat_inst_valu_offset_neg_11bit_max:463; GFX11-SDAG-FAKE16: ; %bb.0:464; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)465; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0xfffff800, v0466; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)467; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo468; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1]469; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)470; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]471;472; GFX12-SDAG-TRUE16-LABEL: flat_inst_valu_offset_neg_11bit_max:473; GFX12-SDAG-TRUE16: ; %bb.0:474; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0475; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x0476; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x0477; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x0478; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x0479; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:-2048480; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0481; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]482;483; GFX12-SDAG-FAKE16-LABEL: flat_inst_valu_offset_neg_11bit_max:484; GFX12-SDAG-FAKE16: ; %bb.0:485; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0486; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x0487; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x0488; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x0489; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x0490; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:-2048491; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0492; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]493;494; GFX11-GISEL-LABEL: flat_inst_valu_offset_neg_11bit_max:495; GFX11-GISEL: ; %bb.0:496; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)497; GFX11-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0xfffff800, v0498; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)499; GFX11-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo500; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1]501; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)502; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]503;504; GFX12-GISEL-LABEL: flat_inst_valu_offset_neg_11bit_max:505; GFX12-GISEL: ; %bb.0:506; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x0507; GFX12-GISEL-NEXT: s_wait_expcnt 0x0508; GFX12-GISEL-NEXT: s_wait_samplecnt 0x0509; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x0510; GFX12-GISEL-NEXT: s_wait_kmcnt 0x0511; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] offset:-2048512; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x0513; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]514 %gep = getelementptr inbounds i8, ptr %p, i64 -2048515 %load = load i8, ptr %gep, align 4516 ret i8 %load517}518 519define i8 @flat_inst_valu_offset_neg_12bit_max(ptr %p) {520; GFX9-LABEL: flat_inst_valu_offset_neg_12bit_max:521; GFX9: ; %bb.0:522; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)523; GFX9-NEXT: v_add_co_u32_e32 v0, vcc, 0xfffff000, v0524; GFX9-NEXT: v_addc_co_u32_e32 v1, vcc, -1, v1, vcc525; GFX9-NEXT: flat_load_ubyte v0, v[0:1]526; GFX9-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)527; GFX9-NEXT: s_setpc_b64 s[30:31]528;529; GFX10-LABEL: flat_inst_valu_offset_neg_12bit_max:530; GFX10: ; %bb.0:531; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)532; GFX10-NEXT: v_add_co_u32 v0, vcc_lo, 0xfffff000, v0533; GFX10-NEXT: v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo534; GFX10-NEXT: flat_load_ubyte v0, v[0:1]535; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)536; GFX10-NEXT: s_setpc_b64 s[30:31]537;538; GFX11-SDAG-TRUE16-LABEL: flat_inst_valu_offset_neg_12bit_max:539; GFX11-SDAG-TRUE16: ; %bb.0:540; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)541; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0xfffff000, v0542; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)543; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo544; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1]545; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)546; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]547;548; GFX11-SDAG-FAKE16-LABEL: flat_inst_valu_offset_neg_12bit_max:549; GFX11-SDAG-FAKE16: ; %bb.0:550; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)551; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0xfffff000, v0552; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)553; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo554; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1]555; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)556; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]557;558; GFX12-SDAG-TRUE16-LABEL: flat_inst_valu_offset_neg_12bit_max:559; GFX12-SDAG-TRUE16: ; %bb.0:560; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0561; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x0562; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x0563; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x0564; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x0565; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:-4096566; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0567; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]568;569; GFX12-SDAG-FAKE16-LABEL: flat_inst_valu_offset_neg_12bit_max:570; GFX12-SDAG-FAKE16: ; %bb.0:571; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0572; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x0573; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x0574; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x0575; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x0576; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:-4096577; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0578; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]579;580; GFX11-GISEL-LABEL: flat_inst_valu_offset_neg_12bit_max:581; GFX11-GISEL: ; %bb.0:582; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)583; GFX11-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0xfffff000, v0584; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)585; GFX11-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo586; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1]587; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)588; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]589;590; GFX12-GISEL-LABEL: flat_inst_valu_offset_neg_12bit_max:591; GFX12-GISEL: ; %bb.0:592; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x0593; GFX12-GISEL-NEXT: s_wait_expcnt 0x0594; GFX12-GISEL-NEXT: s_wait_samplecnt 0x0595; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x0596; GFX12-GISEL-NEXT: s_wait_kmcnt 0x0597; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] offset:-4096598; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x0599; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]600 %gep = getelementptr inbounds i8, ptr %p, i64 -4096601 %load = load i8, ptr %gep, align 4602 ret i8 %load603}604 605define i8 @flat_inst_valu_offset_neg_13bit_max(ptr %p) {606; GFX9-LABEL: flat_inst_valu_offset_neg_13bit_max:607; GFX9: ; %bb.0:608; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)609; GFX9-NEXT: v_add_co_u32_e32 v0, vcc, 0xffffe000, v0610; GFX9-NEXT: v_addc_co_u32_e32 v1, vcc, -1, v1, vcc611; GFX9-NEXT: flat_load_ubyte v0, v[0:1]612; GFX9-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)613; GFX9-NEXT: s_setpc_b64 s[30:31]614;615; GFX10-LABEL: flat_inst_valu_offset_neg_13bit_max:616; GFX10: ; %bb.0:617; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)618; GFX10-NEXT: v_add_co_u32 v0, vcc_lo, 0xffffe000, v0619; GFX10-NEXT: v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo620; GFX10-NEXT: flat_load_ubyte v0, v[0:1]621; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)622; GFX10-NEXT: s_setpc_b64 s[30:31]623;624; GFX11-SDAG-TRUE16-LABEL: flat_inst_valu_offset_neg_13bit_max:625; GFX11-SDAG-TRUE16: ; %bb.0:626; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)627; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0xffffe000, v0628; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)629; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo630; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1]631; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)632; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]633;634; GFX11-SDAG-FAKE16-LABEL: flat_inst_valu_offset_neg_13bit_max:635; GFX11-SDAG-FAKE16: ; %bb.0:636; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)637; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0xffffe000, v0638; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)639; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo640; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1]641; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)642; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]643;644; GFX12-SDAG-TRUE16-LABEL: flat_inst_valu_offset_neg_13bit_max:645; GFX12-SDAG-TRUE16: ; %bb.0:646; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0647; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x0648; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x0649; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x0650; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x0651; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:-8192652; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0653; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]654;655; GFX12-SDAG-FAKE16-LABEL: flat_inst_valu_offset_neg_13bit_max:656; GFX12-SDAG-FAKE16: ; %bb.0:657; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0658; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x0659; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x0660; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x0661; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x0662; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:-8192663; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0664; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]665;666; GFX11-GISEL-LABEL: flat_inst_valu_offset_neg_13bit_max:667; GFX11-GISEL: ; %bb.0:668; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)669; GFX11-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0xffffe000, v0670; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)671; GFX11-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo672; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1]673; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)674; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]675;676; GFX12-GISEL-LABEL: flat_inst_valu_offset_neg_13bit_max:677; GFX12-GISEL: ; %bb.0:678; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x0679; GFX12-GISEL-NEXT: s_wait_expcnt 0x0680; GFX12-GISEL-NEXT: s_wait_samplecnt 0x0681; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x0682; GFX12-GISEL-NEXT: s_wait_kmcnt 0x0683; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] offset:-8192684; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x0685; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]686 %gep = getelementptr inbounds i8, ptr %p, i64 -8192687 %load = load i8, ptr %gep, align 4688 ret i8 %load689}690 691define i8 @flat_inst_valu_offset_neg_24bit_max(ptr %p) {692; GFX9-LABEL: flat_inst_valu_offset_neg_24bit_max:693; GFX9: ; %bb.0:694; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)695; GFX9-NEXT: v_add_co_u32_e32 v0, vcc, 0xff800000, v0696; GFX9-NEXT: v_addc_co_u32_e32 v1, vcc, -1, v1, vcc697; GFX9-NEXT: flat_load_ubyte v0, v[0:1]698; GFX9-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)699; GFX9-NEXT: s_setpc_b64 s[30:31]700;701; GFX10-LABEL: flat_inst_valu_offset_neg_24bit_max:702; GFX10: ; %bb.0:703; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)704; GFX10-NEXT: v_add_co_u32 v0, vcc_lo, 0xff800000, v0705; GFX10-NEXT: v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo706; GFX10-NEXT: flat_load_ubyte v0, v[0:1]707; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)708; GFX10-NEXT: s_setpc_b64 s[30:31]709;710; GFX11-SDAG-TRUE16-LABEL: flat_inst_valu_offset_neg_24bit_max:711; GFX11-SDAG-TRUE16: ; %bb.0:712; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)713; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0xff800000, v0714; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)715; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo716; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1]717; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)718; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]719;720; GFX11-SDAG-FAKE16-LABEL: flat_inst_valu_offset_neg_24bit_max:721; GFX11-SDAG-FAKE16: ; %bb.0:722; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)723; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0xff800000, v0724; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)725; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo726; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1]727; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)728; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]729;730; GFX12-SDAG-TRUE16-LABEL: flat_inst_valu_offset_neg_24bit_max:731; GFX12-SDAG-TRUE16: ; %bb.0:732; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0733; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x0734; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x0735; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x0736; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x0737; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:-8388608738; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0739; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]740;741; GFX12-SDAG-FAKE16-LABEL: flat_inst_valu_offset_neg_24bit_max:742; GFX12-SDAG-FAKE16: ; %bb.0:743; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0744; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x0745; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x0746; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x0747; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x0748; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:-8388608749; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0750; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]751;752; GFX11-GISEL-LABEL: flat_inst_valu_offset_neg_24bit_max:753; GFX11-GISEL: ; %bb.0:754; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)755; GFX11-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0xff800000, v0756; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)757; GFX11-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo758; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1]759; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)760; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]761;762; GFX12-GISEL-LABEL: flat_inst_valu_offset_neg_24bit_max:763; GFX12-GISEL: ; %bb.0:764; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x0765; GFX12-GISEL-NEXT: s_wait_expcnt 0x0766; GFX12-GISEL-NEXT: s_wait_samplecnt 0x0767; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x0768; GFX12-GISEL-NEXT: s_wait_kmcnt 0x0769; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] offset:-8388608770; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x0771; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]772 %gep = getelementptr inbounds i8, ptr %p, i64 -8388608773 %load = load i8, ptr %gep, align 4774 ret i8 %load775}776 777 778define i8 @flat_inst_valu_offset_2x_11bit_max(ptr %p) {779; GFX9-LABEL: flat_inst_valu_offset_2x_11bit_max:780; GFX9: ; %bb.0:781; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)782; GFX9-NEXT: flat_load_ubyte v0, v[0:1] offset:4095783; GFX9-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)784; GFX9-NEXT: s_setpc_b64 s[30:31]785;786; GFX10-LABEL: flat_inst_valu_offset_2x_11bit_max:787; GFX10: ; %bb.0:788; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)789; GFX10-NEXT: v_add_co_u32 v0, vcc_lo, 0xfff, v0790; GFX10-NEXT: v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo791; GFX10-NEXT: flat_load_ubyte v0, v[0:1]792; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)793; GFX10-NEXT: s_setpc_b64 s[30:31]794;795; GFX11-SDAG-TRUE16-LABEL: flat_inst_valu_offset_2x_11bit_max:796; GFX11-SDAG-TRUE16: ; %bb.0:797; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)798; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:4095799; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)800; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]801;802; GFX11-SDAG-FAKE16-LABEL: flat_inst_valu_offset_2x_11bit_max:803; GFX11-SDAG-FAKE16: ; %bb.0:804; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)805; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:4095806; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)807; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]808;809; GFX12-SDAG-TRUE16-LABEL: flat_inst_valu_offset_2x_11bit_max:810; GFX12-SDAG-TRUE16: ; %bb.0:811; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0812; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x0813; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x0814; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x0815; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x0816; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:4095817; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0818; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]819;820; GFX12-SDAG-FAKE16-LABEL: flat_inst_valu_offset_2x_11bit_max:821; GFX12-SDAG-FAKE16: ; %bb.0:822; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0823; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x0824; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x0825; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x0826; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x0827; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:4095828; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0829; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]830;831; GFX11-GISEL-LABEL: flat_inst_valu_offset_2x_11bit_max:832; GFX11-GISEL: ; %bb.0:833; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)834; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1] offset:4095835; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)836; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]837;838; GFX12-GISEL-LABEL: flat_inst_valu_offset_2x_11bit_max:839; GFX12-GISEL: ; %bb.0:840; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x0841; GFX12-GISEL-NEXT: s_wait_expcnt 0x0842; GFX12-GISEL-NEXT: s_wait_samplecnt 0x0843; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x0844; GFX12-GISEL-NEXT: s_wait_kmcnt 0x0845; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] offset:4095846; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x0847; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]848 %gep = getelementptr inbounds i8, ptr %p, i64 4095849 %load = load i8, ptr %gep, align 4850 ret i8 %load851}852 853define i8 @flat_inst_valu_offset_2x_12bit_max(ptr %p) {854; GFX9-SDAG-LABEL: flat_inst_valu_offset_2x_12bit_max:855; GFX9-SDAG: ; %bb.0:856; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)857; GFX9-SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0x1000, v0858; GFX9-SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, 0, v1, vcc859; GFX9-SDAG-NEXT: flat_load_ubyte v0, v[0:1] offset:4095860; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)861; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]862;863; GFX10-LABEL: flat_inst_valu_offset_2x_12bit_max:864; GFX10: ; %bb.0:865; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)866; GFX10-NEXT: v_add_co_u32 v0, vcc_lo, 0x1fff, v0867; GFX10-NEXT: v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo868; GFX10-NEXT: flat_load_ubyte v0, v[0:1]869; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)870; GFX10-NEXT: s_setpc_b64 s[30:31]871;872; GFX11-SDAG-TRUE16-LABEL: flat_inst_valu_offset_2x_12bit_max:873; GFX11-SDAG-TRUE16: ; %bb.0:874; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)875; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x1000, v0876; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)877; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo878; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:4095879; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)880; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]881;882; GFX11-SDAG-FAKE16-LABEL: flat_inst_valu_offset_2x_12bit_max:883; GFX11-SDAG-FAKE16: ; %bb.0:884; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)885; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x1000, v0886; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)887; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo888; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:4095889; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)890; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]891;892; GFX12-SDAG-TRUE16-LABEL: flat_inst_valu_offset_2x_12bit_max:893; GFX12-SDAG-TRUE16: ; %bb.0:894; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0895; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x0896; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x0897; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x0898; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x0899; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:8191900; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0901; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]902;903; GFX12-SDAG-FAKE16-LABEL: flat_inst_valu_offset_2x_12bit_max:904; GFX12-SDAG-FAKE16: ; %bb.0:905; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0906; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x0907; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x0908; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x0909; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x0910; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:8191911; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0912; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]913;914; GFX9-GISEL-LABEL: flat_inst_valu_offset_2x_12bit_max:915; GFX9-GISEL: ; %bb.0:916; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)917; GFX9-GISEL-NEXT: v_add_co_u32_e32 v0, vcc, 0x1fff, v0918; GFX9-GISEL-NEXT: v_addc_co_u32_e32 v1, vcc, 0, v1, vcc919; GFX9-GISEL-NEXT: flat_load_ubyte v0, v[0:1]920; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)921; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]922;923; GFX11-GISEL-LABEL: flat_inst_valu_offset_2x_12bit_max:924; GFX11-GISEL: ; %bb.0:925; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)926; GFX11-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0x1fff, v0927; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)928; GFX11-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo929; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1]930; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)931; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]932;933; GFX12-GISEL-LABEL: flat_inst_valu_offset_2x_12bit_max:934; GFX12-GISEL: ; %bb.0:935; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x0936; GFX12-GISEL-NEXT: s_wait_expcnt 0x0937; GFX12-GISEL-NEXT: s_wait_samplecnt 0x0938; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x0939; GFX12-GISEL-NEXT: s_wait_kmcnt 0x0940; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] offset:8191941; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x0942; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]943 %gep = getelementptr inbounds i8, ptr %p, i64 8191944 %load = load i8, ptr %gep, align 4945 ret i8 %load946}947 948define i8 @flat_inst_valu_offset_2x_13bit_max(ptr %p) {949; GFX9-SDAG-LABEL: flat_inst_valu_offset_2x_13bit_max:950; GFX9-SDAG: ; %bb.0:951; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)952; GFX9-SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0x3000, v0953; GFX9-SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, 0, v1, vcc954; GFX9-SDAG-NEXT: flat_load_ubyte v0, v[0:1] offset:4095955; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)956; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]957;958; GFX10-LABEL: flat_inst_valu_offset_2x_13bit_max:959; GFX10: ; %bb.0:960; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)961; GFX10-NEXT: v_add_co_u32 v0, vcc_lo, 0x3fff, v0962; GFX10-NEXT: v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo963; GFX10-NEXT: flat_load_ubyte v0, v[0:1]964; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)965; GFX10-NEXT: s_setpc_b64 s[30:31]966;967; GFX11-SDAG-TRUE16-LABEL: flat_inst_valu_offset_2x_13bit_max:968; GFX11-SDAG-TRUE16: ; %bb.0:969; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)970; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x3000, v0971; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)972; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo973; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:4095974; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)975; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]976;977; GFX11-SDAG-FAKE16-LABEL: flat_inst_valu_offset_2x_13bit_max:978; GFX11-SDAG-FAKE16: ; %bb.0:979; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)980; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x3000, v0981; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)982; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo983; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:4095984; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)985; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]986;987; GFX12-SDAG-TRUE16-LABEL: flat_inst_valu_offset_2x_13bit_max:988; GFX12-SDAG-TRUE16: ; %bb.0:989; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0990; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x0991; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x0992; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x0993; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x0994; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:16383995; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0996; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]997;998; GFX12-SDAG-FAKE16-LABEL: flat_inst_valu_offset_2x_13bit_max:999; GFX12-SDAG-FAKE16: ; %bb.0:1000; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x01001; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x01002; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x01003; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x01004; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x01005; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:163831006; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x01007; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1008;1009; GFX9-GISEL-LABEL: flat_inst_valu_offset_2x_13bit_max:1010; GFX9-GISEL: ; %bb.0:1011; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1012; GFX9-GISEL-NEXT: v_add_co_u32_e32 v0, vcc, 0x3fff, v01013; GFX9-GISEL-NEXT: v_addc_co_u32_e32 v1, vcc, 0, v1, vcc1014; GFX9-GISEL-NEXT: flat_load_ubyte v0, v[0:1]1015; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1016; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]1017;1018; GFX11-GISEL-LABEL: flat_inst_valu_offset_2x_13bit_max:1019; GFX11-GISEL: ; %bb.0:1020; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1021; GFX11-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0x3fff, v01022; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)1023; GFX11-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo1024; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1]1025; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1026; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]1027;1028; GFX12-GISEL-LABEL: flat_inst_valu_offset_2x_13bit_max:1029; GFX12-GISEL: ; %bb.0:1030; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x01031; GFX12-GISEL-NEXT: s_wait_expcnt 0x01032; GFX12-GISEL-NEXT: s_wait_samplecnt 0x01033; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x01034; GFX12-GISEL-NEXT: s_wait_kmcnt 0x01035; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] offset:163831036; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x01037; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]1038 %gep = getelementptr inbounds i8, ptr %p, i64 163831039 %load = load i8, ptr %gep, align 41040 ret i8 %load1041}1042 1043define i8 @flat_inst_valu_offset_2x_24bit_max(ptr %p) {1044; GFX9-SDAG-LABEL: flat_inst_valu_offset_2x_24bit_max:1045; GFX9-SDAG: ; %bb.0:1046; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1047; GFX9-SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0xfff000, v01048; GFX9-SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, 0, v1, vcc1049; GFX9-SDAG-NEXT: flat_load_ubyte v0, v[0:1] offset:40941050; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1051; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]1052;1053; GFX10-LABEL: flat_inst_valu_offset_2x_24bit_max:1054; GFX10: ; %bb.0:1055; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1056; GFX10-NEXT: v_add_co_u32 v0, vcc_lo, 0xfffffe, v01057; GFX10-NEXT: v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo1058; GFX10-NEXT: flat_load_ubyte v0, v[0:1]1059; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1060; GFX10-NEXT: s_setpc_b64 s[30:31]1061;1062; GFX11-SDAG-TRUE16-LABEL: flat_inst_valu_offset_2x_24bit_max:1063; GFX11-SDAG-TRUE16: ; %bb.0:1064; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1065; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0xfff000, v01066; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)1067; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo1068; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:40941069; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1070; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1071;1072; GFX11-SDAG-FAKE16-LABEL: flat_inst_valu_offset_2x_24bit_max:1073; GFX11-SDAG-FAKE16: ; %bb.0:1074; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1075; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0xfff000, v01076; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)1077; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo1078; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:40941079; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1080; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1081;1082; GFX12-SDAG-TRUE16-LABEL: flat_inst_valu_offset_2x_24bit_max:1083; GFX12-SDAG-TRUE16: ; %bb.0:1084; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x01085; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x01086; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x01087; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x01088; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x01089; GFX12-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x800000, v01090; GFX12-SDAG-TRUE16-NEXT: s_wait_alu depctr_va_vcc(0)1091; GFX12-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo1092; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:83886061093; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x01094; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1095;1096; GFX12-SDAG-FAKE16-LABEL: flat_inst_valu_offset_2x_24bit_max:1097; GFX12-SDAG-FAKE16: ; %bb.0:1098; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x01099; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x01100; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x01101; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x01102; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x01103; GFX12-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x800000, v01104; GFX12-SDAG-FAKE16-NEXT: s_wait_alu depctr_va_vcc(0)1105; GFX12-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo1106; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:83886061107; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x01108; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1109;1110; GFX9-GISEL-LABEL: flat_inst_valu_offset_2x_24bit_max:1111; GFX9-GISEL: ; %bb.0:1112; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1113; GFX9-GISEL-NEXT: v_add_co_u32_e32 v0, vcc, 0xfffffe, v01114; GFX9-GISEL-NEXT: v_addc_co_u32_e32 v1, vcc, 0, v1, vcc1115; GFX9-GISEL-NEXT: flat_load_ubyte v0, v[0:1]1116; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1117; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]1118;1119; GFX11-GISEL-LABEL: flat_inst_valu_offset_2x_24bit_max:1120; GFX11-GISEL: ; %bb.0:1121; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1122; GFX11-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0xfffffe, v01123; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)1124; GFX11-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo1125; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1]1126; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1127; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]1128;1129; GFX12-GISEL-LABEL: flat_inst_valu_offset_2x_24bit_max:1130; GFX12-GISEL: ; %bb.0:1131; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x01132; GFX12-GISEL-NEXT: s_wait_expcnt 0x01133; GFX12-GISEL-NEXT: s_wait_samplecnt 0x01134; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x01135; GFX12-GISEL-NEXT: s_wait_kmcnt 0x01136; GFX12-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0xfffffe, v01137; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)1138; GFX12-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo1139; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1]1140; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x01141; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]1142 %gep = getelementptr inbounds i8, ptr %p, i64 167772141143 %load = load i8, ptr %gep, align 41144 ret i8 %load1145}1146 1147define i8 @flat_inst_valu_offset_2x_neg_11bit_max(ptr %p) {1148; GFX9-LABEL: flat_inst_valu_offset_2x_neg_11bit_max:1149; GFX9: ; %bb.0:1150; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1151; GFX9-NEXT: v_add_co_u32_e32 v0, vcc, 0xfffff000, v01152; GFX9-NEXT: v_addc_co_u32_e32 v1, vcc, -1, v1, vcc1153; GFX9-NEXT: flat_load_ubyte v0, v[0:1]1154; GFX9-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1155; GFX9-NEXT: s_setpc_b64 s[30:31]1156;1157; GFX10-LABEL: flat_inst_valu_offset_2x_neg_11bit_max:1158; GFX10: ; %bb.0:1159; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1160; GFX10-NEXT: v_add_co_u32 v0, vcc_lo, 0xfffff000, v01161; GFX10-NEXT: v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo1162; GFX10-NEXT: flat_load_ubyte v0, v[0:1]1163; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1164; GFX10-NEXT: s_setpc_b64 s[30:31]1165;1166; GFX11-SDAG-TRUE16-LABEL: flat_inst_valu_offset_2x_neg_11bit_max:1167; GFX11-SDAG-TRUE16: ; %bb.0:1168; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1169; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0xfffff000, v01170; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)1171; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo1172; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1]1173; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1174; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1175;1176; GFX11-SDAG-FAKE16-LABEL: flat_inst_valu_offset_2x_neg_11bit_max:1177; GFX11-SDAG-FAKE16: ; %bb.0:1178; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1179; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0xfffff000, v01180; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)1181; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo1182; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1]1183; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1184; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1185;1186; GFX12-SDAG-TRUE16-LABEL: flat_inst_valu_offset_2x_neg_11bit_max:1187; GFX12-SDAG-TRUE16: ; %bb.0:1188; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x01189; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x01190; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x01191; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x01192; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x01193; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:-40961194; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x01195; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1196;1197; GFX12-SDAG-FAKE16-LABEL: flat_inst_valu_offset_2x_neg_11bit_max:1198; GFX12-SDAG-FAKE16: ; %bb.0:1199; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x01200; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x01201; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x01202; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x01203; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x01204; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:-40961205; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x01206; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1207;1208; GFX11-GISEL-LABEL: flat_inst_valu_offset_2x_neg_11bit_max:1209; GFX11-GISEL: ; %bb.0:1210; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1211; GFX11-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0xfffff000, v01212; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)1213; GFX11-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo1214; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1]1215; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1216; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]1217;1218; GFX12-GISEL-LABEL: flat_inst_valu_offset_2x_neg_11bit_max:1219; GFX12-GISEL: ; %bb.0:1220; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x01221; GFX12-GISEL-NEXT: s_wait_expcnt 0x01222; GFX12-GISEL-NEXT: s_wait_samplecnt 0x01223; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x01224; GFX12-GISEL-NEXT: s_wait_kmcnt 0x01225; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] offset:-40961226; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x01227; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]1228 %gep = getelementptr inbounds i8, ptr %p, i64 -40961229 %load = load i8, ptr %gep, align 41230 ret i8 %load1231}1232 1233define i8 @flat_inst_valu_offset_2x_neg_12bit_max(ptr %p) {1234; GFX9-LABEL: flat_inst_valu_offset_2x_neg_12bit_max:1235; GFX9: ; %bb.0:1236; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1237; GFX9-NEXT: v_add_co_u32_e32 v0, vcc, 0xffffe000, v01238; GFX9-NEXT: v_addc_co_u32_e32 v1, vcc, -1, v1, vcc1239; GFX9-NEXT: flat_load_ubyte v0, v[0:1]1240; GFX9-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1241; GFX9-NEXT: s_setpc_b64 s[30:31]1242;1243; GFX10-LABEL: flat_inst_valu_offset_2x_neg_12bit_max:1244; GFX10: ; %bb.0:1245; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1246; GFX10-NEXT: v_add_co_u32 v0, vcc_lo, 0xffffe000, v01247; GFX10-NEXT: v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo1248; GFX10-NEXT: flat_load_ubyte v0, v[0:1]1249; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1250; GFX10-NEXT: s_setpc_b64 s[30:31]1251;1252; GFX11-SDAG-TRUE16-LABEL: flat_inst_valu_offset_2x_neg_12bit_max:1253; GFX11-SDAG-TRUE16: ; %bb.0:1254; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1255; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0xffffe000, v01256; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)1257; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo1258; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1]1259; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1260; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1261;1262; GFX11-SDAG-FAKE16-LABEL: flat_inst_valu_offset_2x_neg_12bit_max:1263; GFX11-SDAG-FAKE16: ; %bb.0:1264; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1265; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0xffffe000, v01266; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)1267; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo1268; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1]1269; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1270; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1271;1272; GFX12-SDAG-TRUE16-LABEL: flat_inst_valu_offset_2x_neg_12bit_max:1273; GFX12-SDAG-TRUE16: ; %bb.0:1274; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x01275; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x01276; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x01277; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x01278; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x01279; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:-81921280; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x01281; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1282;1283; GFX12-SDAG-FAKE16-LABEL: flat_inst_valu_offset_2x_neg_12bit_max:1284; GFX12-SDAG-FAKE16: ; %bb.0:1285; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x01286; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x01287; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x01288; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x01289; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x01290; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:-81921291; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x01292; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1293;1294; GFX11-GISEL-LABEL: flat_inst_valu_offset_2x_neg_12bit_max:1295; GFX11-GISEL: ; %bb.0:1296; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1297; GFX11-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0xffffe000, v01298; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)1299; GFX11-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo1300; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1]1301; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1302; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]1303;1304; GFX12-GISEL-LABEL: flat_inst_valu_offset_2x_neg_12bit_max:1305; GFX12-GISEL: ; %bb.0:1306; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x01307; GFX12-GISEL-NEXT: s_wait_expcnt 0x01308; GFX12-GISEL-NEXT: s_wait_samplecnt 0x01309; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x01310; GFX12-GISEL-NEXT: s_wait_kmcnt 0x01311; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] offset:-81921312; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x01313; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]1314 %gep = getelementptr inbounds i8, ptr %p, i64 -81921315 %load = load i8, ptr %gep, align 41316 ret i8 %load1317}1318 1319define i8 @flat_inst_valu_offset_2x_neg_13bit_max(ptr %p) {1320; GFX9-LABEL: flat_inst_valu_offset_2x_neg_13bit_max:1321; GFX9: ; %bb.0:1322; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1323; GFX9-NEXT: v_add_co_u32_e32 v0, vcc, 0xffffc000, v01324; GFX9-NEXT: v_addc_co_u32_e32 v1, vcc, -1, v1, vcc1325; GFX9-NEXT: flat_load_ubyte v0, v[0:1]1326; GFX9-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1327; GFX9-NEXT: s_setpc_b64 s[30:31]1328;1329; GFX10-LABEL: flat_inst_valu_offset_2x_neg_13bit_max:1330; GFX10: ; %bb.0:1331; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1332; GFX10-NEXT: v_add_co_u32 v0, vcc_lo, 0xffffc000, v01333; GFX10-NEXT: v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo1334; GFX10-NEXT: flat_load_ubyte v0, v[0:1]1335; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1336; GFX10-NEXT: s_setpc_b64 s[30:31]1337;1338; GFX11-SDAG-TRUE16-LABEL: flat_inst_valu_offset_2x_neg_13bit_max:1339; GFX11-SDAG-TRUE16: ; %bb.0:1340; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1341; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0xffffc000, v01342; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)1343; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo1344; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1]1345; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1346; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1347;1348; GFX11-SDAG-FAKE16-LABEL: flat_inst_valu_offset_2x_neg_13bit_max:1349; GFX11-SDAG-FAKE16: ; %bb.0:1350; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1351; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0xffffc000, v01352; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)1353; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo1354; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1]1355; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1356; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1357;1358; GFX12-SDAG-TRUE16-LABEL: flat_inst_valu_offset_2x_neg_13bit_max:1359; GFX12-SDAG-TRUE16: ; %bb.0:1360; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x01361; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x01362; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x01363; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x01364; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x01365; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:-163841366; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x01367; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1368;1369; GFX12-SDAG-FAKE16-LABEL: flat_inst_valu_offset_2x_neg_13bit_max:1370; GFX12-SDAG-FAKE16: ; %bb.0:1371; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x01372; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x01373; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x01374; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x01375; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x01376; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:-163841377; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x01378; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1379;1380; GFX11-GISEL-LABEL: flat_inst_valu_offset_2x_neg_13bit_max:1381; GFX11-GISEL: ; %bb.0:1382; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1383; GFX11-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0xffffc000, v01384; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)1385; GFX11-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo1386; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1]1387; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1388; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]1389;1390; GFX12-GISEL-LABEL: flat_inst_valu_offset_2x_neg_13bit_max:1391; GFX12-GISEL: ; %bb.0:1392; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x01393; GFX12-GISEL-NEXT: s_wait_expcnt 0x01394; GFX12-GISEL-NEXT: s_wait_samplecnt 0x01395; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x01396; GFX12-GISEL-NEXT: s_wait_kmcnt 0x01397; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] offset:-163841398; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x01399; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]1400 %gep = getelementptr inbounds i8, ptr %p, i64 -163841401 %load = load i8, ptr %gep, align 41402 ret i8 %load1403}1404 1405define i8 @flat_inst_valu_offset_2x_neg_24bit_max(ptr %p) {1406; GFX9-LABEL: flat_inst_valu_offset_2x_neg_24bit_max:1407; GFX9: ; %bb.0:1408; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1409; GFX9-NEXT: v_add_co_u32_e32 v0, vcc, 0xff000001, v01410; GFX9-NEXT: v_addc_co_u32_e32 v1, vcc, -1, v1, vcc1411; GFX9-NEXT: flat_load_ubyte v0, v[0:1]1412; GFX9-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1413; GFX9-NEXT: s_setpc_b64 s[30:31]1414;1415; GFX10-LABEL: flat_inst_valu_offset_2x_neg_24bit_max:1416; GFX10: ; %bb.0:1417; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1418; GFX10-NEXT: v_add_co_u32 v0, vcc_lo, 0xff000001, v01419; GFX10-NEXT: v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo1420; GFX10-NEXT: flat_load_ubyte v0, v[0:1]1421; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1422; GFX10-NEXT: s_setpc_b64 s[30:31]1423;1424; GFX11-SDAG-TRUE16-LABEL: flat_inst_valu_offset_2x_neg_24bit_max:1425; GFX11-SDAG-TRUE16: ; %bb.0:1426; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1427; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0xff000001, v01428; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)1429; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo1430; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1]1431; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1432; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1433;1434; GFX11-SDAG-FAKE16-LABEL: flat_inst_valu_offset_2x_neg_24bit_max:1435; GFX11-SDAG-FAKE16: ; %bb.0:1436; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1437; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0xff000001, v01438; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)1439; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo1440; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1]1441; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1442; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1443;1444; GFX12-SDAG-TRUE16-LABEL: flat_inst_valu_offset_2x_neg_24bit_max:1445; GFX12-SDAG-TRUE16: ; %bb.0:1446; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x01447; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x01448; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x01449; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x01450; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x01451; GFX12-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0xff800000, v01452; GFX12-SDAG-TRUE16-NEXT: s_wait_alu depctr_va_vcc(0)1453; GFX12-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo1454; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:-83886071455; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x01456; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1457;1458; GFX12-SDAG-FAKE16-LABEL: flat_inst_valu_offset_2x_neg_24bit_max:1459; GFX12-SDAG-FAKE16: ; %bb.0:1460; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x01461; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x01462; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x01463; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x01464; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x01465; GFX12-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0xff800000, v01466; GFX12-SDAG-FAKE16-NEXT: s_wait_alu depctr_va_vcc(0)1467; GFX12-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo1468; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:-83886071469; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x01470; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1471;1472; GFX11-GISEL-LABEL: flat_inst_valu_offset_2x_neg_24bit_max:1473; GFX11-GISEL: ; %bb.0:1474; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1475; GFX11-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0xff000001, v01476; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)1477; GFX11-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo1478; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1]1479; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1480; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]1481;1482; GFX12-GISEL-LABEL: flat_inst_valu_offset_2x_neg_24bit_max:1483; GFX12-GISEL: ; %bb.0:1484; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x01485; GFX12-GISEL-NEXT: s_wait_expcnt 0x01486; GFX12-GISEL-NEXT: s_wait_samplecnt 0x01487; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x01488; GFX12-GISEL-NEXT: s_wait_kmcnt 0x01489; GFX12-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0xff000001, v01490; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)1491; GFX12-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo1492; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1]1493; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x01494; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]1495 %gep = getelementptr inbounds i8, ptr %p, i64 -167772151496 %load = load i8, ptr %gep, align 41497 ret i8 %load1498}1499 1500; Fill 11-bit low-bits (1ull << 33) | 20471501define i8 @flat_inst_valu_offset_64bit_11bit_split0(ptr %p) {1502; GFX9-SDAG-LABEL: flat_inst_valu_offset_64bit_11bit_split0:1503; GFX9-SDAG: ; %bb.0:1504; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1505; GFX9-SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0, v01506; GFX9-SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, 2, v1, vcc1507; GFX9-SDAG-NEXT: flat_load_ubyte v0, v[0:1] offset:20471508; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1509; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]1510;1511; GFX10-LABEL: flat_inst_valu_offset_64bit_11bit_split0:1512; GFX10: ; %bb.0:1513; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1514; GFX10-NEXT: v_add_co_u32 v0, vcc_lo, 0x7ff, v01515; GFX10-NEXT: v_add_co_ci_u32_e32 v1, vcc_lo, 2, v1, vcc_lo1516; GFX10-NEXT: flat_load_ubyte v0, v[0:1]1517; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1518; GFX10-NEXT: s_setpc_b64 s[30:31]1519;1520; GFX11-SDAG-TRUE16-LABEL: flat_inst_valu_offset_64bit_11bit_split0:1521; GFX11-SDAG-TRUE16: ; %bb.0:1522; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1523; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0, v01524; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)1525; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, v1, vcc_lo1526; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:20471527; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1528; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1529;1530; GFX11-SDAG-FAKE16-LABEL: flat_inst_valu_offset_64bit_11bit_split0:1531; GFX11-SDAG-FAKE16: ; %bb.0:1532; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1533; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0, v01534; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)1535; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, v1, vcc_lo1536; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:20471537; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1538; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1539;1540; GFX12-SDAG-TRUE16-LABEL: flat_inst_valu_offset_64bit_11bit_split0:1541; GFX12-SDAG-TRUE16: ; %bb.0:1542; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x01543; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x01544; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x01545; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x01546; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x01547; GFX12-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0, v01548; GFX12-SDAG-TRUE16-NEXT: s_wait_alu depctr_va_vcc(0)1549; GFX12-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, v1, vcc_lo1550; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:20471551; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x01552; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1553;1554; GFX12-SDAG-FAKE16-LABEL: flat_inst_valu_offset_64bit_11bit_split0:1555; GFX12-SDAG-FAKE16: ; %bb.0:1556; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x01557; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x01558; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x01559; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x01560; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x01561; GFX12-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0, v01562; GFX12-SDAG-FAKE16-NEXT: s_wait_alu depctr_va_vcc(0)1563; GFX12-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, v1, vcc_lo1564; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:20471565; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x01566; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1567;1568; GFX9-GISEL-LABEL: flat_inst_valu_offset_64bit_11bit_split0:1569; GFX9-GISEL: ; %bb.0:1570; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1571; GFX9-GISEL-NEXT: v_add_co_u32_e32 v0, vcc, 0x7ff, v01572; GFX9-GISEL-NEXT: v_addc_co_u32_e32 v1, vcc, 2, v1, vcc1573; GFX9-GISEL-NEXT: flat_load_ubyte v0, v[0:1]1574; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1575; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]1576;1577; GFX11-GISEL-LABEL: flat_inst_valu_offset_64bit_11bit_split0:1578; GFX11-GISEL: ; %bb.0:1579; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1580; GFX11-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0x7ff, v01581; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)1582; GFX11-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, 2, v1, vcc_lo1583; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1]1584; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1585; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]1586;1587; GFX12-GISEL-LABEL: flat_inst_valu_offset_64bit_11bit_split0:1588; GFX12-GISEL: ; %bb.0:1589; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x01590; GFX12-GISEL-NEXT: s_wait_expcnt 0x01591; GFX12-GISEL-NEXT: s_wait_samplecnt 0x01592; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x01593; GFX12-GISEL-NEXT: s_wait_kmcnt 0x01594; GFX12-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0x7ff, v01595; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)1596; GFX12-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, 2, v1, vcc_lo1597; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1]1598; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x01599; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]1600 %gep = getelementptr inbounds i8, ptr %p, i64 85899366391601 %load = load i8, ptr %gep, align 41602 ret i8 %load1603}1604 1605; Fill 11-bit low-bits (1ull << 33) | 20481606define i8 @flat_inst_valu_offset_64bit_11bit_split1(ptr %p) {1607; GFX9-SDAG-LABEL: flat_inst_valu_offset_64bit_11bit_split1:1608; GFX9-SDAG: ; %bb.0:1609; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1610; GFX9-SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0, v01611; GFX9-SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, 2, v1, vcc1612; GFX9-SDAG-NEXT: flat_load_ubyte v0, v[0:1] offset:20481613; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1614; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]1615;1616; GFX10-LABEL: flat_inst_valu_offset_64bit_11bit_split1:1617; GFX10: ; %bb.0:1618; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1619; GFX10-NEXT: v_add_co_u32 v0, vcc_lo, 0x800, v01620; GFX10-NEXT: v_add_co_ci_u32_e32 v1, vcc_lo, 2, v1, vcc_lo1621; GFX10-NEXT: flat_load_ubyte v0, v[0:1]1622; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1623; GFX10-NEXT: s_setpc_b64 s[30:31]1624;1625; GFX11-SDAG-TRUE16-LABEL: flat_inst_valu_offset_64bit_11bit_split1:1626; GFX11-SDAG-TRUE16: ; %bb.0:1627; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1628; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0, v01629; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)1630; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, v1, vcc_lo1631; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:20481632; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1633; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1634;1635; GFX11-SDAG-FAKE16-LABEL: flat_inst_valu_offset_64bit_11bit_split1:1636; GFX11-SDAG-FAKE16: ; %bb.0:1637; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1638; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0, v01639; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)1640; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, v1, vcc_lo1641; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:20481642; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1643; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1644;1645; GFX12-SDAG-TRUE16-LABEL: flat_inst_valu_offset_64bit_11bit_split1:1646; GFX12-SDAG-TRUE16: ; %bb.0:1647; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x01648; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x01649; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x01650; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x01651; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x01652; GFX12-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0, v01653; GFX12-SDAG-TRUE16-NEXT: s_wait_alu depctr_va_vcc(0)1654; GFX12-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, v1, vcc_lo1655; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:20481656; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x01657; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1658;1659; GFX12-SDAG-FAKE16-LABEL: flat_inst_valu_offset_64bit_11bit_split1:1660; GFX12-SDAG-FAKE16: ; %bb.0:1661; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x01662; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x01663; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x01664; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x01665; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x01666; GFX12-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0, v01667; GFX12-SDAG-FAKE16-NEXT: s_wait_alu depctr_va_vcc(0)1668; GFX12-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, v1, vcc_lo1669; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:20481670; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x01671; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1672;1673; GFX9-GISEL-LABEL: flat_inst_valu_offset_64bit_11bit_split1:1674; GFX9-GISEL: ; %bb.0:1675; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1676; GFX9-GISEL-NEXT: v_add_co_u32_e32 v0, vcc, 0x800, v01677; GFX9-GISEL-NEXT: v_addc_co_u32_e32 v1, vcc, 2, v1, vcc1678; GFX9-GISEL-NEXT: flat_load_ubyte v0, v[0:1]1679; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1680; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]1681;1682; GFX11-GISEL-LABEL: flat_inst_valu_offset_64bit_11bit_split1:1683; GFX11-GISEL: ; %bb.0:1684; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1685; GFX11-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0x800, v01686; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)1687; GFX11-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, 2, v1, vcc_lo1688; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1]1689; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1690; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]1691;1692; GFX12-GISEL-LABEL: flat_inst_valu_offset_64bit_11bit_split1:1693; GFX12-GISEL: ; %bb.0:1694; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x01695; GFX12-GISEL-NEXT: s_wait_expcnt 0x01696; GFX12-GISEL-NEXT: s_wait_samplecnt 0x01697; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x01698; GFX12-GISEL-NEXT: s_wait_kmcnt 0x01699; GFX12-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0x800, v01700; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)1701; GFX12-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, 2, v1, vcc_lo1702; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1]1703; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x01704; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]1705 %gep = getelementptr inbounds i8, ptr %p, i64 85899366401706 %load = load i8, ptr %gep, align 41707 ret i8 %load1708}1709 1710; Fill 12-bit low-bits (1ull << 33) | 40951711define i8 @flat_inst_valu_offset_64bit_12bit_split0(ptr %p) {1712; GFX9-SDAG-LABEL: flat_inst_valu_offset_64bit_12bit_split0:1713; GFX9-SDAG: ; %bb.0:1714; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1715; GFX9-SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0, v01716; GFX9-SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, 2, v1, vcc1717; GFX9-SDAG-NEXT: flat_load_ubyte v0, v[0:1] offset:40951718; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1719; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]1720;1721; GFX10-LABEL: flat_inst_valu_offset_64bit_12bit_split0:1722; GFX10: ; %bb.0:1723; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1724; GFX10-NEXT: v_add_co_u32 v0, vcc_lo, 0xfff, v01725; GFX10-NEXT: v_add_co_ci_u32_e32 v1, vcc_lo, 2, v1, vcc_lo1726; GFX10-NEXT: flat_load_ubyte v0, v[0:1]1727; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1728; GFX10-NEXT: s_setpc_b64 s[30:31]1729;1730; GFX11-SDAG-TRUE16-LABEL: flat_inst_valu_offset_64bit_12bit_split0:1731; GFX11-SDAG-TRUE16: ; %bb.0:1732; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1733; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0, v01734; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)1735; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, v1, vcc_lo1736; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:40951737; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1738; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1739;1740; GFX11-SDAG-FAKE16-LABEL: flat_inst_valu_offset_64bit_12bit_split0:1741; GFX11-SDAG-FAKE16: ; %bb.0:1742; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1743; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0, v01744; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)1745; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, v1, vcc_lo1746; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:40951747; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1748; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1749;1750; GFX12-SDAG-TRUE16-LABEL: flat_inst_valu_offset_64bit_12bit_split0:1751; GFX12-SDAG-TRUE16: ; %bb.0:1752; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x01753; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x01754; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x01755; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x01756; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x01757; GFX12-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0, v01758; GFX12-SDAG-TRUE16-NEXT: s_wait_alu depctr_va_vcc(0)1759; GFX12-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, v1, vcc_lo1760; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:40951761; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x01762; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1763;1764; GFX12-SDAG-FAKE16-LABEL: flat_inst_valu_offset_64bit_12bit_split0:1765; GFX12-SDAG-FAKE16: ; %bb.0:1766; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x01767; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x01768; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x01769; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x01770; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x01771; GFX12-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0, v01772; GFX12-SDAG-FAKE16-NEXT: s_wait_alu depctr_va_vcc(0)1773; GFX12-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, v1, vcc_lo1774; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:40951775; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x01776; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1777;1778; GFX9-GISEL-LABEL: flat_inst_valu_offset_64bit_12bit_split0:1779; GFX9-GISEL: ; %bb.0:1780; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1781; GFX9-GISEL-NEXT: v_add_co_u32_e32 v0, vcc, 0xfff, v01782; GFX9-GISEL-NEXT: v_addc_co_u32_e32 v1, vcc, 2, v1, vcc1783; GFX9-GISEL-NEXT: flat_load_ubyte v0, v[0:1]1784; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1785; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]1786;1787; GFX11-GISEL-LABEL: flat_inst_valu_offset_64bit_12bit_split0:1788; GFX11-GISEL: ; %bb.0:1789; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1790; GFX11-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0xfff, v01791; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)1792; GFX11-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, 2, v1, vcc_lo1793; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1]1794; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1795; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]1796;1797; GFX12-GISEL-LABEL: flat_inst_valu_offset_64bit_12bit_split0:1798; GFX12-GISEL: ; %bb.0:1799; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x01800; GFX12-GISEL-NEXT: s_wait_expcnt 0x01801; GFX12-GISEL-NEXT: s_wait_samplecnt 0x01802; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x01803; GFX12-GISEL-NEXT: s_wait_kmcnt 0x01804; GFX12-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0xfff, v01805; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)1806; GFX12-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, 2, v1, vcc_lo1807; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1]1808; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x01809; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]1810 %gep = getelementptr inbounds i8, ptr %p, i64 85899386871811 %load = load i8, ptr %gep, align 41812 ret i8 %load1813}1814 1815; Fill 12-bit low-bits (1ull << 33) | 40961816define i8 @flat_inst_valu_offset_64bit_12bit_split1(ptr %p) {1817; GFX9-LABEL: flat_inst_valu_offset_64bit_12bit_split1:1818; GFX9: ; %bb.0:1819; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1820; GFX9-NEXT: v_add_co_u32_e32 v0, vcc, 0x1000, v01821; GFX9-NEXT: v_addc_co_u32_e32 v1, vcc, 2, v1, vcc1822; GFX9-NEXT: flat_load_ubyte v0, v[0:1]1823; GFX9-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1824; GFX9-NEXT: s_setpc_b64 s[30:31]1825;1826; GFX10-LABEL: flat_inst_valu_offset_64bit_12bit_split1:1827; GFX10: ; %bb.0:1828; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1829; GFX10-NEXT: v_add_co_u32 v0, vcc_lo, 0x1000, v01830; GFX10-NEXT: v_add_co_ci_u32_e32 v1, vcc_lo, 2, v1, vcc_lo1831; GFX10-NEXT: flat_load_ubyte v0, v[0:1]1832; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1833; GFX10-NEXT: s_setpc_b64 s[30:31]1834;1835; GFX11-SDAG-TRUE16-LABEL: flat_inst_valu_offset_64bit_12bit_split1:1836; GFX11-SDAG-TRUE16: ; %bb.0:1837; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1838; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x1000, v01839; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)1840; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, v1, vcc_lo1841; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1]1842; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1843; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1844;1845; GFX11-SDAG-FAKE16-LABEL: flat_inst_valu_offset_64bit_12bit_split1:1846; GFX11-SDAG-FAKE16: ; %bb.0:1847; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1848; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x1000, v01849; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)1850; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, v1, vcc_lo1851; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1]1852; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1853; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1854;1855; GFX12-SDAG-TRUE16-LABEL: flat_inst_valu_offset_64bit_12bit_split1:1856; GFX12-SDAG-TRUE16: ; %bb.0:1857; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x01858; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x01859; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x01860; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x01861; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x01862; GFX12-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0, v01863; GFX12-SDAG-TRUE16-NEXT: s_wait_alu depctr_va_vcc(0)1864; GFX12-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, v1, vcc_lo1865; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:40961866; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x01867; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1868;1869; GFX12-SDAG-FAKE16-LABEL: flat_inst_valu_offset_64bit_12bit_split1:1870; GFX12-SDAG-FAKE16: ; %bb.0:1871; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x01872; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x01873; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x01874; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x01875; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x01876; GFX12-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0, v01877; GFX12-SDAG-FAKE16-NEXT: s_wait_alu depctr_va_vcc(0)1878; GFX12-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, v1, vcc_lo1879; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:40961880; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x01881; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1882;1883; GFX11-GISEL-LABEL: flat_inst_valu_offset_64bit_12bit_split1:1884; GFX11-GISEL: ; %bb.0:1885; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1886; GFX11-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0x1000, v01887; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)1888; GFX11-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, 2, v1, vcc_lo1889; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1]1890; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1891; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]1892;1893; GFX12-GISEL-LABEL: flat_inst_valu_offset_64bit_12bit_split1:1894; GFX12-GISEL: ; %bb.0:1895; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x01896; GFX12-GISEL-NEXT: s_wait_expcnt 0x01897; GFX12-GISEL-NEXT: s_wait_samplecnt 0x01898; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x01899; GFX12-GISEL-NEXT: s_wait_kmcnt 0x01900; GFX12-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0x1000, v01901; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)1902; GFX12-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, 2, v1, vcc_lo1903; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1]1904; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x01905; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]1906 %gep = getelementptr inbounds i8, ptr %p, i64 85899386881907 %load = load i8, ptr %gep, align 41908 ret i8 %load1909}1910 1911; Fill 13-bit low-bits (1ull << 33) | 81911912define i8 @flat_inst_valu_offset_64bit_13bit_split0(ptr %p) {1913; GFX9-SDAG-LABEL: flat_inst_valu_offset_64bit_13bit_split0:1914; GFX9-SDAG: ; %bb.0:1915; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1916; GFX9-SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0x1000, v01917; GFX9-SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, 2, v1, vcc1918; GFX9-SDAG-NEXT: flat_load_ubyte v0, v[0:1] offset:40951919; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1920; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]1921;1922; GFX10-LABEL: flat_inst_valu_offset_64bit_13bit_split0:1923; GFX10: ; %bb.0:1924; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1925; GFX10-NEXT: v_add_co_u32 v0, vcc_lo, 0x1fff, v01926; GFX10-NEXT: v_add_co_ci_u32_e32 v1, vcc_lo, 2, v1, vcc_lo1927; GFX10-NEXT: flat_load_ubyte v0, v[0:1]1928; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1929; GFX10-NEXT: s_setpc_b64 s[30:31]1930;1931; GFX11-SDAG-TRUE16-LABEL: flat_inst_valu_offset_64bit_13bit_split0:1932; GFX11-SDAG-TRUE16: ; %bb.0:1933; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1934; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x1000, v01935; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)1936; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, v1, vcc_lo1937; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:40951938; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1939; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1940;1941; GFX11-SDAG-FAKE16-LABEL: flat_inst_valu_offset_64bit_13bit_split0:1942; GFX11-SDAG-FAKE16: ; %bb.0:1943; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1944; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x1000, v01945; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)1946; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, v1, vcc_lo1947; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:40951948; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1949; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1950;1951; GFX12-SDAG-TRUE16-LABEL: flat_inst_valu_offset_64bit_13bit_split0:1952; GFX12-SDAG-TRUE16: ; %bb.0:1953; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x01954; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x01955; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x01956; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x01957; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x01958; GFX12-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0, v01959; GFX12-SDAG-TRUE16-NEXT: s_wait_alu depctr_va_vcc(0)1960; GFX12-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, v1, vcc_lo1961; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:81911962; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x01963; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]1964;1965; GFX12-SDAG-FAKE16-LABEL: flat_inst_valu_offset_64bit_13bit_split0:1966; GFX12-SDAG-FAKE16: ; %bb.0:1967; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x01968; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x01969; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x01970; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x01971; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x01972; GFX12-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0, v01973; GFX12-SDAG-FAKE16-NEXT: s_wait_alu depctr_va_vcc(0)1974; GFX12-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, v1, vcc_lo1975; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:81911976; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x01977; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]1978;1979; GFX9-GISEL-LABEL: flat_inst_valu_offset_64bit_13bit_split0:1980; GFX9-GISEL: ; %bb.0:1981; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1982; GFX9-GISEL-NEXT: v_add_co_u32_e32 v0, vcc, 0x1fff, v01983; GFX9-GISEL-NEXT: v_addc_co_u32_e32 v1, vcc, 2, v1, vcc1984; GFX9-GISEL-NEXT: flat_load_ubyte v0, v[0:1]1985; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1986; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]1987;1988; GFX11-GISEL-LABEL: flat_inst_valu_offset_64bit_13bit_split0:1989; GFX11-GISEL: ; %bb.0:1990; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1991; GFX11-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0x1fff, v01992; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)1993; GFX11-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, 2, v1, vcc_lo1994; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1]1995; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)1996; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]1997;1998; GFX12-GISEL-LABEL: flat_inst_valu_offset_64bit_13bit_split0:1999; GFX12-GISEL: ; %bb.0:2000; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x02001; GFX12-GISEL-NEXT: s_wait_expcnt 0x02002; GFX12-GISEL-NEXT: s_wait_samplecnt 0x02003; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x02004; GFX12-GISEL-NEXT: s_wait_kmcnt 0x02005; GFX12-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0x1fff, v02006; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)2007; GFX12-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, 2, v1, vcc_lo2008; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1]2009; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x02010; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]2011 %gep = getelementptr inbounds i8, ptr %p, i64 85899427832012 %load = load i8, ptr %gep, align 42013 ret i8 %load2014}2015 2016; Fill 13-bit low-bits (1ull << 33) | 81922017define i8 @flat_inst_valu_offset_64bit_13bit_split1(ptr %p) {2018; GFX9-LABEL: flat_inst_valu_offset_64bit_13bit_split1:2019; GFX9: ; %bb.0:2020; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2021; GFX9-NEXT: v_add_co_u32_e32 v0, vcc, 0x2000, v02022; GFX9-NEXT: v_addc_co_u32_e32 v1, vcc, 2, v1, vcc2023; GFX9-NEXT: flat_load_ubyte v0, v[0:1]2024; GFX9-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2025; GFX9-NEXT: s_setpc_b64 s[30:31]2026;2027; GFX10-LABEL: flat_inst_valu_offset_64bit_13bit_split1:2028; GFX10: ; %bb.0:2029; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2030; GFX10-NEXT: v_add_co_u32 v0, vcc_lo, 0x2000, v02031; GFX10-NEXT: v_add_co_ci_u32_e32 v1, vcc_lo, 2, v1, vcc_lo2032; GFX10-NEXT: flat_load_ubyte v0, v[0:1]2033; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2034; GFX10-NEXT: s_setpc_b64 s[30:31]2035;2036; GFX11-SDAG-TRUE16-LABEL: flat_inst_valu_offset_64bit_13bit_split1:2037; GFX11-SDAG-TRUE16: ; %bb.0:2038; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2039; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x2000, v02040; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)2041; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, v1, vcc_lo2042; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1]2043; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2044; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]2045;2046; GFX11-SDAG-FAKE16-LABEL: flat_inst_valu_offset_64bit_13bit_split1:2047; GFX11-SDAG-FAKE16: ; %bb.0:2048; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2049; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x2000, v02050; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)2051; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, v1, vcc_lo2052; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1]2053; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2054; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]2055;2056; GFX12-SDAG-TRUE16-LABEL: flat_inst_valu_offset_64bit_13bit_split1:2057; GFX12-SDAG-TRUE16: ; %bb.0:2058; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x02059; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x02060; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x02061; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x02062; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x02063; GFX12-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0, v02064; GFX12-SDAG-TRUE16-NEXT: s_wait_alu depctr_va_vcc(0)2065; GFX12-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, v1, vcc_lo2066; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:81922067; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x02068; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]2069;2070; GFX12-SDAG-FAKE16-LABEL: flat_inst_valu_offset_64bit_13bit_split1:2071; GFX12-SDAG-FAKE16: ; %bb.0:2072; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x02073; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x02074; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x02075; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x02076; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x02077; GFX12-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0, v02078; GFX12-SDAG-FAKE16-NEXT: s_wait_alu depctr_va_vcc(0)2079; GFX12-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, v1, vcc_lo2080; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:81922081; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x02082; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]2083;2084; GFX11-GISEL-LABEL: flat_inst_valu_offset_64bit_13bit_split1:2085; GFX11-GISEL: ; %bb.0:2086; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2087; GFX11-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0x2000, v02088; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)2089; GFX11-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, 2, v1, vcc_lo2090; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1]2091; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2092; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]2093;2094; GFX12-GISEL-LABEL: flat_inst_valu_offset_64bit_13bit_split1:2095; GFX12-GISEL: ; %bb.0:2096; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x02097; GFX12-GISEL-NEXT: s_wait_expcnt 0x02098; GFX12-GISEL-NEXT: s_wait_samplecnt 0x02099; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x02100; GFX12-GISEL-NEXT: s_wait_kmcnt 0x02101; GFX12-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0x2000, v02102; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)2103; GFX12-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, 2, v1, vcc_lo2104; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1]2105; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x02106; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]2107 %gep = getelementptr inbounds i8, ptr %p, i64 85899427842108 %load = load i8, ptr %gep, align 42109 ret i8 %load2110}2111 2112; Fill 11-bit low-bits, negative high bits (1ull << 63) | 20472113define i8 @flat_inst_valu_offset_64bit_11bit_neg_high_split0(ptr %p) {2114; GFX9-SDAG-LABEL: flat_inst_valu_offset_64bit_11bit_neg_high_split0:2115; GFX9-SDAG: ; %bb.0:2116; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2117; GFX9-SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0x7ff, v02118; GFX9-SDAG-NEXT: v_bfrev_b32_e32 v2, 12119; GFX9-SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, v2, v1, vcc2120; GFX9-SDAG-NEXT: flat_load_ubyte v0, v[0:1]2121; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2122; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]2123;2124; GFX10-LABEL: flat_inst_valu_offset_64bit_11bit_neg_high_split0:2125; GFX10: ; %bb.0:2126; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2127; GFX10-NEXT: v_add_co_u32 v0, vcc_lo, 0x7ff, v02128; GFX10-NEXT: v_add_co_ci_u32_e32 v1, vcc_lo, 0x80000000, v1, vcc_lo2129; GFX10-NEXT: flat_load_ubyte v0, v[0:1]2130; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2131; GFX10-NEXT: s_setpc_b64 s[30:31]2132;2133; GFX11-SDAG-TRUE16-LABEL: flat_inst_valu_offset_64bit_11bit_neg_high_split0:2134; GFX11-SDAG-TRUE16: ; %bb.0:2135; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2136; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x7ff, v02137; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)2138; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo2139; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1]2140; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2141; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]2142;2143; GFX11-SDAG-FAKE16-LABEL: flat_inst_valu_offset_64bit_11bit_neg_high_split0:2144; GFX11-SDAG-FAKE16: ; %bb.0:2145; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2146; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x7ff, v02147; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)2148; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo2149; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1]2150; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2151; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]2152;2153; GFX12-SDAG-TRUE16-LABEL: flat_inst_valu_offset_64bit_11bit_neg_high_split0:2154; GFX12-SDAG-TRUE16: ; %bb.0:2155; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x02156; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x02157; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x02158; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x02159; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x02160; GFX12-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x800000, v02161; GFX12-SDAG-TRUE16-NEXT: s_wait_alu depctr_va_vcc(0)2162; GFX12-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo2163; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:-83865612164; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x02165; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]2166;2167; GFX12-SDAG-FAKE16-LABEL: flat_inst_valu_offset_64bit_11bit_neg_high_split0:2168; GFX12-SDAG-FAKE16: ; %bb.0:2169; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x02170; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x02171; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x02172; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x02173; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x02174; GFX12-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x800000, v02175; GFX12-SDAG-FAKE16-NEXT: s_wait_alu depctr_va_vcc(0)2176; GFX12-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo2177; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:-83865612178; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x02179; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]2180;2181; GFX9-GISEL-LABEL: flat_inst_valu_offset_64bit_11bit_neg_high_split0:2182; GFX9-GISEL: ; %bb.0:2183; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2184; GFX9-GISEL-NEXT: v_bfrev_b32_e32 v2, 12185; GFX9-GISEL-NEXT: v_add_co_u32_e32 v0, vcc, 0x7ff, v02186; GFX9-GISEL-NEXT: v_addc_co_u32_e32 v1, vcc, v1, v2, vcc2187; GFX9-GISEL-NEXT: flat_load_ubyte v0, v[0:1]2188; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2189; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]2190;2191; GFX11-GISEL-LABEL: flat_inst_valu_offset_64bit_11bit_neg_high_split0:2192; GFX11-GISEL: ; %bb.0:2193; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2194; GFX11-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0x7ff, v02195; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)2196; GFX11-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo2197; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1]2198; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2199; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]2200;2201; GFX12-GISEL-LABEL: flat_inst_valu_offset_64bit_11bit_neg_high_split0:2202; GFX12-GISEL: ; %bb.0:2203; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x02204; GFX12-GISEL-NEXT: s_wait_expcnt 0x02205; GFX12-GISEL-NEXT: s_wait_samplecnt 0x02206; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x02207; GFX12-GISEL-NEXT: s_wait_kmcnt 0x02208; GFX12-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0x7ff, v02209; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)2210; GFX12-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo2211; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1]2212; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x02213; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]2214 %gep = getelementptr inbounds i8, ptr %p, i64 -92233720368547737612215 %load = load i8, ptr %gep, align 42216 ret i8 %load2217}2218 2219; Fill 11-bit low-bits, negative high bits (1ull << 63) | 20482220define i8 @flat_inst_valu_offset_64bit_11bit_neg_high_split1(ptr %p) {2221; GFX9-SDAG-LABEL: flat_inst_valu_offset_64bit_11bit_neg_high_split1:2222; GFX9-SDAG: ; %bb.0:2223; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2224; GFX9-SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0x800, v02225; GFX9-SDAG-NEXT: v_bfrev_b32_e32 v2, 12226; GFX9-SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, v2, v1, vcc2227; GFX9-SDAG-NEXT: flat_load_ubyte v0, v[0:1]2228; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2229; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]2230;2231; GFX10-LABEL: flat_inst_valu_offset_64bit_11bit_neg_high_split1:2232; GFX10: ; %bb.0:2233; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2234; GFX10-NEXT: v_add_co_u32 v0, vcc_lo, 0x800, v02235; GFX10-NEXT: v_add_co_ci_u32_e32 v1, vcc_lo, 0x80000000, v1, vcc_lo2236; GFX10-NEXT: flat_load_ubyte v0, v[0:1]2237; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2238; GFX10-NEXT: s_setpc_b64 s[30:31]2239;2240; GFX11-SDAG-TRUE16-LABEL: flat_inst_valu_offset_64bit_11bit_neg_high_split1:2241; GFX11-SDAG-TRUE16: ; %bb.0:2242; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2243; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x800, v02244; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)2245; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo2246; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1]2247; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2248; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]2249;2250; GFX11-SDAG-FAKE16-LABEL: flat_inst_valu_offset_64bit_11bit_neg_high_split1:2251; GFX11-SDAG-FAKE16: ; %bb.0:2252; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2253; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x800, v02254; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)2255; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo2256; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1]2257; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2258; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]2259;2260; GFX12-SDAG-TRUE16-LABEL: flat_inst_valu_offset_64bit_11bit_neg_high_split1:2261; GFX12-SDAG-TRUE16: ; %bb.0:2262; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x02263; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x02264; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x02265; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x02266; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x02267; GFX12-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x800000, v02268; GFX12-SDAG-TRUE16-NEXT: s_wait_alu depctr_va_vcc(0)2269; GFX12-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo2270; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:-83865602271; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x02272; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]2273;2274; GFX12-SDAG-FAKE16-LABEL: flat_inst_valu_offset_64bit_11bit_neg_high_split1:2275; GFX12-SDAG-FAKE16: ; %bb.0:2276; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x02277; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x02278; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x02279; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x02280; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x02281; GFX12-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x800000, v02282; GFX12-SDAG-FAKE16-NEXT: s_wait_alu depctr_va_vcc(0)2283; GFX12-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo2284; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:-83865602285; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x02286; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]2287;2288; GFX9-GISEL-LABEL: flat_inst_valu_offset_64bit_11bit_neg_high_split1:2289; GFX9-GISEL: ; %bb.0:2290; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2291; GFX9-GISEL-NEXT: v_bfrev_b32_e32 v2, 12292; GFX9-GISEL-NEXT: v_add_co_u32_e32 v0, vcc, 0x800, v02293; GFX9-GISEL-NEXT: v_addc_co_u32_e32 v1, vcc, v1, v2, vcc2294; GFX9-GISEL-NEXT: flat_load_ubyte v0, v[0:1]2295; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2296; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]2297;2298; GFX11-GISEL-LABEL: flat_inst_valu_offset_64bit_11bit_neg_high_split1:2299; GFX11-GISEL: ; %bb.0:2300; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2301; GFX11-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0x800, v02302; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)2303; GFX11-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo2304; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1]2305; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2306; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]2307;2308; GFX12-GISEL-LABEL: flat_inst_valu_offset_64bit_11bit_neg_high_split1:2309; GFX12-GISEL: ; %bb.0:2310; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x02311; GFX12-GISEL-NEXT: s_wait_expcnt 0x02312; GFX12-GISEL-NEXT: s_wait_samplecnt 0x02313; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x02314; GFX12-GISEL-NEXT: s_wait_kmcnt 0x02315; GFX12-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0x800, v02316; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)2317; GFX12-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo2318; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1]2319; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x02320; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]2321 %gep = getelementptr inbounds i8, ptr %p, i64 -92233720368547737602322 %load = load i8, ptr %gep, align 42323 ret i8 %load2324}2325 2326; Fill 12-bit low-bits, negative high bits (1ull << 63) | 40952327define i8 @flat_inst_valu_offset_64bit_12bit_neg_high_split0(ptr %p) {2328; GFX9-SDAG-LABEL: flat_inst_valu_offset_64bit_12bit_neg_high_split0:2329; GFX9-SDAG: ; %bb.0:2330; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2331; GFX9-SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0xfff, v02332; GFX9-SDAG-NEXT: v_bfrev_b32_e32 v2, 12333; GFX9-SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, v2, v1, vcc2334; GFX9-SDAG-NEXT: flat_load_ubyte v0, v[0:1]2335; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2336; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]2337;2338; GFX10-LABEL: flat_inst_valu_offset_64bit_12bit_neg_high_split0:2339; GFX10: ; %bb.0:2340; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2341; GFX10-NEXT: v_add_co_u32 v0, vcc_lo, 0xfff, v02342; GFX10-NEXT: v_add_co_ci_u32_e32 v1, vcc_lo, 0x80000000, v1, vcc_lo2343; GFX10-NEXT: flat_load_ubyte v0, v[0:1]2344; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2345; GFX10-NEXT: s_setpc_b64 s[30:31]2346;2347; GFX11-SDAG-TRUE16-LABEL: flat_inst_valu_offset_64bit_12bit_neg_high_split0:2348; GFX11-SDAG-TRUE16: ; %bb.0:2349; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2350; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0xfff, v02351; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)2352; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo2353; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1]2354; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2355; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]2356;2357; GFX11-SDAG-FAKE16-LABEL: flat_inst_valu_offset_64bit_12bit_neg_high_split0:2358; GFX11-SDAG-FAKE16: ; %bb.0:2359; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2360; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0xfff, v02361; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)2362; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo2363; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1]2364; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2365; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]2366;2367; GFX12-SDAG-TRUE16-LABEL: flat_inst_valu_offset_64bit_12bit_neg_high_split0:2368; GFX12-SDAG-TRUE16: ; %bb.0:2369; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x02370; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x02371; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x02372; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x02373; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x02374; GFX12-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x800000, v02375; GFX12-SDAG-TRUE16-NEXT: s_wait_alu depctr_va_vcc(0)2376; GFX12-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo2377; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:-83845132378; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x02379; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]2380;2381; GFX12-SDAG-FAKE16-LABEL: flat_inst_valu_offset_64bit_12bit_neg_high_split0:2382; GFX12-SDAG-FAKE16: ; %bb.0:2383; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x02384; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x02385; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x02386; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x02387; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x02388; GFX12-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x800000, v02389; GFX12-SDAG-FAKE16-NEXT: s_wait_alu depctr_va_vcc(0)2390; GFX12-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo2391; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:-83845132392; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x02393; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]2394;2395; GFX9-GISEL-LABEL: flat_inst_valu_offset_64bit_12bit_neg_high_split0:2396; GFX9-GISEL: ; %bb.0:2397; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2398; GFX9-GISEL-NEXT: v_bfrev_b32_e32 v2, 12399; GFX9-GISEL-NEXT: v_add_co_u32_e32 v0, vcc, 0xfff, v02400; GFX9-GISEL-NEXT: v_addc_co_u32_e32 v1, vcc, v1, v2, vcc2401; GFX9-GISEL-NEXT: flat_load_ubyte v0, v[0:1]2402; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2403; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]2404;2405; GFX11-GISEL-LABEL: flat_inst_valu_offset_64bit_12bit_neg_high_split0:2406; GFX11-GISEL: ; %bb.0:2407; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2408; GFX11-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0xfff, v02409; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)2410; GFX11-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo2411; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1]2412; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2413; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]2414;2415; GFX12-GISEL-LABEL: flat_inst_valu_offset_64bit_12bit_neg_high_split0:2416; GFX12-GISEL: ; %bb.0:2417; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x02418; GFX12-GISEL-NEXT: s_wait_expcnt 0x02419; GFX12-GISEL-NEXT: s_wait_samplecnt 0x02420; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x02421; GFX12-GISEL-NEXT: s_wait_kmcnt 0x02422; GFX12-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0xfff, v02423; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)2424; GFX12-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo2425; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1]2426; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x02427; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]2428 %gep = getelementptr inbounds i8, ptr %p, i64 -92233720368547717132429 %load = load i8, ptr %gep, align 42430 ret i8 %load2431}2432 2433; Fill 12-bit low-bits, negative high bits (1ull << 63) | 40962434define i8 @flat_inst_valu_offset_64bit_12bit_neg_high_split1(ptr %p) {2435; GFX9-SDAG-LABEL: flat_inst_valu_offset_64bit_12bit_neg_high_split1:2436; GFX9-SDAG: ; %bb.0:2437; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2438; GFX9-SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0x1000, v02439; GFX9-SDAG-NEXT: v_bfrev_b32_e32 v2, 12440; GFX9-SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, v2, v1, vcc2441; GFX9-SDAG-NEXT: flat_load_ubyte v0, v[0:1]2442; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2443; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]2444;2445; GFX10-LABEL: flat_inst_valu_offset_64bit_12bit_neg_high_split1:2446; GFX10: ; %bb.0:2447; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2448; GFX10-NEXT: v_add_co_u32 v0, vcc_lo, 0x1000, v02449; GFX10-NEXT: v_add_co_ci_u32_e32 v1, vcc_lo, 0x80000000, v1, vcc_lo2450; GFX10-NEXT: flat_load_ubyte v0, v[0:1]2451; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2452; GFX10-NEXT: s_setpc_b64 s[30:31]2453;2454; GFX11-SDAG-TRUE16-LABEL: flat_inst_valu_offset_64bit_12bit_neg_high_split1:2455; GFX11-SDAG-TRUE16: ; %bb.0:2456; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2457; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x1000, v02458; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)2459; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo2460; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1]2461; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2462; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]2463;2464; GFX11-SDAG-FAKE16-LABEL: flat_inst_valu_offset_64bit_12bit_neg_high_split1:2465; GFX11-SDAG-FAKE16: ; %bb.0:2466; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2467; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x1000, v02468; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)2469; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo2470; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1]2471; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2472; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]2473;2474; GFX12-SDAG-TRUE16-LABEL: flat_inst_valu_offset_64bit_12bit_neg_high_split1:2475; GFX12-SDAG-TRUE16: ; %bb.0:2476; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x02477; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x02478; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x02479; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x02480; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x02481; GFX12-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x800000, v02482; GFX12-SDAG-TRUE16-NEXT: s_wait_alu depctr_va_vcc(0)2483; GFX12-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo2484; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:-83845122485; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x02486; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]2487;2488; GFX12-SDAG-FAKE16-LABEL: flat_inst_valu_offset_64bit_12bit_neg_high_split1:2489; GFX12-SDAG-FAKE16: ; %bb.0:2490; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x02491; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x02492; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x02493; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x02494; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x02495; GFX12-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x800000, v02496; GFX12-SDAG-FAKE16-NEXT: s_wait_alu depctr_va_vcc(0)2497; GFX12-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo2498; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:-83845122499; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x02500; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]2501;2502; GFX9-GISEL-LABEL: flat_inst_valu_offset_64bit_12bit_neg_high_split1:2503; GFX9-GISEL: ; %bb.0:2504; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2505; GFX9-GISEL-NEXT: v_bfrev_b32_e32 v2, 12506; GFX9-GISEL-NEXT: v_add_co_u32_e32 v0, vcc, 0x1000, v02507; GFX9-GISEL-NEXT: v_addc_co_u32_e32 v1, vcc, v1, v2, vcc2508; GFX9-GISEL-NEXT: flat_load_ubyte v0, v[0:1]2509; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2510; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]2511;2512; GFX11-GISEL-LABEL: flat_inst_valu_offset_64bit_12bit_neg_high_split1:2513; GFX11-GISEL: ; %bb.0:2514; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2515; GFX11-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0x1000, v02516; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)2517; GFX11-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo2518; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1]2519; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2520; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]2521;2522; GFX12-GISEL-LABEL: flat_inst_valu_offset_64bit_12bit_neg_high_split1:2523; GFX12-GISEL: ; %bb.0:2524; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x02525; GFX12-GISEL-NEXT: s_wait_expcnt 0x02526; GFX12-GISEL-NEXT: s_wait_samplecnt 0x02527; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x02528; GFX12-GISEL-NEXT: s_wait_kmcnt 0x02529; GFX12-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0x1000, v02530; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)2531; GFX12-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo2532; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1]2533; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x02534; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]2535 %gep = getelementptr inbounds i8, ptr %p, i64 -92233720368547717122536 %load = load i8, ptr %gep, align 42537 ret i8 %load2538}2539 2540; Fill 13-bit low-bits, negative high bits (1ull << 63) | 81912541define i8 @flat_inst_valu_offset_64bit_13bit_neg_high_split0(ptr %p) {2542; GFX9-SDAG-LABEL: flat_inst_valu_offset_64bit_13bit_neg_high_split0:2543; GFX9-SDAG: ; %bb.0:2544; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2545; GFX9-SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0x1fff, v02546; GFX9-SDAG-NEXT: v_bfrev_b32_e32 v2, 12547; GFX9-SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, v2, v1, vcc2548; GFX9-SDAG-NEXT: flat_load_ubyte v0, v[0:1]2549; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2550; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]2551;2552; GFX10-LABEL: flat_inst_valu_offset_64bit_13bit_neg_high_split0:2553; GFX10: ; %bb.0:2554; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2555; GFX10-NEXT: v_add_co_u32 v0, vcc_lo, 0x1fff, v02556; GFX10-NEXT: v_add_co_ci_u32_e32 v1, vcc_lo, 0x80000000, v1, vcc_lo2557; GFX10-NEXT: flat_load_ubyte v0, v[0:1]2558; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2559; GFX10-NEXT: s_setpc_b64 s[30:31]2560;2561; GFX11-SDAG-TRUE16-LABEL: flat_inst_valu_offset_64bit_13bit_neg_high_split0:2562; GFX11-SDAG-TRUE16: ; %bb.0:2563; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2564; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x1fff, v02565; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)2566; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo2567; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1]2568; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2569; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]2570;2571; GFX11-SDAG-FAKE16-LABEL: flat_inst_valu_offset_64bit_13bit_neg_high_split0:2572; GFX11-SDAG-FAKE16: ; %bb.0:2573; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2574; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x1fff, v02575; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)2576; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo2577; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1]2578; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2579; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]2580;2581; GFX12-SDAG-TRUE16-LABEL: flat_inst_valu_offset_64bit_13bit_neg_high_split0:2582; GFX12-SDAG-TRUE16: ; %bb.0:2583; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x02584; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x02585; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x02586; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x02587; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x02588; GFX12-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x800000, v02589; GFX12-SDAG-TRUE16-NEXT: s_wait_alu depctr_va_vcc(0)2590; GFX12-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo2591; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:-83804172592; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x02593; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]2594;2595; GFX12-SDAG-FAKE16-LABEL: flat_inst_valu_offset_64bit_13bit_neg_high_split0:2596; GFX12-SDAG-FAKE16: ; %bb.0:2597; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x02598; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x02599; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x02600; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x02601; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x02602; GFX12-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x800000, v02603; GFX12-SDAG-FAKE16-NEXT: s_wait_alu depctr_va_vcc(0)2604; GFX12-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo2605; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:-83804172606; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x02607; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]2608;2609; GFX9-GISEL-LABEL: flat_inst_valu_offset_64bit_13bit_neg_high_split0:2610; GFX9-GISEL: ; %bb.0:2611; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2612; GFX9-GISEL-NEXT: v_bfrev_b32_e32 v2, 12613; GFX9-GISEL-NEXT: v_add_co_u32_e32 v0, vcc, 0x1fff, v02614; GFX9-GISEL-NEXT: v_addc_co_u32_e32 v1, vcc, v1, v2, vcc2615; GFX9-GISEL-NEXT: flat_load_ubyte v0, v[0:1]2616; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2617; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]2618;2619; GFX11-GISEL-LABEL: flat_inst_valu_offset_64bit_13bit_neg_high_split0:2620; GFX11-GISEL: ; %bb.0:2621; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2622; GFX11-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0x1fff, v02623; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)2624; GFX11-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo2625; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1]2626; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2627; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]2628;2629; GFX12-GISEL-LABEL: flat_inst_valu_offset_64bit_13bit_neg_high_split0:2630; GFX12-GISEL: ; %bb.0:2631; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x02632; GFX12-GISEL-NEXT: s_wait_expcnt 0x02633; GFX12-GISEL-NEXT: s_wait_samplecnt 0x02634; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x02635; GFX12-GISEL-NEXT: s_wait_kmcnt 0x02636; GFX12-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0x1fff, v02637; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)2638; GFX12-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo2639; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1]2640; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x02641; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]2642 %gep = getelementptr inbounds i8, ptr %p, i64 -92233720368547676172643 %load = load i8, ptr %gep, align 42644 ret i8 %load2645}2646 2647; Fill 13-bit low-bits, negative high bits (1ull << 63) | 81922648define i8 @flat_inst_valu_offset_64bit_13bit_neg_high_split1(ptr %p) {2649; GFX9-SDAG-LABEL: flat_inst_valu_offset_64bit_13bit_neg_high_split1:2650; GFX9-SDAG: ; %bb.0:2651; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2652; GFX9-SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0x2000, v02653; GFX9-SDAG-NEXT: v_bfrev_b32_e32 v2, 12654; GFX9-SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, v2, v1, vcc2655; GFX9-SDAG-NEXT: flat_load_ubyte v0, v[0:1]2656; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2657; GFX9-SDAG-NEXT: s_setpc_b64 s[30:31]2658;2659; GFX10-LABEL: flat_inst_valu_offset_64bit_13bit_neg_high_split1:2660; GFX10: ; %bb.0:2661; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2662; GFX10-NEXT: v_add_co_u32 v0, vcc_lo, 0x2000, v02663; GFX10-NEXT: v_add_co_ci_u32_e32 v1, vcc_lo, 0x80000000, v1, vcc_lo2664; GFX10-NEXT: flat_load_ubyte v0, v[0:1]2665; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2666; GFX10-NEXT: s_setpc_b64 s[30:31]2667;2668; GFX11-SDAG-TRUE16-LABEL: flat_inst_valu_offset_64bit_13bit_neg_high_split1:2669; GFX11-SDAG-TRUE16: ; %bb.0:2670; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2671; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x2000, v02672; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)2673; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo2674; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1]2675; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2676; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]2677;2678; GFX11-SDAG-FAKE16-LABEL: flat_inst_valu_offset_64bit_13bit_neg_high_split1:2679; GFX11-SDAG-FAKE16: ; %bb.0:2680; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2681; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x2000, v02682; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)2683; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo2684; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1]2685; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2686; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]2687;2688; GFX12-SDAG-TRUE16-LABEL: flat_inst_valu_offset_64bit_13bit_neg_high_split1:2689; GFX12-SDAG-TRUE16: ; %bb.0:2690; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x02691; GFX12-SDAG-TRUE16-NEXT: s_wait_expcnt 0x02692; GFX12-SDAG-TRUE16-NEXT: s_wait_samplecnt 0x02693; GFX12-SDAG-TRUE16-NEXT: s_wait_bvhcnt 0x02694; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x02695; GFX12-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x800000, v02696; GFX12-SDAG-TRUE16-NEXT: s_wait_alu depctr_va_vcc(0)2697; GFX12-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo2698; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:-83804162699; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x02700; GFX12-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]2701;2702; GFX12-SDAG-FAKE16-LABEL: flat_inst_valu_offset_64bit_13bit_neg_high_split1:2703; GFX12-SDAG-FAKE16: ; %bb.0:2704; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x02705; GFX12-SDAG-FAKE16-NEXT: s_wait_expcnt 0x02706; GFX12-SDAG-FAKE16-NEXT: s_wait_samplecnt 0x02707; GFX12-SDAG-FAKE16-NEXT: s_wait_bvhcnt 0x02708; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x02709; GFX12-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x800000, v02710; GFX12-SDAG-FAKE16-NEXT: s_wait_alu depctr_va_vcc(0)2711; GFX12-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo2712; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:-83804162713; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x02714; GFX12-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]2715;2716; GFX9-GISEL-LABEL: flat_inst_valu_offset_64bit_13bit_neg_high_split1:2717; GFX9-GISEL: ; %bb.0:2718; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2719; GFX9-GISEL-NEXT: v_bfrev_b32_e32 v2, 12720; GFX9-GISEL-NEXT: v_add_co_u32_e32 v0, vcc, 0x2000, v02721; GFX9-GISEL-NEXT: v_addc_co_u32_e32 v1, vcc, v1, v2, vcc2722; GFX9-GISEL-NEXT: flat_load_ubyte v0, v[0:1]2723; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2724; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]2725;2726; GFX11-GISEL-LABEL: flat_inst_valu_offset_64bit_13bit_neg_high_split1:2727; GFX11-GISEL: ; %bb.0:2728; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2729; GFX11-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0x2000, v02730; GFX11-GISEL-NEXT: s_delay_alu instid0(VALU_DEP_1)2731; GFX11-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo2732; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1]2733; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2734; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]2735;2736; GFX12-GISEL-LABEL: flat_inst_valu_offset_64bit_13bit_neg_high_split1:2737; GFX12-GISEL: ; %bb.0:2738; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x02739; GFX12-GISEL-NEXT: s_wait_expcnt 0x02740; GFX12-GISEL-NEXT: s_wait_samplecnt 0x02741; GFX12-GISEL-NEXT: s_wait_bvhcnt 0x02742; GFX12-GISEL-NEXT: s_wait_kmcnt 0x02743; GFX12-GISEL-NEXT: v_add_co_u32 v0, vcc_lo, 0x2000, v02744; GFX12-GISEL-NEXT: s_wait_alu depctr_va_vcc(0)2745; GFX12-GISEL-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo2746; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1]2747; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x02748; GFX12-GISEL-NEXT: s_setpc_b64 s[30:31]2749 %gep = getelementptr inbounds i8, ptr %p, i64 -92233720368547676162750 %load = load i8, ptr %gep, align 42751 ret i8 %load2752}2753 2754define amdgpu_kernel void @flat_inst_salu_offset_1(ptr %p) {2755; GFX9-LABEL: flat_inst_salu_offset_1:2756; GFX9: ; %bb.0:2757; GFX9-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x242758; GFX9-NEXT: s_waitcnt lgkmcnt(0)2759; GFX9-NEXT: v_mov_b32_e32 v0, s02760; GFX9-NEXT: v_mov_b32_e32 v1, s12761; GFX9-NEXT: flat_load_ubyte v0, v[0:1] offset:1 glc2762; GFX9-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2763; GFX9-NEXT: flat_store_byte v[0:1], v02764; GFX9-NEXT: s_endpgm2765;2766; GFX10-LABEL: flat_inst_salu_offset_1:2767; GFX10: ; %bb.0:2768; GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x242769; GFX10-NEXT: s_waitcnt lgkmcnt(0)2770; GFX10-NEXT: s_add_u32 s0, s0, 12771; GFX10-NEXT: s_addc_u32 s1, s1, 02772; GFX10-NEXT: v_mov_b32_e32 v0, s02773; GFX10-NEXT: v_mov_b32_e32 v1, s12774; GFX10-NEXT: flat_load_ubyte v0, v[0:1] glc dlc2775; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2776; GFX10-NEXT: flat_store_byte v[0:1], v02777; GFX10-NEXT: s_endpgm2778;2779; GFX11-SDAG-TRUE16-LABEL: flat_inst_salu_offset_1:2780; GFX11-SDAG-TRUE16: ; %bb.0:2781; GFX11-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x242782; GFX11-SDAG-TRUE16-NEXT: s_waitcnt lgkmcnt(0)2783; GFX11-SDAG-TRUE16-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s12784; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:1 glc dlc2785; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2786; GFX11-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v02787; GFX11-SDAG-TRUE16-NEXT: s_endpgm2788;2789; GFX11-SDAG-FAKE16-LABEL: flat_inst_salu_offset_1:2790; GFX11-SDAG-FAKE16: ; %bb.0:2791; GFX11-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x242792; GFX11-SDAG-FAKE16-NEXT: s_waitcnt lgkmcnt(0)2793; GFX11-SDAG-FAKE16-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s12794; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:1 glc dlc2795; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2796; GFX11-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v02797; GFX11-SDAG-FAKE16-NEXT: s_endpgm2798;2799; GFX12-SDAG-TRUE16-LABEL: flat_inst_salu_offset_1:2800; GFX12-SDAG-TRUE16: ; %bb.0:2801; GFX12-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x242802; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x02803; GFX12-SDAG-TRUE16-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s12804; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:1 scope:SCOPE_SYS2805; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x02806; GFX12-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v02807; GFX12-SDAG-TRUE16-NEXT: s_endpgm2808;2809; GFX12-SDAG-FAKE16-LABEL: flat_inst_salu_offset_1:2810; GFX12-SDAG-FAKE16: ; %bb.0:2811; GFX12-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x242812; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x02813; GFX12-SDAG-FAKE16-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s12814; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:1 scope:SCOPE_SYS2815; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x02816; GFX12-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v02817; GFX12-SDAG-FAKE16-NEXT: s_endpgm2818;2819; GFX11-GISEL-LABEL: flat_inst_salu_offset_1:2820; GFX11-GISEL: ; %bb.0:2821; GFX11-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x242822; GFX11-GISEL-NEXT: s_waitcnt lgkmcnt(0)2823; GFX11-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s12824; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1] offset:1 glc dlc2825; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2826; GFX11-GISEL-NEXT: flat_store_b8 v[0:1], v02827; GFX11-GISEL-NEXT: s_endpgm2828;2829; GFX12-GISEL-LABEL: flat_inst_salu_offset_1:2830; GFX12-GISEL: ; %bb.0:2831; GFX12-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x242832; GFX12-GISEL-NEXT: s_wait_kmcnt 0x02833; GFX12-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s12834; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] offset:1 scope:SCOPE_SYS2835; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x02836; GFX12-GISEL-NEXT: flat_store_b8 v[0:1], v02837; GFX12-GISEL-NEXT: s_endpgm2838 %gep = getelementptr inbounds i8, ptr %p, i64 12839 %load = load volatile i8, ptr %gep, align 12840 store i8 %load, ptr poison2841 ret void2842}2843 2844define amdgpu_kernel void @flat_inst_salu_offset_11bit_max(ptr %p) {2845; GFX9-LABEL: flat_inst_salu_offset_11bit_max:2846; GFX9: ; %bb.0:2847; GFX9-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x242848; GFX9-NEXT: s_waitcnt lgkmcnt(0)2849; GFX9-NEXT: v_mov_b32_e32 v0, s02850; GFX9-NEXT: v_mov_b32_e32 v1, s12851; GFX9-NEXT: flat_load_ubyte v0, v[0:1] offset:2047 glc2852; GFX9-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2853; GFX9-NEXT: flat_store_byte v[0:1], v02854; GFX9-NEXT: s_endpgm2855;2856; GFX10-LABEL: flat_inst_salu_offset_11bit_max:2857; GFX10: ; %bb.0:2858; GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x242859; GFX10-NEXT: s_waitcnt lgkmcnt(0)2860; GFX10-NEXT: s_add_u32 s0, s0, 0x7ff2861; GFX10-NEXT: s_addc_u32 s1, s1, 02862; GFX10-NEXT: v_mov_b32_e32 v0, s02863; GFX10-NEXT: v_mov_b32_e32 v1, s12864; GFX10-NEXT: flat_load_ubyte v0, v[0:1] glc dlc2865; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2866; GFX10-NEXT: flat_store_byte v[0:1], v02867; GFX10-NEXT: s_endpgm2868;2869; GFX11-SDAG-TRUE16-LABEL: flat_inst_salu_offset_11bit_max:2870; GFX11-SDAG-TRUE16: ; %bb.0:2871; GFX11-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x242872; GFX11-SDAG-TRUE16-NEXT: s_waitcnt lgkmcnt(0)2873; GFX11-SDAG-TRUE16-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s12874; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:2047 glc dlc2875; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2876; GFX11-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v02877; GFX11-SDAG-TRUE16-NEXT: s_endpgm2878;2879; GFX11-SDAG-FAKE16-LABEL: flat_inst_salu_offset_11bit_max:2880; GFX11-SDAG-FAKE16: ; %bb.0:2881; GFX11-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x242882; GFX11-SDAG-FAKE16-NEXT: s_waitcnt lgkmcnt(0)2883; GFX11-SDAG-FAKE16-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s12884; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:2047 glc dlc2885; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2886; GFX11-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v02887; GFX11-SDAG-FAKE16-NEXT: s_endpgm2888;2889; GFX12-SDAG-TRUE16-LABEL: flat_inst_salu_offset_11bit_max:2890; GFX12-SDAG-TRUE16: ; %bb.0:2891; GFX12-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x242892; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x02893; GFX12-SDAG-TRUE16-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s12894; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:2047 scope:SCOPE_SYS2895; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x02896; GFX12-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v02897; GFX12-SDAG-TRUE16-NEXT: s_endpgm2898;2899; GFX12-SDAG-FAKE16-LABEL: flat_inst_salu_offset_11bit_max:2900; GFX12-SDAG-FAKE16: ; %bb.0:2901; GFX12-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x242902; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x02903; GFX12-SDAG-FAKE16-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s12904; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:2047 scope:SCOPE_SYS2905; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x02906; GFX12-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v02907; GFX12-SDAG-FAKE16-NEXT: s_endpgm2908;2909; GFX11-GISEL-LABEL: flat_inst_salu_offset_11bit_max:2910; GFX11-GISEL: ; %bb.0:2911; GFX11-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x242912; GFX11-GISEL-NEXT: s_waitcnt lgkmcnt(0)2913; GFX11-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s12914; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1] offset:2047 glc dlc2915; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2916; GFX11-GISEL-NEXT: flat_store_b8 v[0:1], v02917; GFX11-GISEL-NEXT: s_endpgm2918;2919; GFX12-GISEL-LABEL: flat_inst_salu_offset_11bit_max:2920; GFX12-GISEL: ; %bb.0:2921; GFX12-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x242922; GFX12-GISEL-NEXT: s_wait_kmcnt 0x02923; GFX12-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s12924; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] offset:2047 scope:SCOPE_SYS2925; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x02926; GFX12-GISEL-NEXT: flat_store_b8 v[0:1], v02927; GFX12-GISEL-NEXT: s_endpgm2928 %gep = getelementptr inbounds i8, ptr %p, i64 20472929 %load = load volatile i8, ptr %gep, align 12930 store i8 %load, ptr poison2931 ret void2932}2933 2934define amdgpu_kernel void @flat_inst_salu_offset_12bit_max(ptr %p) {2935; GFX9-LABEL: flat_inst_salu_offset_12bit_max:2936; GFX9: ; %bb.0:2937; GFX9-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x242938; GFX9-NEXT: s_waitcnt lgkmcnt(0)2939; GFX9-NEXT: v_mov_b32_e32 v0, s02940; GFX9-NEXT: v_mov_b32_e32 v1, s12941; GFX9-NEXT: flat_load_ubyte v0, v[0:1] offset:4095 glc2942; GFX9-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2943; GFX9-NEXT: flat_store_byte v[0:1], v02944; GFX9-NEXT: s_endpgm2945;2946; GFX10-LABEL: flat_inst_salu_offset_12bit_max:2947; GFX10: ; %bb.0:2948; GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x242949; GFX10-NEXT: s_waitcnt lgkmcnt(0)2950; GFX10-NEXT: s_add_u32 s0, s0, 0xfff2951; GFX10-NEXT: s_addc_u32 s1, s1, 02952; GFX10-NEXT: v_mov_b32_e32 v0, s02953; GFX10-NEXT: v_mov_b32_e32 v1, s12954; GFX10-NEXT: flat_load_ubyte v0, v[0:1] glc dlc2955; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2956; GFX10-NEXT: flat_store_byte v[0:1], v02957; GFX10-NEXT: s_endpgm2958;2959; GFX11-SDAG-TRUE16-LABEL: flat_inst_salu_offset_12bit_max:2960; GFX11-SDAG-TRUE16: ; %bb.0:2961; GFX11-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x242962; GFX11-SDAG-TRUE16-NEXT: s_waitcnt lgkmcnt(0)2963; GFX11-SDAG-TRUE16-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s12964; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:4095 glc dlc2965; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2966; GFX11-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v02967; GFX11-SDAG-TRUE16-NEXT: s_endpgm2968;2969; GFX11-SDAG-FAKE16-LABEL: flat_inst_salu_offset_12bit_max:2970; GFX11-SDAG-FAKE16: ; %bb.0:2971; GFX11-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x242972; GFX11-SDAG-FAKE16-NEXT: s_waitcnt lgkmcnt(0)2973; GFX11-SDAG-FAKE16-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s12974; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:4095 glc dlc2975; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)2976; GFX11-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v02977; GFX11-SDAG-FAKE16-NEXT: s_endpgm2978;2979; GFX12-SDAG-TRUE16-LABEL: flat_inst_salu_offset_12bit_max:2980; GFX12-SDAG-TRUE16: ; %bb.0:2981; GFX12-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x242982; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x02983; GFX12-SDAG-TRUE16-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s12984; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:4095 scope:SCOPE_SYS2985; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x02986; GFX12-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v02987; GFX12-SDAG-TRUE16-NEXT: s_endpgm2988;2989; GFX12-SDAG-FAKE16-LABEL: flat_inst_salu_offset_12bit_max:2990; GFX12-SDAG-FAKE16: ; %bb.0:2991; GFX12-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x242992; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x02993; GFX12-SDAG-FAKE16-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s12994; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:4095 scope:SCOPE_SYS2995; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x02996; GFX12-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v02997; GFX12-SDAG-FAKE16-NEXT: s_endpgm2998;2999; GFX11-GISEL-LABEL: flat_inst_salu_offset_12bit_max:3000; GFX11-GISEL: ; %bb.0:3001; GFX11-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x243002; GFX11-GISEL-NEXT: s_waitcnt lgkmcnt(0)3003; GFX11-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13004; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1] offset:4095 glc dlc3005; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3006; GFX11-GISEL-NEXT: flat_store_b8 v[0:1], v03007; GFX11-GISEL-NEXT: s_endpgm3008;3009; GFX12-GISEL-LABEL: flat_inst_salu_offset_12bit_max:3010; GFX12-GISEL: ; %bb.0:3011; GFX12-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x243012; GFX12-GISEL-NEXT: s_wait_kmcnt 0x03013; GFX12-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13014; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] offset:4095 scope:SCOPE_SYS3015; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x03016; GFX12-GISEL-NEXT: flat_store_b8 v[0:1], v03017; GFX12-GISEL-NEXT: s_endpgm3018 %gep = getelementptr inbounds i8, ptr %p, i64 40953019 %load = load volatile i8, ptr %gep, align 13020 store i8 %load, ptr poison3021 ret void3022}3023 3024define amdgpu_kernel void @flat_inst_salu_offset_13bit_max(ptr %p) {3025; GFX9-SDAG-LABEL: flat_inst_salu_offset_13bit_max:3026; GFX9-SDAG: ; %bb.0:3027; GFX9-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243028; GFX9-SDAG-NEXT: s_waitcnt lgkmcnt(0)3029; GFX9-SDAG-NEXT: v_mov_b32_e32 v0, s03030; GFX9-SDAG-NEXT: v_mov_b32_e32 v1, s13031; GFX9-SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0x1000, v03032; GFX9-SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, 0, v1, vcc3033; GFX9-SDAG-NEXT: flat_load_ubyte v0, v[0:1] offset:4095 glc3034; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3035; GFX9-SDAG-NEXT: flat_store_byte v[0:1], v03036; GFX9-SDAG-NEXT: s_endpgm3037;3038; GFX10-LABEL: flat_inst_salu_offset_13bit_max:3039; GFX10: ; %bb.0:3040; GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243041; GFX10-NEXT: s_waitcnt lgkmcnt(0)3042; GFX10-NEXT: s_add_u32 s0, s0, 0x1fff3043; GFX10-NEXT: s_addc_u32 s1, s1, 03044; GFX10-NEXT: v_mov_b32_e32 v0, s03045; GFX10-NEXT: v_mov_b32_e32 v1, s13046; GFX10-NEXT: flat_load_ubyte v0, v[0:1] glc dlc3047; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3048; GFX10-NEXT: flat_store_byte v[0:1], v03049; GFX10-NEXT: s_endpgm3050;3051; GFX11-SDAG-TRUE16-LABEL: flat_inst_salu_offset_13bit_max:3052; GFX11-SDAG-TRUE16: ; %bb.0:3053; GFX11-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x243054; GFX11-SDAG-TRUE16-NEXT: s_waitcnt lgkmcnt(0)3055; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, s0, 0x1000, s03056; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)3057; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0, s1, s03058; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:4095 glc dlc3059; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3060; GFX11-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v03061; GFX11-SDAG-TRUE16-NEXT: s_endpgm3062;3063; GFX11-SDAG-FAKE16-LABEL: flat_inst_salu_offset_13bit_max:3064; GFX11-SDAG-FAKE16: ; %bb.0:3065; GFX11-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x243066; GFX11-SDAG-FAKE16-NEXT: s_waitcnt lgkmcnt(0)3067; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, s0, 0x1000, s03068; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)3069; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0, s1, s03070; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:4095 glc dlc3071; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3072; GFX11-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v03073; GFX11-SDAG-FAKE16-NEXT: s_endpgm3074;3075; GFX12-SDAG-TRUE16-LABEL: flat_inst_salu_offset_13bit_max:3076; GFX12-SDAG-TRUE16: ; %bb.0:3077; GFX12-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x243078; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x03079; GFX12-SDAG-TRUE16-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13080; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:8191 scope:SCOPE_SYS3081; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x03082; GFX12-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v03083; GFX12-SDAG-TRUE16-NEXT: s_endpgm3084;3085; GFX12-SDAG-FAKE16-LABEL: flat_inst_salu_offset_13bit_max:3086; GFX12-SDAG-FAKE16: ; %bb.0:3087; GFX12-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x243088; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x03089; GFX12-SDAG-FAKE16-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13090; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:8191 scope:SCOPE_SYS3091; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x03092; GFX12-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v03093; GFX12-SDAG-FAKE16-NEXT: s_endpgm3094;3095; GFX9-GISEL-LABEL: flat_inst_salu_offset_13bit_max:3096; GFX9-GISEL: ; %bb.0:3097; GFX9-GISEL-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243098; GFX9-GISEL-NEXT: s_waitcnt lgkmcnt(0)3099; GFX9-GISEL-NEXT: s_add_u32 s0, s0, 0x1fff3100; GFX9-GISEL-NEXT: s_addc_u32 s1, s1, 03101; GFX9-GISEL-NEXT: v_mov_b32_e32 v0, s03102; GFX9-GISEL-NEXT: v_mov_b32_e32 v1, s13103; GFX9-GISEL-NEXT: flat_load_ubyte v0, v[0:1] glc3104; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3105; GFX9-GISEL-NEXT: flat_store_byte v[0:1], v03106; GFX9-GISEL-NEXT: s_endpgm3107;3108; GFX11-GISEL-LABEL: flat_inst_salu_offset_13bit_max:3109; GFX11-GISEL: ; %bb.0:3110; GFX11-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x243111; GFX11-GISEL-NEXT: s_waitcnt lgkmcnt(0)3112; GFX11-GISEL-NEXT: s_add_u32 s0, s0, 0x1fff3113; GFX11-GISEL-NEXT: s_addc_u32 s1, s1, 03114; GFX11-GISEL-NEXT: s_delay_alu instid0(SALU_CYCLE_1)3115; GFX11-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13116; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1] glc dlc3117; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3118; GFX11-GISEL-NEXT: flat_store_b8 v[0:1], v03119; GFX11-GISEL-NEXT: s_endpgm3120;3121; GFX12-GISEL-LABEL: flat_inst_salu_offset_13bit_max:3122; GFX12-GISEL: ; %bb.0:3123; GFX12-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x243124; GFX12-GISEL-NEXT: s_wait_kmcnt 0x03125; GFX12-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13126; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] offset:8191 scope:SCOPE_SYS3127; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x03128; GFX12-GISEL-NEXT: flat_store_b8 v[0:1], v03129; GFX12-GISEL-NEXT: s_endpgm3130 %gep = getelementptr inbounds i8, ptr %p, i64 81913131 %load = load volatile i8, ptr %gep, align 13132 store i8 %load, ptr poison3133 ret void3134}3135 3136define amdgpu_kernel void @flat_inst_salu_offset_neg_11bit_max(ptr %p) {3137; GFX9-SDAG-LABEL: flat_inst_salu_offset_neg_11bit_max:3138; GFX9-SDAG: ; %bb.0:3139; GFX9-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243140; GFX9-SDAG-NEXT: s_waitcnt lgkmcnt(0)3141; GFX9-SDAG-NEXT: v_mov_b32_e32 v0, s03142; GFX9-SDAG-NEXT: v_mov_b32_e32 v1, s13143; GFX9-SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0xfffff800, v03144; GFX9-SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, -1, v1, vcc3145; GFX9-SDAG-NEXT: flat_load_ubyte v0, v[0:1] glc3146; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3147; GFX9-SDAG-NEXT: flat_store_byte v[0:1], v03148; GFX9-SDAG-NEXT: s_endpgm3149;3150; GFX10-LABEL: flat_inst_salu_offset_neg_11bit_max:3151; GFX10: ; %bb.0:3152; GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243153; GFX10-NEXT: s_waitcnt lgkmcnt(0)3154; GFX10-NEXT: s_add_u32 s0, s0, 0xfffff8003155; GFX10-NEXT: s_addc_u32 s1, s1, -13156; GFX10-NEXT: v_mov_b32_e32 v0, s03157; GFX10-NEXT: v_mov_b32_e32 v1, s13158; GFX10-NEXT: flat_load_ubyte v0, v[0:1] glc dlc3159; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3160; GFX10-NEXT: flat_store_byte v[0:1], v03161; GFX10-NEXT: s_endpgm3162;3163; GFX11-SDAG-TRUE16-LABEL: flat_inst_salu_offset_neg_11bit_max:3164; GFX11-SDAG-TRUE16: ; %bb.0:3165; GFX11-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x243166; GFX11-SDAG-TRUE16-NEXT: s_waitcnt lgkmcnt(0)3167; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, s0, 0xfffff800, s03168; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)3169; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, -1, s1, s03170; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] glc dlc3171; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3172; GFX11-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v03173; GFX11-SDAG-TRUE16-NEXT: s_endpgm3174;3175; GFX11-SDAG-FAKE16-LABEL: flat_inst_salu_offset_neg_11bit_max:3176; GFX11-SDAG-FAKE16: ; %bb.0:3177; GFX11-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x243178; GFX11-SDAG-FAKE16-NEXT: s_waitcnt lgkmcnt(0)3179; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, s0, 0xfffff800, s03180; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)3181; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, -1, s1, s03182; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] glc dlc3183; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3184; GFX11-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v03185; GFX11-SDAG-FAKE16-NEXT: s_endpgm3186;3187; GFX12-SDAG-TRUE16-LABEL: flat_inst_salu_offset_neg_11bit_max:3188; GFX12-SDAG-TRUE16: ; %bb.0:3189; GFX12-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x243190; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x03191; GFX12-SDAG-TRUE16-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13192; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:-2048 scope:SCOPE_SYS3193; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x03194; GFX12-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v03195; GFX12-SDAG-TRUE16-NEXT: s_endpgm3196;3197; GFX12-SDAG-FAKE16-LABEL: flat_inst_salu_offset_neg_11bit_max:3198; GFX12-SDAG-FAKE16: ; %bb.0:3199; GFX12-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x243200; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x03201; GFX12-SDAG-FAKE16-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13202; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:-2048 scope:SCOPE_SYS3203; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x03204; GFX12-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v03205; GFX12-SDAG-FAKE16-NEXT: s_endpgm3206;3207; GFX9-GISEL-LABEL: flat_inst_salu_offset_neg_11bit_max:3208; GFX9-GISEL: ; %bb.0:3209; GFX9-GISEL-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243210; GFX9-GISEL-NEXT: s_waitcnt lgkmcnt(0)3211; GFX9-GISEL-NEXT: s_add_u32 s0, s0, 0xfffff8003212; GFX9-GISEL-NEXT: s_addc_u32 s1, s1, -13213; GFX9-GISEL-NEXT: v_mov_b32_e32 v0, s03214; GFX9-GISEL-NEXT: v_mov_b32_e32 v1, s13215; GFX9-GISEL-NEXT: flat_load_ubyte v0, v[0:1] glc3216; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3217; GFX9-GISEL-NEXT: flat_store_byte v[0:1], v03218; GFX9-GISEL-NEXT: s_endpgm3219;3220; GFX11-GISEL-LABEL: flat_inst_salu_offset_neg_11bit_max:3221; GFX11-GISEL: ; %bb.0:3222; GFX11-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x243223; GFX11-GISEL-NEXT: s_waitcnt lgkmcnt(0)3224; GFX11-GISEL-NEXT: s_add_u32 s0, s0, 0xfffff8003225; GFX11-GISEL-NEXT: s_addc_u32 s1, s1, -13226; GFX11-GISEL-NEXT: s_delay_alu instid0(SALU_CYCLE_1)3227; GFX11-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13228; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1] glc dlc3229; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3230; GFX11-GISEL-NEXT: flat_store_b8 v[0:1], v03231; GFX11-GISEL-NEXT: s_endpgm3232;3233; GFX12-GISEL-LABEL: flat_inst_salu_offset_neg_11bit_max:3234; GFX12-GISEL: ; %bb.0:3235; GFX12-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x243236; GFX12-GISEL-NEXT: s_wait_kmcnt 0x03237; GFX12-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13238; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] offset:-2048 scope:SCOPE_SYS3239; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x03240; GFX12-GISEL-NEXT: flat_store_b8 v[0:1], v03241; GFX12-GISEL-NEXT: s_endpgm3242 %gep = getelementptr inbounds i8, ptr %p, i64 -20483243 %load = load volatile i8, ptr %gep, align 13244 store i8 %load, ptr poison3245 ret void3246}3247 3248define amdgpu_kernel void @flat_inst_salu_offset_neg_12bit_max(ptr %p) {3249; GFX9-SDAG-LABEL: flat_inst_salu_offset_neg_12bit_max:3250; GFX9-SDAG: ; %bb.0:3251; GFX9-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243252; GFX9-SDAG-NEXT: s_waitcnt lgkmcnt(0)3253; GFX9-SDAG-NEXT: v_mov_b32_e32 v0, s03254; GFX9-SDAG-NEXT: v_mov_b32_e32 v1, s13255; GFX9-SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0xfffff000, v03256; GFX9-SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, -1, v1, vcc3257; GFX9-SDAG-NEXT: flat_load_ubyte v0, v[0:1] glc3258; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3259; GFX9-SDAG-NEXT: flat_store_byte v[0:1], v03260; GFX9-SDAG-NEXT: s_endpgm3261;3262; GFX10-LABEL: flat_inst_salu_offset_neg_12bit_max:3263; GFX10: ; %bb.0:3264; GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243265; GFX10-NEXT: s_waitcnt lgkmcnt(0)3266; GFX10-NEXT: s_add_u32 s0, s0, 0xfffff0003267; GFX10-NEXT: s_addc_u32 s1, s1, -13268; GFX10-NEXT: v_mov_b32_e32 v0, s03269; GFX10-NEXT: v_mov_b32_e32 v1, s13270; GFX10-NEXT: flat_load_ubyte v0, v[0:1] glc dlc3271; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3272; GFX10-NEXT: flat_store_byte v[0:1], v03273; GFX10-NEXT: s_endpgm3274;3275; GFX11-SDAG-TRUE16-LABEL: flat_inst_salu_offset_neg_12bit_max:3276; GFX11-SDAG-TRUE16: ; %bb.0:3277; GFX11-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x243278; GFX11-SDAG-TRUE16-NEXT: s_waitcnt lgkmcnt(0)3279; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, s0, 0xfffff000, s03280; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)3281; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, -1, s1, s03282; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] glc dlc3283; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3284; GFX11-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v03285; GFX11-SDAG-TRUE16-NEXT: s_endpgm3286;3287; GFX11-SDAG-FAKE16-LABEL: flat_inst_salu_offset_neg_12bit_max:3288; GFX11-SDAG-FAKE16: ; %bb.0:3289; GFX11-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x243290; GFX11-SDAG-FAKE16-NEXT: s_waitcnt lgkmcnt(0)3291; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, s0, 0xfffff000, s03292; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)3293; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, -1, s1, s03294; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] glc dlc3295; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3296; GFX11-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v03297; GFX11-SDAG-FAKE16-NEXT: s_endpgm3298;3299; GFX12-SDAG-TRUE16-LABEL: flat_inst_salu_offset_neg_12bit_max:3300; GFX12-SDAG-TRUE16: ; %bb.0:3301; GFX12-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x243302; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x03303; GFX12-SDAG-TRUE16-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13304; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:-4096 scope:SCOPE_SYS3305; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x03306; GFX12-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v03307; GFX12-SDAG-TRUE16-NEXT: s_endpgm3308;3309; GFX12-SDAG-FAKE16-LABEL: flat_inst_salu_offset_neg_12bit_max:3310; GFX12-SDAG-FAKE16: ; %bb.0:3311; GFX12-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x243312; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x03313; GFX12-SDAG-FAKE16-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13314; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:-4096 scope:SCOPE_SYS3315; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x03316; GFX12-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v03317; GFX12-SDAG-FAKE16-NEXT: s_endpgm3318;3319; GFX9-GISEL-LABEL: flat_inst_salu_offset_neg_12bit_max:3320; GFX9-GISEL: ; %bb.0:3321; GFX9-GISEL-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243322; GFX9-GISEL-NEXT: s_waitcnt lgkmcnt(0)3323; GFX9-GISEL-NEXT: s_add_u32 s0, s0, 0xfffff0003324; GFX9-GISEL-NEXT: s_addc_u32 s1, s1, -13325; GFX9-GISEL-NEXT: v_mov_b32_e32 v0, s03326; GFX9-GISEL-NEXT: v_mov_b32_e32 v1, s13327; GFX9-GISEL-NEXT: flat_load_ubyte v0, v[0:1] glc3328; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3329; GFX9-GISEL-NEXT: flat_store_byte v[0:1], v03330; GFX9-GISEL-NEXT: s_endpgm3331;3332; GFX11-GISEL-LABEL: flat_inst_salu_offset_neg_12bit_max:3333; GFX11-GISEL: ; %bb.0:3334; GFX11-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x243335; GFX11-GISEL-NEXT: s_waitcnt lgkmcnt(0)3336; GFX11-GISEL-NEXT: s_add_u32 s0, s0, 0xfffff0003337; GFX11-GISEL-NEXT: s_addc_u32 s1, s1, -13338; GFX11-GISEL-NEXT: s_delay_alu instid0(SALU_CYCLE_1)3339; GFX11-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13340; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1] glc dlc3341; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3342; GFX11-GISEL-NEXT: flat_store_b8 v[0:1], v03343; GFX11-GISEL-NEXT: s_endpgm3344;3345; GFX12-GISEL-LABEL: flat_inst_salu_offset_neg_12bit_max:3346; GFX12-GISEL: ; %bb.0:3347; GFX12-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x243348; GFX12-GISEL-NEXT: s_wait_kmcnt 0x03349; GFX12-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13350; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] offset:-4096 scope:SCOPE_SYS3351; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x03352; GFX12-GISEL-NEXT: flat_store_b8 v[0:1], v03353; GFX12-GISEL-NEXT: s_endpgm3354 %gep = getelementptr inbounds i8, ptr %p, i64 -40963355 %load = load volatile i8, ptr %gep, align 13356 store i8 %load, ptr poison3357 ret void3358}3359 3360define amdgpu_kernel void @flat_inst_salu_offset_neg_13bit_max(ptr %p) {3361; GFX9-SDAG-LABEL: flat_inst_salu_offset_neg_13bit_max:3362; GFX9-SDAG: ; %bb.0:3363; GFX9-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243364; GFX9-SDAG-NEXT: s_waitcnt lgkmcnt(0)3365; GFX9-SDAG-NEXT: v_mov_b32_e32 v0, s03366; GFX9-SDAG-NEXT: v_mov_b32_e32 v1, s13367; GFX9-SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0xffffe000, v03368; GFX9-SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, -1, v1, vcc3369; GFX9-SDAG-NEXT: flat_load_ubyte v0, v[0:1] glc3370; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3371; GFX9-SDAG-NEXT: flat_store_byte v[0:1], v03372; GFX9-SDAG-NEXT: s_endpgm3373;3374; GFX10-LABEL: flat_inst_salu_offset_neg_13bit_max:3375; GFX10: ; %bb.0:3376; GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243377; GFX10-NEXT: s_waitcnt lgkmcnt(0)3378; GFX10-NEXT: s_add_u32 s0, s0, 0xffffe0003379; GFX10-NEXT: s_addc_u32 s1, s1, -13380; GFX10-NEXT: v_mov_b32_e32 v0, s03381; GFX10-NEXT: v_mov_b32_e32 v1, s13382; GFX10-NEXT: flat_load_ubyte v0, v[0:1] glc dlc3383; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3384; GFX10-NEXT: flat_store_byte v[0:1], v03385; GFX10-NEXT: s_endpgm3386;3387; GFX11-SDAG-TRUE16-LABEL: flat_inst_salu_offset_neg_13bit_max:3388; GFX11-SDAG-TRUE16: ; %bb.0:3389; GFX11-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x243390; GFX11-SDAG-TRUE16-NEXT: s_waitcnt lgkmcnt(0)3391; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, s0, 0xffffe000, s03392; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)3393; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, -1, s1, s03394; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] glc dlc3395; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3396; GFX11-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v03397; GFX11-SDAG-TRUE16-NEXT: s_endpgm3398;3399; GFX11-SDAG-FAKE16-LABEL: flat_inst_salu_offset_neg_13bit_max:3400; GFX11-SDAG-FAKE16: ; %bb.0:3401; GFX11-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x243402; GFX11-SDAG-FAKE16-NEXT: s_waitcnt lgkmcnt(0)3403; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, s0, 0xffffe000, s03404; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)3405; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, -1, s1, s03406; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] glc dlc3407; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3408; GFX11-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v03409; GFX11-SDAG-FAKE16-NEXT: s_endpgm3410;3411; GFX12-SDAG-TRUE16-LABEL: flat_inst_salu_offset_neg_13bit_max:3412; GFX12-SDAG-TRUE16: ; %bb.0:3413; GFX12-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x243414; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x03415; GFX12-SDAG-TRUE16-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13416; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:-8192 scope:SCOPE_SYS3417; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x03418; GFX12-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v03419; GFX12-SDAG-TRUE16-NEXT: s_endpgm3420;3421; GFX12-SDAG-FAKE16-LABEL: flat_inst_salu_offset_neg_13bit_max:3422; GFX12-SDAG-FAKE16: ; %bb.0:3423; GFX12-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x243424; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x03425; GFX12-SDAG-FAKE16-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13426; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:-8192 scope:SCOPE_SYS3427; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x03428; GFX12-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v03429; GFX12-SDAG-FAKE16-NEXT: s_endpgm3430;3431; GFX9-GISEL-LABEL: flat_inst_salu_offset_neg_13bit_max:3432; GFX9-GISEL: ; %bb.0:3433; GFX9-GISEL-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243434; GFX9-GISEL-NEXT: s_waitcnt lgkmcnt(0)3435; GFX9-GISEL-NEXT: s_add_u32 s0, s0, 0xffffe0003436; GFX9-GISEL-NEXT: s_addc_u32 s1, s1, -13437; GFX9-GISEL-NEXT: v_mov_b32_e32 v0, s03438; GFX9-GISEL-NEXT: v_mov_b32_e32 v1, s13439; GFX9-GISEL-NEXT: flat_load_ubyte v0, v[0:1] glc3440; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3441; GFX9-GISEL-NEXT: flat_store_byte v[0:1], v03442; GFX9-GISEL-NEXT: s_endpgm3443;3444; GFX11-GISEL-LABEL: flat_inst_salu_offset_neg_13bit_max:3445; GFX11-GISEL: ; %bb.0:3446; GFX11-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x243447; GFX11-GISEL-NEXT: s_waitcnt lgkmcnt(0)3448; GFX11-GISEL-NEXT: s_add_u32 s0, s0, 0xffffe0003449; GFX11-GISEL-NEXT: s_addc_u32 s1, s1, -13450; GFX11-GISEL-NEXT: s_delay_alu instid0(SALU_CYCLE_1)3451; GFX11-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13452; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1] glc dlc3453; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3454; GFX11-GISEL-NEXT: flat_store_b8 v[0:1], v03455; GFX11-GISEL-NEXT: s_endpgm3456;3457; GFX12-GISEL-LABEL: flat_inst_salu_offset_neg_13bit_max:3458; GFX12-GISEL: ; %bb.0:3459; GFX12-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x243460; GFX12-GISEL-NEXT: s_wait_kmcnt 0x03461; GFX12-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13462; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] offset:-8192 scope:SCOPE_SYS3463; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x03464; GFX12-GISEL-NEXT: flat_store_b8 v[0:1], v03465; GFX12-GISEL-NEXT: s_endpgm3466 %gep = getelementptr inbounds i8, ptr %p, i64 -81923467 %load = load volatile i8, ptr %gep, align 13468 store i8 %load, ptr poison3469 ret void3470}3471 3472define amdgpu_kernel void @flat_inst_salu_offset_2x_11bit_max(ptr %p) {3473; GFX9-LABEL: flat_inst_salu_offset_2x_11bit_max:3474; GFX9: ; %bb.0:3475; GFX9-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243476; GFX9-NEXT: s_waitcnt lgkmcnt(0)3477; GFX9-NEXT: v_mov_b32_e32 v0, s03478; GFX9-NEXT: v_mov_b32_e32 v1, s13479; GFX9-NEXT: flat_load_ubyte v0, v[0:1] offset:4095 glc3480; GFX9-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3481; GFX9-NEXT: flat_store_byte v[0:1], v03482; GFX9-NEXT: s_endpgm3483;3484; GFX10-LABEL: flat_inst_salu_offset_2x_11bit_max:3485; GFX10: ; %bb.0:3486; GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243487; GFX10-NEXT: s_waitcnt lgkmcnt(0)3488; GFX10-NEXT: s_add_u32 s0, s0, 0xfff3489; GFX10-NEXT: s_addc_u32 s1, s1, 03490; GFX10-NEXT: v_mov_b32_e32 v0, s03491; GFX10-NEXT: v_mov_b32_e32 v1, s13492; GFX10-NEXT: flat_load_ubyte v0, v[0:1] glc dlc3493; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3494; GFX10-NEXT: flat_store_byte v[0:1], v03495; GFX10-NEXT: s_endpgm3496;3497; GFX11-SDAG-TRUE16-LABEL: flat_inst_salu_offset_2x_11bit_max:3498; GFX11-SDAG-TRUE16: ; %bb.0:3499; GFX11-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x243500; GFX11-SDAG-TRUE16-NEXT: s_waitcnt lgkmcnt(0)3501; GFX11-SDAG-TRUE16-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13502; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:4095 glc dlc3503; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3504; GFX11-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v03505; GFX11-SDAG-TRUE16-NEXT: s_endpgm3506;3507; GFX11-SDAG-FAKE16-LABEL: flat_inst_salu_offset_2x_11bit_max:3508; GFX11-SDAG-FAKE16: ; %bb.0:3509; GFX11-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x243510; GFX11-SDAG-FAKE16-NEXT: s_waitcnt lgkmcnt(0)3511; GFX11-SDAG-FAKE16-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13512; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:4095 glc dlc3513; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3514; GFX11-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v03515; GFX11-SDAG-FAKE16-NEXT: s_endpgm3516;3517; GFX12-SDAG-TRUE16-LABEL: flat_inst_salu_offset_2x_11bit_max:3518; GFX12-SDAG-TRUE16: ; %bb.0:3519; GFX12-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x243520; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x03521; GFX12-SDAG-TRUE16-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13522; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:4095 scope:SCOPE_SYS3523; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x03524; GFX12-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v03525; GFX12-SDAG-TRUE16-NEXT: s_endpgm3526;3527; GFX12-SDAG-FAKE16-LABEL: flat_inst_salu_offset_2x_11bit_max:3528; GFX12-SDAG-FAKE16: ; %bb.0:3529; GFX12-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x243530; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x03531; GFX12-SDAG-FAKE16-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13532; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:4095 scope:SCOPE_SYS3533; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x03534; GFX12-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v03535; GFX12-SDAG-FAKE16-NEXT: s_endpgm3536;3537; GFX11-GISEL-LABEL: flat_inst_salu_offset_2x_11bit_max:3538; GFX11-GISEL: ; %bb.0:3539; GFX11-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x243540; GFX11-GISEL-NEXT: s_waitcnt lgkmcnt(0)3541; GFX11-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13542; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1] offset:4095 glc dlc3543; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3544; GFX11-GISEL-NEXT: flat_store_b8 v[0:1], v03545; GFX11-GISEL-NEXT: s_endpgm3546;3547; GFX12-GISEL-LABEL: flat_inst_salu_offset_2x_11bit_max:3548; GFX12-GISEL: ; %bb.0:3549; GFX12-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x243550; GFX12-GISEL-NEXT: s_wait_kmcnt 0x03551; GFX12-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13552; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] offset:4095 scope:SCOPE_SYS3553; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x03554; GFX12-GISEL-NEXT: flat_store_b8 v[0:1], v03555; GFX12-GISEL-NEXT: s_endpgm3556 %gep = getelementptr inbounds i8, ptr %p, i64 40953557 %load = load volatile i8, ptr %gep, align 13558 store i8 %load, ptr poison3559 ret void3560}3561 3562define amdgpu_kernel void @flat_inst_salu_offset_2x_12bit_max(ptr %p) {3563; GFX9-SDAG-LABEL: flat_inst_salu_offset_2x_12bit_max:3564; GFX9-SDAG: ; %bb.0:3565; GFX9-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243566; GFX9-SDAG-NEXT: s_waitcnt lgkmcnt(0)3567; GFX9-SDAG-NEXT: v_mov_b32_e32 v0, s03568; GFX9-SDAG-NEXT: v_mov_b32_e32 v1, s13569; GFX9-SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0x1000, v03570; GFX9-SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, 0, v1, vcc3571; GFX9-SDAG-NEXT: flat_load_ubyte v0, v[0:1] offset:4095 glc3572; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3573; GFX9-SDAG-NEXT: flat_store_byte v[0:1], v03574; GFX9-SDAG-NEXT: s_endpgm3575;3576; GFX10-LABEL: flat_inst_salu_offset_2x_12bit_max:3577; GFX10: ; %bb.0:3578; GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243579; GFX10-NEXT: s_waitcnt lgkmcnt(0)3580; GFX10-NEXT: s_add_u32 s0, s0, 0x1fff3581; GFX10-NEXT: s_addc_u32 s1, s1, 03582; GFX10-NEXT: v_mov_b32_e32 v0, s03583; GFX10-NEXT: v_mov_b32_e32 v1, s13584; GFX10-NEXT: flat_load_ubyte v0, v[0:1] glc dlc3585; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3586; GFX10-NEXT: flat_store_byte v[0:1], v03587; GFX10-NEXT: s_endpgm3588;3589; GFX11-SDAG-TRUE16-LABEL: flat_inst_salu_offset_2x_12bit_max:3590; GFX11-SDAG-TRUE16: ; %bb.0:3591; GFX11-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x243592; GFX11-SDAG-TRUE16-NEXT: s_waitcnt lgkmcnt(0)3593; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, s0, 0x1000, s03594; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)3595; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0, s1, s03596; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:4095 glc dlc3597; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3598; GFX11-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v03599; GFX11-SDAG-TRUE16-NEXT: s_endpgm3600;3601; GFX11-SDAG-FAKE16-LABEL: flat_inst_salu_offset_2x_12bit_max:3602; GFX11-SDAG-FAKE16: ; %bb.0:3603; GFX11-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x243604; GFX11-SDAG-FAKE16-NEXT: s_waitcnt lgkmcnt(0)3605; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, s0, 0x1000, s03606; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)3607; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0, s1, s03608; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:4095 glc dlc3609; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3610; GFX11-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v03611; GFX11-SDAG-FAKE16-NEXT: s_endpgm3612;3613; GFX12-SDAG-TRUE16-LABEL: flat_inst_salu_offset_2x_12bit_max:3614; GFX12-SDAG-TRUE16: ; %bb.0:3615; GFX12-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x243616; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x03617; GFX12-SDAG-TRUE16-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13618; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:8191 scope:SCOPE_SYS3619; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x03620; GFX12-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v03621; GFX12-SDAG-TRUE16-NEXT: s_endpgm3622;3623; GFX12-SDAG-FAKE16-LABEL: flat_inst_salu_offset_2x_12bit_max:3624; GFX12-SDAG-FAKE16: ; %bb.0:3625; GFX12-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x243626; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x03627; GFX12-SDAG-FAKE16-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13628; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:8191 scope:SCOPE_SYS3629; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x03630; GFX12-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v03631; GFX12-SDAG-FAKE16-NEXT: s_endpgm3632;3633; GFX9-GISEL-LABEL: flat_inst_salu_offset_2x_12bit_max:3634; GFX9-GISEL: ; %bb.0:3635; GFX9-GISEL-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243636; GFX9-GISEL-NEXT: s_waitcnt lgkmcnt(0)3637; GFX9-GISEL-NEXT: s_add_u32 s0, s0, 0x1fff3638; GFX9-GISEL-NEXT: s_addc_u32 s1, s1, 03639; GFX9-GISEL-NEXT: v_mov_b32_e32 v0, s03640; GFX9-GISEL-NEXT: v_mov_b32_e32 v1, s13641; GFX9-GISEL-NEXT: flat_load_ubyte v0, v[0:1] glc3642; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3643; GFX9-GISEL-NEXT: flat_store_byte v[0:1], v03644; GFX9-GISEL-NEXT: s_endpgm3645;3646; GFX11-GISEL-LABEL: flat_inst_salu_offset_2x_12bit_max:3647; GFX11-GISEL: ; %bb.0:3648; GFX11-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x243649; GFX11-GISEL-NEXT: s_waitcnt lgkmcnt(0)3650; GFX11-GISEL-NEXT: s_add_u32 s0, s0, 0x1fff3651; GFX11-GISEL-NEXT: s_addc_u32 s1, s1, 03652; GFX11-GISEL-NEXT: s_delay_alu instid0(SALU_CYCLE_1)3653; GFX11-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13654; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1] glc dlc3655; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3656; GFX11-GISEL-NEXT: flat_store_b8 v[0:1], v03657; GFX11-GISEL-NEXT: s_endpgm3658;3659; GFX12-GISEL-LABEL: flat_inst_salu_offset_2x_12bit_max:3660; GFX12-GISEL: ; %bb.0:3661; GFX12-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x243662; GFX12-GISEL-NEXT: s_wait_kmcnt 0x03663; GFX12-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13664; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] offset:8191 scope:SCOPE_SYS3665; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x03666; GFX12-GISEL-NEXT: flat_store_b8 v[0:1], v03667; GFX12-GISEL-NEXT: s_endpgm3668 %gep = getelementptr inbounds i8, ptr %p, i64 81913669 %load = load volatile i8, ptr %gep, align 13670 store i8 %load, ptr poison3671 ret void3672}3673 3674define amdgpu_kernel void @flat_inst_salu_offset_2x_13bit_max(ptr %p) {3675; GFX9-SDAG-LABEL: flat_inst_salu_offset_2x_13bit_max:3676; GFX9-SDAG: ; %bb.0:3677; GFX9-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243678; GFX9-SDAG-NEXT: s_waitcnt lgkmcnt(0)3679; GFX9-SDAG-NEXT: v_mov_b32_e32 v0, s03680; GFX9-SDAG-NEXT: v_mov_b32_e32 v1, s13681; GFX9-SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0x3000, v03682; GFX9-SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, 0, v1, vcc3683; GFX9-SDAG-NEXT: flat_load_ubyte v0, v[0:1] offset:4095 glc3684; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3685; GFX9-SDAG-NEXT: flat_store_byte v[0:1], v03686; GFX9-SDAG-NEXT: s_endpgm3687;3688; GFX10-LABEL: flat_inst_salu_offset_2x_13bit_max:3689; GFX10: ; %bb.0:3690; GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243691; GFX10-NEXT: s_waitcnt lgkmcnt(0)3692; GFX10-NEXT: s_add_u32 s0, s0, 0x3fff3693; GFX10-NEXT: s_addc_u32 s1, s1, 03694; GFX10-NEXT: v_mov_b32_e32 v0, s03695; GFX10-NEXT: v_mov_b32_e32 v1, s13696; GFX10-NEXT: flat_load_ubyte v0, v[0:1] glc dlc3697; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3698; GFX10-NEXT: flat_store_byte v[0:1], v03699; GFX10-NEXT: s_endpgm3700;3701; GFX11-SDAG-TRUE16-LABEL: flat_inst_salu_offset_2x_13bit_max:3702; GFX11-SDAG-TRUE16: ; %bb.0:3703; GFX11-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x243704; GFX11-SDAG-TRUE16-NEXT: s_waitcnt lgkmcnt(0)3705; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, s0, 0x3000, s03706; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)3707; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0, s1, s03708; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:4095 glc dlc3709; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3710; GFX11-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v03711; GFX11-SDAG-TRUE16-NEXT: s_endpgm3712;3713; GFX11-SDAG-FAKE16-LABEL: flat_inst_salu_offset_2x_13bit_max:3714; GFX11-SDAG-FAKE16: ; %bb.0:3715; GFX11-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x243716; GFX11-SDAG-FAKE16-NEXT: s_waitcnt lgkmcnt(0)3717; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, s0, 0x3000, s03718; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)3719; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0, s1, s03720; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:4095 glc dlc3721; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3722; GFX11-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v03723; GFX11-SDAG-FAKE16-NEXT: s_endpgm3724;3725; GFX12-SDAG-TRUE16-LABEL: flat_inst_salu_offset_2x_13bit_max:3726; GFX12-SDAG-TRUE16: ; %bb.0:3727; GFX12-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x243728; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x03729; GFX12-SDAG-TRUE16-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13730; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:16383 scope:SCOPE_SYS3731; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x03732; GFX12-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v03733; GFX12-SDAG-TRUE16-NEXT: s_endpgm3734;3735; GFX12-SDAG-FAKE16-LABEL: flat_inst_salu_offset_2x_13bit_max:3736; GFX12-SDAG-FAKE16: ; %bb.0:3737; GFX12-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x243738; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x03739; GFX12-SDAG-FAKE16-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13740; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:16383 scope:SCOPE_SYS3741; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x03742; GFX12-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v03743; GFX12-SDAG-FAKE16-NEXT: s_endpgm3744;3745; GFX9-GISEL-LABEL: flat_inst_salu_offset_2x_13bit_max:3746; GFX9-GISEL: ; %bb.0:3747; GFX9-GISEL-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243748; GFX9-GISEL-NEXT: s_waitcnt lgkmcnt(0)3749; GFX9-GISEL-NEXT: s_add_u32 s0, s0, 0x3fff3750; GFX9-GISEL-NEXT: s_addc_u32 s1, s1, 03751; GFX9-GISEL-NEXT: v_mov_b32_e32 v0, s03752; GFX9-GISEL-NEXT: v_mov_b32_e32 v1, s13753; GFX9-GISEL-NEXT: flat_load_ubyte v0, v[0:1] glc3754; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3755; GFX9-GISEL-NEXT: flat_store_byte v[0:1], v03756; GFX9-GISEL-NEXT: s_endpgm3757;3758; GFX11-GISEL-LABEL: flat_inst_salu_offset_2x_13bit_max:3759; GFX11-GISEL: ; %bb.0:3760; GFX11-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x243761; GFX11-GISEL-NEXT: s_waitcnt lgkmcnt(0)3762; GFX11-GISEL-NEXT: s_add_u32 s0, s0, 0x3fff3763; GFX11-GISEL-NEXT: s_addc_u32 s1, s1, 03764; GFX11-GISEL-NEXT: s_delay_alu instid0(SALU_CYCLE_1)3765; GFX11-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13766; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1] glc dlc3767; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3768; GFX11-GISEL-NEXT: flat_store_b8 v[0:1], v03769; GFX11-GISEL-NEXT: s_endpgm3770;3771; GFX12-GISEL-LABEL: flat_inst_salu_offset_2x_13bit_max:3772; GFX12-GISEL: ; %bb.0:3773; GFX12-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x243774; GFX12-GISEL-NEXT: s_wait_kmcnt 0x03775; GFX12-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13776; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] offset:16383 scope:SCOPE_SYS3777; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x03778; GFX12-GISEL-NEXT: flat_store_b8 v[0:1], v03779; GFX12-GISEL-NEXT: s_endpgm3780 %gep = getelementptr inbounds i8, ptr %p, i64 163833781 %load = load volatile i8, ptr %gep, align 13782 store i8 %load, ptr poison3783 ret void3784}3785 3786define amdgpu_kernel void @flat_inst_salu_offset_2x_neg_11bit_max(ptr %p) {3787; GFX9-SDAG-LABEL: flat_inst_salu_offset_2x_neg_11bit_max:3788; GFX9-SDAG: ; %bb.0:3789; GFX9-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243790; GFX9-SDAG-NEXT: s_waitcnt lgkmcnt(0)3791; GFX9-SDAG-NEXT: v_mov_b32_e32 v0, s03792; GFX9-SDAG-NEXT: v_mov_b32_e32 v1, s13793; GFX9-SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0xfffff000, v03794; GFX9-SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, -1, v1, vcc3795; GFX9-SDAG-NEXT: flat_load_ubyte v0, v[0:1] glc3796; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3797; GFX9-SDAG-NEXT: flat_store_byte v[0:1], v03798; GFX9-SDAG-NEXT: s_endpgm3799;3800; GFX10-LABEL: flat_inst_salu_offset_2x_neg_11bit_max:3801; GFX10: ; %bb.0:3802; GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243803; GFX10-NEXT: s_waitcnt lgkmcnt(0)3804; GFX10-NEXT: s_add_u32 s0, s0, 0xfffff0003805; GFX10-NEXT: s_addc_u32 s1, s1, -13806; GFX10-NEXT: v_mov_b32_e32 v0, s03807; GFX10-NEXT: v_mov_b32_e32 v1, s13808; GFX10-NEXT: flat_load_ubyte v0, v[0:1] glc dlc3809; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3810; GFX10-NEXT: flat_store_byte v[0:1], v03811; GFX10-NEXT: s_endpgm3812;3813; GFX11-SDAG-TRUE16-LABEL: flat_inst_salu_offset_2x_neg_11bit_max:3814; GFX11-SDAG-TRUE16: ; %bb.0:3815; GFX11-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x243816; GFX11-SDAG-TRUE16-NEXT: s_waitcnt lgkmcnt(0)3817; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, s0, 0xfffff000, s03818; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)3819; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, -1, s1, s03820; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] glc dlc3821; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3822; GFX11-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v03823; GFX11-SDAG-TRUE16-NEXT: s_endpgm3824;3825; GFX11-SDAG-FAKE16-LABEL: flat_inst_salu_offset_2x_neg_11bit_max:3826; GFX11-SDAG-FAKE16: ; %bb.0:3827; GFX11-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x243828; GFX11-SDAG-FAKE16-NEXT: s_waitcnt lgkmcnt(0)3829; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, s0, 0xfffff000, s03830; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)3831; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, -1, s1, s03832; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] glc dlc3833; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3834; GFX11-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v03835; GFX11-SDAG-FAKE16-NEXT: s_endpgm3836;3837; GFX12-SDAG-TRUE16-LABEL: flat_inst_salu_offset_2x_neg_11bit_max:3838; GFX12-SDAG-TRUE16: ; %bb.0:3839; GFX12-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x243840; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x03841; GFX12-SDAG-TRUE16-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13842; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:-4096 scope:SCOPE_SYS3843; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x03844; GFX12-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v03845; GFX12-SDAG-TRUE16-NEXT: s_endpgm3846;3847; GFX12-SDAG-FAKE16-LABEL: flat_inst_salu_offset_2x_neg_11bit_max:3848; GFX12-SDAG-FAKE16: ; %bb.0:3849; GFX12-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x243850; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x03851; GFX12-SDAG-FAKE16-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13852; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:-4096 scope:SCOPE_SYS3853; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x03854; GFX12-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v03855; GFX12-SDAG-FAKE16-NEXT: s_endpgm3856;3857; GFX9-GISEL-LABEL: flat_inst_salu_offset_2x_neg_11bit_max:3858; GFX9-GISEL: ; %bb.0:3859; GFX9-GISEL-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243860; GFX9-GISEL-NEXT: s_waitcnt lgkmcnt(0)3861; GFX9-GISEL-NEXT: s_add_u32 s0, s0, 0xfffff0003862; GFX9-GISEL-NEXT: s_addc_u32 s1, s1, -13863; GFX9-GISEL-NEXT: v_mov_b32_e32 v0, s03864; GFX9-GISEL-NEXT: v_mov_b32_e32 v1, s13865; GFX9-GISEL-NEXT: flat_load_ubyte v0, v[0:1] glc3866; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3867; GFX9-GISEL-NEXT: flat_store_byte v[0:1], v03868; GFX9-GISEL-NEXT: s_endpgm3869;3870; GFX11-GISEL-LABEL: flat_inst_salu_offset_2x_neg_11bit_max:3871; GFX11-GISEL: ; %bb.0:3872; GFX11-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x243873; GFX11-GISEL-NEXT: s_waitcnt lgkmcnt(0)3874; GFX11-GISEL-NEXT: s_add_u32 s0, s0, 0xfffff0003875; GFX11-GISEL-NEXT: s_addc_u32 s1, s1, -13876; GFX11-GISEL-NEXT: s_delay_alu instid0(SALU_CYCLE_1)3877; GFX11-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13878; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1] glc dlc3879; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3880; GFX11-GISEL-NEXT: flat_store_b8 v[0:1], v03881; GFX11-GISEL-NEXT: s_endpgm3882;3883; GFX12-GISEL-LABEL: flat_inst_salu_offset_2x_neg_11bit_max:3884; GFX12-GISEL: ; %bb.0:3885; GFX12-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x243886; GFX12-GISEL-NEXT: s_wait_kmcnt 0x03887; GFX12-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13888; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] offset:-4096 scope:SCOPE_SYS3889; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x03890; GFX12-GISEL-NEXT: flat_store_b8 v[0:1], v03891; GFX12-GISEL-NEXT: s_endpgm3892 %gep = getelementptr inbounds i8, ptr %p, i64 -40963893 %load = load volatile i8, ptr %gep, align 13894 store i8 %load, ptr poison3895 ret void3896}3897 3898define amdgpu_kernel void @flat_inst_salu_offset_2x_neg_12bit_max(ptr %p) {3899; GFX9-SDAG-LABEL: flat_inst_salu_offset_2x_neg_12bit_max:3900; GFX9-SDAG: ; %bb.0:3901; GFX9-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243902; GFX9-SDAG-NEXT: s_waitcnt lgkmcnt(0)3903; GFX9-SDAG-NEXT: v_mov_b32_e32 v0, s03904; GFX9-SDAG-NEXT: v_mov_b32_e32 v1, s13905; GFX9-SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0xffffe000, v03906; GFX9-SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, -1, v1, vcc3907; GFX9-SDAG-NEXT: flat_load_ubyte v0, v[0:1] glc3908; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3909; GFX9-SDAG-NEXT: flat_store_byte v[0:1], v03910; GFX9-SDAG-NEXT: s_endpgm3911;3912; GFX10-LABEL: flat_inst_salu_offset_2x_neg_12bit_max:3913; GFX10: ; %bb.0:3914; GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243915; GFX10-NEXT: s_waitcnt lgkmcnt(0)3916; GFX10-NEXT: s_add_u32 s0, s0, 0xffffe0003917; GFX10-NEXT: s_addc_u32 s1, s1, -13918; GFX10-NEXT: v_mov_b32_e32 v0, s03919; GFX10-NEXT: v_mov_b32_e32 v1, s13920; GFX10-NEXT: flat_load_ubyte v0, v[0:1] glc dlc3921; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3922; GFX10-NEXT: flat_store_byte v[0:1], v03923; GFX10-NEXT: s_endpgm3924;3925; GFX11-SDAG-TRUE16-LABEL: flat_inst_salu_offset_2x_neg_12bit_max:3926; GFX11-SDAG-TRUE16: ; %bb.0:3927; GFX11-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x243928; GFX11-SDAG-TRUE16-NEXT: s_waitcnt lgkmcnt(0)3929; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, s0, 0xffffe000, s03930; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)3931; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, -1, s1, s03932; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] glc dlc3933; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3934; GFX11-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v03935; GFX11-SDAG-TRUE16-NEXT: s_endpgm3936;3937; GFX11-SDAG-FAKE16-LABEL: flat_inst_salu_offset_2x_neg_12bit_max:3938; GFX11-SDAG-FAKE16: ; %bb.0:3939; GFX11-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x243940; GFX11-SDAG-FAKE16-NEXT: s_waitcnt lgkmcnt(0)3941; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, s0, 0xffffe000, s03942; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)3943; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, -1, s1, s03944; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] glc dlc3945; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3946; GFX11-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v03947; GFX11-SDAG-FAKE16-NEXT: s_endpgm3948;3949; GFX12-SDAG-TRUE16-LABEL: flat_inst_salu_offset_2x_neg_12bit_max:3950; GFX12-SDAG-TRUE16: ; %bb.0:3951; GFX12-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x243952; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x03953; GFX12-SDAG-TRUE16-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13954; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:-8192 scope:SCOPE_SYS3955; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x03956; GFX12-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v03957; GFX12-SDAG-TRUE16-NEXT: s_endpgm3958;3959; GFX12-SDAG-FAKE16-LABEL: flat_inst_salu_offset_2x_neg_12bit_max:3960; GFX12-SDAG-FAKE16: ; %bb.0:3961; GFX12-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x243962; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x03963; GFX12-SDAG-FAKE16-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13964; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:-8192 scope:SCOPE_SYS3965; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x03966; GFX12-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v03967; GFX12-SDAG-FAKE16-NEXT: s_endpgm3968;3969; GFX9-GISEL-LABEL: flat_inst_salu_offset_2x_neg_12bit_max:3970; GFX9-GISEL: ; %bb.0:3971; GFX9-GISEL-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243972; GFX9-GISEL-NEXT: s_waitcnt lgkmcnt(0)3973; GFX9-GISEL-NEXT: s_add_u32 s0, s0, 0xffffe0003974; GFX9-GISEL-NEXT: s_addc_u32 s1, s1, -13975; GFX9-GISEL-NEXT: v_mov_b32_e32 v0, s03976; GFX9-GISEL-NEXT: v_mov_b32_e32 v1, s13977; GFX9-GISEL-NEXT: flat_load_ubyte v0, v[0:1] glc3978; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3979; GFX9-GISEL-NEXT: flat_store_byte v[0:1], v03980; GFX9-GISEL-NEXT: s_endpgm3981;3982; GFX11-GISEL-LABEL: flat_inst_salu_offset_2x_neg_12bit_max:3983; GFX11-GISEL: ; %bb.0:3984; GFX11-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x243985; GFX11-GISEL-NEXT: s_waitcnt lgkmcnt(0)3986; GFX11-GISEL-NEXT: s_add_u32 s0, s0, 0xffffe0003987; GFX11-GISEL-NEXT: s_addc_u32 s1, s1, -13988; GFX11-GISEL-NEXT: s_delay_alu instid0(SALU_CYCLE_1)3989; GFX11-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s13990; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1] glc dlc3991; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)3992; GFX11-GISEL-NEXT: flat_store_b8 v[0:1], v03993; GFX11-GISEL-NEXT: s_endpgm3994;3995; GFX12-GISEL-LABEL: flat_inst_salu_offset_2x_neg_12bit_max:3996; GFX12-GISEL: ; %bb.0:3997; GFX12-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x243998; GFX12-GISEL-NEXT: s_wait_kmcnt 0x03999; GFX12-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s14000; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] offset:-8192 scope:SCOPE_SYS4001; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x04002; GFX12-GISEL-NEXT: flat_store_b8 v[0:1], v04003; GFX12-GISEL-NEXT: s_endpgm4004 %gep = getelementptr inbounds i8, ptr %p, i64 -81924005 %load = load volatile i8, ptr %gep, align 14006 store i8 %load, ptr poison4007 ret void4008}4009 4010define amdgpu_kernel void @flat_inst_salu_offset_2x_neg_13bit_max(ptr %p) {4011; GFX9-SDAG-LABEL: flat_inst_salu_offset_2x_neg_13bit_max:4012; GFX9-SDAG: ; %bb.0:4013; GFX9-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244014; GFX9-SDAG-NEXT: s_waitcnt lgkmcnt(0)4015; GFX9-SDAG-NEXT: v_mov_b32_e32 v0, s04016; GFX9-SDAG-NEXT: v_mov_b32_e32 v1, s14017; GFX9-SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0xffffc000, v04018; GFX9-SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, -1, v1, vcc4019; GFX9-SDAG-NEXT: flat_load_ubyte v0, v[0:1] glc4020; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4021; GFX9-SDAG-NEXT: flat_store_byte v[0:1], v04022; GFX9-SDAG-NEXT: s_endpgm4023;4024; GFX10-LABEL: flat_inst_salu_offset_2x_neg_13bit_max:4025; GFX10: ; %bb.0:4026; GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244027; GFX10-NEXT: s_waitcnt lgkmcnt(0)4028; GFX10-NEXT: s_add_u32 s0, s0, 0xffffc0004029; GFX10-NEXT: s_addc_u32 s1, s1, -14030; GFX10-NEXT: v_mov_b32_e32 v0, s04031; GFX10-NEXT: v_mov_b32_e32 v1, s14032; GFX10-NEXT: flat_load_ubyte v0, v[0:1] glc dlc4033; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4034; GFX10-NEXT: flat_store_byte v[0:1], v04035; GFX10-NEXT: s_endpgm4036;4037; GFX11-SDAG-TRUE16-LABEL: flat_inst_salu_offset_2x_neg_13bit_max:4038; GFX11-SDAG-TRUE16: ; %bb.0:4039; GFX11-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x244040; GFX11-SDAG-TRUE16-NEXT: s_waitcnt lgkmcnt(0)4041; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, s0, 0xffffc000, s04042; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)4043; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, -1, s1, s04044; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] glc dlc4045; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4046; GFX11-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v04047; GFX11-SDAG-TRUE16-NEXT: s_endpgm4048;4049; GFX11-SDAG-FAKE16-LABEL: flat_inst_salu_offset_2x_neg_13bit_max:4050; GFX11-SDAG-FAKE16: ; %bb.0:4051; GFX11-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x244052; GFX11-SDAG-FAKE16-NEXT: s_waitcnt lgkmcnt(0)4053; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, s0, 0xffffc000, s04054; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)4055; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, -1, s1, s04056; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] glc dlc4057; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4058; GFX11-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v04059; GFX11-SDAG-FAKE16-NEXT: s_endpgm4060;4061; GFX12-SDAG-TRUE16-LABEL: flat_inst_salu_offset_2x_neg_13bit_max:4062; GFX12-SDAG-TRUE16: ; %bb.0:4063; GFX12-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x244064; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x04065; GFX12-SDAG-TRUE16-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s14066; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:-16384 scope:SCOPE_SYS4067; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x04068; GFX12-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v04069; GFX12-SDAG-TRUE16-NEXT: s_endpgm4070;4071; GFX12-SDAG-FAKE16-LABEL: flat_inst_salu_offset_2x_neg_13bit_max:4072; GFX12-SDAG-FAKE16: ; %bb.0:4073; GFX12-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x244074; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x04075; GFX12-SDAG-FAKE16-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s14076; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:-16384 scope:SCOPE_SYS4077; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x04078; GFX12-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v04079; GFX12-SDAG-FAKE16-NEXT: s_endpgm4080;4081; GFX9-GISEL-LABEL: flat_inst_salu_offset_2x_neg_13bit_max:4082; GFX9-GISEL: ; %bb.0:4083; GFX9-GISEL-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244084; GFX9-GISEL-NEXT: s_waitcnt lgkmcnt(0)4085; GFX9-GISEL-NEXT: s_add_u32 s0, s0, 0xffffc0004086; GFX9-GISEL-NEXT: s_addc_u32 s1, s1, -14087; GFX9-GISEL-NEXT: v_mov_b32_e32 v0, s04088; GFX9-GISEL-NEXT: v_mov_b32_e32 v1, s14089; GFX9-GISEL-NEXT: flat_load_ubyte v0, v[0:1] glc4090; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4091; GFX9-GISEL-NEXT: flat_store_byte v[0:1], v04092; GFX9-GISEL-NEXT: s_endpgm4093;4094; GFX11-GISEL-LABEL: flat_inst_salu_offset_2x_neg_13bit_max:4095; GFX11-GISEL: ; %bb.0:4096; GFX11-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x244097; GFX11-GISEL-NEXT: s_waitcnt lgkmcnt(0)4098; GFX11-GISEL-NEXT: s_add_u32 s0, s0, 0xffffc0004099; GFX11-GISEL-NEXT: s_addc_u32 s1, s1, -14100; GFX11-GISEL-NEXT: s_delay_alu instid0(SALU_CYCLE_1)4101; GFX11-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s14102; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1] glc dlc4103; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4104; GFX11-GISEL-NEXT: flat_store_b8 v[0:1], v04105; GFX11-GISEL-NEXT: s_endpgm4106;4107; GFX12-GISEL-LABEL: flat_inst_salu_offset_2x_neg_13bit_max:4108; GFX12-GISEL: ; %bb.0:4109; GFX12-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x244110; GFX12-GISEL-NEXT: s_wait_kmcnt 0x04111; GFX12-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s14112; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] offset:-16384 scope:SCOPE_SYS4113; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x04114; GFX12-GISEL-NEXT: flat_store_b8 v[0:1], v04115; GFX12-GISEL-NEXT: s_endpgm4116 %gep = getelementptr inbounds i8, ptr %p, i64 -163844117 %load = load volatile i8, ptr %gep, align 14118 store i8 %load, ptr poison4119 ret void4120}4121 4122; Fill 11-bit low-bits (1ull << 33) | 20474123define amdgpu_kernel void @flat_inst_salu_offset_64bit_11bit_split0(ptr %p) {4124; GFX9-SDAG-LABEL: flat_inst_salu_offset_64bit_11bit_split0:4125; GFX9-SDAG: ; %bb.0:4126; GFX9-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244127; GFX9-SDAG-NEXT: s_waitcnt lgkmcnt(0)4128; GFX9-SDAG-NEXT: v_mov_b32_e32 v1, s14129; GFX9-SDAG-NEXT: v_add_co_u32_e64 v0, vcc, 0, s04130; GFX9-SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, 2, v1, vcc4131; GFX9-SDAG-NEXT: flat_load_ubyte v0, v[0:1] offset:2047 glc4132; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4133; GFX9-SDAG-NEXT: flat_store_byte v[0:1], v04134; GFX9-SDAG-NEXT: s_endpgm4135;4136; GFX10-LABEL: flat_inst_salu_offset_64bit_11bit_split0:4137; GFX10: ; %bb.0:4138; GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244139; GFX10-NEXT: s_waitcnt lgkmcnt(0)4140; GFX10-NEXT: s_add_u32 s0, s0, 0x7ff4141; GFX10-NEXT: s_addc_u32 s1, s1, 24142; GFX10-NEXT: v_mov_b32_e32 v0, s04143; GFX10-NEXT: v_mov_b32_e32 v1, s14144; GFX10-NEXT: flat_load_ubyte v0, v[0:1] glc dlc4145; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4146; GFX10-NEXT: flat_store_byte v[0:1], v04147; GFX10-NEXT: s_endpgm4148;4149; GFX11-SDAG-TRUE16-LABEL: flat_inst_salu_offset_64bit_11bit_split0:4150; GFX11-SDAG-TRUE16: ; %bb.0:4151; GFX11-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x244152; GFX11-SDAG-TRUE16-NEXT: s_waitcnt lgkmcnt(0)4153; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, s0, 0, s04154; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)4155; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, s1, s04156; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:2047 glc dlc4157; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4158; GFX11-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v04159; GFX11-SDAG-TRUE16-NEXT: s_endpgm4160;4161; GFX11-SDAG-FAKE16-LABEL: flat_inst_salu_offset_64bit_11bit_split0:4162; GFX11-SDAG-FAKE16: ; %bb.0:4163; GFX11-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x244164; GFX11-SDAG-FAKE16-NEXT: s_waitcnt lgkmcnt(0)4165; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, s0, 0, s04166; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)4167; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, s1, s04168; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:2047 glc dlc4169; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4170; GFX11-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v04171; GFX11-SDAG-FAKE16-NEXT: s_endpgm4172;4173; GFX12-SDAG-TRUE16-LABEL: flat_inst_salu_offset_64bit_11bit_split0:4174; GFX12-SDAG-TRUE16: ; %bb.0:4175; GFX12-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x244176; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x04177; GFX12-SDAG-TRUE16-NEXT: v_add_co_u32 v0, s0, 0, s04178; GFX12-SDAG-TRUE16-NEXT: s_wait_alu depctr_va_sdst(0)4179; GFX12-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, s1, s04180; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:2047 scope:SCOPE_SYS4181; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x04182; GFX12-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v04183; GFX12-SDAG-TRUE16-NEXT: s_endpgm4184;4185; GFX12-SDAG-FAKE16-LABEL: flat_inst_salu_offset_64bit_11bit_split0:4186; GFX12-SDAG-FAKE16: ; %bb.0:4187; GFX12-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x244188; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x04189; GFX12-SDAG-FAKE16-NEXT: v_add_co_u32 v0, s0, 0, s04190; GFX12-SDAG-FAKE16-NEXT: s_wait_alu depctr_va_sdst(0)4191; GFX12-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, s1, s04192; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:2047 scope:SCOPE_SYS4193; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x04194; GFX12-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v04195; GFX12-SDAG-FAKE16-NEXT: s_endpgm4196;4197; GFX9-GISEL-LABEL: flat_inst_salu_offset_64bit_11bit_split0:4198; GFX9-GISEL: ; %bb.0:4199; GFX9-GISEL-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244200; GFX9-GISEL-NEXT: s_waitcnt lgkmcnt(0)4201; GFX9-GISEL-NEXT: s_add_u32 s0, s0, 0x7ff4202; GFX9-GISEL-NEXT: s_addc_u32 s1, s1, 24203; GFX9-GISEL-NEXT: v_mov_b32_e32 v0, s04204; GFX9-GISEL-NEXT: v_mov_b32_e32 v1, s14205; GFX9-GISEL-NEXT: flat_load_ubyte v0, v[0:1] glc4206; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4207; GFX9-GISEL-NEXT: flat_store_byte v[0:1], v04208; GFX9-GISEL-NEXT: s_endpgm4209;4210; GFX11-GISEL-LABEL: flat_inst_salu_offset_64bit_11bit_split0:4211; GFX11-GISEL: ; %bb.0:4212; GFX11-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x244213; GFX11-GISEL-NEXT: s_waitcnt lgkmcnt(0)4214; GFX11-GISEL-NEXT: s_add_u32 s0, s0, 0x7ff4215; GFX11-GISEL-NEXT: s_addc_u32 s1, s1, 24216; GFX11-GISEL-NEXT: s_delay_alu instid0(SALU_CYCLE_1)4217; GFX11-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s14218; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1] glc dlc4219; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4220; GFX11-GISEL-NEXT: flat_store_b8 v[0:1], v04221; GFX11-GISEL-NEXT: s_endpgm4222;4223; GFX12-GISEL-LABEL: flat_inst_salu_offset_64bit_11bit_split0:4224; GFX12-GISEL: ; %bb.0:4225; GFX12-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x244226; GFX12-GISEL-NEXT: s_wait_kmcnt 0x04227; GFX12-GISEL-NEXT: s_add_co_u32 s0, s0, 0x7ff4228; GFX12-GISEL-NEXT: s_add_co_ci_u32 s1, s1, 24229; GFX12-GISEL-NEXT: s_delay_alu instid0(SALU_CYCLE_1)4230; GFX12-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s14231; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] scope:SCOPE_SYS4232; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x04233; GFX12-GISEL-NEXT: flat_store_b8 v[0:1], v04234; GFX12-GISEL-NEXT: s_endpgm4235 %gep = getelementptr inbounds i8, ptr %p, i64 85899366394236 %load = load volatile i8, ptr %gep, align 14237 store i8 %load, ptr poison4238 ret void4239}4240 4241; Fill 11-bit low-bits (1ull << 33) | 20484242define amdgpu_kernel void @flat_inst_salu_offset_64bit_11bit_split1(ptr %p) {4243; GFX9-SDAG-LABEL: flat_inst_salu_offset_64bit_11bit_split1:4244; GFX9-SDAG: ; %bb.0:4245; GFX9-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244246; GFX9-SDAG-NEXT: s_waitcnt lgkmcnt(0)4247; GFX9-SDAG-NEXT: v_mov_b32_e32 v1, s14248; GFX9-SDAG-NEXT: v_add_co_u32_e64 v0, vcc, 0, s04249; GFX9-SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, 2, v1, vcc4250; GFX9-SDAG-NEXT: flat_load_ubyte v0, v[0:1] offset:2048 glc4251; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4252; GFX9-SDAG-NEXT: flat_store_byte v[0:1], v04253; GFX9-SDAG-NEXT: s_endpgm4254;4255; GFX10-LABEL: flat_inst_salu_offset_64bit_11bit_split1:4256; GFX10: ; %bb.0:4257; GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244258; GFX10-NEXT: s_waitcnt lgkmcnt(0)4259; GFX10-NEXT: s_add_u32 s0, s0, 0x8004260; GFX10-NEXT: s_addc_u32 s1, s1, 24261; GFX10-NEXT: v_mov_b32_e32 v0, s04262; GFX10-NEXT: v_mov_b32_e32 v1, s14263; GFX10-NEXT: flat_load_ubyte v0, v[0:1] glc dlc4264; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4265; GFX10-NEXT: flat_store_byte v[0:1], v04266; GFX10-NEXT: s_endpgm4267;4268; GFX11-SDAG-TRUE16-LABEL: flat_inst_salu_offset_64bit_11bit_split1:4269; GFX11-SDAG-TRUE16: ; %bb.0:4270; GFX11-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x244271; GFX11-SDAG-TRUE16-NEXT: s_waitcnt lgkmcnt(0)4272; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, s0, 0, s04273; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)4274; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, s1, s04275; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:2048 glc dlc4276; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4277; GFX11-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v04278; GFX11-SDAG-TRUE16-NEXT: s_endpgm4279;4280; GFX11-SDAG-FAKE16-LABEL: flat_inst_salu_offset_64bit_11bit_split1:4281; GFX11-SDAG-FAKE16: ; %bb.0:4282; GFX11-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x244283; GFX11-SDAG-FAKE16-NEXT: s_waitcnt lgkmcnt(0)4284; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, s0, 0, s04285; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)4286; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, s1, s04287; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:2048 glc dlc4288; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4289; GFX11-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v04290; GFX11-SDAG-FAKE16-NEXT: s_endpgm4291;4292; GFX12-SDAG-TRUE16-LABEL: flat_inst_salu_offset_64bit_11bit_split1:4293; GFX12-SDAG-TRUE16: ; %bb.0:4294; GFX12-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x244295; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x04296; GFX12-SDAG-TRUE16-NEXT: v_add_co_u32 v0, s0, 0, s04297; GFX12-SDAG-TRUE16-NEXT: s_wait_alu depctr_va_sdst(0)4298; GFX12-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, s1, s04299; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:2048 scope:SCOPE_SYS4300; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x04301; GFX12-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v04302; GFX12-SDAG-TRUE16-NEXT: s_endpgm4303;4304; GFX12-SDAG-FAKE16-LABEL: flat_inst_salu_offset_64bit_11bit_split1:4305; GFX12-SDAG-FAKE16: ; %bb.0:4306; GFX12-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x244307; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x04308; GFX12-SDAG-FAKE16-NEXT: v_add_co_u32 v0, s0, 0, s04309; GFX12-SDAG-FAKE16-NEXT: s_wait_alu depctr_va_sdst(0)4310; GFX12-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, s1, s04311; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:2048 scope:SCOPE_SYS4312; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x04313; GFX12-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v04314; GFX12-SDAG-FAKE16-NEXT: s_endpgm4315;4316; GFX9-GISEL-LABEL: flat_inst_salu_offset_64bit_11bit_split1:4317; GFX9-GISEL: ; %bb.0:4318; GFX9-GISEL-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244319; GFX9-GISEL-NEXT: s_waitcnt lgkmcnt(0)4320; GFX9-GISEL-NEXT: s_add_u32 s0, s0, 0x8004321; GFX9-GISEL-NEXT: s_addc_u32 s1, s1, 24322; GFX9-GISEL-NEXT: v_mov_b32_e32 v0, s04323; GFX9-GISEL-NEXT: v_mov_b32_e32 v1, s14324; GFX9-GISEL-NEXT: flat_load_ubyte v0, v[0:1] glc4325; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4326; GFX9-GISEL-NEXT: flat_store_byte v[0:1], v04327; GFX9-GISEL-NEXT: s_endpgm4328;4329; GFX11-GISEL-LABEL: flat_inst_salu_offset_64bit_11bit_split1:4330; GFX11-GISEL: ; %bb.0:4331; GFX11-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x244332; GFX11-GISEL-NEXT: s_waitcnt lgkmcnt(0)4333; GFX11-GISEL-NEXT: s_add_u32 s0, s0, 0x8004334; GFX11-GISEL-NEXT: s_addc_u32 s1, s1, 24335; GFX11-GISEL-NEXT: s_delay_alu instid0(SALU_CYCLE_1)4336; GFX11-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s14337; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1] glc dlc4338; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4339; GFX11-GISEL-NEXT: flat_store_b8 v[0:1], v04340; GFX11-GISEL-NEXT: s_endpgm4341;4342; GFX12-GISEL-LABEL: flat_inst_salu_offset_64bit_11bit_split1:4343; GFX12-GISEL: ; %bb.0:4344; GFX12-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x244345; GFX12-GISEL-NEXT: s_wait_kmcnt 0x04346; GFX12-GISEL-NEXT: s_add_co_u32 s0, s0, 0x8004347; GFX12-GISEL-NEXT: s_add_co_ci_u32 s1, s1, 24348; GFX12-GISEL-NEXT: s_delay_alu instid0(SALU_CYCLE_1)4349; GFX12-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s14350; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] scope:SCOPE_SYS4351; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x04352; GFX12-GISEL-NEXT: flat_store_b8 v[0:1], v04353; GFX12-GISEL-NEXT: s_endpgm4354 %gep = getelementptr inbounds i8, ptr %p, i64 85899366404355 %load = load volatile i8, ptr %gep, align 14356 store i8 %load, ptr poison4357 ret void4358}4359 4360; Fill 12-bit low-bits (1ull << 33) | 40954361define amdgpu_kernel void @flat_inst_salu_offset_64bit_12bit_split0(ptr %p) {4362; GFX9-SDAG-LABEL: flat_inst_salu_offset_64bit_12bit_split0:4363; GFX9-SDAG: ; %bb.0:4364; GFX9-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244365; GFX9-SDAG-NEXT: s_waitcnt lgkmcnt(0)4366; GFX9-SDAG-NEXT: v_mov_b32_e32 v1, s14367; GFX9-SDAG-NEXT: v_add_co_u32_e64 v0, vcc, 0, s04368; GFX9-SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, 2, v1, vcc4369; GFX9-SDAG-NEXT: flat_load_ubyte v0, v[0:1] offset:4095 glc4370; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4371; GFX9-SDAG-NEXT: flat_store_byte v[0:1], v04372; GFX9-SDAG-NEXT: s_endpgm4373;4374; GFX10-LABEL: flat_inst_salu_offset_64bit_12bit_split0:4375; GFX10: ; %bb.0:4376; GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244377; GFX10-NEXT: s_waitcnt lgkmcnt(0)4378; GFX10-NEXT: s_add_u32 s0, s0, 0xfff4379; GFX10-NEXT: s_addc_u32 s1, s1, 24380; GFX10-NEXT: v_mov_b32_e32 v0, s04381; GFX10-NEXT: v_mov_b32_e32 v1, s14382; GFX10-NEXT: flat_load_ubyte v0, v[0:1] glc dlc4383; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4384; GFX10-NEXT: flat_store_byte v[0:1], v04385; GFX10-NEXT: s_endpgm4386;4387; GFX11-SDAG-TRUE16-LABEL: flat_inst_salu_offset_64bit_12bit_split0:4388; GFX11-SDAG-TRUE16: ; %bb.0:4389; GFX11-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x244390; GFX11-SDAG-TRUE16-NEXT: s_waitcnt lgkmcnt(0)4391; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, s0, 0, s04392; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)4393; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, s1, s04394; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:4095 glc dlc4395; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4396; GFX11-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v04397; GFX11-SDAG-TRUE16-NEXT: s_endpgm4398;4399; GFX11-SDAG-FAKE16-LABEL: flat_inst_salu_offset_64bit_12bit_split0:4400; GFX11-SDAG-FAKE16: ; %bb.0:4401; GFX11-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x244402; GFX11-SDAG-FAKE16-NEXT: s_waitcnt lgkmcnt(0)4403; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, s0, 0, s04404; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)4405; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, s1, s04406; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:4095 glc dlc4407; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4408; GFX11-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v04409; GFX11-SDAG-FAKE16-NEXT: s_endpgm4410;4411; GFX12-SDAG-TRUE16-LABEL: flat_inst_salu_offset_64bit_12bit_split0:4412; GFX12-SDAG-TRUE16: ; %bb.0:4413; GFX12-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x244414; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x04415; GFX12-SDAG-TRUE16-NEXT: v_add_co_u32 v0, s0, 0, s04416; GFX12-SDAG-TRUE16-NEXT: s_wait_alu depctr_va_sdst(0)4417; GFX12-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, s1, s04418; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:4095 scope:SCOPE_SYS4419; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x04420; GFX12-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v04421; GFX12-SDAG-TRUE16-NEXT: s_endpgm4422;4423; GFX12-SDAG-FAKE16-LABEL: flat_inst_salu_offset_64bit_12bit_split0:4424; GFX12-SDAG-FAKE16: ; %bb.0:4425; GFX12-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x244426; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x04427; GFX12-SDAG-FAKE16-NEXT: v_add_co_u32 v0, s0, 0, s04428; GFX12-SDAG-FAKE16-NEXT: s_wait_alu depctr_va_sdst(0)4429; GFX12-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, s1, s04430; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:4095 scope:SCOPE_SYS4431; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x04432; GFX12-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v04433; GFX12-SDAG-FAKE16-NEXT: s_endpgm4434;4435; GFX9-GISEL-LABEL: flat_inst_salu_offset_64bit_12bit_split0:4436; GFX9-GISEL: ; %bb.0:4437; GFX9-GISEL-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244438; GFX9-GISEL-NEXT: s_waitcnt lgkmcnt(0)4439; GFX9-GISEL-NEXT: s_add_u32 s0, s0, 0xfff4440; GFX9-GISEL-NEXT: s_addc_u32 s1, s1, 24441; GFX9-GISEL-NEXT: v_mov_b32_e32 v0, s04442; GFX9-GISEL-NEXT: v_mov_b32_e32 v1, s14443; GFX9-GISEL-NEXT: flat_load_ubyte v0, v[0:1] glc4444; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4445; GFX9-GISEL-NEXT: flat_store_byte v[0:1], v04446; GFX9-GISEL-NEXT: s_endpgm4447;4448; GFX11-GISEL-LABEL: flat_inst_salu_offset_64bit_12bit_split0:4449; GFX11-GISEL: ; %bb.0:4450; GFX11-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x244451; GFX11-GISEL-NEXT: s_waitcnt lgkmcnt(0)4452; GFX11-GISEL-NEXT: s_add_u32 s0, s0, 0xfff4453; GFX11-GISEL-NEXT: s_addc_u32 s1, s1, 24454; GFX11-GISEL-NEXT: s_delay_alu instid0(SALU_CYCLE_1)4455; GFX11-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s14456; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1] glc dlc4457; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4458; GFX11-GISEL-NEXT: flat_store_b8 v[0:1], v04459; GFX11-GISEL-NEXT: s_endpgm4460;4461; GFX12-GISEL-LABEL: flat_inst_salu_offset_64bit_12bit_split0:4462; GFX12-GISEL: ; %bb.0:4463; GFX12-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x244464; GFX12-GISEL-NEXT: s_wait_kmcnt 0x04465; GFX12-GISEL-NEXT: s_add_co_u32 s0, s0, 0xfff4466; GFX12-GISEL-NEXT: s_add_co_ci_u32 s1, s1, 24467; GFX12-GISEL-NEXT: s_delay_alu instid0(SALU_CYCLE_1)4468; GFX12-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s14469; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] scope:SCOPE_SYS4470; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x04471; GFX12-GISEL-NEXT: flat_store_b8 v[0:1], v04472; GFX12-GISEL-NEXT: s_endpgm4473 %gep = getelementptr inbounds i8, ptr %p, i64 85899386874474 %load = load volatile i8, ptr %gep, align 14475 store i8 %load, ptr poison4476 ret void4477}4478 4479; Fill 12-bit low-bits (1ull << 33) | 40964480define amdgpu_kernel void @flat_inst_salu_offset_64bit_12bit_split1(ptr %p) {4481; GFX9-SDAG-LABEL: flat_inst_salu_offset_64bit_12bit_split1:4482; GFX9-SDAG: ; %bb.0:4483; GFX9-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244484; GFX9-SDAG-NEXT: s_waitcnt lgkmcnt(0)4485; GFX9-SDAG-NEXT: v_mov_b32_e32 v0, s04486; GFX9-SDAG-NEXT: v_mov_b32_e32 v1, s14487; GFX9-SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0x1000, v04488; GFX9-SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, 2, v1, vcc4489; GFX9-SDAG-NEXT: flat_load_ubyte v0, v[0:1] glc4490; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4491; GFX9-SDAG-NEXT: flat_store_byte v[0:1], v04492; GFX9-SDAG-NEXT: s_endpgm4493;4494; GFX10-LABEL: flat_inst_salu_offset_64bit_12bit_split1:4495; GFX10: ; %bb.0:4496; GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244497; GFX10-NEXT: s_waitcnt lgkmcnt(0)4498; GFX10-NEXT: s_add_u32 s0, s0, 0x10004499; GFX10-NEXT: s_addc_u32 s1, s1, 24500; GFX10-NEXT: v_mov_b32_e32 v0, s04501; GFX10-NEXT: v_mov_b32_e32 v1, s14502; GFX10-NEXT: flat_load_ubyte v0, v[0:1] glc dlc4503; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4504; GFX10-NEXT: flat_store_byte v[0:1], v04505; GFX10-NEXT: s_endpgm4506;4507; GFX11-SDAG-TRUE16-LABEL: flat_inst_salu_offset_64bit_12bit_split1:4508; GFX11-SDAG-TRUE16: ; %bb.0:4509; GFX11-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x244510; GFX11-SDAG-TRUE16-NEXT: s_waitcnt lgkmcnt(0)4511; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, s0, 0x1000, s04512; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)4513; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, s1, s04514; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] glc dlc4515; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4516; GFX11-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v04517; GFX11-SDAG-TRUE16-NEXT: s_endpgm4518;4519; GFX11-SDAG-FAKE16-LABEL: flat_inst_salu_offset_64bit_12bit_split1:4520; GFX11-SDAG-FAKE16: ; %bb.0:4521; GFX11-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x244522; GFX11-SDAG-FAKE16-NEXT: s_waitcnt lgkmcnt(0)4523; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, s0, 0x1000, s04524; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)4525; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, s1, s04526; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] glc dlc4527; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4528; GFX11-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v04529; GFX11-SDAG-FAKE16-NEXT: s_endpgm4530;4531; GFX12-SDAG-TRUE16-LABEL: flat_inst_salu_offset_64bit_12bit_split1:4532; GFX12-SDAG-TRUE16: ; %bb.0:4533; GFX12-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x244534; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x04535; GFX12-SDAG-TRUE16-NEXT: v_add_co_u32 v0, s0, 0, s04536; GFX12-SDAG-TRUE16-NEXT: s_wait_alu depctr_va_sdst(0)4537; GFX12-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, s1, s04538; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:4096 scope:SCOPE_SYS4539; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x04540; GFX12-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v04541; GFX12-SDAG-TRUE16-NEXT: s_endpgm4542;4543; GFX12-SDAG-FAKE16-LABEL: flat_inst_salu_offset_64bit_12bit_split1:4544; GFX12-SDAG-FAKE16: ; %bb.0:4545; GFX12-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x244546; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x04547; GFX12-SDAG-FAKE16-NEXT: v_add_co_u32 v0, s0, 0, s04548; GFX12-SDAG-FAKE16-NEXT: s_wait_alu depctr_va_sdst(0)4549; GFX12-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, s1, s04550; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:4096 scope:SCOPE_SYS4551; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x04552; GFX12-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v04553; GFX12-SDAG-FAKE16-NEXT: s_endpgm4554;4555; GFX9-GISEL-LABEL: flat_inst_salu_offset_64bit_12bit_split1:4556; GFX9-GISEL: ; %bb.0:4557; GFX9-GISEL-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244558; GFX9-GISEL-NEXT: s_waitcnt lgkmcnt(0)4559; GFX9-GISEL-NEXT: s_add_u32 s0, s0, 0x10004560; GFX9-GISEL-NEXT: s_addc_u32 s1, s1, 24561; GFX9-GISEL-NEXT: v_mov_b32_e32 v0, s04562; GFX9-GISEL-NEXT: v_mov_b32_e32 v1, s14563; GFX9-GISEL-NEXT: flat_load_ubyte v0, v[0:1] glc4564; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4565; GFX9-GISEL-NEXT: flat_store_byte v[0:1], v04566; GFX9-GISEL-NEXT: s_endpgm4567;4568; GFX11-GISEL-LABEL: flat_inst_salu_offset_64bit_12bit_split1:4569; GFX11-GISEL: ; %bb.0:4570; GFX11-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x244571; GFX11-GISEL-NEXT: s_waitcnt lgkmcnt(0)4572; GFX11-GISEL-NEXT: s_add_u32 s0, s0, 0x10004573; GFX11-GISEL-NEXT: s_addc_u32 s1, s1, 24574; GFX11-GISEL-NEXT: s_delay_alu instid0(SALU_CYCLE_1)4575; GFX11-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s14576; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1] glc dlc4577; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4578; GFX11-GISEL-NEXT: flat_store_b8 v[0:1], v04579; GFX11-GISEL-NEXT: s_endpgm4580;4581; GFX12-GISEL-LABEL: flat_inst_salu_offset_64bit_12bit_split1:4582; GFX12-GISEL: ; %bb.0:4583; GFX12-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x244584; GFX12-GISEL-NEXT: s_wait_kmcnt 0x04585; GFX12-GISEL-NEXT: s_add_co_u32 s0, s0, 0x10004586; GFX12-GISEL-NEXT: s_add_co_ci_u32 s1, s1, 24587; GFX12-GISEL-NEXT: s_delay_alu instid0(SALU_CYCLE_1)4588; GFX12-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s14589; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] scope:SCOPE_SYS4590; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x04591; GFX12-GISEL-NEXT: flat_store_b8 v[0:1], v04592; GFX12-GISEL-NEXT: s_endpgm4593 %gep = getelementptr inbounds i8, ptr %p, i64 85899386884594 %load = load volatile i8, ptr %gep, align 14595 store i8 %load, ptr poison4596 ret void4597}4598 4599; Fill 13-bit low-bits (1ull << 33) | 81914600define amdgpu_kernel void @flat_inst_salu_offset_64bit_13bit_split0(ptr %p) {4601; GFX9-SDAG-LABEL: flat_inst_salu_offset_64bit_13bit_split0:4602; GFX9-SDAG: ; %bb.0:4603; GFX9-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244604; GFX9-SDAG-NEXT: s_waitcnt lgkmcnt(0)4605; GFX9-SDAG-NEXT: v_mov_b32_e32 v0, s04606; GFX9-SDAG-NEXT: v_mov_b32_e32 v1, s14607; GFX9-SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0x1000, v04608; GFX9-SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, 2, v1, vcc4609; GFX9-SDAG-NEXT: flat_load_ubyte v0, v[0:1] offset:4095 glc4610; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4611; GFX9-SDAG-NEXT: flat_store_byte v[0:1], v04612; GFX9-SDAG-NEXT: s_endpgm4613;4614; GFX10-LABEL: flat_inst_salu_offset_64bit_13bit_split0:4615; GFX10: ; %bb.0:4616; GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244617; GFX10-NEXT: s_waitcnt lgkmcnt(0)4618; GFX10-NEXT: s_add_u32 s0, s0, 0x1fff4619; GFX10-NEXT: s_addc_u32 s1, s1, 24620; GFX10-NEXT: v_mov_b32_e32 v0, s04621; GFX10-NEXT: v_mov_b32_e32 v1, s14622; GFX10-NEXT: flat_load_ubyte v0, v[0:1] glc dlc4623; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4624; GFX10-NEXT: flat_store_byte v[0:1], v04625; GFX10-NEXT: s_endpgm4626;4627; GFX11-SDAG-TRUE16-LABEL: flat_inst_salu_offset_64bit_13bit_split0:4628; GFX11-SDAG-TRUE16: ; %bb.0:4629; GFX11-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x244630; GFX11-SDAG-TRUE16-NEXT: s_waitcnt lgkmcnt(0)4631; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, s0, 0x1000, s04632; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)4633; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, s1, s04634; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:4095 glc dlc4635; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4636; GFX11-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v04637; GFX11-SDAG-TRUE16-NEXT: s_endpgm4638;4639; GFX11-SDAG-FAKE16-LABEL: flat_inst_salu_offset_64bit_13bit_split0:4640; GFX11-SDAG-FAKE16: ; %bb.0:4641; GFX11-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x244642; GFX11-SDAG-FAKE16-NEXT: s_waitcnt lgkmcnt(0)4643; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, s0, 0x1000, s04644; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)4645; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, s1, s04646; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:4095 glc dlc4647; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4648; GFX11-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v04649; GFX11-SDAG-FAKE16-NEXT: s_endpgm4650;4651; GFX12-SDAG-TRUE16-LABEL: flat_inst_salu_offset_64bit_13bit_split0:4652; GFX12-SDAG-TRUE16: ; %bb.0:4653; GFX12-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x244654; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x04655; GFX12-SDAG-TRUE16-NEXT: v_add_co_u32 v0, s0, 0, s04656; GFX12-SDAG-TRUE16-NEXT: s_wait_alu depctr_va_sdst(0)4657; GFX12-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, s1, s04658; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:8191 scope:SCOPE_SYS4659; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x04660; GFX12-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v04661; GFX12-SDAG-TRUE16-NEXT: s_endpgm4662;4663; GFX12-SDAG-FAKE16-LABEL: flat_inst_salu_offset_64bit_13bit_split0:4664; GFX12-SDAG-FAKE16: ; %bb.0:4665; GFX12-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x244666; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x04667; GFX12-SDAG-FAKE16-NEXT: v_add_co_u32 v0, s0, 0, s04668; GFX12-SDAG-FAKE16-NEXT: s_wait_alu depctr_va_sdst(0)4669; GFX12-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, s1, s04670; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:8191 scope:SCOPE_SYS4671; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x04672; GFX12-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v04673; GFX12-SDAG-FAKE16-NEXT: s_endpgm4674;4675; GFX9-GISEL-LABEL: flat_inst_salu_offset_64bit_13bit_split0:4676; GFX9-GISEL: ; %bb.0:4677; GFX9-GISEL-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244678; GFX9-GISEL-NEXT: s_waitcnt lgkmcnt(0)4679; GFX9-GISEL-NEXT: s_add_u32 s0, s0, 0x1fff4680; GFX9-GISEL-NEXT: s_addc_u32 s1, s1, 24681; GFX9-GISEL-NEXT: v_mov_b32_e32 v0, s04682; GFX9-GISEL-NEXT: v_mov_b32_e32 v1, s14683; GFX9-GISEL-NEXT: flat_load_ubyte v0, v[0:1] glc4684; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4685; GFX9-GISEL-NEXT: flat_store_byte v[0:1], v04686; GFX9-GISEL-NEXT: s_endpgm4687;4688; GFX11-GISEL-LABEL: flat_inst_salu_offset_64bit_13bit_split0:4689; GFX11-GISEL: ; %bb.0:4690; GFX11-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x244691; GFX11-GISEL-NEXT: s_waitcnt lgkmcnt(0)4692; GFX11-GISEL-NEXT: s_add_u32 s0, s0, 0x1fff4693; GFX11-GISEL-NEXT: s_addc_u32 s1, s1, 24694; GFX11-GISEL-NEXT: s_delay_alu instid0(SALU_CYCLE_1)4695; GFX11-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s14696; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1] glc dlc4697; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4698; GFX11-GISEL-NEXT: flat_store_b8 v[0:1], v04699; GFX11-GISEL-NEXT: s_endpgm4700;4701; GFX12-GISEL-LABEL: flat_inst_salu_offset_64bit_13bit_split0:4702; GFX12-GISEL: ; %bb.0:4703; GFX12-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x244704; GFX12-GISEL-NEXT: s_wait_kmcnt 0x04705; GFX12-GISEL-NEXT: s_add_co_u32 s0, s0, 0x1fff4706; GFX12-GISEL-NEXT: s_add_co_ci_u32 s1, s1, 24707; GFX12-GISEL-NEXT: s_delay_alu instid0(SALU_CYCLE_1)4708; GFX12-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s14709; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] scope:SCOPE_SYS4710; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x04711; GFX12-GISEL-NEXT: flat_store_b8 v[0:1], v04712; GFX12-GISEL-NEXT: s_endpgm4713 %gep = getelementptr inbounds i8, ptr %p, i64 85899427834714 %load = load volatile i8, ptr %gep, align 14715 store i8 %load, ptr poison4716 ret void4717}4718 4719; Fill 13-bit low-bits (1ull << 33) | 81924720define amdgpu_kernel void @flat_inst_salu_offset_64bit_13bit_split1(ptr %p) {4721; GFX9-SDAG-LABEL: flat_inst_salu_offset_64bit_13bit_split1:4722; GFX9-SDAG: ; %bb.0:4723; GFX9-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244724; GFX9-SDAG-NEXT: s_waitcnt lgkmcnt(0)4725; GFX9-SDAG-NEXT: v_mov_b32_e32 v0, s04726; GFX9-SDAG-NEXT: v_mov_b32_e32 v1, s14727; GFX9-SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0x2000, v04728; GFX9-SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, 2, v1, vcc4729; GFX9-SDAG-NEXT: flat_load_ubyte v0, v[0:1] glc4730; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4731; GFX9-SDAG-NEXT: flat_store_byte v[0:1], v04732; GFX9-SDAG-NEXT: s_endpgm4733;4734; GFX10-LABEL: flat_inst_salu_offset_64bit_13bit_split1:4735; GFX10: ; %bb.0:4736; GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244737; GFX10-NEXT: s_waitcnt lgkmcnt(0)4738; GFX10-NEXT: s_add_u32 s0, s0, 0x20004739; GFX10-NEXT: s_addc_u32 s1, s1, 24740; GFX10-NEXT: v_mov_b32_e32 v0, s04741; GFX10-NEXT: v_mov_b32_e32 v1, s14742; GFX10-NEXT: flat_load_ubyte v0, v[0:1] glc dlc4743; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4744; GFX10-NEXT: flat_store_byte v[0:1], v04745; GFX10-NEXT: s_endpgm4746;4747; GFX11-SDAG-TRUE16-LABEL: flat_inst_salu_offset_64bit_13bit_split1:4748; GFX11-SDAG-TRUE16: ; %bb.0:4749; GFX11-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x244750; GFX11-SDAG-TRUE16-NEXT: s_waitcnt lgkmcnt(0)4751; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, s0, 0x2000, s04752; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)4753; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, s1, s04754; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] glc dlc4755; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4756; GFX11-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v04757; GFX11-SDAG-TRUE16-NEXT: s_endpgm4758;4759; GFX11-SDAG-FAKE16-LABEL: flat_inst_salu_offset_64bit_13bit_split1:4760; GFX11-SDAG-FAKE16: ; %bb.0:4761; GFX11-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x244762; GFX11-SDAG-FAKE16-NEXT: s_waitcnt lgkmcnt(0)4763; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, s0, 0x2000, s04764; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)4765; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, s1, s04766; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] glc dlc4767; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4768; GFX11-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v04769; GFX11-SDAG-FAKE16-NEXT: s_endpgm4770;4771; GFX12-SDAG-TRUE16-LABEL: flat_inst_salu_offset_64bit_13bit_split1:4772; GFX12-SDAG-TRUE16: ; %bb.0:4773; GFX12-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x244774; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x04775; GFX12-SDAG-TRUE16-NEXT: v_add_co_u32 v0, s0, 0, s04776; GFX12-SDAG-TRUE16-NEXT: s_wait_alu depctr_va_sdst(0)4777; GFX12-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, s1, s04778; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:8192 scope:SCOPE_SYS4779; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x04780; GFX12-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v04781; GFX12-SDAG-TRUE16-NEXT: s_endpgm4782;4783; GFX12-SDAG-FAKE16-LABEL: flat_inst_salu_offset_64bit_13bit_split1:4784; GFX12-SDAG-FAKE16: ; %bb.0:4785; GFX12-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x244786; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x04787; GFX12-SDAG-FAKE16-NEXT: v_add_co_u32 v0, s0, 0, s04788; GFX12-SDAG-FAKE16-NEXT: s_wait_alu depctr_va_sdst(0)4789; GFX12-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 2, s1, s04790; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:8192 scope:SCOPE_SYS4791; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x04792; GFX12-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v04793; GFX12-SDAG-FAKE16-NEXT: s_endpgm4794;4795; GFX9-GISEL-LABEL: flat_inst_salu_offset_64bit_13bit_split1:4796; GFX9-GISEL: ; %bb.0:4797; GFX9-GISEL-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244798; GFX9-GISEL-NEXT: s_waitcnt lgkmcnt(0)4799; GFX9-GISEL-NEXT: s_add_u32 s0, s0, 0x20004800; GFX9-GISEL-NEXT: s_addc_u32 s1, s1, 24801; GFX9-GISEL-NEXT: v_mov_b32_e32 v0, s04802; GFX9-GISEL-NEXT: v_mov_b32_e32 v1, s14803; GFX9-GISEL-NEXT: flat_load_ubyte v0, v[0:1] glc4804; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4805; GFX9-GISEL-NEXT: flat_store_byte v[0:1], v04806; GFX9-GISEL-NEXT: s_endpgm4807;4808; GFX11-GISEL-LABEL: flat_inst_salu_offset_64bit_13bit_split1:4809; GFX11-GISEL: ; %bb.0:4810; GFX11-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x244811; GFX11-GISEL-NEXT: s_waitcnt lgkmcnt(0)4812; GFX11-GISEL-NEXT: s_add_u32 s0, s0, 0x20004813; GFX11-GISEL-NEXT: s_addc_u32 s1, s1, 24814; GFX11-GISEL-NEXT: s_delay_alu instid0(SALU_CYCLE_1)4815; GFX11-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s14816; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1] glc dlc4817; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4818; GFX11-GISEL-NEXT: flat_store_b8 v[0:1], v04819; GFX11-GISEL-NEXT: s_endpgm4820;4821; GFX12-GISEL-LABEL: flat_inst_salu_offset_64bit_13bit_split1:4822; GFX12-GISEL: ; %bb.0:4823; GFX12-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x244824; GFX12-GISEL-NEXT: s_wait_kmcnt 0x04825; GFX12-GISEL-NEXT: s_add_co_u32 s0, s0, 0x20004826; GFX12-GISEL-NEXT: s_add_co_ci_u32 s1, s1, 24827; GFX12-GISEL-NEXT: s_delay_alu instid0(SALU_CYCLE_1)4828; GFX12-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s14829; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] scope:SCOPE_SYS4830; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x04831; GFX12-GISEL-NEXT: flat_store_b8 v[0:1], v04832; GFX12-GISEL-NEXT: s_endpgm4833 %gep = getelementptr inbounds i8, ptr %p, i64 85899427844834 %load = load volatile i8, ptr %gep, align 14835 store i8 %load, ptr poison4836 ret void4837}4838 4839; Fill 11-bit low-bits, negative high bits (1ull << 63) | 20474840define amdgpu_kernel void @flat_inst_salu_offset_64bit_11bit_neg_high_split0(ptr %p) {4841; GFX9-SDAG-LABEL: flat_inst_salu_offset_64bit_11bit_neg_high_split0:4842; GFX9-SDAG: ; %bb.0:4843; GFX9-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244844; GFX9-SDAG-NEXT: v_bfrev_b32_e32 v1, 14845; GFX9-SDAG-NEXT: s_waitcnt lgkmcnt(0)4846; GFX9-SDAG-NEXT: v_mov_b32_e32 v0, s04847; GFX9-SDAG-NEXT: v_mov_b32_e32 v2, s14848; GFX9-SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0x7ff, v04849; GFX9-SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, v1, v2, vcc4850; GFX9-SDAG-NEXT: flat_load_ubyte v0, v[0:1] glc4851; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4852; GFX9-SDAG-NEXT: flat_store_byte v[0:1], v04853; GFX9-SDAG-NEXT: s_endpgm4854;4855; GFX10-LABEL: flat_inst_salu_offset_64bit_11bit_neg_high_split0:4856; GFX10: ; %bb.0:4857; GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244858; GFX10-NEXT: s_waitcnt lgkmcnt(0)4859; GFX10-NEXT: s_add_u32 s0, s0, 0x7ff4860; GFX10-NEXT: s_addc_u32 s1, s1, 0x800000004861; GFX10-NEXT: v_mov_b32_e32 v0, s04862; GFX10-NEXT: v_mov_b32_e32 v1, s14863; GFX10-NEXT: flat_load_ubyte v0, v[0:1] glc dlc4864; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4865; GFX10-NEXT: flat_store_byte v[0:1], v04866; GFX10-NEXT: s_endpgm4867;4868; GFX11-SDAG-TRUE16-LABEL: flat_inst_salu_offset_64bit_11bit_neg_high_split0:4869; GFX11-SDAG-TRUE16: ; %bb.0:4870; GFX11-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x244871; GFX11-SDAG-TRUE16-NEXT: s_waitcnt lgkmcnt(0)4872; GFX11-SDAG-TRUE16-NEXT: v_mov_b32_e32 v1, s14873; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x7ff, s04874; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)4875; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo4876; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] glc dlc4877; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4878; GFX11-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v04879; GFX11-SDAG-TRUE16-NEXT: s_endpgm4880;4881; GFX11-SDAG-FAKE16-LABEL: flat_inst_salu_offset_64bit_11bit_neg_high_split0:4882; GFX11-SDAG-FAKE16: ; %bb.0:4883; GFX11-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x244884; GFX11-SDAG-FAKE16-NEXT: s_waitcnt lgkmcnt(0)4885; GFX11-SDAG-FAKE16-NEXT: v_mov_b32_e32 v1, s14886; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x7ff, s04887; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)4888; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo4889; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] glc dlc4890; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4891; GFX11-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v04892; GFX11-SDAG-FAKE16-NEXT: s_endpgm4893;4894; GFX12-SDAG-TRUE16-LABEL: flat_inst_salu_offset_64bit_11bit_neg_high_split0:4895; GFX12-SDAG-TRUE16: ; %bb.0:4896; GFX12-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x244897; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x04898; GFX12-SDAG-TRUE16-NEXT: v_mov_b32_e32 v1, s14899; GFX12-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x800000, s04900; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)4901; GFX12-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo4902; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:-8386561 scope:SCOPE_SYS4903; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x04904; GFX12-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v04905; GFX12-SDAG-TRUE16-NEXT: s_endpgm4906;4907; GFX12-SDAG-FAKE16-LABEL: flat_inst_salu_offset_64bit_11bit_neg_high_split0:4908; GFX12-SDAG-FAKE16: ; %bb.0:4909; GFX12-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x244910; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x04911; GFX12-SDAG-FAKE16-NEXT: v_mov_b32_e32 v1, s14912; GFX12-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x800000, s04913; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)4914; GFX12-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo4915; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:-8386561 scope:SCOPE_SYS4916; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x04917; GFX12-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v04918; GFX12-SDAG-FAKE16-NEXT: s_endpgm4919;4920; GFX9-GISEL-LABEL: flat_inst_salu_offset_64bit_11bit_neg_high_split0:4921; GFX9-GISEL: ; %bb.0:4922; GFX9-GISEL-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244923; GFX9-GISEL-NEXT: s_waitcnt lgkmcnt(0)4924; GFX9-GISEL-NEXT: s_add_u32 s0, s0, 0x7ff4925; GFX9-GISEL-NEXT: s_addc_u32 s1, s1, 0x800000004926; GFX9-GISEL-NEXT: v_mov_b32_e32 v0, s04927; GFX9-GISEL-NEXT: v_mov_b32_e32 v1, s14928; GFX9-GISEL-NEXT: flat_load_ubyte v0, v[0:1] glc4929; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4930; GFX9-GISEL-NEXT: flat_store_byte v[0:1], v04931; GFX9-GISEL-NEXT: s_endpgm4932;4933; GFX11-GISEL-LABEL: flat_inst_salu_offset_64bit_11bit_neg_high_split0:4934; GFX11-GISEL: ; %bb.0:4935; GFX11-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x244936; GFX11-GISEL-NEXT: s_waitcnt lgkmcnt(0)4937; GFX11-GISEL-NEXT: s_add_u32 s0, s0, 0x7ff4938; GFX11-GISEL-NEXT: s_addc_u32 s1, s1, 0x800000004939; GFX11-GISEL-NEXT: s_delay_alu instid0(SALU_CYCLE_1)4940; GFX11-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s14941; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1] glc dlc4942; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4943; GFX11-GISEL-NEXT: flat_store_b8 v[0:1], v04944; GFX11-GISEL-NEXT: s_endpgm4945;4946; GFX12-GISEL-LABEL: flat_inst_salu_offset_64bit_11bit_neg_high_split0:4947; GFX12-GISEL: ; %bb.0:4948; GFX12-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x244949; GFX12-GISEL-NEXT: s_wait_kmcnt 0x04950; GFX12-GISEL-NEXT: s_add_co_u32 s0, s0, 0x7ff4951; GFX12-GISEL-NEXT: s_add_co_ci_u32 s1, s1, 0x800000004952; GFX12-GISEL-NEXT: s_delay_alu instid0(SALU_CYCLE_1)4953; GFX12-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s14954; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] scope:SCOPE_SYS4955; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x04956; GFX12-GISEL-NEXT: flat_store_b8 v[0:1], v04957; GFX12-GISEL-NEXT: s_endpgm4958 %gep = getelementptr inbounds i8, ptr %p, i64 -92233720368547737614959 %load = load volatile i8, ptr %gep, align 14960 store i8 %load, ptr poison4961 ret void4962}4963 4964; Fill 11-bit low-bits, negative high bits (1ull << 63) | 20484965define amdgpu_kernel void @flat_inst_salu_offset_64bit_11bit_neg_high_split1(ptr %p) {4966; GFX9-SDAG-LABEL: flat_inst_salu_offset_64bit_11bit_neg_high_split1:4967; GFX9-SDAG: ; %bb.0:4968; GFX9-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244969; GFX9-SDAG-NEXT: v_bfrev_b32_e32 v1, 14970; GFX9-SDAG-NEXT: s_waitcnt lgkmcnt(0)4971; GFX9-SDAG-NEXT: v_mov_b32_e32 v0, s04972; GFX9-SDAG-NEXT: v_mov_b32_e32 v2, s14973; GFX9-SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0x800, v04974; GFX9-SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, v1, v2, vcc4975; GFX9-SDAG-NEXT: flat_load_ubyte v0, v[0:1] glc4976; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4977; GFX9-SDAG-NEXT: flat_store_byte v[0:1], v04978; GFX9-SDAG-NEXT: s_endpgm4979;4980; GFX10-LABEL: flat_inst_salu_offset_64bit_11bit_neg_high_split1:4981; GFX10: ; %bb.0:4982; GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244983; GFX10-NEXT: s_waitcnt lgkmcnt(0)4984; GFX10-NEXT: s_add_u32 s0, s0, 0x8004985; GFX10-NEXT: s_addc_u32 s1, s1, 0x800000004986; GFX10-NEXT: v_mov_b32_e32 v0, s04987; GFX10-NEXT: v_mov_b32_e32 v1, s14988; GFX10-NEXT: flat_load_ubyte v0, v[0:1] glc dlc4989; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)4990; GFX10-NEXT: flat_store_byte v[0:1], v04991; GFX10-NEXT: s_endpgm4992;4993; GFX11-SDAG-TRUE16-LABEL: flat_inst_salu_offset_64bit_11bit_neg_high_split1:4994; GFX11-SDAG-TRUE16: ; %bb.0:4995; GFX11-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x244996; GFX11-SDAG-TRUE16-NEXT: s_waitcnt lgkmcnt(0)4997; GFX11-SDAG-TRUE16-NEXT: v_mov_b32_e32 v1, s14998; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x800, s04999; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)5000; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo5001; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] glc dlc5002; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)5003; GFX11-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v05004; GFX11-SDAG-TRUE16-NEXT: s_endpgm5005;5006; GFX11-SDAG-FAKE16-LABEL: flat_inst_salu_offset_64bit_11bit_neg_high_split1:5007; GFX11-SDAG-FAKE16: ; %bb.0:5008; GFX11-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x245009; GFX11-SDAG-FAKE16-NEXT: s_waitcnt lgkmcnt(0)5010; GFX11-SDAG-FAKE16-NEXT: v_mov_b32_e32 v1, s15011; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x800, s05012; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)5013; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo5014; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] glc dlc5015; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)5016; GFX11-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v05017; GFX11-SDAG-FAKE16-NEXT: s_endpgm5018;5019; GFX12-SDAG-TRUE16-LABEL: flat_inst_salu_offset_64bit_11bit_neg_high_split1:5020; GFX12-SDAG-TRUE16: ; %bb.0:5021; GFX12-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x245022; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x05023; GFX12-SDAG-TRUE16-NEXT: v_mov_b32_e32 v1, s15024; GFX12-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x800000, s05025; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)5026; GFX12-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo5027; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:-8386560 scope:SCOPE_SYS5028; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x05029; GFX12-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v05030; GFX12-SDAG-TRUE16-NEXT: s_endpgm5031;5032; GFX12-SDAG-FAKE16-LABEL: flat_inst_salu_offset_64bit_11bit_neg_high_split1:5033; GFX12-SDAG-FAKE16: ; %bb.0:5034; GFX12-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x245035; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x05036; GFX12-SDAG-FAKE16-NEXT: v_mov_b32_e32 v1, s15037; GFX12-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x800000, s05038; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)5039; GFX12-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo5040; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:-8386560 scope:SCOPE_SYS5041; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x05042; GFX12-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v05043; GFX12-SDAG-FAKE16-NEXT: s_endpgm5044;5045; GFX9-GISEL-LABEL: flat_inst_salu_offset_64bit_11bit_neg_high_split1:5046; GFX9-GISEL: ; %bb.0:5047; GFX9-GISEL-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245048; GFX9-GISEL-NEXT: s_waitcnt lgkmcnt(0)5049; GFX9-GISEL-NEXT: s_add_u32 s0, s0, 0x8005050; GFX9-GISEL-NEXT: s_addc_u32 s1, s1, 0x800000005051; GFX9-GISEL-NEXT: v_mov_b32_e32 v0, s05052; GFX9-GISEL-NEXT: v_mov_b32_e32 v1, s15053; GFX9-GISEL-NEXT: flat_load_ubyte v0, v[0:1] glc5054; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)5055; GFX9-GISEL-NEXT: flat_store_byte v[0:1], v05056; GFX9-GISEL-NEXT: s_endpgm5057;5058; GFX11-GISEL-LABEL: flat_inst_salu_offset_64bit_11bit_neg_high_split1:5059; GFX11-GISEL: ; %bb.0:5060; GFX11-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x245061; GFX11-GISEL-NEXT: s_waitcnt lgkmcnt(0)5062; GFX11-GISEL-NEXT: s_add_u32 s0, s0, 0x8005063; GFX11-GISEL-NEXT: s_addc_u32 s1, s1, 0x800000005064; GFX11-GISEL-NEXT: s_delay_alu instid0(SALU_CYCLE_1)5065; GFX11-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s15066; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1] glc dlc5067; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)5068; GFX11-GISEL-NEXT: flat_store_b8 v[0:1], v05069; GFX11-GISEL-NEXT: s_endpgm5070;5071; GFX12-GISEL-LABEL: flat_inst_salu_offset_64bit_11bit_neg_high_split1:5072; GFX12-GISEL: ; %bb.0:5073; GFX12-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x245074; GFX12-GISEL-NEXT: s_wait_kmcnt 0x05075; GFX12-GISEL-NEXT: s_add_co_u32 s0, s0, 0x8005076; GFX12-GISEL-NEXT: s_add_co_ci_u32 s1, s1, 0x800000005077; GFX12-GISEL-NEXT: s_delay_alu instid0(SALU_CYCLE_1)5078; GFX12-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s15079; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] scope:SCOPE_SYS5080; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x05081; GFX12-GISEL-NEXT: flat_store_b8 v[0:1], v05082; GFX12-GISEL-NEXT: s_endpgm5083 %gep = getelementptr inbounds i8, ptr %p, i64 -92233720368547737605084 %load = load volatile i8, ptr %gep, align 15085 store i8 %load, ptr poison5086 ret void5087}5088 5089; Fill 12-bit low-bits, negative high bits (1ull << 63) | 40955090define amdgpu_kernel void @flat_inst_salu_offset_64bit_12bit_neg_high_split0(ptr %p) {5091; GFX9-SDAG-LABEL: flat_inst_salu_offset_64bit_12bit_neg_high_split0:5092; GFX9-SDAG: ; %bb.0:5093; GFX9-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245094; GFX9-SDAG-NEXT: v_bfrev_b32_e32 v1, 15095; GFX9-SDAG-NEXT: s_waitcnt lgkmcnt(0)5096; GFX9-SDAG-NEXT: v_mov_b32_e32 v0, s05097; GFX9-SDAG-NEXT: v_mov_b32_e32 v2, s15098; GFX9-SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0xfff, v05099; GFX9-SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, v1, v2, vcc5100; GFX9-SDAG-NEXT: flat_load_ubyte v0, v[0:1] glc5101; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)5102; GFX9-SDAG-NEXT: flat_store_byte v[0:1], v05103; GFX9-SDAG-NEXT: s_endpgm5104;5105; GFX10-LABEL: flat_inst_salu_offset_64bit_12bit_neg_high_split0:5106; GFX10: ; %bb.0:5107; GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245108; GFX10-NEXT: s_waitcnt lgkmcnt(0)5109; GFX10-NEXT: s_add_u32 s0, s0, 0xfff5110; GFX10-NEXT: s_addc_u32 s1, s1, 0x800000005111; GFX10-NEXT: v_mov_b32_e32 v0, s05112; GFX10-NEXT: v_mov_b32_e32 v1, s15113; GFX10-NEXT: flat_load_ubyte v0, v[0:1] glc dlc5114; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)5115; GFX10-NEXT: flat_store_byte v[0:1], v05116; GFX10-NEXT: s_endpgm5117;5118; GFX11-SDAG-TRUE16-LABEL: flat_inst_salu_offset_64bit_12bit_neg_high_split0:5119; GFX11-SDAG-TRUE16: ; %bb.0:5120; GFX11-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x245121; GFX11-SDAG-TRUE16-NEXT: s_waitcnt lgkmcnt(0)5122; GFX11-SDAG-TRUE16-NEXT: v_mov_b32_e32 v1, s15123; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0xfff, s05124; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)5125; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo5126; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] glc dlc5127; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)5128; GFX11-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v05129; GFX11-SDAG-TRUE16-NEXT: s_endpgm5130;5131; GFX11-SDAG-FAKE16-LABEL: flat_inst_salu_offset_64bit_12bit_neg_high_split0:5132; GFX11-SDAG-FAKE16: ; %bb.0:5133; GFX11-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x245134; GFX11-SDAG-FAKE16-NEXT: s_waitcnt lgkmcnt(0)5135; GFX11-SDAG-FAKE16-NEXT: v_mov_b32_e32 v1, s15136; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0xfff, s05137; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)5138; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo5139; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] glc dlc5140; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)5141; GFX11-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v05142; GFX11-SDAG-FAKE16-NEXT: s_endpgm5143;5144; GFX12-SDAG-TRUE16-LABEL: flat_inst_salu_offset_64bit_12bit_neg_high_split0:5145; GFX12-SDAG-TRUE16: ; %bb.0:5146; GFX12-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x245147; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x05148; GFX12-SDAG-TRUE16-NEXT: v_mov_b32_e32 v1, s15149; GFX12-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x800000, s05150; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)5151; GFX12-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo5152; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:-8384513 scope:SCOPE_SYS5153; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x05154; GFX12-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v05155; GFX12-SDAG-TRUE16-NEXT: s_endpgm5156;5157; GFX12-SDAG-FAKE16-LABEL: flat_inst_salu_offset_64bit_12bit_neg_high_split0:5158; GFX12-SDAG-FAKE16: ; %bb.0:5159; GFX12-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x245160; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x05161; GFX12-SDAG-FAKE16-NEXT: v_mov_b32_e32 v1, s15162; GFX12-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x800000, s05163; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)5164; GFX12-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo5165; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:-8384513 scope:SCOPE_SYS5166; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x05167; GFX12-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v05168; GFX12-SDAG-FAKE16-NEXT: s_endpgm5169;5170; GFX9-GISEL-LABEL: flat_inst_salu_offset_64bit_12bit_neg_high_split0:5171; GFX9-GISEL: ; %bb.0:5172; GFX9-GISEL-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245173; GFX9-GISEL-NEXT: s_waitcnt lgkmcnt(0)5174; GFX9-GISEL-NEXT: s_add_u32 s0, s0, 0xfff5175; GFX9-GISEL-NEXT: s_addc_u32 s1, s1, 0x800000005176; GFX9-GISEL-NEXT: v_mov_b32_e32 v0, s05177; GFX9-GISEL-NEXT: v_mov_b32_e32 v1, s15178; GFX9-GISEL-NEXT: flat_load_ubyte v0, v[0:1] glc5179; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)5180; GFX9-GISEL-NEXT: flat_store_byte v[0:1], v05181; GFX9-GISEL-NEXT: s_endpgm5182;5183; GFX11-GISEL-LABEL: flat_inst_salu_offset_64bit_12bit_neg_high_split0:5184; GFX11-GISEL: ; %bb.0:5185; GFX11-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x245186; GFX11-GISEL-NEXT: s_waitcnt lgkmcnt(0)5187; GFX11-GISEL-NEXT: s_add_u32 s0, s0, 0xfff5188; GFX11-GISEL-NEXT: s_addc_u32 s1, s1, 0x800000005189; GFX11-GISEL-NEXT: s_delay_alu instid0(SALU_CYCLE_1)5190; GFX11-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s15191; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1] glc dlc5192; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)5193; GFX11-GISEL-NEXT: flat_store_b8 v[0:1], v05194; GFX11-GISEL-NEXT: s_endpgm5195;5196; GFX12-GISEL-LABEL: flat_inst_salu_offset_64bit_12bit_neg_high_split0:5197; GFX12-GISEL: ; %bb.0:5198; GFX12-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x245199; GFX12-GISEL-NEXT: s_wait_kmcnt 0x05200; GFX12-GISEL-NEXT: s_add_co_u32 s0, s0, 0xfff5201; GFX12-GISEL-NEXT: s_add_co_ci_u32 s1, s1, 0x800000005202; GFX12-GISEL-NEXT: s_delay_alu instid0(SALU_CYCLE_1)5203; GFX12-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s15204; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] scope:SCOPE_SYS5205; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x05206; GFX12-GISEL-NEXT: flat_store_b8 v[0:1], v05207; GFX12-GISEL-NEXT: s_endpgm5208 %gep = getelementptr inbounds i8, ptr %p, i64 -92233720368547717135209 %load = load volatile i8, ptr %gep, align 15210 store i8 %load, ptr poison5211 ret void5212}5213 5214; Fill 12-bit low-bits, negative high bits (1ull << 63) | 40965215define amdgpu_kernel void @flat_inst_salu_offset_64bit_12bit_neg_high_split1(ptr %p) {5216; GFX9-SDAG-LABEL: flat_inst_salu_offset_64bit_12bit_neg_high_split1:5217; GFX9-SDAG: ; %bb.0:5218; GFX9-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245219; GFX9-SDAG-NEXT: v_bfrev_b32_e32 v1, 15220; GFX9-SDAG-NEXT: s_waitcnt lgkmcnt(0)5221; GFX9-SDAG-NEXT: v_mov_b32_e32 v0, s05222; GFX9-SDAG-NEXT: v_mov_b32_e32 v2, s15223; GFX9-SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0x1000, v05224; GFX9-SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, v1, v2, vcc5225; GFX9-SDAG-NEXT: flat_load_ubyte v0, v[0:1] glc5226; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)5227; GFX9-SDAG-NEXT: flat_store_byte v[0:1], v05228; GFX9-SDAG-NEXT: s_endpgm5229;5230; GFX10-LABEL: flat_inst_salu_offset_64bit_12bit_neg_high_split1:5231; GFX10: ; %bb.0:5232; GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245233; GFX10-NEXT: s_waitcnt lgkmcnt(0)5234; GFX10-NEXT: s_add_u32 s0, s0, 0x10005235; GFX10-NEXT: s_addc_u32 s1, s1, 0x800000005236; GFX10-NEXT: v_mov_b32_e32 v0, s05237; GFX10-NEXT: v_mov_b32_e32 v1, s15238; GFX10-NEXT: flat_load_ubyte v0, v[0:1] glc dlc5239; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)5240; GFX10-NEXT: flat_store_byte v[0:1], v05241; GFX10-NEXT: s_endpgm5242;5243; GFX11-SDAG-TRUE16-LABEL: flat_inst_salu_offset_64bit_12bit_neg_high_split1:5244; GFX11-SDAG-TRUE16: ; %bb.0:5245; GFX11-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x245246; GFX11-SDAG-TRUE16-NEXT: s_waitcnt lgkmcnt(0)5247; GFX11-SDAG-TRUE16-NEXT: v_mov_b32_e32 v1, s15248; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x1000, s05249; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)5250; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo5251; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] glc dlc5252; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)5253; GFX11-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v05254; GFX11-SDAG-TRUE16-NEXT: s_endpgm5255;5256; GFX11-SDAG-FAKE16-LABEL: flat_inst_salu_offset_64bit_12bit_neg_high_split1:5257; GFX11-SDAG-FAKE16: ; %bb.0:5258; GFX11-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x245259; GFX11-SDAG-FAKE16-NEXT: s_waitcnt lgkmcnt(0)5260; GFX11-SDAG-FAKE16-NEXT: v_mov_b32_e32 v1, s15261; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x1000, s05262; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)5263; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo5264; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] glc dlc5265; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)5266; GFX11-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v05267; GFX11-SDAG-FAKE16-NEXT: s_endpgm5268;5269; GFX12-SDAG-TRUE16-LABEL: flat_inst_salu_offset_64bit_12bit_neg_high_split1:5270; GFX12-SDAG-TRUE16: ; %bb.0:5271; GFX12-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x245272; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x05273; GFX12-SDAG-TRUE16-NEXT: v_mov_b32_e32 v1, s15274; GFX12-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x800000, s05275; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)5276; GFX12-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo5277; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:-8384512 scope:SCOPE_SYS5278; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x05279; GFX12-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v05280; GFX12-SDAG-TRUE16-NEXT: s_endpgm5281;5282; GFX12-SDAG-FAKE16-LABEL: flat_inst_salu_offset_64bit_12bit_neg_high_split1:5283; GFX12-SDAG-FAKE16: ; %bb.0:5284; GFX12-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x245285; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x05286; GFX12-SDAG-FAKE16-NEXT: v_mov_b32_e32 v1, s15287; GFX12-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x800000, s05288; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)5289; GFX12-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo5290; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:-8384512 scope:SCOPE_SYS5291; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x05292; GFX12-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v05293; GFX12-SDAG-FAKE16-NEXT: s_endpgm5294;5295; GFX9-GISEL-LABEL: flat_inst_salu_offset_64bit_12bit_neg_high_split1:5296; GFX9-GISEL: ; %bb.0:5297; GFX9-GISEL-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245298; GFX9-GISEL-NEXT: s_waitcnt lgkmcnt(0)5299; GFX9-GISEL-NEXT: s_add_u32 s0, s0, 0x10005300; GFX9-GISEL-NEXT: s_addc_u32 s1, s1, 0x800000005301; GFX9-GISEL-NEXT: v_mov_b32_e32 v0, s05302; GFX9-GISEL-NEXT: v_mov_b32_e32 v1, s15303; GFX9-GISEL-NEXT: flat_load_ubyte v0, v[0:1] glc5304; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)5305; GFX9-GISEL-NEXT: flat_store_byte v[0:1], v05306; GFX9-GISEL-NEXT: s_endpgm5307;5308; GFX11-GISEL-LABEL: flat_inst_salu_offset_64bit_12bit_neg_high_split1:5309; GFX11-GISEL: ; %bb.0:5310; GFX11-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x245311; GFX11-GISEL-NEXT: s_waitcnt lgkmcnt(0)5312; GFX11-GISEL-NEXT: s_add_u32 s0, s0, 0x10005313; GFX11-GISEL-NEXT: s_addc_u32 s1, s1, 0x800000005314; GFX11-GISEL-NEXT: s_delay_alu instid0(SALU_CYCLE_1)5315; GFX11-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s15316; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1] glc dlc5317; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)5318; GFX11-GISEL-NEXT: flat_store_b8 v[0:1], v05319; GFX11-GISEL-NEXT: s_endpgm5320;5321; GFX12-GISEL-LABEL: flat_inst_salu_offset_64bit_12bit_neg_high_split1:5322; GFX12-GISEL: ; %bb.0:5323; GFX12-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x245324; GFX12-GISEL-NEXT: s_wait_kmcnt 0x05325; GFX12-GISEL-NEXT: s_add_co_u32 s0, s0, 0x10005326; GFX12-GISEL-NEXT: s_add_co_ci_u32 s1, s1, 0x800000005327; GFX12-GISEL-NEXT: s_delay_alu instid0(SALU_CYCLE_1)5328; GFX12-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s15329; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] scope:SCOPE_SYS5330; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x05331; GFX12-GISEL-NEXT: flat_store_b8 v[0:1], v05332; GFX12-GISEL-NEXT: s_endpgm5333 %gep = getelementptr inbounds i8, ptr %p, i64 -92233720368547717125334 %load = load volatile i8, ptr %gep, align 15335 store i8 %load, ptr poison5336 ret void5337}5338 5339; Fill 13-bit low-bits, negative high bits (1ull << 63) | 81915340define amdgpu_kernel void @flat_inst_salu_offset_64bit_13bit_neg_high_split0(ptr %p) {5341; GFX9-SDAG-LABEL: flat_inst_salu_offset_64bit_13bit_neg_high_split0:5342; GFX9-SDAG: ; %bb.0:5343; GFX9-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245344; GFX9-SDAG-NEXT: v_bfrev_b32_e32 v1, 15345; GFX9-SDAG-NEXT: s_waitcnt lgkmcnt(0)5346; GFX9-SDAG-NEXT: v_mov_b32_e32 v0, s05347; GFX9-SDAG-NEXT: v_mov_b32_e32 v2, s15348; GFX9-SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0x1fff, v05349; GFX9-SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, v1, v2, vcc5350; GFX9-SDAG-NEXT: flat_load_ubyte v0, v[0:1] glc5351; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)5352; GFX9-SDAG-NEXT: flat_store_byte v[0:1], v05353; GFX9-SDAG-NEXT: s_endpgm5354;5355; GFX10-LABEL: flat_inst_salu_offset_64bit_13bit_neg_high_split0:5356; GFX10: ; %bb.0:5357; GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245358; GFX10-NEXT: s_waitcnt lgkmcnt(0)5359; GFX10-NEXT: s_add_u32 s0, s0, 0x1fff5360; GFX10-NEXT: s_addc_u32 s1, s1, 0x800000005361; GFX10-NEXT: v_mov_b32_e32 v0, s05362; GFX10-NEXT: v_mov_b32_e32 v1, s15363; GFX10-NEXT: flat_load_ubyte v0, v[0:1] glc dlc5364; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)5365; GFX10-NEXT: flat_store_byte v[0:1], v05366; GFX10-NEXT: s_endpgm5367;5368; GFX11-SDAG-TRUE16-LABEL: flat_inst_salu_offset_64bit_13bit_neg_high_split0:5369; GFX11-SDAG-TRUE16: ; %bb.0:5370; GFX11-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x245371; GFX11-SDAG-TRUE16-NEXT: s_waitcnt lgkmcnt(0)5372; GFX11-SDAG-TRUE16-NEXT: v_mov_b32_e32 v1, s15373; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x1fff, s05374; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)5375; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo5376; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] glc dlc5377; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)5378; GFX11-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v05379; GFX11-SDAG-TRUE16-NEXT: s_endpgm5380;5381; GFX11-SDAG-FAKE16-LABEL: flat_inst_salu_offset_64bit_13bit_neg_high_split0:5382; GFX11-SDAG-FAKE16: ; %bb.0:5383; GFX11-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x245384; GFX11-SDAG-FAKE16-NEXT: s_waitcnt lgkmcnt(0)5385; GFX11-SDAG-FAKE16-NEXT: v_mov_b32_e32 v1, s15386; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x1fff, s05387; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)5388; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo5389; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] glc dlc5390; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)5391; GFX11-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v05392; GFX11-SDAG-FAKE16-NEXT: s_endpgm5393;5394; GFX12-SDAG-TRUE16-LABEL: flat_inst_salu_offset_64bit_13bit_neg_high_split0:5395; GFX12-SDAG-TRUE16: ; %bb.0:5396; GFX12-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x245397; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x05398; GFX12-SDAG-TRUE16-NEXT: v_mov_b32_e32 v1, s15399; GFX12-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x800000, s05400; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)5401; GFX12-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo5402; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:-8380417 scope:SCOPE_SYS5403; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x05404; GFX12-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v05405; GFX12-SDAG-TRUE16-NEXT: s_endpgm5406;5407; GFX12-SDAG-FAKE16-LABEL: flat_inst_salu_offset_64bit_13bit_neg_high_split0:5408; GFX12-SDAG-FAKE16: ; %bb.0:5409; GFX12-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x245410; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x05411; GFX12-SDAG-FAKE16-NEXT: v_mov_b32_e32 v1, s15412; GFX12-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x800000, s05413; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)5414; GFX12-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo5415; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:-8380417 scope:SCOPE_SYS5416; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x05417; GFX12-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v05418; GFX12-SDAG-FAKE16-NEXT: s_endpgm5419;5420; GFX9-GISEL-LABEL: flat_inst_salu_offset_64bit_13bit_neg_high_split0:5421; GFX9-GISEL: ; %bb.0:5422; GFX9-GISEL-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245423; GFX9-GISEL-NEXT: s_waitcnt lgkmcnt(0)5424; GFX9-GISEL-NEXT: s_add_u32 s0, s0, 0x1fff5425; GFX9-GISEL-NEXT: s_addc_u32 s1, s1, 0x800000005426; GFX9-GISEL-NEXT: v_mov_b32_e32 v0, s05427; GFX9-GISEL-NEXT: v_mov_b32_e32 v1, s15428; GFX9-GISEL-NEXT: flat_load_ubyte v0, v[0:1] glc5429; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)5430; GFX9-GISEL-NEXT: flat_store_byte v[0:1], v05431; GFX9-GISEL-NEXT: s_endpgm5432;5433; GFX11-GISEL-LABEL: flat_inst_salu_offset_64bit_13bit_neg_high_split0:5434; GFX11-GISEL: ; %bb.0:5435; GFX11-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x245436; GFX11-GISEL-NEXT: s_waitcnt lgkmcnt(0)5437; GFX11-GISEL-NEXT: s_add_u32 s0, s0, 0x1fff5438; GFX11-GISEL-NEXT: s_addc_u32 s1, s1, 0x800000005439; GFX11-GISEL-NEXT: s_delay_alu instid0(SALU_CYCLE_1)5440; GFX11-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s15441; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1] glc dlc5442; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)5443; GFX11-GISEL-NEXT: flat_store_b8 v[0:1], v05444; GFX11-GISEL-NEXT: s_endpgm5445;5446; GFX12-GISEL-LABEL: flat_inst_salu_offset_64bit_13bit_neg_high_split0:5447; GFX12-GISEL: ; %bb.0:5448; GFX12-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x245449; GFX12-GISEL-NEXT: s_wait_kmcnt 0x05450; GFX12-GISEL-NEXT: s_add_co_u32 s0, s0, 0x1fff5451; GFX12-GISEL-NEXT: s_add_co_ci_u32 s1, s1, 0x800000005452; GFX12-GISEL-NEXT: s_delay_alu instid0(SALU_CYCLE_1)5453; GFX12-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s15454; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] scope:SCOPE_SYS5455; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x05456; GFX12-GISEL-NEXT: flat_store_b8 v[0:1], v05457; GFX12-GISEL-NEXT: s_endpgm5458 %gep = getelementptr inbounds i8, ptr %p, i64 -92233720368547676175459 %load = load volatile i8, ptr %gep, align 15460 store i8 %load, ptr poison5461 ret void5462}5463 5464; Fill 13-bit low-bits, negative high bits (1ull << 63) | 81925465define amdgpu_kernel void @flat_inst_salu_offset_64bit_13bit_neg_high_split1(ptr %p) {5466; GFX9-SDAG-LABEL: flat_inst_salu_offset_64bit_13bit_neg_high_split1:5467; GFX9-SDAG: ; %bb.0:5468; GFX9-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245469; GFX9-SDAG-NEXT: v_bfrev_b32_e32 v1, 15470; GFX9-SDAG-NEXT: s_waitcnt lgkmcnt(0)5471; GFX9-SDAG-NEXT: v_mov_b32_e32 v0, s05472; GFX9-SDAG-NEXT: v_mov_b32_e32 v2, s15473; GFX9-SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0x2000, v05474; GFX9-SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, v1, v2, vcc5475; GFX9-SDAG-NEXT: flat_load_ubyte v0, v[0:1] glc5476; GFX9-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)5477; GFX9-SDAG-NEXT: flat_store_byte v[0:1], v05478; GFX9-SDAG-NEXT: s_endpgm5479;5480; GFX10-LABEL: flat_inst_salu_offset_64bit_13bit_neg_high_split1:5481; GFX10: ; %bb.0:5482; GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245483; GFX10-NEXT: s_waitcnt lgkmcnt(0)5484; GFX10-NEXT: s_add_u32 s0, s0, 0x20005485; GFX10-NEXT: s_addc_u32 s1, s1, 0x800000005486; GFX10-NEXT: v_mov_b32_e32 v0, s05487; GFX10-NEXT: v_mov_b32_e32 v1, s15488; GFX10-NEXT: flat_load_ubyte v0, v[0:1] glc dlc5489; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)5490; GFX10-NEXT: flat_store_byte v[0:1], v05491; GFX10-NEXT: s_endpgm5492;5493; GFX11-SDAG-TRUE16-LABEL: flat_inst_salu_offset_64bit_13bit_neg_high_split1:5494; GFX11-SDAG-TRUE16: ; %bb.0:5495; GFX11-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x245496; GFX11-SDAG-TRUE16-NEXT: s_waitcnt lgkmcnt(0)5497; GFX11-SDAG-TRUE16-NEXT: v_mov_b32_e32 v1, s15498; GFX11-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x2000, s05499; GFX11-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)5500; GFX11-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo5501; GFX11-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] glc dlc5502; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)5503; GFX11-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v05504; GFX11-SDAG-TRUE16-NEXT: s_endpgm5505;5506; GFX11-SDAG-FAKE16-LABEL: flat_inst_salu_offset_64bit_13bit_neg_high_split1:5507; GFX11-SDAG-FAKE16: ; %bb.0:5508; GFX11-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x245509; GFX11-SDAG-FAKE16-NEXT: s_waitcnt lgkmcnt(0)5510; GFX11-SDAG-FAKE16-NEXT: v_mov_b32_e32 v1, s15511; GFX11-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x2000, s05512; GFX11-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)5513; GFX11-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo5514; GFX11-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] glc dlc5515; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)5516; GFX11-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v05517; GFX11-SDAG-FAKE16-NEXT: s_endpgm5518;5519; GFX12-SDAG-TRUE16-LABEL: flat_inst_salu_offset_64bit_13bit_neg_high_split1:5520; GFX12-SDAG-TRUE16: ; %bb.0:5521; GFX12-SDAG-TRUE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x245522; GFX12-SDAG-TRUE16-NEXT: s_wait_kmcnt 0x05523; GFX12-SDAG-TRUE16-NEXT: v_mov_b32_e32 v1, s15524; GFX12-SDAG-TRUE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x800000, s05525; GFX12-SDAG-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1)5526; GFX12-SDAG-TRUE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo5527; GFX12-SDAG-TRUE16-NEXT: flat_load_d16_u8 v0, v[0:1] offset:-8380416 scope:SCOPE_SYS5528; GFX12-SDAG-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x05529; GFX12-SDAG-TRUE16-NEXT: flat_store_b8 v[0:1], v05530; GFX12-SDAG-TRUE16-NEXT: s_endpgm5531;5532; GFX12-SDAG-FAKE16-LABEL: flat_inst_salu_offset_64bit_13bit_neg_high_split1:5533; GFX12-SDAG-FAKE16: ; %bb.0:5534; GFX12-SDAG-FAKE16-NEXT: s_load_b64 s[0:1], s[4:5], 0x245535; GFX12-SDAG-FAKE16-NEXT: s_wait_kmcnt 0x05536; GFX12-SDAG-FAKE16-NEXT: v_mov_b32_e32 v1, s15537; GFX12-SDAG-FAKE16-NEXT: v_add_co_u32 v0, vcc_lo, 0x800000, s05538; GFX12-SDAG-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)5539; GFX12-SDAG-FAKE16-NEXT: v_add_co_ci_u32_e64 v1, null, 0x80000000, v1, vcc_lo5540; GFX12-SDAG-FAKE16-NEXT: flat_load_u8 v0, v[0:1] offset:-8380416 scope:SCOPE_SYS5541; GFX12-SDAG-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x05542; GFX12-SDAG-FAKE16-NEXT: flat_store_b8 v[0:1], v05543; GFX12-SDAG-FAKE16-NEXT: s_endpgm5544;5545; GFX9-GISEL-LABEL: flat_inst_salu_offset_64bit_13bit_neg_high_split1:5546; GFX9-GISEL: ; %bb.0:5547; GFX9-GISEL-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245548; GFX9-GISEL-NEXT: s_waitcnt lgkmcnt(0)5549; GFX9-GISEL-NEXT: s_add_u32 s0, s0, 0x20005550; GFX9-GISEL-NEXT: s_addc_u32 s1, s1, 0x800000005551; GFX9-GISEL-NEXT: v_mov_b32_e32 v0, s05552; GFX9-GISEL-NEXT: v_mov_b32_e32 v1, s15553; GFX9-GISEL-NEXT: flat_load_ubyte v0, v[0:1] glc5554; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)5555; GFX9-GISEL-NEXT: flat_store_byte v[0:1], v05556; GFX9-GISEL-NEXT: s_endpgm5557;5558; GFX11-GISEL-LABEL: flat_inst_salu_offset_64bit_13bit_neg_high_split1:5559; GFX11-GISEL: ; %bb.0:5560; GFX11-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x245561; GFX11-GISEL-NEXT: s_waitcnt lgkmcnt(0)5562; GFX11-GISEL-NEXT: s_add_u32 s0, s0, 0x20005563; GFX11-GISEL-NEXT: s_addc_u32 s1, s1, 0x800000005564; GFX11-GISEL-NEXT: s_delay_alu instid0(SALU_CYCLE_1)5565; GFX11-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s15566; GFX11-GISEL-NEXT: flat_load_u8 v0, v[0:1] glc dlc5567; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)5568; GFX11-GISEL-NEXT: flat_store_b8 v[0:1], v05569; GFX11-GISEL-NEXT: s_endpgm5570;5571; GFX12-GISEL-LABEL: flat_inst_salu_offset_64bit_13bit_neg_high_split1:5572; GFX12-GISEL: ; %bb.0:5573; GFX12-GISEL-NEXT: s_load_b64 s[0:1], s[4:5], 0x245574; GFX12-GISEL-NEXT: s_wait_kmcnt 0x05575; GFX12-GISEL-NEXT: s_add_co_u32 s0, s0, 0x20005576; GFX12-GISEL-NEXT: s_add_co_ci_u32 s1, s1, 0x800000005577; GFX12-GISEL-NEXT: s_delay_alu instid0(SALU_CYCLE_1)5578; GFX12-GISEL-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s15579; GFX12-GISEL-NEXT: flat_load_u8 v0, v[0:1] scope:SCOPE_SYS5580; GFX12-GISEL-NEXT: s_wait_loadcnt_dscnt 0x05581; GFX12-GISEL-NEXT: flat_store_b8 v[0:1], v05582; GFX12-GISEL-NEXT: s_endpgm5583 %gep = getelementptr inbounds i8, ptr %p, i64 -92233720368547676165584 %load = load volatile i8, ptr %gep, align 15585 store i8 %load, ptr poison5586 ret void5587}5588;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:5589; GFX10-GISEL: {{.*}}5590; GFX10-SDAG: {{.*}}5591; GFX11: {{.*}}5592; GFX11-GISEL-FAKE16: {{.*}}5593; GFX11-GISEL-TRUE16: {{.*}}5594; GFX11-SDAG: {{.*}}5595; GFX12: {{.*}}5596; GFX12-GISEL-FAKE16: {{.*}}5597; GFX12-GISEL-TRUE16: {{.*}}5598; GFX12-SDAG: {{.*}}5599