brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.9 KiB · 0948319 Raw
223 lines · plain
1; RUN: llc -mtriple=amdgcn < %s | FileCheck -enable-var-scope -check-prefix=GCN %s2; RUN: llc -mtriple=amdgcn -mcpu=tonga -mattr=-flat-for-global < %s | FileCheck -enable-var-scope -check-prefix=GCN %s3 4; GCN-LABEL: {{^}}test_fmax_f32_ieee_mode_on:5; GCN: v_mul_f32_e64 [[QUIET0:v[0-9]+]], 1.0, s{{[0-9]+}}6; GCN: v_mul_f32_e64 [[QUIET1:v[0-9]+]], 1.0, s{{[0-9]+}}7; GCN: v_max_f32_e32 [[RESULT:v[0-9]+]], [[QUIET1]], [[QUIET0]]8; GCN-NOT: [[RESULT]]9; GCN: buffer_store_dword [[RESULT]]10define amdgpu_kernel void @test_fmax_f32_ieee_mode_on(ptr addrspace(1) %out, float %a, float %b) #0 {11  %val = call float @llvm.maxnum.f32(float %a, float %b) #112  store float %val, ptr addrspace(1) %out, align 413  ret void14}15 16; GCN-LABEL: {{^}}test_fmax_f32_ieee_mode_off:17; GCN: v_max_f32_e32 v0, v0, v118; GCN-NEXT: ; return19define amdgpu_ps float @test_fmax_f32_ieee_mode_off(float %a, float %b) #0 {20  %val = call float @llvm.maxnum.f32(float %a, float %b) #121  ret float %val22}23 24; GCN-LABEL: {{^}}test_fmax_v2f32:25; GCN: v_max_f32_e3226; GCN: v_max_f32_e3227define amdgpu_kernel void @test_fmax_v2f32(ptr addrspace(1) %out, <2 x float> %a, <2 x float> %b) #0 {28  %val = call <2 x float> @llvm.maxnum.v2f32(<2 x float> %a, <2 x float> %b)29  store <2 x float> %val, ptr addrspace(1) %out, align 830  ret void31}32 33; GCN-LABEL: {{^}}test_fmax_v3f32:34; GCN: v_max_f32_e3235; GCN: v_max_f32_e3236; GCN: v_max_f32_e3237; GCN-NOT: v_max_f3238define amdgpu_kernel void @test_fmax_v3f32(ptr addrspace(1) %out, <3 x float> %a, <3 x float> %b) nounwind {39  %val = call <3 x float> @llvm.maxnum.v3f32(<3 x float> %a, <3 x float> %b) #040  store <3 x float> %val, ptr addrspace(1) %out, align 1641  ret void42}43 44; GCN-LABEL: {{^}}test_fmax_v4f32:45; GCN: v_max_f32_e3246; GCN: v_max_f32_e3247; GCN: v_max_f32_e3248; GCN: v_max_f32_e3249define amdgpu_kernel void @test_fmax_v4f32(ptr addrspace(1) %out, <4 x float> %a, <4 x float> %b) #0 {50  %val = call <4 x float> @llvm.maxnum.v4f32(<4 x float> %a, <4 x float> %b)51  store <4 x float> %val, ptr addrspace(1) %out, align 1652  ret void53}54 55; GCN-LABEL: {{^}}test_fmax_v8f32:56; GCN: v_max_f32_e3257; GCN: v_max_f32_e3258; GCN: v_max_f32_e3259; GCN: v_max_f32_e3260; GCN: v_max_f32_e3261; GCN: v_max_f32_e3262; GCN: v_max_f32_e3263; GCN: v_max_f32_e3264define amdgpu_kernel void @test_fmax_v8f32(ptr addrspace(1) %out, <8 x float> %a, <8 x float> %b) #0 {65  %val = call <8 x float> @llvm.maxnum.v8f32(<8 x float> %a, <8 x float> %b)66  store <8 x float> %val, ptr addrspace(1) %out, align 3267  ret void68}69 70; GCN-LABEL: {{^}}test_fmax_v16f32:71; GCN: v_max_f32_e3272; GCN: v_max_f32_e3273; GCN: v_max_f32_e3274; GCN: v_max_f32_e3275; GCN: v_max_f32_e3276; GCN: v_max_f32_e3277; GCN: v_max_f32_e3278; GCN: v_max_f32_e3279; GCN: v_max_f32_e3280; GCN: v_max_f32_e3281; GCN: v_max_f32_e3282; GCN: v_max_f32_e3283; GCN: v_max_f32_e3284; GCN: v_max_f32_e3285; GCN: v_max_f32_e3286; GCN: v_max_f32_e3287define amdgpu_kernel void @test_fmax_v16f32(ptr addrspace(1) %out, <16 x float> %a, <16 x float> %b) #0 {88  %val = call <16 x float> @llvm.maxnum.v16f32(<16 x float> %a, <16 x float> %b)89  store <16 x float> %val, ptr addrspace(1) %out, align 6490  ret void91}92 93; GCN-LABEL: {{^}}constant_fold_fmax_f32:94; GCN-NOT: v_max_f32_e3295; GCN: v_mov_b32_e32 [[REG:v[0-9]+]], 2.096; GCN: buffer_store_dword [[REG]]97define amdgpu_kernel void @constant_fold_fmax_f32(ptr addrspace(1) %out) #0 {98  %val = call float @llvm.maxnum.f32(float 1.0, float 2.0)99  store float %val, ptr addrspace(1) %out, align 4100  ret void101}102 103; GCN-LABEL: {{^}}constant_fold_fmax_f32_nan_nan:104; GCN-NOT: v_max_f32_e32105; GCN: v_mov_b32_e32 [[REG:v[0-9]+]], 0x7fc00000106; GCN: buffer_store_dword [[REG]]107define amdgpu_kernel void @constant_fold_fmax_f32_nan_nan(ptr addrspace(1) %out) #0 {108  %val = call float @llvm.maxnum.f32(float 0x7FF8000000000000, float 0x7FF8000000000000)109  store float %val, ptr addrspace(1) %out, align 4110  ret void111}112 113; GCN-LABEL: {{^}}constant_fold_fmax_f32_val_nan:114; GCN-NOT: v_max_f32_e32115; GCN: v_mov_b32_e32 [[REG:v[0-9]+]], 1.0116; GCN: buffer_store_dword [[REG]]117define amdgpu_kernel void @constant_fold_fmax_f32_val_nan(ptr addrspace(1) %out) #0 {118  %val = call float @llvm.maxnum.f32(float 1.0, float 0x7FF8000000000000)119  store float %val, ptr addrspace(1) %out, align 4120  ret void121}122 123; GCN-LABEL: {{^}}constant_fold_fmax_f32_nan_val:124; GCN-NOT: v_max_f32_e32125; GCN: v_mov_b32_e32 [[REG:v[0-9]+]], 1.0126; GCN: buffer_store_dword [[REG]]127define amdgpu_kernel void @constant_fold_fmax_f32_nan_val(ptr addrspace(1) %out) #0 {128  %val = call float @llvm.maxnum.f32(float 0x7FF8000000000000, float 1.0)129  store float %val, ptr addrspace(1) %out, align 4130  ret void131}132 133; GCN-LABEL: {{^}}constant_fold_fmax_f32_p0_p0:134; GCN-NOT: v_max_f32_e32135; GCN: v_mov_b32_e32 [[REG:v[0-9]+]], 0136; GCN: buffer_store_dword [[REG]]137define amdgpu_kernel void @constant_fold_fmax_f32_p0_p0(ptr addrspace(1) %out) #0 {138  %val = call float @llvm.maxnum.f32(float 0.0, float 0.0)139  store float %val, ptr addrspace(1) %out, align 4140  ret void141}142 143; GCN-LABEL: {{^}}constant_fold_fmax_f32_p0_n0:144; GCN-NOT: v_max_f32_e32145; GCN: v_mov_b32_e32 [[REG:v[0-9]+]], 0146; GCN: buffer_store_dword [[REG]]147define amdgpu_kernel void @constant_fold_fmax_f32_p0_n0(ptr addrspace(1) %out) #0 {148  %val = call float @llvm.maxnum.f32(float 0.0, float -0.0)149  store float %val, ptr addrspace(1) %out, align 4150  ret void151}152 153; GCN-LABEL: {{^}}constant_fold_fmax_f32_n0_p0:154; GCN-NOT: v_max_f32_e32155; GCN: v_mov_b32_e32 [[REG:v[0-9]+]], 0{{$}}156; GCN: buffer_store_dword [[REG]]157define amdgpu_kernel void @constant_fold_fmax_f32_n0_p0(ptr addrspace(1) %out) #0 {158  %val = call float @llvm.maxnum.f32(float -0.0, float 0.0)159  store float %val, ptr addrspace(1) %out, align 4160  ret void161}162 163; GCN-LABEL: {{^}}constant_fold_fmax_f32_n0_n0:164; GCN-NOT: v_max_f32_e32165; GCN: v_bfrev_b32_e32 [[REG:v[0-9]+]], 1{{$}}166; GCN: buffer_store_dword [[REG]]167define amdgpu_kernel void @constant_fold_fmax_f32_n0_n0(ptr addrspace(1) %out) #0 {168  %val = call float @llvm.maxnum.f32(float -0.0, float -0.0)169  store float %val, ptr addrspace(1) %out, align 4170  ret void171}172 173; GCN-LABEL: {{^}}fmax_var_immediate_f32_no_ieee:174; GCN: v_max_f32_e64 {{v[0-9]+}}, {{s[0-9]+}}, 2.0175define amdgpu_ps float @fmax_var_immediate_f32_no_ieee(float inreg %a) #0 {176  %val = call float @llvm.maxnum.f32(float %a, float 2.0) #0177  ret float %val178}179 180; GCN-LABEL: {{^}}fmax_immediate_var_f32_no_ieee:181; GCN: v_max_f32_e64 {{v[0-9]+}}, {{s[0-9]+}}, 2.0182define amdgpu_ps float @fmax_immediate_var_f32_no_ieee(float inreg %a) #0 {183  %val = call float @llvm.maxnum.f32(float 2.0, float %a) #0184  ret float %val185}186 187; GCN-LABEL: {{^}}fmax_var_literal_f32_no_ieee:188; GCN: v_mov_b32_e32 [[REG:v[0-9]+]], 0x42c60000189; GCN: v_max_f32_e32 {{v[0-9]+}}, {{s[0-9]+}}, [[REG]]190define amdgpu_ps float @fmax_var_literal_f32_no_ieee(float inreg %a) #0 {191  %val = call float @llvm.maxnum.f32(float %a, float 99.0) #0192  ret float %val193}194 195; GCN-LABEL: {{^}}fmax_literal_var_f32_no_ieee:196; GCN: v_mov_b32_e32 [[REG:v[0-9]+]], 0x42c60000197; GCN: v_max_f32_e32 {{v[0-9]+}}, {{s[0-9]+}}, [[REG]]198define amdgpu_ps float @fmax_literal_var_f32_no_ieee(float inreg %a) #0 {199  %val = call float @llvm.maxnum.f32(float 99.0, float %a) #0200  ret float %val201}202 203; GCN-LABEL: {{^}}test_func_fmax_v3f32:204; GCN: v_max_f32_e32205; GCN: v_max_f32_e32206; GCN: v_max_f32_e32207; GCN-NOT: v_max_f32208define <3 x float> @test_func_fmax_v3f32(<3 x float> %a, <3 x float> %b) #0 {209  %val = call <3 x float> @llvm.maxnum.v3f32(<3 x float> %a, <3 x float> %b) #0210  ret <3 x float> %val211}212 213declare float @llvm.maxnum.f32(float, float) #1214declare <2 x float> @llvm.maxnum.v2f32(<2 x float>, <2 x float>) #1215declare <3 x float> @llvm.maxnum.v3f32(<3 x float>, <3 x float>) #1216declare <4 x float> @llvm.maxnum.v4f32(<4 x float>, <4 x float>) #1217declare <8 x float> @llvm.maxnum.v8f32(<8 x float>, <8 x float>) #1218declare <16 x float> @llvm.maxnum.v16f32(<16 x float>, <16 x float>) #1219declare double @llvm.maxnum.f64(double, double)220 221attributes #0 = { nounwind "denormal-fp-math-f32"="preserve-sign,preserve-sign" }222attributes #1 = { nounwind readnone }223