blob: 7c33cb32bc6dd509f26f99d027f43771f45e6a65 [file] [log] [blame]
Tanya Lattner3cdf5422008-02-21 07:42:26 +00001; RUN: llvm-as < %s | llc -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]
8 %R = add double %X, %Y ; <double> [#uses=1]
9 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]
14 %R = mul double %X, %Y ; <double> [#uses=1]
15 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]
20 %R = sub double %X, %Y ; <double> [#uses=1]
21 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]
26 %R = sub double %Y, %X ; <double> [#uses=1]
27 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}