brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.0 KiB · 456f0bd Raw
252 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=tahiti < %s | FileCheck -check-prefixes=GCN,GFX6,GFX6-SDAG %s3; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=tonga < %s | FileCheck -check-prefixes=GCN,GFX8,GFX8-SDAG %s4; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx900 < %s | FileCheck -check-prefixes=GCN,GFX9,GFX9-SDAG %s5; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1100 < %s | FileCheck -check-prefixes=GCN,GFX11,GFX11-SDAG %s6 7; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=tahiti < %s | FileCheck -check-prefixes=GCN,GFX6,GFX6-GISEL %s8; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=tonga < %s | FileCheck -check-prefixes=GCN,GFX8,GFX8-GISEL %s9; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx900 < %s | FileCheck -check-prefixes=GCN,GFX9,GFX9-GISEL %s10; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1100 < %s | FileCheck -check-prefixes=GCN,GFX11,GFX11-GISEL %s11 12; define float @test_ldexp_f32_i16(ptr addrspace(1) %out, float %a, i16 %b) #0 {13;   %result = call float @llvm.experimental.constrained.ldexp.f32.i16(float %a, i16 %b, metadata !"round.dynamic", metadata !"fpexcept.strict")14;   ret float %result15; }16 17define float @test_ldexp_f32_i32(ptr addrspace(1) %out, float %a, i32 %b) #0 {18; GFX6-LABEL: test_ldexp_f32_i32:19; GFX6:       ; %bb.0:20; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21; GFX6-NEXT:    v_ldexp_f32_e32 v0, v2, v322; GFX6-NEXT:    s_setpc_b64 s[30:31]23;24; GFX8-LABEL: test_ldexp_f32_i32:25; GFX8:       ; %bb.0:26; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)27; GFX8-NEXT:    v_ldexp_f32 v0, v2, v328; GFX8-NEXT:    s_setpc_b64 s[30:31]29;30; GFX9-LABEL: test_ldexp_f32_i32:31; GFX9:       ; %bb.0:32; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)33; GFX9-NEXT:    v_ldexp_f32 v0, v2, v334; GFX9-NEXT:    s_setpc_b64 s[30:31]35;36; GFX11-LABEL: test_ldexp_f32_i32:37; GFX11:       ; %bb.0:38; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)39; GFX11-NEXT:    v_ldexp_f32 v0, v2, v340; GFX11-NEXT:    s_setpc_b64 s[30:31]41  %result = call float @llvm.experimental.constrained.ldexp.f32.i32(float %a, i32 %b, metadata !"round.dynamic", metadata !"fpexcept.strict")42  ret float %result43}44 45; define <2 x float> @test_ldexp_v2f32_v2i16(ptr addrspace(1) %out, <2 x float> %a, <2 x i16> %b) #0 {46;   %result = call <2 x float> @llvm.experimental.constrained.ldexp.v2f32.v2i16(<2 x float> %a, <2 x i16> %b, metadata !"round.dynamic", metadata !"fpexcept.strict")47;   ret <2 x float> %result48; }49 50define <2 x float> @test_ldexp_v2f32_v2i32(ptr addrspace(1) %out, <2 x float> %a, <2 x i32> %b) #0 {51; GFX6-SDAG-LABEL: test_ldexp_v2f32_v2i32:52; GFX6-SDAG:       ; %bb.0:53; GFX6-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)54; GFX6-SDAG-NEXT:    v_ldexp_f32_e32 v1, v3, v555; GFX6-SDAG-NEXT:    v_ldexp_f32_e32 v0, v2, v456; GFX6-SDAG-NEXT:    s_setpc_b64 s[30:31]57;58; GFX8-SDAG-LABEL: test_ldexp_v2f32_v2i32:59; GFX8-SDAG:       ; %bb.0:60; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)61; GFX8-SDAG-NEXT:    v_ldexp_f32 v1, v3, v562; GFX8-SDAG-NEXT:    v_ldexp_f32 v0, v2, v463; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]64;65; GFX9-SDAG-LABEL: test_ldexp_v2f32_v2i32:66; GFX9-SDAG:       ; %bb.0:67; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)68; GFX9-SDAG-NEXT:    v_ldexp_f32 v1, v3, v569; GFX9-SDAG-NEXT:    v_ldexp_f32 v0, v2, v470; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]71;72; GFX11-LABEL: test_ldexp_v2f32_v2i32:73; GFX11:       ; %bb.0:74; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)75; GFX11-NEXT:    v_ldexp_f32 v0, v2, v476; GFX11-NEXT:    v_ldexp_f32 v1, v3, v577; GFX11-NEXT:    s_setpc_b64 s[30:31]78;79; GFX6-GISEL-LABEL: test_ldexp_v2f32_v2i32:80; GFX6-GISEL:       ; %bb.0:81; GFX6-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)82; GFX6-GISEL-NEXT:    v_ldexp_f32_e32 v0, v2, v483; GFX6-GISEL-NEXT:    v_ldexp_f32_e32 v1, v3, v584; GFX6-GISEL-NEXT:    s_setpc_b64 s[30:31]85;86; GFX8-GISEL-LABEL: test_ldexp_v2f32_v2i32:87; GFX8-GISEL:       ; %bb.0:88; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)89; GFX8-GISEL-NEXT:    v_ldexp_f32 v0, v2, v490; GFX8-GISEL-NEXT:    v_ldexp_f32 v1, v3, v591; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]92;93; GFX9-GISEL-LABEL: test_ldexp_v2f32_v2i32:94; GFX9-GISEL:       ; %bb.0:95; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)96; GFX9-GISEL-NEXT:    v_ldexp_f32 v0, v2, v497; GFX9-GISEL-NEXT:    v_ldexp_f32 v1, v3, v598; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]99  %result = call <2 x float> @llvm.experimental.constrained.ldexp.v2f32.v2i32(<2 x float> %a, <2 x i32> %b, metadata !"round.dynamic", metadata !"fpexcept.strict")100  ret <2 x float> %result101}102 103define <3 x float> @test_ldexp_v3f32_v3i32(ptr addrspace(1) %out, <3 x float> %a, <3 x i32> %b) #0 {104; GFX6-SDAG-LABEL: test_ldexp_v3f32_v3i32:105; GFX6-SDAG:       ; %bb.0:106; GFX6-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)107; GFX6-SDAG-NEXT:    v_ldexp_f32_e32 v4, v4, v7108; GFX6-SDAG-NEXT:    v_ldexp_f32_e32 v1, v3, v6109; GFX6-SDAG-NEXT:    v_ldexp_f32_e32 v0, v2, v5110; GFX6-SDAG-NEXT:    v_mov_b32_e32 v2, v4111; GFX6-SDAG-NEXT:    s_setpc_b64 s[30:31]112;113; GFX8-SDAG-LABEL: test_ldexp_v3f32_v3i32:114; GFX8-SDAG:       ; %bb.0:115; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)116; GFX8-SDAG-NEXT:    v_ldexp_f32 v4, v4, v7117; GFX8-SDAG-NEXT:    v_ldexp_f32 v1, v3, v6118; GFX8-SDAG-NEXT:    v_ldexp_f32 v0, v2, v5119; GFX8-SDAG-NEXT:    v_mov_b32_e32 v2, v4120; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]121;122; GFX9-SDAG-LABEL: test_ldexp_v3f32_v3i32:123; GFX9-SDAG:       ; %bb.0:124; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)125; GFX9-SDAG-NEXT:    v_ldexp_f32 v4, v4, v7126; GFX9-SDAG-NEXT:    v_ldexp_f32 v1, v3, v6127; GFX9-SDAG-NEXT:    v_ldexp_f32 v0, v2, v5128; GFX9-SDAG-NEXT:    v_mov_b32_e32 v2, v4129; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]130;131; GFX11-LABEL: test_ldexp_v3f32_v3i32:132; GFX11:       ; %bb.0:133; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)134; GFX11-NEXT:    v_ldexp_f32 v0, v2, v5135; GFX11-NEXT:    v_ldexp_f32 v1, v3, v6136; GFX11-NEXT:    v_ldexp_f32 v2, v4, v7137; GFX11-NEXT:    s_setpc_b64 s[30:31]138;139; GFX6-GISEL-LABEL: test_ldexp_v3f32_v3i32:140; GFX6-GISEL:       ; %bb.0:141; GFX6-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)142; GFX6-GISEL-NEXT:    v_ldexp_f32_e32 v0, v2, v5143; GFX6-GISEL-NEXT:    v_ldexp_f32_e32 v1, v3, v6144; GFX6-GISEL-NEXT:    v_ldexp_f32_e32 v2, v4, v7145; GFX6-GISEL-NEXT:    s_setpc_b64 s[30:31]146;147; GFX8-GISEL-LABEL: test_ldexp_v3f32_v3i32:148; GFX8-GISEL:       ; %bb.0:149; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)150; GFX8-GISEL-NEXT:    v_ldexp_f32 v0, v2, v5151; GFX8-GISEL-NEXT:    v_ldexp_f32 v1, v3, v6152; GFX8-GISEL-NEXT:    v_ldexp_f32 v2, v4, v7153; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]154;155; GFX9-GISEL-LABEL: test_ldexp_v3f32_v3i32:156; GFX9-GISEL:       ; %bb.0:157; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)158; GFX9-GISEL-NEXT:    v_ldexp_f32 v0, v2, v5159; GFX9-GISEL-NEXT:    v_ldexp_f32 v1, v3, v6160; GFX9-GISEL-NEXT:    v_ldexp_f32 v2, v4, v7161; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]162  %result = call <3 x float> @llvm.experimental.constrained.ldexp.v3f32.v3i32(<3 x float> %a, <3 x i32> %b, metadata !"round.dynamic", metadata !"fpexcept.strict")163  ret <3 x float> %result164}165 166define <4 x float> @test_ldexp_v4f32_v4i32(ptr addrspace(1) %out, <4 x float> %a, <4 x i32> %b) #0 {167; GFX6-SDAG-LABEL: test_ldexp_v4f32_v4i32:168; GFX6-SDAG:       ; %bb.0:169; GFX6-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)170; GFX6-SDAG-NEXT:    v_ldexp_f32_e32 v5, v5, v9171; GFX6-SDAG-NEXT:    v_ldexp_f32_e32 v4, v4, v8172; GFX6-SDAG-NEXT:    v_ldexp_f32_e32 v1, v3, v7173; GFX6-SDAG-NEXT:    v_ldexp_f32_e32 v0, v2, v6174; GFX6-SDAG-NEXT:    v_mov_b32_e32 v2, v4175; GFX6-SDAG-NEXT:    v_mov_b32_e32 v3, v5176; GFX6-SDAG-NEXT:    s_setpc_b64 s[30:31]177;178; GFX8-SDAG-LABEL: test_ldexp_v4f32_v4i32:179; GFX8-SDAG:       ; %bb.0:180; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)181; GFX8-SDAG-NEXT:    v_ldexp_f32 v5, v5, v9182; GFX8-SDAG-NEXT:    v_ldexp_f32 v4, v4, v8183; GFX8-SDAG-NEXT:    v_ldexp_f32 v1, v3, v7184; GFX8-SDAG-NEXT:    v_ldexp_f32 v0, v2, v6185; GFX8-SDAG-NEXT:    v_mov_b32_e32 v2, v4186; GFX8-SDAG-NEXT:    v_mov_b32_e32 v3, v5187; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]188;189; GFX9-SDAG-LABEL: test_ldexp_v4f32_v4i32:190; GFX9-SDAG:       ; %bb.0:191; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)192; GFX9-SDAG-NEXT:    v_ldexp_f32 v5, v5, v9193; GFX9-SDAG-NEXT:    v_ldexp_f32 v4, v4, v8194; GFX9-SDAG-NEXT:    v_ldexp_f32 v1, v3, v7195; GFX9-SDAG-NEXT:    v_ldexp_f32 v0, v2, v6196; GFX9-SDAG-NEXT:    v_mov_b32_e32 v2, v4197; GFX9-SDAG-NEXT:    v_mov_b32_e32 v3, v5198; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]199;200; GFX11-LABEL: test_ldexp_v4f32_v4i32:201; GFX11:       ; %bb.0:202; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)203; GFX11-NEXT:    v_ldexp_f32 v0, v2, v6204; GFX11-NEXT:    v_ldexp_f32 v1, v3, v7205; GFX11-NEXT:    v_ldexp_f32 v2, v4, v8206; GFX11-NEXT:    v_ldexp_f32 v3, v5, v9207; GFX11-NEXT:    s_setpc_b64 s[30:31]208;209; GFX6-GISEL-LABEL: test_ldexp_v4f32_v4i32:210; GFX6-GISEL:       ; %bb.0:211; GFX6-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)212; GFX6-GISEL-NEXT:    v_ldexp_f32_e32 v0, v2, v6213; GFX6-GISEL-NEXT:    v_ldexp_f32_e32 v1, v3, v7214; GFX6-GISEL-NEXT:    v_ldexp_f32_e32 v2, v4, v8215; GFX6-GISEL-NEXT:    v_ldexp_f32_e32 v3, v5, v9216; GFX6-GISEL-NEXT:    s_setpc_b64 s[30:31]217;218; GFX8-GISEL-LABEL: test_ldexp_v4f32_v4i32:219; GFX8-GISEL:       ; %bb.0:220; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)221; GFX8-GISEL-NEXT:    v_ldexp_f32 v0, v2, v6222; GFX8-GISEL-NEXT:    v_ldexp_f32 v1, v3, v7223; GFX8-GISEL-NEXT:    v_ldexp_f32 v2, v4, v8224; GFX8-GISEL-NEXT:    v_ldexp_f32 v3, v5, v9225; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]226;227; GFX9-GISEL-LABEL: test_ldexp_v4f32_v4i32:228; GFX9-GISEL:       ; %bb.0:229; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)230; GFX9-GISEL-NEXT:    v_ldexp_f32 v0, v2, v6231; GFX9-GISEL-NEXT:    v_ldexp_f32 v1, v3, v7232; GFX9-GISEL-NEXT:    v_ldexp_f32 v2, v4, v8233; GFX9-GISEL-NEXT:    v_ldexp_f32 v3, v5, v9234; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]235  %result = call <4 x float> @llvm.experimental.constrained.ldexp.v4f32.v4i32(<4 x float> %a, <4 x i32> %b, metadata !"round.dynamic", metadata !"fpexcept.strict")236  ret <4 x float> %result237}238 239declare float @llvm.experimental.constrained.ldexp.f32.i16(float, i16, metadata, metadata) #1240declare float @llvm.experimental.constrained.ldexp.f32.i32(float, i32, metadata, metadata) #1241declare <2 x float> @llvm.experimental.constrained.ldexp.v2f32.v2i16(<2 x float>, <2 x i16>, metadata, metadata) #1242declare <2 x float> @llvm.experimental.constrained.ldexp.v2f32.v2i32(<2 x float>, <2 x i32>, metadata, metadata) #1243declare <3 x float> @llvm.experimental.constrained.ldexp.v3f32.v3i32(<3 x float>, <3 x i32>, metadata, metadata) #1244declare <4 x float> @llvm.experimental.constrained.ldexp.v4f32.v4i32(<4 x float>, <4 x i32>, metadata, metadata) #1245 246attributes #0 = { strictfp }247attributes #1 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) }248;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:249; GCN: {{.*}}250; GFX11-GISEL: {{.*}}251; GFX11-SDAG: {{.*}}252