Files
clang-p2996/llvm/test/Transforms/InstSimplify/ConstProp/AMDGPU/fma_legacy.ll
Nikita Popov 04b944e230 [InstSimplify] Convert tests to opaque pointers (NFC)
The only interesting test change is in @PR31262, where the following
fold is now performed, while it previously was not:
https://alive2.llvm.org/ce/z/a5Qmr6

llvm/test/Transforms/InstSimplify/ConstProp/gep.ll has not been
updated, because there is a tradeoff between folding and inrange
preservation there that we may want to discuss.

Updates have been performed using:
https://gist.github.com/nikic/98357b71fd67756b0f064c9517b62a34
2022-06-10 17:16:28 +02:00

45 lines
2.3 KiB
LLVM

; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt < %s -passes=instsimplify -S | FileCheck %s
declare float @llvm.amdgcn.fma.legacy(float, float, float)
define void @test(ptr %p) {
; CHECK-LABEL: @test(
; CHECK-NEXT: store volatile float 1.000000e+01, ptr [[P:%.*]], align 4
; CHECK-NEXT: store volatile float 4.000000e+00, ptr [[P]], align 4
; CHECK-NEXT: store volatile float 4.000000e+00, ptr [[P]], align 4
; CHECK-NEXT: store volatile float 0.000000e+00, ptr [[P]], align 4
; CHECK-NEXT: store volatile float 0.000000e+00, ptr [[P]], align 4
; CHECK-NEXT: store volatile float 0.000000e+00, ptr [[P]], align 4
; CHECK-NEXT: store volatile float 0.000000e+00, ptr [[P]], align 4
; CHECK-NEXT: store volatile float 4.000000e+00, ptr [[P]], align 4
; CHECK-NEXT: store volatile float 4.000000e+00, ptr [[P]], align 4
; CHECK-NEXT: store volatile float 4.000000e+00, ptr [[P]], align 4
; CHECK-NEXT: store volatile float 4.000000e+00, ptr [[P]], align 4
; CHECK-NEXT: ret void
;
%a = call float @llvm.amdgcn.fma.legacy(float +2.0, float +3.0, float +4.0)
store volatile float %a, ptr %p
%b = call float @llvm.amdgcn.fma.legacy(float +2.0, float +0.0, float +4.0)
store volatile float %b, ptr %p
%c = call float @llvm.amdgcn.fma.legacy(float +2.0, float -0.0, float +4.0)
store volatile float %c, ptr %p
%d = call float @llvm.amdgcn.fma.legacy(float +0.0, float +0.0, float -0.0)
store volatile float %d, ptr %p
%e = call float @llvm.amdgcn.fma.legacy(float +0.0, float -0.0, float -0.0)
store volatile float %e, ptr %p
%f = call float @llvm.amdgcn.fma.legacy(float -0.0, float +0.0, float -0.0)
store volatile float %f, ptr %p
%g = call float @llvm.amdgcn.fma.legacy(float -0.0, float -0.0, float -0.0)
store volatile float %g, ptr %p
%h = call float @llvm.amdgcn.fma.legacy(float +0.0, float 0x7ff0000000000000, float +4.0) ; +inf
store volatile float %h, ptr %p
%i = call float @llvm.amdgcn.fma.legacy(float 0xfff0000000000000, float +0.0, float +4.0) ; -inf
store volatile float %i, ptr %p
%j = call float @llvm.amdgcn.fma.legacy(float 0x7ff0001000000000, float -0.0, float +4.0) ; +nan
store volatile float %j, ptr %p
%k = call float @llvm.amdgcn.fma.legacy(float -0.0, float 0xfff0000100000000, float +4.0) ; -nan
store volatile float %k, ptr %p
ret void
}