blob: 0145069b8cd639c3cef4af4d88c15c7113d8a4bd [file] [log] [blame]
Dan Gohman40503392009-09-08 23:54:48 +00001; RUN: llc < %s -march=x86 -x86-asm-syntax=intel | \
Reid Spencerb1003252007-04-16 14:20:28 +00002; RUN: grep -i ST | not grep {fadd\\|fsub\\|fdiv\\|fmul}
Chris Lattnerfe94f0b2004-04-11 22:05:16 +00003
4; Test that the load of the memory location is folded into the operation.
5
Tanya Lattner3cdf5422008-02-21 07:42:26 +00006define double @test_add(double %X, double* %P) {
7 %Y = load double* %P ; <double> [#uses=1]
Dan Gohmana5b96452009-06-04 22:49:04 +00008 %R = fadd double %X, %Y ; <double> [#uses=1]
Tanya Lattner3cdf5422008-02-21 07:42:26 +00009 ret double %R
Chris Lattnerfe94f0b2004-04-11 22:05:16 +000010}
11
Tanya Lattner3cdf5422008-02-21 07:42:26 +000012define double @test_mul(double %X, double* %P) {
13 %Y = load double* %P ; <double> [#uses=1]
Dan Gohmana5b96452009-06-04 22:49:04 +000014 %R = fmul double %X, %Y ; <double> [#uses=1]
Tanya Lattner3cdf5422008-02-21 07:42:26 +000015 ret double %R
Chris Lattnerfe94f0b2004-04-11 22:05:16 +000016}
17
Tanya Lattner3cdf5422008-02-21 07:42:26 +000018define double @test_sub(double %X, double* %P) {
19 %Y = load double* %P ; <double> [#uses=1]
Dan Gohmana5b96452009-06-04 22:49:04 +000020 %R = fsub double %X, %Y ; <double> [#uses=1]
Tanya Lattner3cdf5422008-02-21 07:42:26 +000021 ret double %R
Chris Lattnerfe94f0b2004-04-11 22:05:16 +000022}
23
Tanya Lattner3cdf5422008-02-21 07:42:26 +000024define double @test_subr(double %X, double* %P) {
25 %Y = load double* %P ; <double> [#uses=1]
Dan Gohmana5b96452009-06-04 22:49:04 +000026 %R = fsub double %Y, %X ; <double> [#uses=1]
Tanya Lattner3cdf5422008-02-21 07:42:26 +000027 ret double %R
Chris Lattnerfe94f0b2004-04-11 22:05:16 +000028}
29
Tanya Lattner3cdf5422008-02-21 07:42:26 +000030define double @test_div(double %X, double* %P) {
31 %Y = load double* %P ; <double> [#uses=1]
32 %R = fdiv double %X, %Y ; <double> [#uses=1]
33 ret double %R
Chris Lattnerfe94f0b2004-04-11 22:05:16 +000034}
35
Tanya Lattner3cdf5422008-02-21 07:42:26 +000036define double @test_divr(double %X, double* %P) {
37 %Y = load double* %P ; <double> [#uses=1]
38 %R = fdiv double %Y, %X ; <double> [#uses=1]
39 ret double %R
Chris Lattnerfe94f0b2004-04-11 22:05:16 +000040}