1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc -mtriple=x86_64-unknown-unknown < %s | FileCheck %s 3 4define float @fadd_zero_f32(float %x) #0 { 5; CHECK-LABEL: fadd_zero_f32: 6; CHECK: # BB#0: 7; CHECK-NEXT: retq 8 %y = fadd float %x, 0.0 9 ret float %y 10} 11 12define <4 x float> @fadd_zero_4f32(<4 x float> %x) #0 { 13; CHECK-LABEL: fadd_zero_4f32: 14; CHECK: # BB#0: 15; CHECK-NEXT: retq 16 %y = fadd <4 x float> %x, zeroinitializer 17 ret <4 x float> %y 18} 19 20; CHECK: float 3 21define float @fadd_2const_f32(float %x) #0 { 22; CHECK-LABEL: fadd_2const_f32: 23; CHECK: # BB#0: 24; CHECK-NEXT: addss {{.*}}(%rip), %xmm0 25; CHECK-NEXT: retq 26 %y = fadd float %x, 1.0 27 %z = fadd float %y, 2.0 28 ret float %z 29} 30 31; CHECK: float 5 32; CHECK: float 5 33; CHECK: float 5 34; CHECK: float 5 35define <4 x float> @fadd_2const_4f32(<4 x float> %x) #0 { 36; CHECK-LABEL: fadd_2const_4f32: 37; CHECK: # BB#0: 38; CHECK-NEXT: addps {{.*}}(%rip), %xmm0 39; CHECK-NEXT: retq 40 %y = fadd <4 x float> %x, <float 1.0, float 2.0, float 3.0, float 4.0> 41 %z = fadd <4 x float> %y, <float 4.0, float 3.0, float 2.0, float 1.0> 42 ret <4 x float> %z 43} 44 45; CHECK: float 3 46define float @fadd_x_fmul_x_c_f32(float %x) #0 { 47; CHECK-LABEL: fadd_x_fmul_x_c_f32: 48; CHECK: # BB#0: 49; CHECK-NEXT: mulss {{.*}}(%rip), %xmm0 50; CHECK-NEXT: retq 51 %y = fmul float %x, 2.0 52 %z = fadd float %x, %y 53 ret float %z 54} 55 56; CHECK: float 2 57; CHECK: float 3 58; CHECK: float 4 59; CHECK: float 5 60define <4 x float> @fadd_x_fmul_x_c_4f32(<4 x float> %x) #0 { 61; CHECK-LABEL: fadd_x_fmul_x_c_4f32: 62; CHECK: # BB#0: 63; CHECK-NEXT: mulps {{.*}}(%rip), %xmm0 64; CHECK-NEXT: retq 65 %y = fmul <4 x float> %x, <float 1.0, float 2.0, float 3.0, float 4.0> 66 %z = fadd <4 x float> %x, %y 67 ret <4 x float> %z 68} 69 70; CHECK: float 3 71define float @fadd_fmul_x_c_x_f32(float %x) #0 { 72; CHECK-LABEL: fadd_fmul_x_c_x_f32: 73; CHECK: # BB#0: 74; CHECK-NEXT: mulss {{.*}}(%rip), %xmm0 75; CHECK-NEXT: retq 76 %y = fmul float %x, 2.0 77 %z = fadd float %y, %x 78 ret float %z 79} 80 81; CHECK: float 2 82; CHECK: float 3 83; CHECK: float 4 84; CHECK: float 5 85define <4 x float> @fadd_fmul_x_c_x_4f32(<4 x float> %x) #0 { 86; CHECK-LABEL: fadd_fmul_x_c_x_4f32: 87; CHECK: # BB#0: 88; CHECK-NEXT: mulps {{.*}}(%rip), %xmm0 89; CHECK-NEXT: retq 90 %y = fmul <4 x float> %x, <float 1.0, float 2.0, float 3.0, float 4.0> 91 %z = fadd <4 x float> %y, %x 92 ret <4 x float> %z 93} 94 95; CHECK: float 4 96define float @fadd_fadd_x_x_fmul_x_c_f32(float %x) #0 { 97; CHECK-LABEL: fadd_fadd_x_x_fmul_x_c_f32: 98; CHECK: # BB#0: 99; CHECK-NEXT: mulss {{.*}}(%rip), %xmm0 100; CHECK-NEXT: retq 101 %y = fadd float %x, %x 102 %z = fmul float %x, 2.0 103 %w = fadd float %y, %z 104 ret float %w 105} 106 107; CHECK: float 3 108; CHECK: float 4 109; CHECK: float 5 110; CHECK: float 6 111define <4 x float> @fadd_fadd_x_x_fmul_x_c_4f32(<4 x float> %x) #0 { 112; CHECK-LABEL: fadd_fadd_x_x_fmul_x_c_4f32: 113; CHECK: # BB#0: 114; CHECK-NEXT: mulps {{.*}}(%rip), %xmm0 115; CHECK-NEXT: retq 116 %y = fadd <4 x float> %x, %x 117 %z = fmul <4 x float> %x, <float 1.0, float 2.0, float 3.0, float 4.0> 118 %w = fadd <4 x float> %y, %z 119 ret <4 x float> %w 120} 121 122; CHECK: float 4 123define float @fadd_fmul_x_c_fadd_x_x_f32(float %x) #0 { 124; CHECK-LABEL: fadd_fmul_x_c_fadd_x_x_f32: 125; CHECK: # BB#0: 126; CHECK-NEXT: mulss {{.*}}(%rip), %xmm0 127; CHECK-NEXT: retq 128 %y = fadd float %x, %x 129 %z = fmul float %x, 2.0 130 %w = fadd float %z, %y 131 ret float %w 132} 133 134; CHECK: float 3 135; CHECK: float 4 136; CHECK: float 5 137; CHECK: float 6 138define <4 x float> @fadd_fmul_x_c_fadd_x_x_4f32(<4 x float> %x) #0 { 139; CHECK-LABEL: fadd_fmul_x_c_fadd_x_x_4f32: 140; CHECK: # BB#0: 141; CHECK-NEXT: mulps {{.*}}(%rip), %xmm0 142; CHECK-NEXT: retq 143 %y = fadd <4 x float> %x, %x 144 %z = fmul <4 x float> %x, <float 1.0, float 2.0, float 3.0, float 4.0> 145 %w = fadd <4 x float> %z, %y 146 ret <4 x float> %w 147} 148 149; CHECK: float 3 150define float @fadd_x_fadd_x_x_f32(float %x) #0 { 151; CHECK-LABEL: fadd_x_fadd_x_x_f32: 152; CHECK: # BB#0: 153; CHECK-NEXT: mulss {{.*}}(%rip), %xmm0 154; CHECK-NEXT: retq 155 %y = fadd float %x, %x 156 %z = fadd float %x, %y 157 ret float %z 158} 159 160; CHECK: float 3 161; CHECK: float 3 162; CHECK: float 3 163; CHECK: float 3 164define <4 x float> @fadd_x_fadd_x_x_4f32(<4 x float> %x) #0 { 165; CHECK-LABEL: fadd_x_fadd_x_x_4f32: 166; CHECK: # BB#0: 167; CHECK-NEXT: mulps {{.*}}(%rip), %xmm0 168; CHECK-NEXT: retq 169 %y = fadd <4 x float> %x, %x 170 %z = fadd <4 x float> %x, %y 171 ret <4 x float> %z 172} 173 174; CHECK: float 3 175define float @fadd_fadd_x_x_x_f32(float %x) #0 { 176; CHECK-LABEL: fadd_fadd_x_x_x_f32: 177; CHECK: # BB#0: 178; CHECK-NEXT: mulss {{.*}}(%rip), %xmm0 179; CHECK-NEXT: retq 180 %y = fadd float %x, %x 181 %z = fadd float %y, %x 182 ret float %z 183} 184 185; CHECK: float 3 186; CHECK: float 3 187; CHECK: float 3 188; CHECK: float 3 189define <4 x float> @fadd_fadd_x_x_x_4f32(<4 x float> %x) #0 { 190; CHECK-LABEL: fadd_fadd_x_x_x_4f32: 191; CHECK: # BB#0: 192; CHECK-NEXT: mulps {{.*}}(%rip), %xmm0 193; CHECK-NEXT: retq 194 %y = fadd <4 x float> %x, %x 195 %z = fadd <4 x float> %y, %x 196 ret <4 x float> %z 197} 198 199; CHECK: float 4 200define float @fadd_fadd_x_x_fadd_x_x_f32(float %x) #0 { 201; CHECK-LABEL: fadd_fadd_x_x_fadd_x_x_f32: 202; CHECK: # BB#0: 203; CHECK-NEXT: mulss {{.*}}(%rip), %xmm0 204; CHECK-NEXT: retq 205 %y = fadd float %x, %x 206 %z = fadd float %y, %y 207 ret float %z 208} 209 210; CHECK: float 4 211; CHECK: float 4 212; CHECK: float 4 213; CHECK: float 4 214define <4 x float> @fadd_fadd_x_x_fadd_x_x_4f32(<4 x float> %x) #0 { 215; CHECK-LABEL: fadd_fadd_x_x_fadd_x_x_4f32: 216; CHECK: # BB#0: 217; CHECK-NEXT: mulps {{.*}}(%rip), %xmm0 218; CHECK-NEXT: retq 219 %y = fadd <4 x float> %x, %x 220 %z = fadd <4 x float> %y, %y 221 ret <4 x float> %z 222} 223 224attributes #0 = { "less-precise-fpmad"="true" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "unsafe-fp-math"="true" } 225