brintos

brintos / llvm-project-archived public Read only

0
0
Text · 27.2 KiB · 98d0a62 Raw
501 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; FIXME: Enable f16 promotion3; XUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=tahiti < %s | FileCheck -check-prefixes=GCN,GFX6,GFX6-SDAG %s4; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=tonga < %s | FileCheck -check-prefixes=GCN,GFX8,GFX8-SDAG %s5; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx900 < %s | FileCheck -check-prefixes=GCN,GFX9,GFX9-SDAG %s6; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1100 -mattr=+real-true16 < %s | FileCheck -check-prefixes=GCN,GFX11,GFX11-SDAG,GFX11-SDAG-TRUE16 %s7; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1100 -mattr=-real-true16 < %s | FileCheck -check-prefixes=GCN,GFX11,GFX11-SDAG,GFX11-SDAG-FAKE16 %s8 9; XUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=tahiti < %s | FileCheck -check-prefixes=GCN,GFX6,GFX6-GISEL %s10; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=tonga < %s | FileCheck -check-prefixes=GCN,GFX8,GFX8-GISEL %s11; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx900 < %s | FileCheck -check-prefixes=GCN,GFX9,GFX9-GISEL %s12; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1100 -mattr=+real-true16 < %s | FileCheck -check-prefixes=GCN,GFX11,GFX11-GISEL,GFX11-GISEL-TRUE16 %s13; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1100 -mattr=-real-true16 < %s | FileCheck -check-prefixes=GCN,GFX11,GFX11-GISEL,GFX11-GISEL-FAKE16 %s14 15; define half @test_ldexp_f16_i16(ptr addrspace(1) %out, half %a, i16 %b) #0 {16;   %result = call half @llvm.experimental.constrained.ldexp.f16.i16(half %a, i16 %b, metadata !"round.dynamic", metadata !"fpexcept.strict")17;   ret half %result18; }19 20define half @test_ldexp_f16_i32(ptr addrspace(1) %out, half %a, i32 %b) #0 {21; GFX8-SDAG-LABEL: test_ldexp_f16_i32:22; GFX8-SDAG:       ; %bb.0:23; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)24; GFX8-SDAG-NEXT:    s_movk_i32 s4, 0x800025; GFX8-SDAG-NEXT:    v_mov_b32_e32 v0, 0x7fff26; GFX8-SDAG-NEXT:    v_med3_i32 v0, v3, s4, v027; GFX8-SDAG-NEXT:    v_ldexp_f16_e32 v0, v2, v028; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]29;30; GFX9-SDAG-LABEL: test_ldexp_f16_i32:31; GFX9-SDAG:       ; %bb.0:32; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)33; GFX9-SDAG-NEXT:    s_movk_i32 s4, 0x800034; GFX9-SDAG-NEXT:    v_mov_b32_e32 v0, 0x7fff35; GFX9-SDAG-NEXT:    v_med3_i32 v0, v3, s4, v036; GFX9-SDAG-NEXT:    v_ldexp_f16_e32 v0, v2, v037; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]38;39; GFX11-SDAG-TRUE16-LABEL: test_ldexp_f16_i32:40; GFX11-SDAG-TRUE16:       ; %bb.0:41; GFX11-SDAG-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)42; GFX11-SDAG-TRUE16-NEXT:    s_movk_i32 s0, 0x800043; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)44; GFX11-SDAG-TRUE16-NEXT:    v_med3_i32 v0, v3, s0, 0x7fff45; GFX11-SDAG-TRUE16-NEXT:    v_ldexp_f16_e32 v0.l, v2.l, v0.l46; GFX11-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]47;48; GFX11-SDAG-FAKE16-LABEL: test_ldexp_f16_i32:49; GFX11-SDAG-FAKE16:       ; %bb.0:50; GFX11-SDAG-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)51; GFX11-SDAG-FAKE16-NEXT:    s_movk_i32 s0, 0x800052; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)53; GFX11-SDAG-FAKE16-NEXT:    v_med3_i32 v0, v3, s0, 0x7fff54; GFX11-SDAG-FAKE16-NEXT:    v_ldexp_f16_e32 v0, v2, v055; GFX11-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]56;57; GFX8-GISEL-LABEL: test_ldexp_f16_i32:58; GFX8-GISEL:       ; %bb.0:59; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)60; GFX8-GISEL-NEXT:    v_mov_b32_e32 v0, 0xffff800061; GFX8-GISEL-NEXT:    v_mov_b32_e32 v1, 0x7fff62; GFX8-GISEL-NEXT:    v_med3_i32 v0, v3, v0, v163; GFX8-GISEL-NEXT:    v_ldexp_f16_e32 v0, v2, v064; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]65;66; GFX9-GISEL-LABEL: test_ldexp_f16_i32:67; GFX9-GISEL:       ; %bb.0:68; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)69; GFX9-GISEL-NEXT:    v_mov_b32_e32 v0, 0xffff800070; GFX9-GISEL-NEXT:    v_mov_b32_e32 v1, 0x7fff71; GFX9-GISEL-NEXT:    v_med3_i32 v0, v3, v0, v172; GFX9-GISEL-NEXT:    v_ldexp_f16_e32 v0, v2, v073; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]74;75; GFX11-GISEL-TRUE16-LABEL: test_ldexp_f16_i32:76; GFX11-GISEL-TRUE16:       ; %bb.0:77; GFX11-GISEL-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)78; GFX11-GISEL-TRUE16-NEXT:    v_mov_b32_e32 v0, 0x7fff79; GFX11-GISEL-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)80; GFX11-GISEL-TRUE16-NEXT:    v_med3_i32 v0, 0xffff8000, v3, v081; GFX11-GISEL-TRUE16-NEXT:    v_ldexp_f16_e32 v0.l, v2.l, v0.l82; GFX11-GISEL-TRUE16-NEXT:    s_setpc_b64 s[30:31]83;84; GFX11-GISEL-FAKE16-LABEL: test_ldexp_f16_i32:85; GFX11-GISEL-FAKE16:       ; %bb.0:86; GFX11-GISEL-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)87; GFX11-GISEL-FAKE16-NEXT:    v_mov_b32_e32 v0, 0x7fff88; GFX11-GISEL-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)89; GFX11-GISEL-FAKE16-NEXT:    v_med3_i32 v0, 0xffff8000, v3, v090; GFX11-GISEL-FAKE16-NEXT:    v_ldexp_f16_e32 v0, v2, v091; GFX11-GISEL-FAKE16-NEXT:    s_setpc_b64 s[30:31]92  %result = call half @llvm.experimental.constrained.ldexp.f16.i32(half %a, i32 %b, metadata !"round.dynamic", metadata !"fpexcept.strict")93  ret half %result94}95 96; define <2 x half> @test_ldexp_v2f16_v2i16(ptr addrspace(1) %out, <2 x half> %a, <2 x i16> %b) #0 {97;   %result = call <2 x half> @llvm.experimental.constrained.ldexp.v2f16.v2i16(<2 x half> %a, <2 x i16> %b, metadata !"round.dynamic", metadata !"fpexcept.strict")98;   ret <2 x half> %result99; }100 101define <2 x half> @test_ldexp_v2f16_v2i32(ptr addrspace(1) %out, <2 x half> %a, <2 x i32> %b) #0 {102; GFX8-SDAG-LABEL: test_ldexp_v2f16_v2i32:103; GFX8-SDAG:       ; %bb.0:104; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)105; GFX8-SDAG-NEXT:    s_movk_i32 s4, 0x8000106; GFX8-SDAG-NEXT:    v_mov_b32_e32 v0, 0x7fff107; GFX8-SDAG-NEXT:    v_med3_i32 v1, v3, s4, v0108; GFX8-SDAG-NEXT:    v_med3_i32 v0, v4, s4, v0109; GFX8-SDAG-NEXT:    v_ldexp_f16_e32 v1, v2, v1110; GFX8-SDAG-NEXT:    v_ldexp_f16_sdwa v0, v2, v0 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD111; GFX8-SDAG-NEXT:    v_or_b32_e32 v0, v1, v0112; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]113;114; GFX9-SDAG-LABEL: test_ldexp_v2f16_v2i32:115; GFX9-SDAG:       ; %bb.0:116; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)117; GFX9-SDAG-NEXT:    s_movk_i32 s4, 0x8000118; GFX9-SDAG-NEXT:    v_mov_b32_e32 v0, 0x7fff119; GFX9-SDAG-NEXT:    v_med3_i32 v1, v3, s4, v0120; GFX9-SDAG-NEXT:    v_med3_i32 v0, v4, s4, v0121; GFX9-SDAG-NEXT:    v_ldexp_f16_e32 v1, v2, v1122; GFX9-SDAG-NEXT:    v_ldexp_f16_sdwa v0, v2, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD123; GFX9-SDAG-NEXT:    s_mov_b32 s4, 0x5040100124; GFX9-SDAG-NEXT:    v_perm_b32 v0, v0, v1, s4125; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]126;127; GFX11-SDAG-TRUE16-LABEL: test_ldexp_v2f16_v2i32:128; GFX11-SDAG-TRUE16:       ; %bb.0:129; GFX11-SDAG-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)130; GFX11-SDAG-TRUE16-NEXT:    s_movk_i32 s0, 0x8000131; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)132; GFX11-SDAG-TRUE16-NEXT:    v_med3_i32 v0, v3, s0, 0x7fff133; GFX11-SDAG-TRUE16-NEXT:    v_med3_i32 v1, v4, s0, 0x7fff134; GFX11-SDAG-TRUE16-NEXT:    v_ldexp_f16_e32 v0.l, v2.l, v0.l135; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)136; GFX11-SDAG-TRUE16-NEXT:    v_ldexp_f16_e32 v0.h, v2.h, v1.l137; GFX11-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]138;139; GFX11-SDAG-FAKE16-LABEL: test_ldexp_v2f16_v2i32:140; GFX11-SDAG-FAKE16:       ; %bb.0:141; GFX11-SDAG-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)142; GFX11-SDAG-FAKE16-NEXT:    s_movk_i32 s0, 0x8000143; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)144; GFX11-SDAG-FAKE16-NEXT:    v_med3_i32 v0, v3, s0, 0x7fff145; GFX11-SDAG-FAKE16-NEXT:    v_med3_i32 v1, v4, s0, 0x7fff146; GFX11-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v2147; GFX11-SDAG-FAKE16-NEXT:    v_ldexp_f16_e32 v0, v2, v0148; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)149; GFX11-SDAG-FAKE16-NEXT:    v_ldexp_f16_e32 v1, v3, v1150; GFX11-SDAG-FAKE16-NEXT:    v_perm_b32 v0, v1, v0, 0x5040100151; GFX11-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]152;153; GFX8-GISEL-LABEL: test_ldexp_v2f16_v2i32:154; GFX8-GISEL:       ; %bb.0:155; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)156; GFX8-GISEL-NEXT:    v_mov_b32_e32 v0, 0xffff8000157; GFX8-GISEL-NEXT:    v_mov_b32_e32 v1, 0x7fff158; GFX8-GISEL-NEXT:    v_med3_i32 v3, v3, v0, v1159; GFX8-GISEL-NEXT:    v_med3_i32 v0, v4, v0, v1160; GFX8-GISEL-NEXT:    v_ldexp_f16_e32 v3, v2, v3161; GFX8-GISEL-NEXT:    v_ldexp_f16_sdwa v0, v2, v0 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD162; GFX8-GISEL-NEXT:    v_or_b32_e32 v0, v3, v0163; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]164;165; GFX9-GISEL-LABEL: test_ldexp_v2f16_v2i32:166; GFX9-GISEL:       ; %bb.0:167; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)168; GFX9-GISEL-NEXT:    v_mov_b32_e32 v0, 0xffff8000169; GFX9-GISEL-NEXT:    v_mov_b32_e32 v1, 0x7fff170; GFX9-GISEL-NEXT:    v_med3_i32 v3, v3, v0, v1171; GFX9-GISEL-NEXT:    v_med3_i32 v0, v4, v0, v1172; GFX9-GISEL-NEXT:    v_ldexp_f16_e32 v3, v2, v3173; GFX9-GISEL-NEXT:    v_ldexp_f16_sdwa v0, v2, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD174; GFX9-GISEL-NEXT:    v_lshl_or_b32 v0, v0, 16, v3175; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]176;177; GFX11-GISEL-TRUE16-LABEL: test_ldexp_v2f16_v2i32:178; GFX11-GISEL-TRUE16:       ; %bb.0:179; GFX11-GISEL-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)180; GFX11-GISEL-TRUE16-NEXT:    v_mov_b32_e32 v0, 0x7fff181; GFX11-GISEL-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)182; GFX11-GISEL-TRUE16-NEXT:    v_med3_i32 v1, 0xffff8000, v3, v0183; GFX11-GISEL-TRUE16-NEXT:    v_med3_i32 v3, 0xffff8000, v4, v0184; GFX11-GISEL-TRUE16-NEXT:    v_ldexp_f16_e32 v0.l, v2.l, v1.l185; GFX11-GISEL-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)186; GFX11-GISEL-TRUE16-NEXT:    v_ldexp_f16_e32 v0.h, v2.h, v3.l187; GFX11-GISEL-TRUE16-NEXT:    s_setpc_b64 s[30:31]188;189; GFX11-GISEL-FAKE16-LABEL: test_ldexp_v2f16_v2i32:190; GFX11-GISEL-FAKE16:       ; %bb.0:191; GFX11-GISEL-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)192; GFX11-GISEL-FAKE16-NEXT:    v_mov_b32_e32 v0, 0x7fff193; GFX11-GISEL-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)194; GFX11-GISEL-FAKE16-NEXT:    v_med3_i32 v1, 0xffff8000, v3, v0195; GFX11-GISEL-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v2196; GFX11-GISEL-FAKE16-NEXT:    v_med3_i32 v0, 0xffff8000, v4, v0197; GFX11-GISEL-FAKE16-NEXT:    v_ldexp_f16_e32 v1, v2, v1198; GFX11-GISEL-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)199; GFX11-GISEL-FAKE16-NEXT:    v_ldexp_f16_e32 v0, v3, v0200; GFX11-GISEL-FAKE16-NEXT:    v_and_b32_e32 v1, 0xffff, v1201; GFX11-GISEL-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)202; GFX11-GISEL-FAKE16-NEXT:    v_lshl_or_b32 v0, v0, 16, v1203; GFX11-GISEL-FAKE16-NEXT:    s_setpc_b64 s[30:31]204  %result = call <2 x half> @llvm.experimental.constrained.ldexp.v2f16.v2i32(<2 x half> %a, <2 x i32> %b, metadata !"round.dynamic", metadata !"fpexcept.strict")205  ret <2 x half> %result206}207 208define <3 x half> @test_ldexp_v3f16_v3i32(ptr addrspace(1) %out, <3 x half> %a, <3 x i32> %b) #0 {209; GFX8-SDAG-LABEL: test_ldexp_v3f16_v3i32:210; GFX8-SDAG:       ; %bb.0:211; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)212; GFX8-SDAG-NEXT:    s_movk_i32 s4, 0x8000213; GFX8-SDAG-NEXT:    v_mov_b32_e32 v1, 0x7fff214; GFX8-SDAG-NEXT:    v_med3_i32 v0, v4, s4, v1215; GFX8-SDAG-NEXT:    v_med3_i32 v4, v5, s4, v1216; GFX8-SDAG-NEXT:    v_ldexp_f16_e32 v0, v2, v0217; GFX8-SDAG-NEXT:    v_ldexp_f16_sdwa v2, v2, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD218; GFX8-SDAG-NEXT:    v_med3_i32 v1, v6, s4, v1219; GFX8-SDAG-NEXT:    v_or_b32_e32 v0, v0, v2220; GFX8-SDAG-NEXT:    v_ldexp_f16_e32 v1, v3, v1221; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]222;223; GFX9-SDAG-LABEL: test_ldexp_v3f16_v3i32:224; GFX9-SDAG:       ; %bb.0:225; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)226; GFX9-SDAG-NEXT:    s_movk_i32 s4, 0x8000227; GFX9-SDAG-NEXT:    v_mov_b32_e32 v1, 0x7fff228; GFX9-SDAG-NEXT:    v_med3_i32 v0, v4, s4, v1229; GFX9-SDAG-NEXT:    v_med3_i32 v4, v5, s4, v1230; GFX9-SDAG-NEXT:    v_ldexp_f16_e32 v0, v2, v0231; GFX9-SDAG-NEXT:    v_ldexp_f16_sdwa v2, v2, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD232; GFX9-SDAG-NEXT:    s_mov_b32 s5, 0x5040100233; GFX9-SDAG-NEXT:    v_med3_i32 v1, v6, s4, v1234; GFX9-SDAG-NEXT:    v_perm_b32 v0, v2, v0, s5235; GFX9-SDAG-NEXT:    v_ldexp_f16_e32 v1, v3, v1236; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]237;238; GFX11-SDAG-TRUE16-LABEL: test_ldexp_v3f16_v3i32:239; GFX11-SDAG-TRUE16:       ; %bb.0:240; GFX11-SDAG-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)241; GFX11-SDAG-TRUE16-NEXT:    s_movk_i32 s0, 0x8000242; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)243; GFX11-SDAG-TRUE16-NEXT:    v_med3_i32 v0, v4, s0, 0x7fff244; GFX11-SDAG-TRUE16-NEXT:    v_med3_i32 v1, v5, s0, 0x7fff245; GFX11-SDAG-TRUE16-NEXT:    v_med3_i32 v4, v6, s0, 0x7fff246; GFX11-SDAG-TRUE16-NEXT:    v_ldexp_f16_e32 v0.l, v2.l, v0.l247; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)248; GFX11-SDAG-TRUE16-NEXT:    v_ldexp_f16_e32 v0.h, v2.h, v1.l249; GFX11-SDAG-TRUE16-NEXT:    v_ldexp_f16_e32 v1.l, v3.l, v4.l250; GFX11-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]251;252; GFX11-SDAG-FAKE16-LABEL: test_ldexp_v3f16_v3i32:253; GFX11-SDAG-FAKE16:       ; %bb.0:254; GFX11-SDAG-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)255; GFX11-SDAG-FAKE16-NEXT:    s_movk_i32 s0, 0x8000256; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)257; GFX11-SDAG-FAKE16-NEXT:    v_med3_i32 v0, v4, s0, 0x7fff258; GFX11-SDAG-FAKE16-NEXT:    v_med3_i32 v1, v5, s0, 0x7fff259; GFX11-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v4, 16, v2260; GFX11-SDAG-FAKE16-NEXT:    v_ldexp_f16_e32 v0, v2, v0261; GFX11-SDAG-FAKE16-NEXT:    v_med3_i32 v2, v6, s0, 0x7fff262; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)263; GFX11-SDAG-FAKE16-NEXT:    v_ldexp_f16_e32 v1, v4, v1264; GFX11-SDAG-FAKE16-NEXT:    v_perm_b32 v0, v1, v0, 0x5040100265; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)266; GFX11-SDAG-FAKE16-NEXT:    v_ldexp_f16_e32 v1, v3, v2267; GFX11-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]268;269; GFX8-GISEL-LABEL: test_ldexp_v3f16_v3i32:270; GFX8-GISEL:       ; %bb.0:271; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)272; GFX8-GISEL-NEXT:    v_mov_b32_e32 v0, 0xffff8000273; GFX8-GISEL-NEXT:    v_mov_b32_e32 v1, 0x7fff274; GFX8-GISEL-NEXT:    v_med3_i32 v4, v4, v0, v1275; GFX8-GISEL-NEXT:    v_med3_i32 v5, v5, v0, v1276; GFX8-GISEL-NEXT:    v_ldexp_f16_e32 v4, v2, v4277; GFX8-GISEL-NEXT:    v_ldexp_f16_sdwa v2, v2, v5 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD278; GFX8-GISEL-NEXT:    v_med3_i32 v0, v6, v0, v1279; GFX8-GISEL-NEXT:    v_ldexp_f16_e32 v1, v3, v0280; GFX8-GISEL-NEXT:    v_or_b32_e32 v0, v4, v2281; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]282;283; GFX9-GISEL-LABEL: test_ldexp_v3f16_v3i32:284; GFX9-GISEL:       ; %bb.0:285; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)286; GFX9-GISEL-NEXT:    v_mov_b32_e32 v0, 0xffff8000287; GFX9-GISEL-NEXT:    v_mov_b32_e32 v1, 0x7fff288; GFX9-GISEL-NEXT:    v_med3_i32 v4, v4, v0, v1289; GFX9-GISEL-NEXT:    v_med3_i32 v5, v5, v0, v1290; GFX9-GISEL-NEXT:    v_ldexp_f16_e32 v4, v2, v4291; GFX9-GISEL-NEXT:    v_ldexp_f16_sdwa v2, v2, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD292; GFX9-GISEL-NEXT:    v_med3_i32 v0, v6, v0, v1293; GFX9-GISEL-NEXT:    v_ldexp_f16_e32 v1, v3, v0294; GFX9-GISEL-NEXT:    v_lshl_or_b32 v0, v2, 16, v4295; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]296;297; GFX11-GISEL-TRUE16-LABEL: test_ldexp_v3f16_v3i32:298; GFX11-GISEL-TRUE16:       ; %bb.0:299; GFX11-GISEL-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)300; GFX11-GISEL-TRUE16-NEXT:    v_mov_b32_e32 v0, 0x7fff301; GFX11-GISEL-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)302; GFX11-GISEL-TRUE16-NEXT:    v_med3_i32 v1, 0xffff8000, v4, v0303; GFX11-GISEL-TRUE16-NEXT:    v_med3_i32 v4, 0xffff8000, v5, v0304; GFX11-GISEL-TRUE16-NEXT:    v_med3_i32 v5, 0xffff8000, v6, v0305; GFX11-GISEL-TRUE16-NEXT:    v_ldexp_f16_e32 v0.l, v2.l, v1.l306; GFX11-GISEL-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)307; GFX11-GISEL-TRUE16-NEXT:    v_ldexp_f16_e32 v0.h, v2.h, v4.l308; GFX11-GISEL-TRUE16-NEXT:    v_ldexp_f16_e32 v1.l, v3.l, v5.l309; GFX11-GISEL-TRUE16-NEXT:    s_setpc_b64 s[30:31]310;311; GFX11-GISEL-FAKE16-LABEL: test_ldexp_v3f16_v3i32:312; GFX11-GISEL-FAKE16:       ; %bb.0:313; GFX11-GISEL-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)314; GFX11-GISEL-FAKE16-NEXT:    v_mov_b32_e32 v0, 0x7fff315; GFX11-GISEL-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)316; GFX11-GISEL-FAKE16-NEXT:    v_med3_i32 v1, 0xffff8000, v4, v0317; GFX11-GISEL-FAKE16-NEXT:    v_lshrrev_b32_e32 v4, 16, v2318; GFX11-GISEL-FAKE16-NEXT:    v_med3_i32 v5, 0xffff8000, v5, v0319; GFX11-GISEL-FAKE16-NEXT:    v_ldexp_f16_e32 v1, v2, v1320; GFX11-GISEL-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)321; GFX11-GISEL-FAKE16-NEXT:    v_ldexp_f16_e32 v2, v4, v5322; GFX11-GISEL-FAKE16-NEXT:    v_med3_i32 v4, 0xffff8000, v6, v0323; GFX11-GISEL-FAKE16-NEXT:    v_and_b32_e32 v1, 0xffff, v1324; GFX11-GISEL-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)325; GFX11-GISEL-FAKE16-NEXT:    v_lshl_or_b32 v0, v2, 16, v1326; GFX11-GISEL-FAKE16-NEXT:    v_ldexp_f16_e32 v1, v3, v4327; GFX11-GISEL-FAKE16-NEXT:    s_setpc_b64 s[30:31]328  %result = call <3 x half> @llvm.experimental.constrained.ldexp.v3f16.v3i32(<3 x half> %a, <3 x i32> %b, metadata !"round.dynamic", metadata !"fpexcept.strict")329  ret <3 x half> %result330}331 332define <4 x half> @test_ldexp_v4f16_v4i32(ptr addrspace(1) %out, <4 x half> %a, <4 x i32> %b) #0 {333; GFX8-SDAG-LABEL: test_ldexp_v4f16_v4i32:334; GFX8-SDAG:       ; %bb.0:335; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)336; GFX8-SDAG-NEXT:    s_movk_i32 s4, 0x8000337; GFX8-SDAG-NEXT:    v_mov_b32_e32 v0, 0x7fff338; GFX8-SDAG-NEXT:    v_med3_i32 v1, v7, s4, v0339; GFX8-SDAG-NEXT:    v_med3_i32 v6, v6, s4, v0340; GFX8-SDAG-NEXT:    v_med3_i32 v5, v5, s4, v0341; GFX8-SDAG-NEXT:    v_med3_i32 v0, v4, s4, v0342; GFX8-SDAG-NEXT:    v_ldexp_f16_sdwa v1, v3, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD343; GFX8-SDAG-NEXT:    v_ldexp_f16_e32 v3, v3, v6344; GFX8-SDAG-NEXT:    v_ldexp_f16_sdwa v5, v2, v5 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD345; GFX8-SDAG-NEXT:    v_ldexp_f16_e32 v0, v2, v0346; GFX8-SDAG-NEXT:    v_or_b32_e32 v0, v0, v5347; GFX8-SDAG-NEXT:    v_or_b32_e32 v1, v3, v1348; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]349;350; GFX9-SDAG-LABEL: test_ldexp_v4f16_v4i32:351; GFX9-SDAG:       ; %bb.0:352; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)353; GFX9-SDAG-NEXT:    s_movk_i32 s4, 0x8000354; GFX9-SDAG-NEXT:    v_mov_b32_e32 v0, 0x7fff355; GFX9-SDAG-NEXT:    v_med3_i32 v1, v6, s4, v0356; GFX9-SDAG-NEXT:    v_med3_i32 v6, v7, s4, v0357; GFX9-SDAG-NEXT:    v_med3_i32 v4, v4, s4, v0358; GFX9-SDAG-NEXT:    v_med3_i32 v0, v5, s4, v0359; GFX9-SDAG-NEXT:    v_ldexp_f16_e32 v1, v3, v1360; GFX9-SDAG-NEXT:    v_ldexp_f16_sdwa v3, v3, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD361; GFX9-SDAG-NEXT:    v_ldexp_f16_e32 v4, v2, v4362; GFX9-SDAG-NEXT:    v_ldexp_f16_sdwa v0, v2, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD363; GFX9-SDAG-NEXT:    s_mov_b32 s4, 0x5040100364; GFX9-SDAG-NEXT:    v_perm_b32 v0, v0, v4, s4365; GFX9-SDAG-NEXT:    v_perm_b32 v1, v3, v1, s4366; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]367;368; GFX11-SDAG-TRUE16-LABEL: test_ldexp_v4f16_v4i32:369; GFX11-SDAG-TRUE16:       ; %bb.0:370; GFX11-SDAG-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)371; GFX11-SDAG-TRUE16-NEXT:    s_movk_i32 s0, 0x8000372; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_3) | instid1(VALU_DEP_4)373; GFX11-SDAG-TRUE16-NEXT:    v_med3_i32 v0, v6, s0, 0x7fff374; GFX11-SDAG-TRUE16-NEXT:    v_med3_i32 v4, v4, s0, 0x7fff375; GFX11-SDAG-TRUE16-NEXT:    v_med3_i32 v5, v5, s0, 0x7fff376; GFX11-SDAG-TRUE16-NEXT:    v_med3_i32 v6, v7, s0, 0x7fff377; GFX11-SDAG-TRUE16-NEXT:    v_ldexp_f16_e32 v1.l, v3.l, v0.l378; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)379; GFX11-SDAG-TRUE16-NEXT:    v_ldexp_f16_e32 v0.l, v2.l, v4.l380; GFX11-SDAG-TRUE16-NEXT:    v_ldexp_f16_e32 v0.h, v2.h, v5.l381; GFX11-SDAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4)382; GFX11-SDAG-TRUE16-NEXT:    v_ldexp_f16_e32 v1.h, v3.h, v6.l383; GFX11-SDAG-TRUE16-NEXT:    s_setpc_b64 s[30:31]384;385; GFX11-SDAG-FAKE16-LABEL: test_ldexp_v4f16_v4i32:386; GFX11-SDAG-FAKE16:       ; %bb.0:387; GFX11-SDAG-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)388; GFX11-SDAG-FAKE16-NEXT:    s_movk_i32 s0, 0x8000389; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)390; GFX11-SDAG-FAKE16-NEXT:    v_med3_i32 v0, v6, s0, 0x7fff391; GFX11-SDAG-FAKE16-NEXT:    v_med3_i32 v1, v7, s0, 0x7fff392; GFX11-SDAG-FAKE16-NEXT:    v_med3_i32 v4, v4, s0, 0x7fff393; GFX11-SDAG-FAKE16-NEXT:    v_med3_i32 v5, v5, s0, 0x7fff394; GFX11-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v6, 16, v2395; GFX11-SDAG-FAKE16-NEXT:    v_lshrrev_b32_e32 v7, 16, v3396; GFX11-SDAG-FAKE16-NEXT:    v_ldexp_f16_e32 v3, v3, v0397; GFX11-SDAG-FAKE16-NEXT:    v_ldexp_f16_e32 v0, v2, v4398; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)399; GFX11-SDAG-FAKE16-NEXT:    v_ldexp_f16_e32 v2, v6, v5400; GFX11-SDAG-FAKE16-NEXT:    v_ldexp_f16_e32 v1, v7, v1401; GFX11-SDAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)402; GFX11-SDAG-FAKE16-NEXT:    v_perm_b32 v0, v2, v0, 0x5040100403; GFX11-SDAG-FAKE16-NEXT:    v_perm_b32 v1, v1, v3, 0x5040100404; GFX11-SDAG-FAKE16-NEXT:    s_setpc_b64 s[30:31]405;406; GFX8-GISEL-LABEL: test_ldexp_v4f16_v4i32:407; GFX8-GISEL:       ; %bb.0:408; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)409; GFX8-GISEL-NEXT:    v_mov_b32_e32 v0, 0xffff8000410; GFX8-GISEL-NEXT:    v_mov_b32_e32 v1, 0x7fff411; GFX8-GISEL-NEXT:    v_med3_i32 v4, v4, v0, v1412; GFX8-GISEL-NEXT:    v_med3_i32 v5, v5, v0, v1413; GFX8-GISEL-NEXT:    v_ldexp_f16_e32 v4, v2, v4414; GFX8-GISEL-NEXT:    v_ldexp_f16_sdwa v2, v2, v5 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD415; GFX8-GISEL-NEXT:    v_med3_i32 v5, v6, v0, v1416; GFX8-GISEL-NEXT:    v_med3_i32 v0, v7, v0, v1417; GFX8-GISEL-NEXT:    v_ldexp_f16_e32 v5, v3, v5418; GFX8-GISEL-NEXT:    v_ldexp_f16_sdwa v1, v3, v0 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD419; GFX8-GISEL-NEXT:    v_or_b32_e32 v0, v4, v2420; GFX8-GISEL-NEXT:    v_or_b32_e32 v1, v5, v1421; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]422;423; GFX9-GISEL-LABEL: test_ldexp_v4f16_v4i32:424; GFX9-GISEL:       ; %bb.0:425; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)426; GFX9-GISEL-NEXT:    v_mov_b32_e32 v0, 0xffff8000427; GFX9-GISEL-NEXT:    v_mov_b32_e32 v1, 0x7fff428; GFX9-GISEL-NEXT:    v_med3_i32 v4, v4, v0, v1429; GFX9-GISEL-NEXT:    v_med3_i32 v5, v5, v0, v1430; GFX9-GISEL-NEXT:    v_ldexp_f16_e32 v4, v2, v4431; GFX9-GISEL-NEXT:    v_ldexp_f16_sdwa v2, v2, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD432; GFX9-GISEL-NEXT:    v_med3_i32 v5, v6, v0, v1433; GFX9-GISEL-NEXT:    v_med3_i32 v0, v7, v0, v1434; GFX9-GISEL-NEXT:    v_ldexp_f16_e32 v5, v3, v5435; GFX9-GISEL-NEXT:    v_ldexp_f16_sdwa v1, v3, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD436; GFX9-GISEL-NEXT:    v_lshl_or_b32 v0, v2, 16, v4437; GFX9-GISEL-NEXT:    v_lshl_or_b32 v1, v1, 16, v5438; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]439;440; GFX11-GISEL-TRUE16-LABEL: test_ldexp_v4f16_v4i32:441; GFX11-GISEL-TRUE16:       ; %bb.0:442; GFX11-GISEL-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)443; GFX11-GISEL-TRUE16-NEXT:    v_mov_b32_e32 v0, 0x7fff444; GFX11-GISEL-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_4)445; GFX11-GISEL-TRUE16-NEXT:    v_med3_i32 v1, 0xffff8000, v4, v0446; GFX11-GISEL-TRUE16-NEXT:    v_med3_i32 v4, 0xffff8000, v5, v0447; GFX11-GISEL-TRUE16-NEXT:    v_med3_i32 v5, 0xffff8000, v6, v0448; GFX11-GISEL-TRUE16-NEXT:    v_med3_i32 v6, 0xffff8000, v7, v0449; GFX11-GISEL-TRUE16-NEXT:    v_ldexp_f16_e32 v0.l, v2.l, v1.l450; GFX11-GISEL-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)451; GFX11-GISEL-TRUE16-NEXT:    v_ldexp_f16_e32 v0.h, v2.h, v4.l452; GFX11-GISEL-TRUE16-NEXT:    v_ldexp_f16_e32 v1.l, v3.l, v5.l453; GFX11-GISEL-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4)454; GFX11-GISEL-TRUE16-NEXT:    v_ldexp_f16_e32 v1.h, v3.h, v6.l455; GFX11-GISEL-TRUE16-NEXT:    s_setpc_b64 s[30:31]456;457; GFX11-GISEL-FAKE16-LABEL: test_ldexp_v4f16_v4i32:458; GFX11-GISEL-FAKE16:       ; %bb.0:459; GFX11-GISEL-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)460; GFX11-GISEL-FAKE16-NEXT:    v_mov_b32_e32 v0, 0x7fff461; GFX11-GISEL-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v2462; GFX11-GISEL-FAKE16-NEXT:    v_lshrrev_b32_e32 v8, 16, v3463; GFX11-GISEL-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_3) | instid1(VALU_DEP_4)464; GFX11-GISEL-FAKE16-NEXT:    v_med3_i32 v4, 0xffff8000, v4, v0465; GFX11-GISEL-FAKE16-NEXT:    v_med3_i32 v6, 0xffff8000, v6, v0466; GFX11-GISEL-FAKE16-NEXT:    v_med3_i32 v5, 0xffff8000, v5, v0467; GFX11-GISEL-FAKE16-NEXT:    v_med3_i32 v0, 0xffff8000, v7, v0468; GFX11-GISEL-FAKE16-NEXT:    v_ldexp_f16_e32 v2, v2, v4469; GFX11-GISEL-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)470; GFX11-GISEL-FAKE16-NEXT:    v_ldexp_f16_e32 v3, v3, v6471; GFX11-GISEL-FAKE16-NEXT:    v_ldexp_f16_e32 v1, v1, v5472; GFX11-GISEL-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)473; GFX11-GISEL-FAKE16-NEXT:    v_ldexp_f16_e32 v4, v8, v0474; GFX11-GISEL-FAKE16-NEXT:    v_and_b32_e32 v0, 0xffff, v2475; GFX11-GISEL-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_2)476; GFX11-GISEL-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v3477; GFX11-GISEL-FAKE16-NEXT:    v_lshl_or_b32 v0, v1, 16, v0478; GFX11-GISEL-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)479; GFX11-GISEL-FAKE16-NEXT:    v_lshl_or_b32 v1, v4, 16, v2480; GFX11-GISEL-FAKE16-NEXT:    s_setpc_b64 s[30:31]481  %result = call <4 x half> @llvm.experimental.constrained.ldexp.v4f16.v4i32(<4 x half> %a, <4 x i32> %b, metadata !"round.dynamic", metadata !"fpexcept.strict")482  ret <4 x half> %result483}484 485declare half @llvm.experimental.constrained.ldexp.f16.i16(half, i16, metadata, metadata) #1486declare half @llvm.experimental.constrained.ldexp.f16.i32(half, i32, metadata, metadata) #1487declare <2 x half> @llvm.experimental.constrained.ldexp.v2f16.v2i16(<2 x half>, <2 x i16>, metadata, metadata) #1488declare <2 x half> @llvm.experimental.constrained.ldexp.v2f16.v2i32(<2 x half>, <2 x i32>, metadata, metadata) #1489declare <3 x half> @llvm.experimental.constrained.ldexp.v3f16.v3i32(<3 x half>, <3 x i32>, metadata, metadata) #1490declare <4 x half> @llvm.experimental.constrained.ldexp.v4f16.v4i32(<4 x half>, <4 x i32>, metadata, metadata) #1491 492attributes #0 = { strictfp }493attributes #1 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) }494;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:495; GCN: {{.*}}496; GFX11: {{.*}}497; GFX11-GISEL: {{.*}}498; GFX11-SDAG: {{.*}}499; GFX8: {{.*}}500; GFX9: {{.*}}501