+// FIXME: This file should not be using -O1; that makes it depend on the entire LLVM IR optimizer.
+
// RUN: %clang_cc1 %s -O1 -fno-experimental-new-pass-manager -emit-llvm -triple x86_64-unknown-unknown -o - | FileCheck %s --check-prefix=X86
// RUN: %clang_cc1 %s -O1 -fno-experimental-new-pass-manager -emit-llvm -triple x86_64-pc-win64 -o - | FileCheck %s --check-prefix=X86
// RUN: %clang_cc1 %s -O1 -fno-experimental-new-pass-manager -emit-llvm -triple i686-unknown-unknown -o - | FileCheck %s --check-prefix=X86
//
// BC = 0
// AARCH64-FASTMATH: [[AD:%.*]] = fmul fast float [[D]], %a
- // AARCH64-FASTMATH: [[BCmAD:%.*]] = fsub fast float -0.000000e+00, [[AD]]
- //
- // AARCH64-FASTMATH: fdiv fast float [[AC]], [[CCpDD]]
- // AARCH64-FASTMATH: fdiv fast float [[BCmAD]], [[CCpDD]]
+ // AARCH64-FASTMATH: [[BCmAD:%.*]] = fdiv fast float [[AC]], [[CCpDD]]
+ // AARCH64-FASTMATH: [[DIV:%.*]] = fdiv fast float [[AD]], [[CCpDD]]
+ // AARCH64-FASTMATH: fsub fast float -0.000000e+00, [[DIV]]
// AARCH64-FASTMATH: ret
return a / b;
}
//
// BC = 0
// AARCH64-FASTMATH: [[AD:%.*]] = fmul fast double [[D]], %a
- // AARCH64-FASTMATH: [[BCmAD:%.*]] = fsub fast double -0.000000e+00, [[AD]]
- //
- // AARCH64-FASTMATH: fdiv fast double [[AC]], [[CCpDD]]
- // AARCH64-FASTMATH: fdiv fast double [[BCmAD]], [[CCpDD]]
+ // AARCH64-FASTMATH: [[BCmAD:%.*]] = fdiv fast double [[AC]], [[CCpDD]]
+ // AARCH64-FASTMATH: [[DIV:%.*]] = fdiv fast double [[AD]], [[CCpDD]]
+ // AARCH64-FASTMATH: fsub fast double -0.000000e+00, [[DIV]]
// AARCH64-FASTMATH: ret
return a / b;
}
//
// BC = 0
// AARCH64-FASTMATH: [[AD:%.*]] = fmul fast fp128 [[D]], %a
- // AARCH64-FASTMATH: [[BCmAD:%.*]] = fsub fast fp128 0xL00000000000000008000000000000000, [[AD]]
- //
- // AARCH64-FASTMATH: fdiv fast fp128 [[AC]], [[CCpDD]]
- // AARCH64-FASTMATH: fdiv fast fp128 [[BCmAD]], [[CCpDD]]
+ // AARCH64-FASTMATH: [[BCmAD:%.*]] = fdiv fast fp128 [[AC]], [[CCpDD]]
+ // AARCH64-FASTMATH: [[DIV:%.*]] = fdiv fast fp128 [[AD]], [[CCpDD]]
+ // AARCH64-FASTMATH: fsub fast fp128 0xL00000000000000008000000000000000, [[DIV]]
// AARCH64-FASTMATH: ret
return a / b;
}