336 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 32; RUN: llc -mtriple=amdgcn -mcpu=gfx1250 -mattr=+real-true16 -denormal-fp-math-f32=preserve-sign < %s | FileCheck -check-prefixes=GFX1250-TRUE16 %s3; RUN: llc -mtriple=amdgcn -mcpu=gfx1250 -mattr=-real-true16 -denormal-fp-math-f32=preserve-sign < %s | FileCheck -check-prefixes=GFX1250-FAKE16 %s4 5define bfloat @v_fdiv_bf16(bfloat %x, bfloat %y) {6; GFX1250-TRUE16-LABEL: v_fdiv_bf16:7; GFX1250-TRUE16: ; %bb.0:8; GFX1250-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x09; GFX1250-TRUE16-NEXT: s_wait_kmcnt 0x010; GFX1250-TRUE16-NEXT: v_mov_b16_e32 v2.l, 011; GFX1250-TRUE16-NEXT: v_mov_b16_e32 v2.h, v1.l12; GFX1250-TRUE16-NEXT: v_mov_b16_e32 v1.h, v0.l13; GFX1250-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)14; GFX1250-TRUE16-NEXT: v_mov_b16_e32 v1.l, v2.l15; GFX1250-TRUE16-NEXT: v_div_scale_f32 v0, null, v2, v2, v116; GFX1250-TRUE16-NEXT: v_div_scale_f32 v4, vcc_lo, v1, v2, v117; GFX1250-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(TRANS32_DEP_1)18; GFX1250-TRUE16-NEXT: v_rcp_f32_e32 v3, v019; GFX1250-TRUE16-NEXT: s_denorm_mode 1520; GFX1250-TRUE16-NEXT: v_nop21; GFX1250-TRUE16-NEXT: v_fma_f32 v5, -v0, v3, 1.022; GFX1250-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)23; GFX1250-TRUE16-NEXT: v_fmac_f32_e32 v3, v5, v324; GFX1250-TRUE16-NEXT: v_mul_f32_e32 v5, v4, v325; GFX1250-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)26; GFX1250-TRUE16-NEXT: v_fma_f32 v6, -v0, v5, v427; GFX1250-TRUE16-NEXT: v_fmac_f32_e32 v5, v6, v328; GFX1250-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)29; GFX1250-TRUE16-NEXT: v_fma_f32 v0, -v0, v5, v430; GFX1250-TRUE16-NEXT: s_denorm_mode 1231; GFX1250-TRUE16-NEXT: v_div_fmas_f32 v0, v0, v3, v532; GFX1250-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)33; GFX1250-TRUE16-NEXT: v_div_fixup_f32 v0, v0, v2, v134; GFX1250-TRUE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s035; GFX1250-TRUE16-NEXT: s_set_pc_i64 s[30:31]36;37; GFX1250-FAKE16-LABEL: v_fdiv_bf16:38; GFX1250-FAKE16: ; %bb.0:39; GFX1250-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x040; GFX1250-FAKE16-NEXT: s_wait_kmcnt 0x041; GFX1250-FAKE16-NEXT: v_dual_lshlrev_b32 v1, 16, v1 :: v_dual_lshlrev_b32 v0, 16, v042; GFX1250-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)43; GFX1250-FAKE16-NEXT: v_div_scale_f32 v2, null, v1, v1, v044; GFX1250-FAKE16-NEXT: v_div_scale_f32 v4, vcc_lo, v0, v1, v045; GFX1250-FAKE16-NEXT: v_rcp_f32_e32 v3, v246; GFX1250-FAKE16-NEXT: s_denorm_mode 1547; GFX1250-FAKE16-NEXT: v_nop48; GFX1250-FAKE16-NEXT: s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)49; GFX1250-FAKE16-NEXT: v_fma_f32 v5, -v2, v3, 1.050; GFX1250-FAKE16-NEXT: v_fmac_f32_e32 v3, v5, v351; GFX1250-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)52; GFX1250-FAKE16-NEXT: v_mul_f32_e32 v5, v4, v353; GFX1250-FAKE16-NEXT: v_fma_f32 v6, -v2, v5, v454; GFX1250-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)55; GFX1250-FAKE16-NEXT: v_fmac_f32_e32 v5, v6, v356; GFX1250-FAKE16-NEXT: v_fma_f32 v2, -v2, v5, v457; GFX1250-FAKE16-NEXT: s_denorm_mode 1258; GFX1250-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)59; GFX1250-FAKE16-NEXT: v_div_fmas_f32 v2, v2, v3, v560; GFX1250-FAKE16-NEXT: v_div_fixup_f32 v0, v2, v1, v061; GFX1250-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1)62; GFX1250-FAKE16-NEXT: v_cvt_pk_bf16_f32 v0, v0, s063; GFX1250-FAKE16-NEXT: s_set_pc_i64 s[30:31]64 %fdiv = fdiv bfloat %x, %y65 ret bfloat %fdiv66}67 68define bfloat @v_rcp_bf16(bfloat %x) {69; GFX1250-TRUE16-LABEL: v_rcp_bf16:70; GFX1250-TRUE16: ; %bb.0:71; GFX1250-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x072; GFX1250-TRUE16-NEXT: s_wait_kmcnt 0x073; GFX1250-TRUE16-NEXT: v_rcp_bf16_e32 v0.l, v0.l74; GFX1250-TRUE16-NEXT: s_set_pc_i64 s[30:31]75;76; GFX1250-FAKE16-LABEL: v_rcp_bf16:77; GFX1250-FAKE16: ; %bb.0:78; GFX1250-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x079; GFX1250-FAKE16-NEXT: s_wait_kmcnt 0x080; GFX1250-FAKE16-NEXT: v_rcp_bf16_e32 v0, v081; GFX1250-FAKE16-NEXT: s_set_pc_i64 s[30:31]82 %fdiv = fdiv bfloat 1.0, %x83 ret bfloat %fdiv84}85 86define bfloat @v_rcp_bf16_abs(bfloat %x) {87; GFX1250-TRUE16-LABEL: v_rcp_bf16_abs:88; GFX1250-TRUE16: ; %bb.0:89; GFX1250-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x090; GFX1250-TRUE16-NEXT: s_wait_kmcnt 0x091; GFX1250-TRUE16-NEXT: v_rcp_bf16_e64 v0.l, |v0.l|92; GFX1250-TRUE16-NEXT: s_set_pc_i64 s[30:31]93;94; GFX1250-FAKE16-LABEL: v_rcp_bf16_abs:95; GFX1250-FAKE16: ; %bb.0:96; GFX1250-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x097; GFX1250-FAKE16-NEXT: s_wait_kmcnt 0x098; GFX1250-FAKE16-NEXT: v_rcp_bf16_e64 v0, |v0|99; GFX1250-FAKE16-NEXT: s_set_pc_i64 s[30:31]100 %fabs = call bfloat @llvm.fabs.bf16(bfloat %x)101 %fdiv = fdiv bfloat 1.0, %fabs102 ret bfloat %fdiv103}104 105define bfloat @v_rcp_bf16_afn(bfloat %x) {106; GFX1250-TRUE16-LABEL: v_rcp_bf16_afn:107; GFX1250-TRUE16: ; %bb.0:108; GFX1250-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0109; GFX1250-TRUE16-NEXT: s_wait_kmcnt 0x0110; GFX1250-TRUE16-NEXT: v_rcp_bf16_e32 v0.l, v0.l111; GFX1250-TRUE16-NEXT: s_set_pc_i64 s[30:31]112;113; GFX1250-FAKE16-LABEL: v_rcp_bf16_afn:114; GFX1250-FAKE16: ; %bb.0:115; GFX1250-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0116; GFX1250-FAKE16-NEXT: s_wait_kmcnt 0x0117; GFX1250-FAKE16-NEXT: v_rcp_bf16_e32 v0, v0118; GFX1250-FAKE16-NEXT: s_set_pc_i64 s[30:31]119 %fdiv = fdiv afn bfloat 1.0, %x120 ret bfloat %fdiv121}122 123define bfloat @v_rcp_bf16_neg(bfloat %x) {124; GFX1250-TRUE16-LABEL: v_rcp_bf16_neg:125; GFX1250-TRUE16: ; %bb.0:126; GFX1250-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0127; GFX1250-TRUE16-NEXT: s_wait_kmcnt 0x0128; GFX1250-TRUE16-NEXT: v_rcp_bf16_e64 v0.l, -v0.l129; GFX1250-TRUE16-NEXT: s_set_pc_i64 s[30:31]130;131; GFX1250-FAKE16-LABEL: v_rcp_bf16_neg:132; GFX1250-FAKE16: ; %bb.0:133; GFX1250-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0134; GFX1250-FAKE16-NEXT: s_wait_kmcnt 0x0135; GFX1250-FAKE16-NEXT: v_rcp_bf16_e64 v0, -v0136; GFX1250-FAKE16-NEXT: s_set_pc_i64 s[30:31]137 %fdiv = fdiv bfloat -1.0, %x138 ret bfloat %fdiv139}140 141define bfloat @v_rsq_bf16(bfloat %x) {142; GFX1250-TRUE16-LABEL: v_rsq_bf16:143; GFX1250-TRUE16: ; %bb.0:144; GFX1250-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0145; GFX1250-TRUE16-NEXT: s_wait_kmcnt 0x0146; GFX1250-TRUE16-NEXT: v_rsq_bf16_e32 v0.l, v0.l147; GFX1250-TRUE16-NEXT: s_set_pc_i64 s[30:31]148;149; GFX1250-FAKE16-LABEL: v_rsq_bf16:150; GFX1250-FAKE16: ; %bb.0:151; GFX1250-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0152; GFX1250-FAKE16-NEXT: s_wait_kmcnt 0x0153; GFX1250-FAKE16-NEXT: v_rsq_bf16_e32 v0, v0154; GFX1250-FAKE16-NEXT: s_set_pc_i64 s[30:31]155 %sqrt = call contract bfloat @llvm.sqrt.bf16(bfloat %x)156 %fdiv = fdiv contract bfloat 1.0, %sqrt157 ret bfloat %fdiv158}159 160define bfloat @v_rsq_bf16_neg(bfloat %x) {161; GFX1250-TRUE16-LABEL: v_rsq_bf16_neg:162; GFX1250-TRUE16: ; %bb.0:163; GFX1250-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0164; GFX1250-TRUE16-NEXT: s_wait_kmcnt 0x0165; GFX1250-TRUE16-NEXT: v_rsq_bf16_e32 v0.l, v0.l166; GFX1250-TRUE16-NEXT: v_nop167; GFX1250-TRUE16-NEXT: s_delay_alu instid0(TRANS32_DEP_1)168; GFX1250-TRUE16-NEXT: v_xor_b16 v0.l, 0x8000, v0.l169; GFX1250-TRUE16-NEXT: s_set_pc_i64 s[30:31]170;171; GFX1250-FAKE16-LABEL: v_rsq_bf16_neg:172; GFX1250-FAKE16: ; %bb.0:173; GFX1250-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0174; GFX1250-FAKE16-NEXT: s_wait_kmcnt 0x0175; GFX1250-FAKE16-NEXT: v_rsq_bf16_e32 v0, v0176; GFX1250-FAKE16-NEXT: v_nop177; GFX1250-FAKE16-NEXT: s_delay_alu instid0(TRANS32_DEP_1)178; GFX1250-FAKE16-NEXT: v_xor_b32_e32 v0, 0x8000, v0179; GFX1250-FAKE16-NEXT: s_set_pc_i64 s[30:31]180 %sqrt = call contract bfloat @llvm.sqrt.bf16(bfloat %x)181 %fdiv = fdiv contract bfloat -1.0, %sqrt182 ret bfloat %fdiv183}184 185define <2 x bfloat> @v_rsq_bf16_multi_use(bfloat %x) {186; GFX1250-TRUE16-LABEL: v_rsq_bf16_multi_use:187; GFX1250-TRUE16: ; %bb.0:188; GFX1250-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0189; GFX1250-TRUE16-NEXT: s_wait_kmcnt 0x0190; GFX1250-TRUE16-NEXT: v_mov_b16_e32 v1.l, v0.l191; GFX1250-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(TRANS32_DEP_1)192; GFX1250-TRUE16-NEXT: v_rsq_bf16_e32 v1.h, v1.l193; GFX1250-TRUE16-NEXT: v_nop194; GFX1250-TRUE16-NEXT: v_mov_b32_e32 v0, v1195; GFX1250-TRUE16-NEXT: s_set_pc_i64 s[30:31]196;197; GFX1250-FAKE16-LABEL: v_rsq_bf16_multi_use:198; GFX1250-FAKE16: ; %bb.0:199; GFX1250-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0200; GFX1250-FAKE16-NEXT: s_wait_kmcnt 0x0201; GFX1250-FAKE16-NEXT: v_rsq_bf16_e32 v1, v0202; GFX1250-FAKE16-NEXT: v_nop203; GFX1250-FAKE16-NEXT: s_delay_alu instid0(TRANS32_DEP_1)204; GFX1250-FAKE16-NEXT: v_perm_b32 v0, v1, v0, 0x5040100205; GFX1250-FAKE16-NEXT: s_set_pc_i64 s[30:31]206 %sqrt = call contract bfloat @llvm.sqrt.bf16(bfloat %x)207 %fdiv = fdiv contract bfloat 1.0, %sqrt208 %r = insertelement <2 x bfloat> zeroinitializer, bfloat %x, i32 0209 %r2 = insertelement <2 x bfloat> %r, bfloat %fdiv, i32 1210 ret <2 x bfloat> %r2211}212 213define bfloat @v_rsq_bf16_missing_contract0(bfloat %x) {214; GFX1250-TRUE16-LABEL: v_rsq_bf16_missing_contract0:215; GFX1250-TRUE16: ; %bb.0:216; GFX1250-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0217; GFX1250-TRUE16-NEXT: s_wait_kmcnt 0x0218; GFX1250-TRUE16-NEXT: v_sqrt_bf16_e32 v0.l, v0.l219; GFX1250-TRUE16-NEXT: s_delay_alu instid0(TRANS32_DEP_1)220; GFX1250-TRUE16-NEXT: v_rcp_bf16_e32 v0.l, v0.l221; GFX1250-TRUE16-NEXT: s_set_pc_i64 s[30:31]222;223; GFX1250-FAKE16-LABEL: v_rsq_bf16_missing_contract0:224; GFX1250-FAKE16: ; %bb.0:225; GFX1250-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0226; GFX1250-FAKE16-NEXT: s_wait_kmcnt 0x0227; GFX1250-FAKE16-NEXT: v_sqrt_bf16_e32 v0, v0228; GFX1250-FAKE16-NEXT: s_delay_alu instid0(TRANS32_DEP_1)229; GFX1250-FAKE16-NEXT: v_rcp_bf16_e32 v0, v0230; GFX1250-FAKE16-NEXT: s_set_pc_i64 s[30:31]231 %sqrt = call bfloat @llvm.sqrt.bf16(bfloat %x)232 %fdiv = fdiv contract bfloat 1.0, %sqrt233 ret bfloat %fdiv234}235 236define bfloat @v_rsq_bf16_missing_contract1(bfloat %x) {237; GFX1250-TRUE16-LABEL: v_rsq_bf16_missing_contract1:238; GFX1250-TRUE16: ; %bb.0:239; GFX1250-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0240; GFX1250-TRUE16-NEXT: s_wait_kmcnt 0x0241; GFX1250-TRUE16-NEXT: v_sqrt_bf16_e32 v0.l, v0.l242; GFX1250-TRUE16-NEXT: s_delay_alu instid0(TRANS32_DEP_1)243; GFX1250-TRUE16-NEXT: v_rcp_bf16_e32 v0.l, v0.l244; GFX1250-TRUE16-NEXT: s_set_pc_i64 s[30:31]245;246; GFX1250-FAKE16-LABEL: v_rsq_bf16_missing_contract1:247; GFX1250-FAKE16: ; %bb.0:248; GFX1250-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0249; GFX1250-FAKE16-NEXT: s_wait_kmcnt 0x0250; GFX1250-FAKE16-NEXT: v_sqrt_bf16_e32 v0, v0251; GFX1250-FAKE16-NEXT: s_delay_alu instid0(TRANS32_DEP_1)252; GFX1250-FAKE16-NEXT: v_rcp_bf16_e32 v0, v0253; GFX1250-FAKE16-NEXT: s_set_pc_i64 s[30:31]254 %sqrt = call contract bfloat @llvm.sqrt.bf16(bfloat %x)255 %fdiv = fdiv bfloat 1.0, %sqrt256 ret bfloat %fdiv257}258 259define bfloat @v_neg_rsq_bf16_missing_contract1(bfloat %x) {260; GFX1250-TRUE16-LABEL: v_neg_rsq_bf16_missing_contract1:261; GFX1250-TRUE16: ; %bb.0:262; GFX1250-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0263; GFX1250-TRUE16-NEXT: s_wait_kmcnt 0x0264; GFX1250-TRUE16-NEXT: v_sqrt_bf16_e32 v0.l, v0.l265; GFX1250-TRUE16-NEXT: s_delay_alu instid0(TRANS32_DEP_1)266; GFX1250-TRUE16-NEXT: v_rcp_bf16_e64 v0.l, -v0.l267; GFX1250-TRUE16-NEXT: s_set_pc_i64 s[30:31]268;269; GFX1250-FAKE16-LABEL: v_neg_rsq_bf16_missing_contract1:270; GFX1250-FAKE16: ; %bb.0:271; GFX1250-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0272; GFX1250-FAKE16-NEXT: s_wait_kmcnt 0x0273; GFX1250-FAKE16-NEXT: v_sqrt_bf16_e32 v0, v0274; GFX1250-FAKE16-NEXT: s_delay_alu instid0(TRANS32_DEP_1)275; GFX1250-FAKE16-NEXT: v_rcp_bf16_e64 v0, -v0276; GFX1250-FAKE16-NEXT: s_set_pc_i64 s[30:31]277 %sqrt = call contract bfloat @llvm.sqrt.bf16(bfloat %x)278 %fdiv = fdiv bfloat -1.0, %sqrt279 ret bfloat %fdiv280}281 282define <2 x bfloat> @v_rsq_v2bf16(<2 x bfloat> %a) {283; GFX1250-TRUE16-LABEL: v_rsq_v2bf16:284; GFX1250-TRUE16: ; %bb.0:285; GFX1250-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0286; GFX1250-TRUE16-NEXT: s_wait_kmcnt 0x0287; GFX1250-TRUE16-NEXT: v_rsq_bf16_e32 v0.h, v0.h288; GFX1250-TRUE16-NEXT: v_rsq_bf16_e32 v0.l, v0.l289; GFX1250-TRUE16-NEXT: s_set_pc_i64 s[30:31]290;291; GFX1250-FAKE16-LABEL: v_rsq_v2bf16:292; GFX1250-FAKE16: ; %bb.0:293; GFX1250-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0294; GFX1250-FAKE16-NEXT: s_wait_kmcnt 0x0295; GFX1250-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v0296; GFX1250-FAKE16-NEXT: v_rsq_bf16_e32 v0, v0297; GFX1250-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(TRANS32_DEP_1)298; GFX1250-FAKE16-NEXT: v_rsq_bf16_e32 v1, v1299; GFX1250-FAKE16-NEXT: v_nop300; GFX1250-FAKE16-NEXT: v_perm_b32 v0, v1, v0, 0x5040100301; GFX1250-FAKE16-NEXT: s_set_pc_i64 s[30:31]302 %sqrt = call contract <2 x bfloat> @llvm.sqrt.v2bf16(<2 x bfloat> %a)303 %fdiv = fdiv contract <2 x bfloat> <bfloat 1.0, bfloat 1.0>, %sqrt304 ret <2 x bfloat> %fdiv305}306 307define <2 x bfloat> @v_neg_rsq_v2bf16(<2 x bfloat> %a) {308; GFX1250-TRUE16-LABEL: v_neg_rsq_v2bf16:309; GFX1250-TRUE16: ; %bb.0:310; GFX1250-TRUE16-NEXT: s_wait_loadcnt_dscnt 0x0311; GFX1250-TRUE16-NEXT: s_wait_kmcnt 0x0312; GFX1250-TRUE16-NEXT: v_rsq_bf16_e32 v0.h, v0.h313; GFX1250-TRUE16-NEXT: v_rsq_bf16_e32 v0.l, v0.l314; GFX1250-TRUE16-NEXT: s_delay_alu instid0(TRANS32_DEP_2) | instskip(NEXT) | instid1(TRANS32_DEP_1)315; GFX1250-TRUE16-NEXT: v_xor_b16 v0.h, 0x8000, v0.h316; GFX1250-TRUE16-NEXT: v_xor_b16 v0.l, 0x8000, v0.l317; GFX1250-TRUE16-NEXT: s_set_pc_i64 s[30:31]318;319; GFX1250-FAKE16-LABEL: v_neg_rsq_v2bf16:320; GFX1250-FAKE16: ; %bb.0:321; GFX1250-FAKE16-NEXT: s_wait_loadcnt_dscnt 0x0322; GFX1250-FAKE16-NEXT: s_wait_kmcnt 0x0323; GFX1250-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v0324; GFX1250-FAKE16-NEXT: v_rsq_bf16_e32 v0, v0325; GFX1250-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(TRANS32_DEP_2)326; GFX1250-FAKE16-NEXT: v_rsq_bf16_e32 v1, v1327; GFX1250-FAKE16-NEXT: v_xor_b32_e32 v0, 0x8000, v0328; GFX1250-FAKE16-NEXT: s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)329; GFX1250-FAKE16-NEXT: v_xor_b32_e32 v1, 0x8000, v1330; GFX1250-FAKE16-NEXT: v_perm_b32 v0, v1, v0, 0x5040100331; GFX1250-FAKE16-NEXT: s_set_pc_i64 s[30:31]332 %sqrt = call contract <2 x bfloat> @llvm.sqrt.v2bf16(<2 x bfloat> %a)333 %fdiv = fdiv contract <2 x bfloat> <bfloat -1.0, bfloat -1.0>, %sqrt334 ret <2 x bfloat> %fdiv335}336