brintos

brintos / llvm-project-archived public Read only

0
0
Text · 36.2 KiB · b84fb52 Raw
965 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx942 < %s | FileCheck -check-prefixes=GFX9X,GFX942 %s3; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx942 < %s | FileCheck -check-prefixes=GFX9X,GFX942 %s4; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx950 < %s | FileCheck -check-prefixes=GFX9X,GFX950 %s5; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx950 < %s | FileCheck -check-prefixes=GFX9X,GFX950 %s6; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1200 -mattr=+real-true16 < %s | FileCheck -check-prefixes=GFX12,GFX12-TRUE16 %s7; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1200 -mattr=-real-true16 < %s | FileCheck -check-prefixes=GFX12,GFX12-FAKE16 %s8; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1200 < %s | FileCheck -check-prefix=GFX12 %s9; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1250 -mattr=+real-true16 < %s | FileCheck -check-prefixes=GFX1250,GFX1250-TRUE16 %s10; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1250 -mattr=-real-true16 < %s | FileCheck -check-prefixes=GFX1250,GFX1250-FAKE16 %s11; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1250 -mattr=-real-true16 < %s | FileCheck -check-prefixes=GFX1250 %s12 13declare float @llvm.amdgcn.cvt.f32.bf8(i32, i32)14declare float @llvm.amdgcn.cvt.f32.fp8(i32, i32)15declare <2 x float> @llvm.amdgcn.cvt.pk.f32.bf8(i32, i1)16declare <2 x float> @llvm.amdgcn.cvt.pk.f32.fp8(i32, i1)17declare i32 @llvm.amdgcn.cvt.pk.bf8.f32(float, float, i32, i1)18declare i32 @llvm.amdgcn.cvt.pk.fp8.f32(float, float, i32, i1)19declare i32 @llvm.amdgcn.cvt.sr.bf8.f32(float, i32, i32, i32)20declare i32 @llvm.amdgcn.cvt.sr.fp8.f32(float, i32, i32, i32)21 22define float @test_cvt_f32_bf8_byte0(i32 %a) {23; GFX942-LABEL: test_cvt_f32_bf8_byte0:24; GFX942:       ; %bb.0:25; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)26; GFX942-NEXT:    v_cvt_f32_bf8_sdwa v0, v0 src0_sel:BYTE_027; GFX942-NEXT:    s_setpc_b64 s[30:31]28;29; GFX950-LABEL: test_cvt_f32_bf8_byte0:30; GFX950:       ; %bb.0:31; GFX950-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)32; GFX950-NEXT:    v_cvt_f32_bf8_e32 v0, v033; GFX950-NEXT:    s_setpc_b64 s[30:31]34;35; GFX12-LABEL: test_cvt_f32_bf8_byte0:36; GFX12:       ; %bb.0:37; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x038; GFX12-NEXT:    s_wait_expcnt 0x039; GFX12-NEXT:    s_wait_samplecnt 0x040; GFX12-NEXT:    s_wait_bvhcnt 0x041; GFX12-NEXT:    s_wait_kmcnt 0x042; GFX12-NEXT:    v_cvt_f32_bf8_e32 v0, v043; GFX12-NEXT:    s_setpc_b64 s[30:31]44;45; GFX1250-LABEL: test_cvt_f32_bf8_byte0:46; GFX1250:       ; %bb.0:47; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x048; GFX1250-NEXT:    s_wait_kmcnt 0x049; GFX1250-NEXT:    v_cvt_f32_bf8_e32 v0, v050; GFX1250-NEXT:    s_set_pc_i64 s[30:31]51  %ret = tail call float @llvm.amdgcn.cvt.f32.bf8(i32 %a, i32 0)52  ret float %ret53}54 55define float @test_cvt_f32_bf8_byte1(i32 %a) {56; GFX9X-LABEL: test_cvt_f32_bf8_byte1:57; GFX9X:       ; %bb.0:58; GFX9X-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)59; GFX9X-NEXT:    v_cvt_f32_bf8_sdwa v0, v0 src0_sel:BYTE_160; GFX9X-NEXT:    s_setpc_b64 s[30:31]61;62; GFX12-LABEL: test_cvt_f32_bf8_byte1:63; GFX12:       ; %bb.0:64; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x065; GFX12-NEXT:    s_wait_expcnt 0x066; GFX12-NEXT:    s_wait_samplecnt 0x067; GFX12-NEXT:    s_wait_bvhcnt 0x068; GFX12-NEXT:    s_wait_kmcnt 0x069; GFX12-NEXT:    v_cvt_f32_bf8_e64 v0, v0 byte_sel:170; GFX12-NEXT:    s_setpc_b64 s[30:31]71;72; GFX1250-LABEL: test_cvt_f32_bf8_byte1:73; GFX1250:       ; %bb.0:74; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x075; GFX1250-NEXT:    s_wait_kmcnt 0x076; GFX1250-NEXT:    v_cvt_f32_bf8_e64 v0, v0 byte_sel:177; GFX1250-NEXT:    s_set_pc_i64 s[30:31]78  %ret = tail call float @llvm.amdgcn.cvt.f32.bf8(i32 %a, i32 1)79  ret float %ret80}81 82define float @test_cvt_f32_bf8_byte2(i32 %a) {83; GFX9X-LABEL: test_cvt_f32_bf8_byte2:84; GFX9X:       ; %bb.0:85; GFX9X-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)86; GFX9X-NEXT:    v_cvt_f32_bf8_sdwa v0, v0 src0_sel:BYTE_287; GFX9X-NEXT:    s_setpc_b64 s[30:31]88;89; GFX12-LABEL: test_cvt_f32_bf8_byte2:90; GFX12:       ; %bb.0:91; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x092; GFX12-NEXT:    s_wait_expcnt 0x093; GFX12-NEXT:    s_wait_samplecnt 0x094; GFX12-NEXT:    s_wait_bvhcnt 0x095; GFX12-NEXT:    s_wait_kmcnt 0x096; GFX12-NEXT:    v_cvt_f32_bf8_e64 v0, v0 byte_sel:297; GFX12-NEXT:    s_setpc_b64 s[30:31]98;99; GFX1250-LABEL: test_cvt_f32_bf8_byte2:100; GFX1250:       ; %bb.0:101; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0102; GFX1250-NEXT:    s_wait_kmcnt 0x0103; GFX1250-NEXT:    v_cvt_f32_bf8_e64 v0, v0 byte_sel:2104; GFX1250-NEXT:    s_set_pc_i64 s[30:31]105  %ret = tail call float @llvm.amdgcn.cvt.f32.bf8(i32 %a, i32 2)106  ret float %ret107}108 109define float @test_cvt_f32_bf8_byte3(i32 %a) {110; GFX9X-LABEL: test_cvt_f32_bf8_byte3:111; GFX9X:       ; %bb.0:112; GFX9X-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)113; GFX9X-NEXT:    v_cvt_f32_bf8_sdwa v0, v0 src0_sel:BYTE_3114; GFX9X-NEXT:    s_setpc_b64 s[30:31]115;116; GFX12-LABEL: test_cvt_f32_bf8_byte3:117; GFX12:       ; %bb.0:118; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0119; GFX12-NEXT:    s_wait_expcnt 0x0120; GFX12-NEXT:    s_wait_samplecnt 0x0121; GFX12-NEXT:    s_wait_bvhcnt 0x0122; GFX12-NEXT:    s_wait_kmcnt 0x0123; GFX12-NEXT:    v_cvt_f32_bf8_e64 v0, v0 byte_sel:3124; GFX12-NEXT:    s_setpc_b64 s[30:31]125;126; GFX1250-LABEL: test_cvt_f32_bf8_byte3:127; GFX1250:       ; %bb.0:128; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0129; GFX1250-NEXT:    s_wait_kmcnt 0x0130; GFX1250-NEXT:    v_cvt_f32_bf8_e64 v0, v0 byte_sel:3131; GFX1250-NEXT:    s_set_pc_i64 s[30:31]132  %ret = tail call float @llvm.amdgcn.cvt.f32.bf8(i32 %a, i32 3)133  ret float %ret134}135 136define float @test_cvt_f32_fp8_byte0(i32 %a) {137; GFX942-LABEL: test_cvt_f32_fp8_byte0:138; GFX942:       ; %bb.0:139; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)140; GFX942-NEXT:    v_cvt_f32_fp8_sdwa v0, v0 src0_sel:BYTE_0141; GFX942-NEXT:    s_setpc_b64 s[30:31]142;143; GFX950-LABEL: test_cvt_f32_fp8_byte0:144; GFX950:       ; %bb.0:145; GFX950-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)146; GFX950-NEXT:    v_cvt_f32_fp8_e32 v0, v0147; GFX950-NEXT:    s_setpc_b64 s[30:31]148;149; GFX12-LABEL: test_cvt_f32_fp8_byte0:150; GFX12:       ; %bb.0:151; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0152; GFX12-NEXT:    s_wait_expcnt 0x0153; GFX12-NEXT:    s_wait_samplecnt 0x0154; GFX12-NEXT:    s_wait_bvhcnt 0x0155; GFX12-NEXT:    s_wait_kmcnt 0x0156; GFX12-NEXT:    v_cvt_f32_fp8_e32 v0, v0157; GFX12-NEXT:    s_setpc_b64 s[30:31]158;159; GFX1250-LABEL: test_cvt_f32_fp8_byte0:160; GFX1250:       ; %bb.0:161; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0162; GFX1250-NEXT:    s_wait_kmcnt 0x0163; GFX1250-NEXT:    v_cvt_f32_fp8_e32 v0, v0164; GFX1250-NEXT:    s_set_pc_i64 s[30:31]165  %ret = tail call float @llvm.amdgcn.cvt.f32.fp8(i32 %a, i32 0)166  ret float %ret167}168 169define float @test_cvt_f32_fp8_byte1(i32 %a) {170; GFX9X-LABEL: test_cvt_f32_fp8_byte1:171; GFX9X:       ; %bb.0:172; GFX9X-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)173; GFX9X-NEXT:    v_cvt_f32_fp8_sdwa v0, v0 src0_sel:BYTE_1174; GFX9X-NEXT:    s_setpc_b64 s[30:31]175;176; GFX12-LABEL: test_cvt_f32_fp8_byte1:177; GFX12:       ; %bb.0:178; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0179; GFX12-NEXT:    s_wait_expcnt 0x0180; GFX12-NEXT:    s_wait_samplecnt 0x0181; GFX12-NEXT:    s_wait_bvhcnt 0x0182; GFX12-NEXT:    s_wait_kmcnt 0x0183; GFX12-NEXT:    v_cvt_f32_fp8_e64 v0, v0 byte_sel:1184; GFX12-NEXT:    s_setpc_b64 s[30:31]185;186; GFX1250-LABEL: test_cvt_f32_fp8_byte1:187; GFX1250:       ; %bb.0:188; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0189; GFX1250-NEXT:    s_wait_kmcnt 0x0190; GFX1250-NEXT:    v_cvt_f32_fp8_e64 v0, v0 byte_sel:1191; GFX1250-NEXT:    s_set_pc_i64 s[30:31]192  %ret = tail call float @llvm.amdgcn.cvt.f32.fp8(i32 %a, i32 1)193  ret float %ret194}195 196define float @test_cvt_f32_fp8_byte2(i32 %a) {197; GFX9X-LABEL: test_cvt_f32_fp8_byte2:198; GFX9X:       ; %bb.0:199; GFX9X-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)200; GFX9X-NEXT:    v_cvt_f32_fp8_sdwa v0, v0 src0_sel:BYTE_2201; GFX9X-NEXT:    s_setpc_b64 s[30:31]202;203; GFX12-LABEL: test_cvt_f32_fp8_byte2:204; GFX12:       ; %bb.0:205; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0206; GFX12-NEXT:    s_wait_expcnt 0x0207; GFX12-NEXT:    s_wait_samplecnt 0x0208; GFX12-NEXT:    s_wait_bvhcnt 0x0209; GFX12-NEXT:    s_wait_kmcnt 0x0210; GFX12-NEXT:    v_cvt_f32_fp8_e64 v0, v0 byte_sel:2211; GFX12-NEXT:    s_setpc_b64 s[30:31]212;213; GFX1250-LABEL: test_cvt_f32_fp8_byte2:214; GFX1250:       ; %bb.0:215; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0216; GFX1250-NEXT:    s_wait_kmcnt 0x0217; GFX1250-NEXT:    v_cvt_f32_fp8_e64 v0, v0 byte_sel:2218; GFX1250-NEXT:    s_set_pc_i64 s[30:31]219  %ret = tail call float @llvm.amdgcn.cvt.f32.fp8(i32 %a, i32 2)220  ret float %ret221}222 223define float @test_cvt_f32_fp8_byte3(i32 %a) {224; GFX9X-LABEL: test_cvt_f32_fp8_byte3:225; GFX9X:       ; %bb.0:226; GFX9X-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)227; GFX9X-NEXT:    v_cvt_f32_fp8_sdwa v0, v0 src0_sel:BYTE_3228; GFX9X-NEXT:    s_setpc_b64 s[30:31]229;230; GFX12-LABEL: test_cvt_f32_fp8_byte3:231; GFX12:       ; %bb.0:232; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0233; GFX12-NEXT:    s_wait_expcnt 0x0234; GFX12-NEXT:    s_wait_samplecnt 0x0235; GFX12-NEXT:    s_wait_bvhcnt 0x0236; GFX12-NEXT:    s_wait_kmcnt 0x0237; GFX12-NEXT:    v_cvt_f32_fp8_e64 v0, v0 byte_sel:3238; GFX12-NEXT:    s_setpc_b64 s[30:31]239;240; GFX1250-LABEL: test_cvt_f32_fp8_byte3:241; GFX1250:       ; %bb.0:242; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0243; GFX1250-NEXT:    s_wait_kmcnt 0x0244; GFX1250-NEXT:    v_cvt_f32_fp8_e64 v0, v0 byte_sel:3245; GFX1250-NEXT:    s_set_pc_i64 s[30:31]246  %ret = tail call float @llvm.amdgcn.cvt.f32.fp8(i32 %a, i32 3)247  ret float %ret248}249 250define <2 x float> @test_cvt_pk_f32_bf8_word0(i32 %a) {251; GFX9X-LABEL: test_cvt_pk_f32_bf8_word0:252; GFX9X:       ; %bb.0:253; GFX9X-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)254; GFX9X-NEXT:    v_cvt_pk_f32_bf8_e32 v[0:1], v0255; GFX9X-NEXT:    s_setpc_b64 s[30:31]256;257; GFX12-LABEL: test_cvt_pk_f32_bf8_word0:258; GFX12:       ; %bb.0:259; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0260; GFX12-NEXT:    s_wait_expcnt 0x0261; GFX12-NEXT:    s_wait_samplecnt 0x0262; GFX12-NEXT:    s_wait_bvhcnt 0x0263; GFX12-NEXT:    s_wait_kmcnt 0x0264; GFX12-NEXT:    v_cvt_pk_f32_bf8_e32 v[0:1], v0265; GFX12-NEXT:    s_setpc_b64 s[30:31]266;267; GFX1250-LABEL: test_cvt_pk_f32_bf8_word0:268; GFX1250:       ; %bb.0:269; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0270; GFX1250-NEXT:    s_wait_kmcnt 0x0271; GFX1250-NEXT:    v_cvt_pk_f32_bf8_e32 v[0:1], v0272; GFX1250-NEXT:    s_set_pc_i64 s[30:31]273  %ret = tail call <2 x float> @llvm.amdgcn.cvt.pk.f32.bf8(i32 %a, i1 false)274  ret <2 x float> %ret275}276 277define <2 x float> @test_cvt_pk_f32_bf8_word1(i32 %a) {278; GFX9X-LABEL: test_cvt_pk_f32_bf8_word1:279; GFX9X:       ; %bb.0:280; GFX9X-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)281; GFX9X-NEXT:    v_cvt_pk_f32_bf8_sdwa v[0:1], v0 src0_sel:WORD_1282; GFX9X-NEXT:    s_setpc_b64 s[30:31]283;284; GFX12-LABEL: test_cvt_pk_f32_bf8_word1:285; GFX12:       ; %bb.0:286; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0287; GFX12-NEXT:    s_wait_expcnt 0x0288; GFX12-NEXT:    s_wait_samplecnt 0x0289; GFX12-NEXT:    s_wait_bvhcnt 0x0290; GFX12-NEXT:    s_wait_kmcnt 0x0291; GFX12-NEXT:    v_cvt_pk_f32_bf8_e64 v[0:1], v0 op_sel:[1,0]292; GFX12-NEXT:    s_setpc_b64 s[30:31]293;294; GFX1250-LABEL: test_cvt_pk_f32_bf8_word1:295; GFX1250:       ; %bb.0:296; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0297; GFX1250-NEXT:    s_wait_kmcnt 0x0298; GFX1250-NEXT:    v_cvt_pk_f32_bf8_e64 v[0:1], v0 op_sel:[1,0]299; GFX1250-NEXT:    s_set_pc_i64 s[30:31]300  %ret = tail call <2 x float> @llvm.amdgcn.cvt.pk.f32.bf8(i32 %a, i1 true)301  ret <2 x float> %ret302}303 304define <2 x float> @test_cvt_pk_f32_fp8_word0(i32 %a) {305; GFX9X-LABEL: test_cvt_pk_f32_fp8_word0:306; GFX9X:       ; %bb.0:307; GFX9X-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)308; GFX9X-NEXT:    v_cvt_pk_f32_fp8_e32 v[0:1], v0309; GFX9X-NEXT:    s_setpc_b64 s[30:31]310;311; GFX12-LABEL: test_cvt_pk_f32_fp8_word0:312; GFX12:       ; %bb.0:313; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0314; GFX12-NEXT:    s_wait_expcnt 0x0315; GFX12-NEXT:    s_wait_samplecnt 0x0316; GFX12-NEXT:    s_wait_bvhcnt 0x0317; GFX12-NEXT:    s_wait_kmcnt 0x0318; GFX12-NEXT:    v_cvt_pk_f32_fp8_e32 v[0:1], v0319; GFX12-NEXT:    s_setpc_b64 s[30:31]320;321; GFX1250-LABEL: test_cvt_pk_f32_fp8_word0:322; GFX1250:       ; %bb.0:323; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0324; GFX1250-NEXT:    s_wait_kmcnt 0x0325; GFX1250-NEXT:    v_cvt_pk_f32_fp8_e32 v[0:1], v0326; GFX1250-NEXT:    s_set_pc_i64 s[30:31]327  %ret = tail call <2 x float> @llvm.amdgcn.cvt.pk.f32.fp8(i32 %a, i1 false)328  ret <2 x float> %ret329}330 331define <2 x float> @test_cvt_pk_f32_fp8_word1(i32 %a) {332; GFX9X-LABEL: test_cvt_pk_f32_fp8_word1:333; GFX9X:       ; %bb.0:334; GFX9X-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)335; GFX9X-NEXT:    v_cvt_pk_f32_fp8_sdwa v[0:1], v0 src0_sel:WORD_1336; GFX9X-NEXT:    s_setpc_b64 s[30:31]337;338; GFX12-LABEL: test_cvt_pk_f32_fp8_word1:339; GFX12:       ; %bb.0:340; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0341; GFX12-NEXT:    s_wait_expcnt 0x0342; GFX12-NEXT:    s_wait_samplecnt 0x0343; GFX12-NEXT:    s_wait_bvhcnt 0x0344; GFX12-NEXT:    s_wait_kmcnt 0x0345; GFX12-NEXT:    v_cvt_pk_f32_fp8_e64 v[0:1], v0 op_sel:[1,0]346; GFX12-NEXT:    s_setpc_b64 s[30:31]347;348; GFX1250-LABEL: test_cvt_pk_f32_fp8_word1:349; GFX1250:       ; %bb.0:350; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0351; GFX1250-NEXT:    s_wait_kmcnt 0x0352; GFX1250-NEXT:    v_cvt_pk_f32_fp8_e64 v[0:1], v0 op_sel:[1,0]353; GFX1250-NEXT:    s_set_pc_i64 s[30:31]354  %ret = tail call <2 x float> @llvm.amdgcn.cvt.pk.f32.fp8(i32 %a, i1 true)355  ret <2 x float> %ret356}357 358define i32 @test_cvt_pk_bf8_f32_word0(float %x, float %y, i32 %old) {359; GFX9X-LABEL: test_cvt_pk_bf8_f32_word0:360; GFX9X:       ; %bb.0:361; GFX9X-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)362; GFX9X-NEXT:    v_cvt_pk_bf8_f32 v2, v0, v1363; GFX9X-NEXT:    v_mov_b32_e32 v0, v2364; GFX9X-NEXT:    s_setpc_b64 s[30:31]365;366; GFX12-TRUE16-LABEL: test_cvt_pk_bf8_f32_word0:367; GFX12-TRUE16:       ; %bb.0:368; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x0369; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x0370; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x0371; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x0372; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x0373; GFX12-TRUE16-NEXT:    v_cvt_pk_bf8_f32 v2.l, v0, v1374; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)375; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v0, v2376; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]377;378; GFX12-FAKE16-LABEL: test_cvt_pk_bf8_f32_word0:379; GFX12-FAKE16:       ; %bb.0:380; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x0381; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x0382; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x0383; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x0384; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x0385; GFX12-FAKE16-NEXT:    v_cvt_pk_bf8_f32 v2, v0, v1386; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)387; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v0, v2388; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]389;390; GFX1250-TRUE16-LABEL: test_cvt_pk_bf8_f32_word0:391; GFX1250-TRUE16:       ; %bb.0:392; GFX1250-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x0393; GFX1250-TRUE16-NEXT:    s_wait_kmcnt 0x0394; GFX1250-TRUE16-NEXT:    v_cvt_pk_bf8_f32 v2.l, v0, v1395; GFX1250-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)396; GFX1250-TRUE16-NEXT:    v_mov_b32_e32 v0, v2397; GFX1250-TRUE16-NEXT:    s_set_pc_i64 s[30:31]398;399; GFX1250-FAKE16-LABEL: test_cvt_pk_bf8_f32_word0:400; GFX1250-FAKE16:       ; %bb.0:401; GFX1250-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x0402; GFX1250-FAKE16-NEXT:    s_wait_kmcnt 0x0403; GFX1250-FAKE16-NEXT:    v_cvt_pk_bf8_f32 v2, v0, v1404; GFX1250-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)405; GFX1250-FAKE16-NEXT:    v_mov_b32_e32 v0, v2406; GFX1250-FAKE16-NEXT:    s_set_pc_i64 s[30:31]407  %ret = tail call i32 @llvm.amdgcn.cvt.pk.bf8.f32(float %x, float %y, i32 %old, i1 false)408  ret i32 %ret409}410 411define i32 @test_cvt_pk_bf8_f32_word1(float %x, float %y, i32 %old) {412; GFX9X-LABEL: test_cvt_pk_bf8_f32_word1:413; GFX9X:       ; %bb.0:414; GFX9X-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)415; GFX9X-NEXT:    v_cvt_pk_bf8_f32 v2, v0, v1 op_sel:[0,0,1]416; GFX9X-NEXT:    s_nop 0417; GFX9X-NEXT:    v_mov_b32_e32 v0, v2418; GFX9X-NEXT:    s_setpc_b64 s[30:31]419;420; GFX12-TRUE16-LABEL: test_cvt_pk_bf8_f32_word1:421; GFX12-TRUE16:       ; %bb.0:422; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x0423; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x0424; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x0425; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x0426; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x0427; GFX12-TRUE16-NEXT:    v_cvt_pk_bf8_f32 v2.h, v0, v1 op_sel:[0,0,1]428; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)429; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v0, v2430; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]431;432; GFX12-FAKE16-LABEL: test_cvt_pk_bf8_f32_word1:433; GFX12-FAKE16:       ; %bb.0:434; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x0435; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x0436; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x0437; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x0438; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x0439; GFX12-FAKE16-NEXT:    v_cvt_pk_bf8_f32 v2, v0, v1 op_sel:[0,0,1]440; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)441; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v0, v2442; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]443;444; GFX1250-TRUE16-LABEL: test_cvt_pk_bf8_f32_word1:445; GFX1250-TRUE16:       ; %bb.0:446; GFX1250-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x0447; GFX1250-TRUE16-NEXT:    s_wait_kmcnt 0x0448; GFX1250-TRUE16-NEXT:    v_cvt_pk_bf8_f32 v2.h, v0, v1 op_sel:[0,0,1]449; GFX1250-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)450; GFX1250-TRUE16-NEXT:    v_mov_b32_e32 v0, v2451; GFX1250-TRUE16-NEXT:    s_set_pc_i64 s[30:31]452;453; GFX1250-FAKE16-LABEL: test_cvt_pk_bf8_f32_word1:454; GFX1250-FAKE16:       ; %bb.0:455; GFX1250-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x0456; GFX1250-FAKE16-NEXT:    s_wait_kmcnt 0x0457; GFX1250-FAKE16-NEXT:    v_cvt_pk_bf8_f32 v2, v0, v1 op_sel:[0,0,1]458; GFX1250-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)459; GFX1250-FAKE16-NEXT:    v_mov_b32_e32 v0, v2460; GFX1250-FAKE16-NEXT:    s_set_pc_i64 s[30:31]461  %ret = tail call i32 @llvm.amdgcn.cvt.pk.bf8.f32(float %x, float %y, i32 %old, i1 true)462  ret i32 %ret463}464 465define i32 @test_cvt_pk_fp8_f32_word0(float %x, float %y, i32 %old) {466; GFX9X-LABEL: test_cvt_pk_fp8_f32_word0:467; GFX9X:       ; %bb.0:468; GFX9X-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)469; GFX9X-NEXT:    v_cvt_pk_fp8_f32 v2, v0, v1470; GFX9X-NEXT:    v_mov_b32_e32 v0, v2471; GFX9X-NEXT:    s_setpc_b64 s[30:31]472;473; GFX12-TRUE16-LABEL: test_cvt_pk_fp8_f32_word0:474; GFX12-TRUE16:       ; %bb.0:475; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x0476; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x0477; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x0478; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x0479; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x0480; GFX12-TRUE16-NEXT:    v_cvt_pk_fp8_f32 v2.l, v0, v1481; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)482; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v0, v2483; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]484;485; GFX12-FAKE16-LABEL: test_cvt_pk_fp8_f32_word0:486; GFX12-FAKE16:       ; %bb.0:487; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x0488; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x0489; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x0490; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x0491; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x0492; GFX12-FAKE16-NEXT:    v_cvt_pk_fp8_f32 v2, v0, v1493; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)494; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v0, v2495; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]496;497; GFX1250-TRUE16-LABEL: test_cvt_pk_fp8_f32_word0:498; GFX1250-TRUE16:       ; %bb.0:499; GFX1250-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x0500; GFX1250-TRUE16-NEXT:    s_wait_kmcnt 0x0501; GFX1250-TRUE16-NEXT:    v_cvt_pk_fp8_f32 v2.l, v0, v1502; GFX1250-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)503; GFX1250-TRUE16-NEXT:    v_mov_b32_e32 v0, v2504; GFX1250-TRUE16-NEXT:    s_set_pc_i64 s[30:31]505;506; GFX1250-FAKE16-LABEL: test_cvt_pk_fp8_f32_word0:507; GFX1250-FAKE16:       ; %bb.0:508; GFX1250-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x0509; GFX1250-FAKE16-NEXT:    s_wait_kmcnt 0x0510; GFX1250-FAKE16-NEXT:    v_cvt_pk_fp8_f32 v2, v0, v1511; GFX1250-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)512; GFX1250-FAKE16-NEXT:    v_mov_b32_e32 v0, v2513; GFX1250-FAKE16-NEXT:    s_set_pc_i64 s[30:31]514  %ret = tail call i32 @llvm.amdgcn.cvt.pk.fp8.f32(float %x, float %y, i32 %old, i1 false)515  ret i32 %ret516}517 518define i32 @test_cvt_pk_fp8_f32_word1(float %x, float %y, i32 %old) {519; GFX9X-LABEL: test_cvt_pk_fp8_f32_word1:520; GFX9X:       ; %bb.0:521; GFX9X-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)522; GFX9X-NEXT:    v_cvt_pk_fp8_f32 v2, v0, v1 op_sel:[0,0,1]523; GFX9X-NEXT:    s_nop 0524; GFX9X-NEXT:    v_mov_b32_e32 v0, v2525; GFX9X-NEXT:    s_setpc_b64 s[30:31]526;527; GFX12-TRUE16-LABEL: test_cvt_pk_fp8_f32_word1:528; GFX12-TRUE16:       ; %bb.0:529; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x0530; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x0531; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x0532; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x0533; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x0534; GFX12-TRUE16-NEXT:    v_cvt_pk_fp8_f32 v2.h, v0, v1 op_sel:[0,0,1]535; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)536; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v0, v2537; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]538;539; GFX12-FAKE16-LABEL: test_cvt_pk_fp8_f32_word1:540; GFX12-FAKE16:       ; %bb.0:541; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x0542; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x0543; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x0544; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x0545; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x0546; GFX12-FAKE16-NEXT:    v_cvt_pk_fp8_f32 v2, v0, v1 op_sel:[0,0,1]547; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)548; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v0, v2549; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]550;551; GFX1250-TRUE16-LABEL: test_cvt_pk_fp8_f32_word1:552; GFX1250-TRUE16:       ; %bb.0:553; GFX1250-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x0554; GFX1250-TRUE16-NEXT:    s_wait_kmcnt 0x0555; GFX1250-TRUE16-NEXT:    v_cvt_pk_fp8_f32 v2.h, v0, v1 op_sel:[0,0,1]556; GFX1250-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)557; GFX1250-TRUE16-NEXT:    v_mov_b32_e32 v0, v2558; GFX1250-TRUE16-NEXT:    s_set_pc_i64 s[30:31]559;560; GFX1250-FAKE16-LABEL: test_cvt_pk_fp8_f32_word1:561; GFX1250-FAKE16:       ; %bb.0:562; GFX1250-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x0563; GFX1250-FAKE16-NEXT:    s_wait_kmcnt 0x0564; GFX1250-FAKE16-NEXT:    v_cvt_pk_fp8_f32 v2, v0, v1 op_sel:[0,0,1]565; GFX1250-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)566; GFX1250-FAKE16-NEXT:    v_mov_b32_e32 v0, v2567; GFX1250-FAKE16-NEXT:    s_set_pc_i64 s[30:31]568  %ret = tail call i32 @llvm.amdgcn.cvt.pk.fp8.f32(float %x, float %y, i32 %old, i1 true)569  ret i32 %ret570}571 572define i32 @test_cvt_sr_bf8_f32_byte0(float %x, i32 %r, i32 %old) {573; GFX9X-LABEL: test_cvt_sr_bf8_f32_byte0:574; GFX9X:       ; %bb.0:575; GFX9X-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)576; GFX9X-NEXT:    v_cvt_sr_bf8_f32 v2, v0, v1577; GFX9X-NEXT:    v_mov_b32_e32 v0, v2578; GFX9X-NEXT:    s_setpc_b64 s[30:31]579;580; GFX12-LABEL: test_cvt_sr_bf8_f32_byte0:581; GFX12:       ; %bb.0:582; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0583; GFX12-NEXT:    s_wait_expcnt 0x0584; GFX12-NEXT:    s_wait_samplecnt 0x0585; GFX12-NEXT:    s_wait_bvhcnt 0x0586; GFX12-NEXT:    s_wait_kmcnt 0x0587; GFX12-NEXT:    v_cvt_sr_bf8_f32 v2, v0, v1588; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)589; GFX12-NEXT:    v_mov_b32_e32 v0, v2590; GFX12-NEXT:    s_setpc_b64 s[30:31]591;592; GFX1250-LABEL: test_cvt_sr_bf8_f32_byte0:593; GFX1250:       ; %bb.0:594; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0595; GFX1250-NEXT:    s_wait_kmcnt 0x0596; GFX1250-NEXT:    v_cvt_sr_bf8_f32 v2, v0, v1597; GFX1250-NEXT:    s_delay_alu instid0(VALU_DEP_1)598; GFX1250-NEXT:    v_mov_b32_e32 v0, v2599; GFX1250-NEXT:    s_set_pc_i64 s[30:31]600  %ret = tail call i32 @llvm.amdgcn.cvt.sr.bf8.f32(float %x, i32 %r, i32 %old, i32 0)601  ret i32 %ret602}603 604define i32 @test_cvt_sr_bf8_f32_byte1(float %x, i32 %r, i32 %old) {605; GFX9X-LABEL: test_cvt_sr_bf8_f32_byte1:606; GFX9X:       ; %bb.0:607; GFX9X-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)608; GFX9X-NEXT:    v_cvt_sr_bf8_f32 v2, v0, v1 op_sel:[0,0,1,0]609; GFX9X-NEXT:    s_nop 0610; GFX9X-NEXT:    v_mov_b32_e32 v0, v2611; GFX9X-NEXT:    s_setpc_b64 s[30:31]612;613; GFX12-LABEL: test_cvt_sr_bf8_f32_byte1:614; GFX12:       ; %bb.0:615; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0616; GFX12-NEXT:    s_wait_expcnt 0x0617; GFX12-NEXT:    s_wait_samplecnt 0x0618; GFX12-NEXT:    s_wait_bvhcnt 0x0619; GFX12-NEXT:    s_wait_kmcnt 0x0620; GFX12-NEXT:    v_cvt_sr_bf8_f32 v2, v0, v1 byte_sel:1621; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)622; GFX12-NEXT:    v_mov_b32_e32 v0, v2623; GFX12-NEXT:    s_setpc_b64 s[30:31]624;625; GFX1250-LABEL: test_cvt_sr_bf8_f32_byte1:626; GFX1250:       ; %bb.0:627; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0628; GFX1250-NEXT:    s_wait_kmcnt 0x0629; GFX1250-NEXT:    v_cvt_sr_bf8_f32 v2, v0, v1 byte_sel:1630; GFX1250-NEXT:    s_delay_alu instid0(VALU_DEP_1)631; GFX1250-NEXT:    v_mov_b32_e32 v0, v2632; GFX1250-NEXT:    s_set_pc_i64 s[30:31]633  %ret = tail call i32 @llvm.amdgcn.cvt.sr.bf8.f32(float %x, i32 %r, i32 %old, i32 1)634  ret i32 %ret635}636 637define i32 @test_cvt_sr_bf8_f32_byte2(float %x, i32 %r, i32 %old) {638; GFX9X-LABEL: test_cvt_sr_bf8_f32_byte2:639; GFX9X:       ; %bb.0:640; GFX9X-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)641; GFX9X-NEXT:    v_cvt_sr_bf8_f32 v2, v0, v1 op_sel:[0,0,0,1]642; GFX9X-NEXT:    s_nop 0643; GFX9X-NEXT:    v_mov_b32_e32 v0, v2644; GFX9X-NEXT:    s_setpc_b64 s[30:31]645;646; GFX12-LABEL: test_cvt_sr_bf8_f32_byte2:647; GFX12:       ; %bb.0:648; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0649; GFX12-NEXT:    s_wait_expcnt 0x0650; GFX12-NEXT:    s_wait_samplecnt 0x0651; GFX12-NEXT:    s_wait_bvhcnt 0x0652; GFX12-NEXT:    s_wait_kmcnt 0x0653; GFX12-NEXT:    v_cvt_sr_bf8_f32 v2, v0, v1 byte_sel:2654; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)655; GFX12-NEXT:    v_mov_b32_e32 v0, v2656; GFX12-NEXT:    s_setpc_b64 s[30:31]657;658; GFX1250-LABEL: test_cvt_sr_bf8_f32_byte2:659; GFX1250:       ; %bb.0:660; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0661; GFX1250-NEXT:    s_wait_kmcnt 0x0662; GFX1250-NEXT:    v_cvt_sr_bf8_f32 v2, v0, v1 byte_sel:2663; GFX1250-NEXT:    s_delay_alu instid0(VALU_DEP_1)664; GFX1250-NEXT:    v_mov_b32_e32 v0, v2665; GFX1250-NEXT:    s_set_pc_i64 s[30:31]666  %ret = tail call i32 @llvm.amdgcn.cvt.sr.bf8.f32(float %x, i32 %r, i32 %old, i32 2)667  ret i32 %ret668}669 670define i32 @test_cvt_sr_bf8_f32_byte3(float %x, i32 %r, i32 %old) {671; GFX9X-LABEL: test_cvt_sr_bf8_f32_byte3:672; GFX9X:       ; %bb.0:673; GFX9X-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)674; GFX9X-NEXT:    v_cvt_sr_bf8_f32 v2, v0, v1 op_sel:[0,0,1,1]675; GFX9X-NEXT:    s_nop 0676; GFX9X-NEXT:    v_mov_b32_e32 v0, v2677; GFX9X-NEXT:    s_setpc_b64 s[30:31]678;679; GFX12-LABEL: test_cvt_sr_bf8_f32_byte3:680; GFX12:       ; %bb.0:681; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0682; GFX12-NEXT:    s_wait_expcnt 0x0683; GFX12-NEXT:    s_wait_samplecnt 0x0684; GFX12-NEXT:    s_wait_bvhcnt 0x0685; GFX12-NEXT:    s_wait_kmcnt 0x0686; GFX12-NEXT:    v_cvt_sr_bf8_f32 v2, v0, v1 byte_sel:3687; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)688; GFX12-NEXT:    v_mov_b32_e32 v0, v2689; GFX12-NEXT:    s_setpc_b64 s[30:31]690;691; GFX1250-LABEL: test_cvt_sr_bf8_f32_byte3:692; GFX1250:       ; %bb.0:693; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0694; GFX1250-NEXT:    s_wait_kmcnt 0x0695; GFX1250-NEXT:    v_cvt_sr_bf8_f32 v2, v0, v1 byte_sel:3696; GFX1250-NEXT:    s_delay_alu instid0(VALU_DEP_1)697; GFX1250-NEXT:    v_mov_b32_e32 v0, v2698; GFX1250-NEXT:    s_set_pc_i64 s[30:31]699  %ret = tail call i32 @llvm.amdgcn.cvt.sr.bf8.f32(float %x, i32 %r, i32 %old, i32 3)700  ret i32 %ret701}702 703define i32 @test_cvt_sr_fp8_f32_byte0(float %x, i32 %r, i32 %old) {704; GFX9X-LABEL: test_cvt_sr_fp8_f32_byte0:705; GFX9X:       ; %bb.0:706; GFX9X-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)707; GFX9X-NEXT:    v_cvt_sr_fp8_f32 v2, v0, v1708; GFX9X-NEXT:    v_mov_b32_e32 v0, v2709; GFX9X-NEXT:    s_setpc_b64 s[30:31]710;711; GFX12-LABEL: test_cvt_sr_fp8_f32_byte0:712; GFX12:       ; %bb.0:713; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0714; GFX12-NEXT:    s_wait_expcnt 0x0715; GFX12-NEXT:    s_wait_samplecnt 0x0716; GFX12-NEXT:    s_wait_bvhcnt 0x0717; GFX12-NEXT:    s_wait_kmcnt 0x0718; GFX12-NEXT:    v_cvt_sr_fp8_f32 v2, v0, v1719; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)720; GFX12-NEXT:    v_mov_b32_e32 v0, v2721; GFX12-NEXT:    s_setpc_b64 s[30:31]722;723; GFX1250-LABEL: test_cvt_sr_fp8_f32_byte0:724; GFX1250:       ; %bb.0:725; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0726; GFX1250-NEXT:    s_wait_kmcnt 0x0727; GFX1250-NEXT:    v_cvt_sr_fp8_f32 v2, v0, v1728; GFX1250-NEXT:    s_delay_alu instid0(VALU_DEP_1)729; GFX1250-NEXT:    v_mov_b32_e32 v0, v2730; GFX1250-NEXT:    s_set_pc_i64 s[30:31]731  %ret = tail call i32 @llvm.amdgcn.cvt.sr.fp8.f32(float %x, i32 %r, i32 %old, i32 0)732  ret i32 %ret733}734 735define i32 @test_cvt_sr_fp8_f32_byte1(float %x, i32 %r, i32 %old) {736; GFX9X-LABEL: test_cvt_sr_fp8_f32_byte1:737; GFX9X:       ; %bb.0:738; GFX9X-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)739; GFX9X-NEXT:    v_cvt_sr_fp8_f32 v2, v0, v1 op_sel:[0,0,1,0]740; GFX9X-NEXT:    s_nop 0741; GFX9X-NEXT:    v_mov_b32_e32 v0, v2742; GFX9X-NEXT:    s_setpc_b64 s[30:31]743;744; GFX12-LABEL: test_cvt_sr_fp8_f32_byte1:745; GFX12:       ; %bb.0:746; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0747; GFX12-NEXT:    s_wait_expcnt 0x0748; GFX12-NEXT:    s_wait_samplecnt 0x0749; GFX12-NEXT:    s_wait_bvhcnt 0x0750; GFX12-NEXT:    s_wait_kmcnt 0x0751; GFX12-NEXT:    v_cvt_sr_fp8_f32 v2, v0, v1 byte_sel:1752; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)753; GFX12-NEXT:    v_mov_b32_e32 v0, v2754; GFX12-NEXT:    s_setpc_b64 s[30:31]755;756; GFX1250-LABEL: test_cvt_sr_fp8_f32_byte1:757; GFX1250:       ; %bb.0:758; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0759; GFX1250-NEXT:    s_wait_kmcnt 0x0760; GFX1250-NEXT:    v_cvt_sr_fp8_f32 v2, v0, v1 byte_sel:1761; GFX1250-NEXT:    s_delay_alu instid0(VALU_DEP_1)762; GFX1250-NEXT:    v_mov_b32_e32 v0, v2763; GFX1250-NEXT:    s_set_pc_i64 s[30:31]764  %ret = tail call i32 @llvm.amdgcn.cvt.sr.fp8.f32(float %x, i32 %r, i32 %old, i32 1)765  ret i32 %ret766}767 768define i32 @test_cvt_sr_fp8_f32_byte2(float %x, i32 %r, i32 %old) {769; GFX9X-LABEL: test_cvt_sr_fp8_f32_byte2:770; GFX9X:       ; %bb.0:771; GFX9X-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)772; GFX9X-NEXT:    v_cvt_sr_fp8_f32 v2, v0, v1 op_sel:[0,0,0,1]773; GFX9X-NEXT:    s_nop 0774; GFX9X-NEXT:    v_mov_b32_e32 v0, v2775; GFX9X-NEXT:    s_setpc_b64 s[30:31]776;777; GFX12-LABEL: test_cvt_sr_fp8_f32_byte2:778; GFX12:       ; %bb.0:779; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0780; GFX12-NEXT:    s_wait_expcnt 0x0781; GFX12-NEXT:    s_wait_samplecnt 0x0782; GFX12-NEXT:    s_wait_bvhcnt 0x0783; GFX12-NEXT:    s_wait_kmcnt 0x0784; GFX12-NEXT:    v_cvt_sr_fp8_f32 v2, v0, v1 byte_sel:2785; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)786; GFX12-NEXT:    v_mov_b32_e32 v0, v2787; GFX12-NEXT:    s_setpc_b64 s[30:31]788;789; GFX1250-LABEL: test_cvt_sr_fp8_f32_byte2:790; GFX1250:       ; %bb.0:791; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0792; GFX1250-NEXT:    s_wait_kmcnt 0x0793; GFX1250-NEXT:    v_cvt_sr_fp8_f32 v2, v0, v1 byte_sel:2794; GFX1250-NEXT:    s_delay_alu instid0(VALU_DEP_1)795; GFX1250-NEXT:    v_mov_b32_e32 v0, v2796; GFX1250-NEXT:    s_set_pc_i64 s[30:31]797  %ret = tail call i32 @llvm.amdgcn.cvt.sr.fp8.f32(float %x, i32 %r, i32 %old, i32 2)798  ret i32 %ret799}800 801define i32 @test_cvt_sr_fp8_f32_byte3(float %x, i32 %r, i32 %old) {802; GFX9X-LABEL: test_cvt_sr_fp8_f32_byte3:803; GFX9X:       ; %bb.0:804; GFX9X-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)805; GFX9X-NEXT:    v_cvt_sr_fp8_f32 v2, v0, v1 op_sel:[0,0,1,1]806; GFX9X-NEXT:    s_nop 0807; GFX9X-NEXT:    v_mov_b32_e32 v0, v2808; GFX9X-NEXT:    s_setpc_b64 s[30:31]809;810; GFX12-LABEL: test_cvt_sr_fp8_f32_byte3:811; GFX12:       ; %bb.0:812; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0813; GFX12-NEXT:    s_wait_expcnt 0x0814; GFX12-NEXT:    s_wait_samplecnt 0x0815; GFX12-NEXT:    s_wait_bvhcnt 0x0816; GFX12-NEXT:    s_wait_kmcnt 0x0817; GFX12-NEXT:    v_cvt_sr_fp8_f32 v2, v0, v1 byte_sel:3818; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)819; GFX12-NEXT:    v_mov_b32_e32 v0, v2820; GFX12-NEXT:    s_setpc_b64 s[30:31]821;822; GFX1250-LABEL: test_cvt_sr_fp8_f32_byte3:823; GFX1250:       ; %bb.0:824; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0825; GFX1250-NEXT:    s_wait_kmcnt 0x0826; GFX1250-NEXT:    v_cvt_sr_fp8_f32 v2, v0, v1 byte_sel:3827; GFX1250-NEXT:    s_delay_alu instid0(VALU_DEP_1)828; GFX1250-NEXT:    v_mov_b32_e32 v0, v2829; GFX1250-NEXT:    s_set_pc_i64 s[30:31]830  %ret = tail call i32 @llvm.amdgcn.cvt.sr.fp8.f32(float %x, i32 %r, i32 %old, i32 3)831  ret i32 %ret832}833 834define float @test_sext_cvt_f32_fp8(i16 %a) {835; GFX9X-LABEL: test_sext_cvt_f32_fp8:836; GFX9X:       ; %bb.0:837; GFX9X-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)838; GFX9X-NEXT:    v_bfe_i32 v0, v0, 0, 16839; GFX9X-NEXT:    v_cvt_f32_fp8_sdwa v0, v0 src0_sel:BYTE_1840; GFX9X-NEXT:    s_setpc_b64 s[30:31]841;842; GFX12-LABEL: test_sext_cvt_f32_fp8:843; GFX12:       ; %bb.0:844; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0845; GFX12-NEXT:    s_wait_expcnt 0x0846; GFX12-NEXT:    s_wait_samplecnt 0x0847; GFX12-NEXT:    s_wait_bvhcnt 0x0848; GFX12-NEXT:    s_wait_kmcnt 0x0849; GFX12-NEXT:    v_bfe_i32 v0, v0, 0, 16850; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)851; GFX12-NEXT:    v_cvt_f32_fp8_e64 v0, v0 byte_sel:1852; GFX12-NEXT:    s_setpc_b64 s[30:31]853;854; GFX1250-LABEL: test_sext_cvt_f32_fp8:855; GFX1250:       ; %bb.0:856; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0857; GFX1250-NEXT:    s_wait_kmcnt 0x0858; GFX1250-NEXT:    v_bfe_i32 v0, v0, 0, 16859; GFX1250-NEXT:    s_delay_alu instid0(VALU_DEP_1)860; GFX1250-NEXT:    v_cvt_f32_fp8_e64 v0, v0 byte_sel:1861; GFX1250-NEXT:    s_set_pc_i64 s[30:31]862  %a.sext = sext i16 %a to i32863  %ret = tail call float @llvm.amdgcn.cvt.f32.fp8(i32 %a.sext, i32 1)864  ret float %ret865}866 867define float @test_sext_cvt_f32_bf8(i16 %a) {868; GFX9X-LABEL: test_sext_cvt_f32_bf8:869; GFX9X:       ; %bb.0:870; GFX9X-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)871; GFX9X-NEXT:    v_bfe_i32 v0, v0, 0, 16872; GFX9X-NEXT:    v_cvt_f32_bf8_sdwa v0, v0 src0_sel:BYTE_1873; GFX9X-NEXT:    s_setpc_b64 s[30:31]874;875; GFX12-LABEL: test_sext_cvt_f32_bf8:876; GFX12:       ; %bb.0:877; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0878; GFX12-NEXT:    s_wait_expcnt 0x0879; GFX12-NEXT:    s_wait_samplecnt 0x0880; GFX12-NEXT:    s_wait_bvhcnt 0x0881; GFX12-NEXT:    s_wait_kmcnt 0x0882; GFX12-NEXT:    v_bfe_i32 v0, v0, 0, 16883; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)884; GFX12-NEXT:    v_cvt_f32_bf8_e64 v0, v0 byte_sel:1885; GFX12-NEXT:    s_setpc_b64 s[30:31]886;887; GFX1250-LABEL: test_sext_cvt_f32_bf8:888; GFX1250:       ; %bb.0:889; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0890; GFX1250-NEXT:    s_wait_kmcnt 0x0891; GFX1250-NEXT:    v_bfe_i32 v0, v0, 0, 16892; GFX1250-NEXT:    s_delay_alu instid0(VALU_DEP_1)893; GFX1250-NEXT:    v_cvt_f32_bf8_e64 v0, v0 byte_sel:1894; GFX1250-NEXT:    s_set_pc_i64 s[30:31]895  %a.sext = sext i16 %a to i32896  %ret = tail call float @llvm.amdgcn.cvt.f32.bf8(i32 %a.sext, i32 1)897  ret float %ret898}899 900define <2 x float> @test_sext_cvt_pk_f32_bf8_word1(i16 %a) {901; GFX9X-LABEL: test_sext_cvt_pk_f32_bf8_word1:902; GFX9X:       ; %bb.0:903; GFX9X-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)904; GFX9X-NEXT:    v_bfe_i32 v0, v0, 0, 16905; GFX9X-NEXT:    v_cvt_pk_f32_bf8_sdwa v[0:1], v0 src0_sel:WORD_1906; GFX9X-NEXT:    s_setpc_b64 s[30:31]907;908; GFX12-LABEL: test_sext_cvt_pk_f32_bf8_word1:909; GFX12:       ; %bb.0:910; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0911; GFX12-NEXT:    s_wait_expcnt 0x0912; GFX12-NEXT:    s_wait_samplecnt 0x0913; GFX12-NEXT:    s_wait_bvhcnt 0x0914; GFX12-NEXT:    s_wait_kmcnt 0x0915; GFX12-NEXT:    v_bfe_i32 v0, v0, 0, 16916; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)917; GFX12-NEXT:    v_cvt_pk_f32_bf8_e64 v[0:1], v0 op_sel:[1,0]918; GFX12-NEXT:    s_setpc_b64 s[30:31]919;920; GFX1250-LABEL: test_sext_cvt_pk_f32_bf8_word1:921; GFX1250:       ; %bb.0:922; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0923; GFX1250-NEXT:    s_wait_kmcnt 0x0924; GFX1250-NEXT:    v_bfe_i32 v0, v0, 0, 16925; GFX1250-NEXT:    s_delay_alu instid0(VALU_DEP_1)926; GFX1250-NEXT:    v_cvt_pk_f32_bf8_e64 v[0:1], v0 op_sel:[1,0]927; GFX1250-NEXT:    s_set_pc_i64 s[30:31]928  %a.sext = sext i16 %a to i32929  %ret = tail call <2 x float> @llvm.amdgcn.cvt.pk.f32.bf8(i32 %a.sext, i1 true)930  ret <2 x float> %ret931}932 933define <2 x float> @test_sext_cvt_pk_f32_fp8_word0(i16 %a) {934; GFX9X-LABEL: test_sext_cvt_pk_f32_fp8_word0:935; GFX9X:       ; %bb.0:936; GFX9X-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)937; GFX9X-NEXT:    v_bfe_i32 v0, v0, 0, 16938; GFX9X-NEXT:    v_cvt_pk_f32_fp8_e32 v[0:1], v0939; GFX9X-NEXT:    s_setpc_b64 s[30:31]940;941; GFX12-LABEL: test_sext_cvt_pk_f32_fp8_word0:942; GFX12:       ; %bb.0:943; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0944; GFX12-NEXT:    s_wait_expcnt 0x0945; GFX12-NEXT:    s_wait_samplecnt 0x0946; GFX12-NEXT:    s_wait_bvhcnt 0x0947; GFX12-NEXT:    s_wait_kmcnt 0x0948; GFX12-NEXT:    v_bfe_i32 v0, v0, 0, 16949; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)950; GFX12-NEXT:    v_cvt_pk_f32_fp8_e32 v[0:1], v0951; GFX12-NEXT:    s_setpc_b64 s[30:31]952;953; GFX1250-LABEL: test_sext_cvt_pk_f32_fp8_word0:954; GFX1250:       ; %bb.0:955; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0956; GFX1250-NEXT:    s_wait_kmcnt 0x0957; GFX1250-NEXT:    v_bfe_i32 v0, v0, 0, 16958; GFX1250-NEXT:    s_delay_alu instid0(VALU_DEP_1)959; GFX1250-NEXT:    v_cvt_pk_f32_fp8_e32 v[0:1], v0960; GFX1250-NEXT:    s_set_pc_i64 s[30:31]961  %a.sext = sext i16 %a to i32962  %ret = tail call <2 x float> @llvm.amdgcn.cvt.pk.f32.fp8(i32 %a.sext, i1 false)963  ret <2 x float> %ret964}965