48 lines
1.4 KiB
LLVM
48 lines
1.4 KiB
LLVM
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
|
; RUN: opt -reassociate -S < %s | FileCheck %s
|
|
|
|
declare void @use(float)
|
|
|
|
define void @test1(float %x, float %y) {
|
|
; CHECK-LABEL: @test1(
|
|
; CHECK-NEXT: [[TMP1:%.*]] = fmul fast float [[Y:%.*]], [[X:%.*]]
|
|
; CHECK-NEXT: [[TMP2:%.*]] = fmul fast float [[Y]], [[X]]
|
|
; CHECK-NEXT: [[TMP3:%.*]] = fsub fast float [[TMP1]], [[TMP2]]
|
|
; CHECK-NEXT: call void @use(float [[TMP1]])
|
|
; CHECK-NEXT: call void @use(float [[TMP3]])
|
|
; CHECK-NEXT: ret void
|
|
;
|
|
%1 = fmul fast float %x, %y
|
|
%2 = fmul fast float %y, %x
|
|
%3 = fsub fast float %1, %2
|
|
call void @use(float %1)
|
|
call void @use(float %3)
|
|
ret void
|
|
}
|
|
|
|
define float @test2(float %x, float %y) {
|
|
; CHECK-LABEL: @test2(
|
|
; CHECK-NEXT: [[TMP1:%.*]] = fmul fast float [[Y:%.*]], [[X:%.*]]
|
|
; CHECK-NEXT: [[TMP2:%.*]] = fmul fast float [[Y]], [[X]]
|
|
; CHECK-NEXT: [[TMP3:%.*]] = fsub fast float [[TMP1]], [[TMP2]]
|
|
; CHECK-NEXT: ret float [[TMP3]]
|
|
;
|
|
%1 = fmul fast float %x, %y
|
|
%2 = fmul fast float %y, %x
|
|
%3 = fsub fast float %1, %2
|
|
ret float %3
|
|
}
|
|
|
|
define float @test3(float %x, float %y) {
|
|
; CHECK-LABEL: @test3(
|
|
; CHECK-NEXT: [[FACTOR:%.*]] = fmul fast float [[Y:%.*]], [[X:%.*]]
|
|
; CHECK-NEXT: [[REASS_MUL:%.*]] = fmul fast float [[FACTOR]], 2.000000e+00
|
|
; CHECK-NEXT: ret float [[REASS_MUL]]
|
|
;
|
|
%1 = fmul fast float %x, %y
|
|
%2 = fmul fast float %y, %x
|
|
%3 = fadd fast float %1, %2
|
|
ret float %3
|
|
}
|
|
|