mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +01:00
319bd01ddb
These are uncontroversial and independent of a proposed LangRef edits (D44216). I tried to fix tests that would fold away: rL327004 rL327028 rL327030 rL327034 I'm not sure if the Reassociate tests are meaningless yet, but they probably will be as we add more folds, so if anyone has suggestions or wants to fix those, please do. Differential Revision: https://reviews.llvm.org/D44258 llvm-svn: 327058
46 lines
1.6 KiB
LLVM
46 lines
1.6 KiB
LLVM
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
|
; RUN: opt -S -reassociate < %s | FileCheck %s
|
|
|
|
define void @main(float, float) {
|
|
; CHECK-LABEL: @main(
|
|
; CHECK-NEXT: wrapper_entry:
|
|
; CHECK-NEXT: [[TMP2:%.*]] = fsub float undef, [[TMP0:%.*]]
|
|
; CHECK-NEXT: [[TMP3:%.*]] = fsub float undef, [[TMP1:%.*]]
|
|
; CHECK-NEXT: [[TMP4:%.*]] = call float @llvm.rsqrt.f32(float undef)
|
|
; CHECK-NEXT: [[REASS_ADD2:%.*]] = fadd fast float [[TMP3]], [[TMP2]]
|
|
; CHECK-NEXT: [[REASS_MUL3:%.*]] = fmul fast float [[TMP4]], [[REASS_ADD2]]
|
|
; CHECK-NEXT: [[REASS_ADD1:%.*]] = fadd fast float [[REASS_MUL3]], [[TMP4]]
|
|
; CHECK-NEXT: [[REASS_MUL:%.*]] = fmul fast float [[REASS_ADD1]], undef
|
|
; CHECK-NEXT: [[TMP5:%.*]] = call float @foo2(float [[REASS_MUL]], float 0.000000e+00)
|
|
; CHECK-NEXT: [[MUL36:%.*]] = fmul fast float [[TMP5]], 1.500000e+00
|
|
; CHECK-NEXT: call void @foo1(i32 4, float [[MUL36]])
|
|
; CHECK-NEXT: ret void
|
|
;
|
|
wrapper_entry:
|
|
%2 = fsub float undef, %0
|
|
%3 = fsub float undef, %1
|
|
%4 = call float @llvm.rsqrt.f32(float undef)
|
|
%5 = fmul fast float undef, %4
|
|
%6 = fmul fast float %2, %4
|
|
%7 = fmul fast float %3, %4
|
|
%8 = fmul fast float %5, undef
|
|
%9 = fmul fast float %6, undef
|
|
%10 = fmul fast float %7, undef
|
|
%11 = fadd fast float %8, %9
|
|
%12 = fadd fast float %11, %10
|
|
%13 = call float @foo2(float %12, float 0.000000e+00)
|
|
%mul36 = fmul fast float %13, 1.500000e+00
|
|
call void @foo1(i32 4, float %mul36)
|
|
ret void
|
|
}
|
|
|
|
declare void @foo1(i32, float)
|
|
|
|
declare float @foo2(float, float) #1
|
|
|
|
declare float @llvm.rsqrt.f32(float) #1
|
|
|
|
attributes #0 = { argmemonly nounwind }
|
|
attributes #1 = { nounwind readnone }
|
|
|