1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc -O3 -mtriple=powerpc64le-linux-gnu < %s | FileCheck --check-prefix=PC64LE %s 3; RUN: llc -O3 -mtriple=powerpc64le-linux-gnu -mcpu=pwr9 < %s | FileCheck --check-prefix=PC64LE9 %s 4 5define <1 x float> @constrained_vector_fdiv_v1f32() #0 { 6; PC64LE-LABEL: constrained_vector_fdiv_v1f32: 7; PC64LE: # %bb.0: # %entry 8; PC64LE-NEXT: addis 3, 2, .LCPI0_0@toc@ha 9; PC64LE-NEXT: addis 4, 2, .LCPI0_1@toc@ha 10; PC64LE-NEXT: lfs 0, .LCPI0_0@toc@l(3) 11; PC64LE-NEXT: lfs 1, .LCPI0_1@toc@l(4) 12; PC64LE-NEXT: xsdivsp 0, 1, 0 13; PC64LE-NEXT: xscvdpspn 0, 0 14; PC64LE-NEXT: xxsldwi 34, 0, 0, 1 15; PC64LE-NEXT: blr 16; 17; PC64LE9-LABEL: constrained_vector_fdiv_v1f32: 18; PC64LE9: # %bb.0: # %entry 19; PC64LE9-NEXT: addis 3, 2, .LCPI0_0@toc@ha 20; PC64LE9-NEXT: lfs 0, .LCPI0_0@toc@l(3) 21; PC64LE9-NEXT: addis 3, 2, .LCPI0_1@toc@ha 22; PC64LE9-NEXT: lfs 1, .LCPI0_1@toc@l(3) 23; PC64LE9-NEXT: xsdivsp 0, 1, 0 24; PC64LE9-NEXT: xscvdpspn 0, 0 25; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 26; PC64LE9-NEXT: blr 27entry: 28 %div = call <1 x float> @llvm.experimental.constrained.fdiv.v1f32( 29 <1 x float> <float 1.000000e+00>, 30 <1 x float> <float 1.000000e+01>, 31 metadata !"round.dynamic", 32 metadata !"fpexcept.strict") #1 33 ret <1 x float> %div 34} 35 36define <2 x double> @constrained_vector_fdiv_v2f64() #0 { 37; PC64LE-LABEL: constrained_vector_fdiv_v2f64: 38; PC64LE: # %bb.0: # %entry 39; PC64LE-NEXT: addis 3, 2, .LCPI1_0@toc@ha 40; PC64LE-NEXT: addis 4, 2, .LCPI1_1@toc@ha 41; PC64LE-NEXT: addi 3, 3, .LCPI1_0@toc@l 42; PC64LE-NEXT: addi 4, 4, .LCPI1_1@toc@l 43; PC64LE-NEXT: lxvd2x 0, 0, 3 44; PC64LE-NEXT: lxvd2x 1, 0, 4 45; PC64LE-NEXT: xxswapd 0, 0 46; PC64LE-NEXT: xxswapd 1, 1 47; PC64LE-NEXT: xvdivdp 34, 1, 0 48; PC64LE-NEXT: blr 49; 50; PC64LE9-LABEL: constrained_vector_fdiv_v2f64: 51; PC64LE9: # %bb.0: # %entry 52; PC64LE9-NEXT: addis 3, 2, .LCPI1_0@toc@ha 53; PC64LE9-NEXT: addi 3, 3, .LCPI1_0@toc@l 54; PC64LE9-NEXT: lxvx 0, 0, 3 55; PC64LE9-NEXT: addis 3, 2, .LCPI1_1@toc@ha 56; PC64LE9-NEXT: addi 3, 3, .LCPI1_1@toc@l 57; PC64LE9-NEXT: lxvx 1, 0, 3 58; PC64LE9-NEXT: xvdivdp 34, 1, 0 59; PC64LE9-NEXT: blr 60entry: 61 %div = call <2 x double> @llvm.experimental.constrained.fdiv.v2f64( 62 <2 x double> <double 1.000000e+00, double 2.000000e+00>, 63 <2 x double> <double 1.000000e+01, double 1.000000e+01>, 64 metadata !"round.dynamic", 65 metadata !"fpexcept.strict") #1 66 ret <2 x double> %div 67} 68 69define <3 x float> @constrained_vector_fdiv_v3f32() #0 { 70; PC64LE-LABEL: constrained_vector_fdiv_v3f32: 71; PC64LE: # %bb.0: # %entry 72; PC64LE-NEXT: addis 3, 2, .LCPI2_0@toc@ha 73; PC64LE-NEXT: addis 4, 2, .LCPI2_3@toc@ha 74; PC64LE-NEXT: addis 5, 2, .LCPI2_2@toc@ha 75; PC64LE-NEXT: lfs 0, .LCPI2_0@toc@l(3) 76; PC64LE-NEXT: lfs 1, .LCPI2_3@toc@l(4) 77; PC64LE-NEXT: lfs 2, .LCPI2_2@toc@l(5) 78; PC64LE-NEXT: addis 3, 2, .LCPI2_1@toc@ha 79; PC64LE-NEXT: xsdivsp 1, 1, 0 80; PC64LE-NEXT: lfs 3, .LCPI2_1@toc@l(3) 81; PC64LE-NEXT: addis 3, 2, .LCPI2_4@toc@ha 82; PC64LE-NEXT: xsdivsp 2, 2, 0 83; PC64LE-NEXT: addi 3, 3, .LCPI2_4@toc@l 84; PC64LE-NEXT: lvx 4, 0, 3 85; PC64LE-NEXT: xsdivsp 0, 3, 0 86; PC64LE-NEXT: xscvdpspn 1, 1 87; PC64LE-NEXT: xscvdpspn 2, 2 88; PC64LE-NEXT: xscvdpspn 0, 0 89; PC64LE-NEXT: xxsldwi 34, 1, 1, 1 90; PC64LE-NEXT: xxsldwi 35, 2, 2, 1 91; PC64LE-NEXT: vmrglw 2, 3, 2 92; PC64LE-NEXT: xxsldwi 35, 0, 0, 1 93; PC64LE-NEXT: vperm 2, 3, 2, 4 94; PC64LE-NEXT: blr 95; 96; PC64LE9-LABEL: constrained_vector_fdiv_v3f32: 97; PC64LE9: # %bb.0: # %entry 98; PC64LE9-NEXT: addis 3, 2, .LCPI2_0@toc@ha 99; PC64LE9-NEXT: lfs 0, .LCPI2_0@toc@l(3) 100; PC64LE9-NEXT: addis 3, 2, .LCPI2_1@toc@ha 101; PC64LE9-NEXT: lfs 1, .LCPI2_1@toc@l(3) 102; PC64LE9-NEXT: addis 3, 2, .LCPI2_2@toc@ha 103; PC64LE9-NEXT: xsdivsp 1, 1, 0 104; PC64LE9-NEXT: lfs 2, .LCPI2_2@toc@l(3) 105; PC64LE9-NEXT: addis 3, 2, .LCPI2_3@toc@ha 106; PC64LE9-NEXT: lfs 3, .LCPI2_3@toc@l(3) 107; PC64LE9-NEXT: addis 3, 2, .LCPI2_4@toc@ha 108; PC64LE9-NEXT: addi 3, 3, .LCPI2_4@toc@l 109; PC64LE9-NEXT: lxvx 36, 0, 3 110; PC64LE9-NEXT: xsdivsp 2, 2, 0 111; PC64LE9-NEXT: xsdivsp 0, 3, 0 112; PC64LE9-NEXT: xscvdpspn 0, 0 113; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 114; PC64LE9-NEXT: xscvdpspn 0, 2 115; PC64LE9-NEXT: xxsldwi 35, 0, 0, 1 116; PC64LE9-NEXT: xscvdpspn 0, 1 117; PC64LE9-NEXT: vmrglw 2, 3, 2 118; PC64LE9-NEXT: xxsldwi 35, 0, 0, 1 119; PC64LE9-NEXT: vperm 2, 3, 2, 4 120; PC64LE9-NEXT: blr 121entry: 122 %div = call <3 x float> @llvm.experimental.constrained.fdiv.v3f32( 123 <3 x float> <float 1.000000e+00, float 2.000000e+00, float 3.000000e+00>, 124 <3 x float> <float 1.000000e+01, float 1.000000e+01, float 1.000000e+01>, 125 metadata !"round.dynamic", 126 metadata !"fpexcept.strict") #1 127 ret <3 x float> %div 128} 129 130define <3 x double> @constrained_vector_fdiv_v3f64() #0 { 131; PC64LE-LABEL: constrained_vector_fdiv_v3f64: 132; PC64LE: # %bb.0: # %entry 133; PC64LE-NEXT: addis 3, 2, .LCPI3_2@toc@ha 134; PC64LE-NEXT: addis 4, 2, .LCPI3_3@toc@ha 135; PC64LE-NEXT: addi 3, 3, .LCPI3_2@toc@l 136; PC64LE-NEXT: addi 4, 4, .LCPI3_3@toc@l 137; PC64LE-NEXT: lxvd2x 0, 0, 3 138; PC64LE-NEXT: lxvd2x 1, 0, 4 139; PC64LE-NEXT: addis 3, 2, .LCPI3_0@toc@ha 140; PC64LE-NEXT: addis 4, 2, .LCPI3_1@toc@ha 141; PC64LE-NEXT: lfs 3, .LCPI3_0@toc@l(3) 142; PC64LE-NEXT: xxswapd 0, 0 143; PC64LE-NEXT: xxswapd 1, 1 144; PC64LE-NEXT: xvdivdp 2, 1, 0 145; PC64LE-NEXT: lfs 0, .LCPI3_1@toc@l(4) 146; PC64LE-NEXT: xsdivdp 3, 0, 3 147; PC64LE-NEXT: xxswapd 1, 2 148; PC64LE-NEXT: # kill: def $f2 killed $f2 killed $vsl2 149; PC64LE-NEXT: # kill: def $f1 killed $f1 killed $vsl1 150; PC64LE-NEXT: blr 151; 152; PC64LE9-LABEL: constrained_vector_fdiv_v3f64: 153; PC64LE9: # %bb.0: # %entry 154; PC64LE9-NEXT: addis 3, 2, .LCPI3_0@toc@ha 155; PC64LE9-NEXT: lfs 0, .LCPI3_0@toc@l(3) 156; PC64LE9-NEXT: addis 3, 2, .LCPI3_1@toc@ha 157; PC64LE9-NEXT: lfs 1, .LCPI3_1@toc@l(3) 158; PC64LE9-NEXT: addis 3, 2, .LCPI3_2@toc@ha 159; PC64LE9-NEXT: addi 3, 3, .LCPI3_2@toc@l 160; PC64LE9-NEXT: xsdivdp 3, 1, 0 161; PC64LE9-NEXT: lxvx 0, 0, 3 162; PC64LE9-NEXT: addis 3, 2, .LCPI3_3@toc@ha 163; PC64LE9-NEXT: addi 3, 3, .LCPI3_3@toc@l 164; PC64LE9-NEXT: lxvx 1, 0, 3 165; PC64LE9-NEXT: xvdivdp 2, 1, 0 166; PC64LE9-NEXT: xxswapd 1, 2 167; PC64LE9-NEXT: # kill: def $f1 killed $f1 killed $vsl1 168; PC64LE9-NEXT: # kill: def $f2 killed $f2 killed $vsl2 169; PC64LE9-NEXT: blr 170entry: 171 %div = call <3 x double> @llvm.experimental.constrained.fdiv.v3f64( 172 <3 x double> <double 1.000000e+00, double 2.000000e+00, double 3.000000e+00>, 173 <3 x double> <double 1.000000e+01, double 1.000000e+01, double 1.000000e+01>, 174 metadata !"round.dynamic", 175 metadata !"fpexcept.strict") #1 176 ret <3 x double> %div 177} 178 179define <4 x double> @constrained_vector_fdiv_v4f64() #0 { 180; PC64LE-LABEL: constrained_vector_fdiv_v4f64: 181; PC64LE: # %bb.0: # %entry 182; PC64LE-NEXT: addis 3, 2, .LCPI4_0@toc@ha 183; PC64LE-NEXT: addis 4, 2, .LCPI4_1@toc@ha 184; PC64LE-NEXT: addis 5, 2, .LCPI4_2@toc@ha 185; PC64LE-NEXT: addi 3, 3, .LCPI4_0@toc@l 186; PC64LE-NEXT: lxvd2x 0, 0, 3 187; PC64LE-NEXT: addi 3, 4, .LCPI4_1@toc@l 188; PC64LE-NEXT: addi 4, 5, .LCPI4_2@toc@l 189; PC64LE-NEXT: lxvd2x 1, 0, 3 190; PC64LE-NEXT: lxvd2x 2, 0, 4 191; PC64LE-NEXT: xxswapd 0, 0 192; PC64LE-NEXT: xxswapd 1, 1 193; PC64LE-NEXT: xxswapd 2, 2 194; PC64LE-NEXT: xvdivdp 35, 1, 0 195; PC64LE-NEXT: xvdivdp 34, 2, 0 196; PC64LE-NEXT: blr 197; 198; PC64LE9-LABEL: constrained_vector_fdiv_v4f64: 199; PC64LE9: # %bb.0: # %entry 200; PC64LE9-NEXT: addis 3, 2, .LCPI4_0@toc@ha 201; PC64LE9-NEXT: addi 3, 3, .LCPI4_0@toc@l 202; PC64LE9-NEXT: lxvx 0, 0, 3 203; PC64LE9-NEXT: addis 3, 2, .LCPI4_1@toc@ha 204; PC64LE9-NEXT: addi 3, 3, .LCPI4_1@toc@l 205; PC64LE9-NEXT: lxvx 1, 0, 3 206; PC64LE9-NEXT: addis 3, 2, .LCPI4_2@toc@ha 207; PC64LE9-NEXT: addi 3, 3, .LCPI4_2@toc@l 208; PC64LE9-NEXT: xvdivdp 35, 1, 0 209; PC64LE9-NEXT: lxvx 1, 0, 3 210; PC64LE9-NEXT: xvdivdp 34, 1, 0 211; PC64LE9-NEXT: blr 212entry: 213 %div = call <4 x double> @llvm.experimental.constrained.fdiv.v4f64( 214 <4 x double> <double 1.000000e+00, double 2.000000e+00, 215 double 3.000000e+00, double 4.000000e+00>, 216 <4 x double> <double 1.000000e+01, double 1.000000e+01, 217 double 1.000000e+01, double 1.000000e+01>, 218 metadata !"round.dynamic", 219 metadata !"fpexcept.strict") #1 220 ret <4 x double> %div 221} 222 223define <1 x float> @constrained_vector_frem_v1f32() #0 { 224; PC64LE-LABEL: constrained_vector_frem_v1f32: 225; PC64LE: # %bb.0: # %entry 226; PC64LE-NEXT: mflr 0 227; PC64LE-NEXT: std 0, 16(1) 228; PC64LE-NEXT: stdu 1, -32(1) 229; PC64LE-NEXT: addis 3, 2, .LCPI5_0@toc@ha 230; PC64LE-NEXT: addis 4, 2, .LCPI5_1@toc@ha 231; PC64LE-NEXT: lfs 1, .LCPI5_0@toc@l(3) 232; PC64LE-NEXT: lfs 2, .LCPI5_1@toc@l(4) 233; PC64LE-NEXT: bl fmodf 234; PC64LE-NEXT: nop 235; PC64LE-NEXT: xscvdpspn 0, 1 236; PC64LE-NEXT: xxsldwi 34, 0, 0, 1 237; PC64LE-NEXT: addi 1, 1, 32 238; PC64LE-NEXT: ld 0, 16(1) 239; PC64LE-NEXT: mtlr 0 240; PC64LE-NEXT: blr 241; 242; PC64LE9-LABEL: constrained_vector_frem_v1f32: 243; PC64LE9: # %bb.0: # %entry 244; PC64LE9-NEXT: mflr 0 245; PC64LE9-NEXT: std 0, 16(1) 246; PC64LE9-NEXT: stdu 1, -32(1) 247; PC64LE9-NEXT: addis 3, 2, .LCPI5_0@toc@ha 248; PC64LE9-NEXT: lfs 1, .LCPI5_0@toc@l(3) 249; PC64LE9-NEXT: addis 3, 2, .LCPI5_1@toc@ha 250; PC64LE9-NEXT: lfs 2, .LCPI5_1@toc@l(3) 251; PC64LE9-NEXT: bl fmodf 252; PC64LE9-NEXT: nop 253; PC64LE9-NEXT: xscvdpspn 0, 1 254; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 255; PC64LE9-NEXT: addi 1, 1, 32 256; PC64LE9-NEXT: ld 0, 16(1) 257; PC64LE9-NEXT: mtlr 0 258; PC64LE9-NEXT: blr 259entry: 260 %rem = call <1 x float> @llvm.experimental.constrained.frem.v1f32( 261 <1 x float> <float 1.000000e+00>, 262 <1 x float> <float 1.000000e+01>, 263 metadata !"round.dynamic", 264 metadata !"fpexcept.strict") #1 265 ret <1 x float> %rem 266} 267 268define <2 x double> @constrained_vector_frem_v2f64() #0 { 269; PC64LE-LABEL: constrained_vector_frem_v2f64: 270; PC64LE: # %bb.0: # %entry 271; PC64LE-NEXT: mflr 0 272; PC64LE-NEXT: stfd 31, -8(1) # 8-byte Folded Spill 273; PC64LE-NEXT: std 0, 16(1) 274; PC64LE-NEXT: stdu 1, -80(1) 275; PC64LE-NEXT: addis 4, 2, .LCPI6_1@toc@ha 276; PC64LE-NEXT: addis 3, 2, .LCPI6_0@toc@ha 277; PC64LE-NEXT: lfs 31, .LCPI6_1@toc@l(4) 278; PC64LE-NEXT: lfs 1, .LCPI6_0@toc@l(3) 279; PC64LE-NEXT: fmr 2, 31 280; PC64LE-NEXT: bl fmod 281; PC64LE-NEXT: nop 282; PC64LE-NEXT: li 3, 48 283; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 284; PC64LE-NEXT: fmr 2, 31 285; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 286; PC64LE-NEXT: addis 3, 2, .LCPI6_2@toc@ha 287; PC64LE-NEXT: lfs 1, .LCPI6_2@toc@l(3) 288; PC64LE-NEXT: bl fmod 289; PC64LE-NEXT: nop 290; PC64LE-NEXT: li 3, 48 291; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 292; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 293; PC64LE-NEXT: xxmrghd 34, 1, 0 294; PC64LE-NEXT: addi 1, 1, 80 295; PC64LE-NEXT: ld 0, 16(1) 296; PC64LE-NEXT: lfd 31, -8(1) # 8-byte Folded Reload 297; PC64LE-NEXT: mtlr 0 298; PC64LE-NEXT: blr 299; 300; PC64LE9-LABEL: constrained_vector_frem_v2f64: 301; PC64LE9: # %bb.0: # %entry 302; PC64LE9-NEXT: mflr 0 303; PC64LE9-NEXT: stfd 31, -8(1) # 8-byte Folded Spill 304; PC64LE9-NEXT: std 0, 16(1) 305; PC64LE9-NEXT: stdu 1, -64(1) 306; PC64LE9-NEXT: addis 3, 2, .LCPI6_0@toc@ha 307; PC64LE9-NEXT: lfs 1, .LCPI6_0@toc@l(3) 308; PC64LE9-NEXT: addis 3, 2, .LCPI6_1@toc@ha 309; PC64LE9-NEXT: lfs 31, .LCPI6_1@toc@l(3) 310; PC64LE9-NEXT: fmr 2, 31 311; PC64LE9-NEXT: bl fmod 312; PC64LE9-NEXT: nop 313; PC64LE9-NEXT: addis 3, 2, .LCPI6_2@toc@ha 314; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 315; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 316; PC64LE9-NEXT: lfs 1, .LCPI6_2@toc@l(3) 317; PC64LE9-NEXT: fmr 2, 31 318; PC64LE9-NEXT: bl fmod 319; PC64LE9-NEXT: nop 320; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 321; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 322; PC64LE9-NEXT: xxmrghd 34, 1, 0 323; PC64LE9-NEXT: addi 1, 1, 64 324; PC64LE9-NEXT: ld 0, 16(1) 325; PC64LE9-NEXT: lfd 31, -8(1) # 8-byte Folded Reload 326; PC64LE9-NEXT: mtlr 0 327; PC64LE9-NEXT: blr 328entry: 329 %rem = call <2 x double> @llvm.experimental.constrained.frem.v2f64( 330 <2 x double> <double 1.000000e+00, double 2.000000e+00>, 331 <2 x double> <double 1.000000e+01, double 1.000000e+01>, 332 metadata !"round.dynamic", 333 metadata !"fpexcept.strict") #1 334 ret <2 x double> %rem 335} 336 337define <3 x float> @constrained_vector_frem_v3f32() #0 { 338; PC64LE-LABEL: constrained_vector_frem_v3f32: 339; PC64LE: # %bb.0: # %entry 340; PC64LE-NEXT: mflr 0 341; PC64LE-NEXT: stfd 29, -24(1) # 8-byte Folded Spill 342; PC64LE-NEXT: stfd 30, -16(1) # 8-byte Folded Spill 343; PC64LE-NEXT: stfd 31, -8(1) # 8-byte Folded Spill 344; PC64LE-NEXT: std 0, 16(1) 345; PC64LE-NEXT: stdu 1, -64(1) 346; PC64LE-NEXT: addis 4, 2, .LCPI7_1@toc@ha 347; PC64LE-NEXT: addis 3, 2, .LCPI7_0@toc@ha 348; PC64LE-NEXT: lfs 31, .LCPI7_1@toc@l(4) 349; PC64LE-NEXT: lfs 1, .LCPI7_0@toc@l(3) 350; PC64LE-NEXT: fmr 2, 31 351; PC64LE-NEXT: bl fmodf 352; PC64LE-NEXT: nop 353; PC64LE-NEXT: addis 3, 2, .LCPI7_2@toc@ha 354; PC64LE-NEXT: fmr 2, 31 355; PC64LE-NEXT: fmr 30, 1 356; PC64LE-NEXT: lfs 1, .LCPI7_2@toc@l(3) 357; PC64LE-NEXT: bl fmodf 358; PC64LE-NEXT: nop 359; PC64LE-NEXT: addis 3, 2, .LCPI7_3@toc@ha 360; PC64LE-NEXT: fmr 2, 31 361; PC64LE-NEXT: fmr 29, 1 362; PC64LE-NEXT: lfs 1, .LCPI7_3@toc@l(3) 363; PC64LE-NEXT: bl fmodf 364; PC64LE-NEXT: nop 365; PC64LE-NEXT: xscvdpspn 0, 29 366; PC64LE-NEXT: addis 3, 2, .LCPI7_4@toc@ha 367; PC64LE-NEXT: xscvdpspn 1, 1 368; PC64LE-NEXT: addi 3, 3, .LCPI7_4@toc@l 369; PC64LE-NEXT: lvx 4, 0, 3 370; PC64LE-NEXT: xxsldwi 34, 0, 0, 1 371; PC64LE-NEXT: xscvdpspn 0, 30 372; PC64LE-NEXT: xxsldwi 35, 1, 1, 1 373; PC64LE-NEXT: vmrglw 2, 2, 3 374; PC64LE-NEXT: xxsldwi 35, 0, 0, 1 375; PC64LE-NEXT: vperm 2, 3, 2, 4 376; PC64LE-NEXT: addi 1, 1, 64 377; PC64LE-NEXT: ld 0, 16(1) 378; PC64LE-NEXT: lfd 31, -8(1) # 8-byte Folded Reload 379; PC64LE-NEXT: lfd 30, -16(1) # 8-byte Folded Reload 380; PC64LE-NEXT: lfd 29, -24(1) # 8-byte Folded Reload 381; PC64LE-NEXT: mtlr 0 382; PC64LE-NEXT: blr 383; 384; PC64LE9-LABEL: constrained_vector_frem_v3f32: 385; PC64LE9: # %bb.0: # %entry 386; PC64LE9-NEXT: mflr 0 387; PC64LE9-NEXT: stfd 29, -24(1) # 8-byte Folded Spill 388; PC64LE9-NEXT: stfd 30, -16(1) # 8-byte Folded Spill 389; PC64LE9-NEXT: stfd 31, -8(1) # 8-byte Folded Spill 390; PC64LE9-NEXT: std 0, 16(1) 391; PC64LE9-NEXT: stdu 1, -64(1) 392; PC64LE9-NEXT: addis 3, 2, .LCPI7_0@toc@ha 393; PC64LE9-NEXT: lfs 1, .LCPI7_0@toc@l(3) 394; PC64LE9-NEXT: addis 3, 2, .LCPI7_1@toc@ha 395; PC64LE9-NEXT: lfs 31, .LCPI7_1@toc@l(3) 396; PC64LE9-NEXT: fmr 2, 31 397; PC64LE9-NEXT: bl fmodf 398; PC64LE9-NEXT: nop 399; PC64LE9-NEXT: addis 3, 2, .LCPI7_2@toc@ha 400; PC64LE9-NEXT: fmr 30, 1 401; PC64LE9-NEXT: lfs 1, .LCPI7_2@toc@l(3) 402; PC64LE9-NEXT: fmr 2, 31 403; PC64LE9-NEXT: bl fmodf 404; PC64LE9-NEXT: nop 405; PC64LE9-NEXT: addis 3, 2, .LCPI7_3@toc@ha 406; PC64LE9-NEXT: fmr 29, 1 407; PC64LE9-NEXT: lfs 1, .LCPI7_3@toc@l(3) 408; PC64LE9-NEXT: fmr 2, 31 409; PC64LE9-NEXT: bl fmodf 410; PC64LE9-NEXT: nop 411; PC64LE9-NEXT: xscvdpspn 0, 1 412; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 413; PC64LE9-NEXT: xscvdpspn 0, 29 414; PC64LE9-NEXT: xxsldwi 35, 0, 0, 1 415; PC64LE9-NEXT: xscvdpspn 0, 30 416; PC64LE9-NEXT: addis 3, 2, .LCPI7_4@toc@ha 417; PC64LE9-NEXT: addi 3, 3, .LCPI7_4@toc@l 418; PC64LE9-NEXT: lxvx 36, 0, 3 419; PC64LE9-NEXT: vmrglw 2, 3, 2 420; PC64LE9-NEXT: xxsldwi 35, 0, 0, 1 421; PC64LE9-NEXT: vperm 2, 3, 2, 4 422; PC64LE9-NEXT: addi 1, 1, 64 423; PC64LE9-NEXT: ld 0, 16(1) 424; PC64LE9-NEXT: lfd 31, -8(1) # 8-byte Folded Reload 425; PC64LE9-NEXT: lfd 30, -16(1) # 8-byte Folded Reload 426; PC64LE9-NEXT: mtlr 0 427; PC64LE9-NEXT: lfd 29, -24(1) # 8-byte Folded Reload 428; PC64LE9-NEXT: blr 429entry: 430 %rem = call <3 x float> @llvm.experimental.constrained.frem.v3f32( 431 <3 x float> <float 1.000000e+00, float 2.000000e+00, float 3.000000e+00>, 432 <3 x float> <float 1.000000e+01, float 1.000000e+01, float 1.000000e+01>, 433 metadata !"round.dynamic", 434 metadata !"fpexcept.strict") #1 435 ret <3 x float> %rem 436} 437 438define <3 x double> @constrained_vector_frem_v3f64() #0 { 439; PC64LE-LABEL: constrained_vector_frem_v3f64: 440; PC64LE: # %bb.0: # %entry 441; PC64LE-NEXT: mflr 0 442; PC64LE-NEXT: std 0, 16(1) 443; PC64LE-NEXT: stdu 1, -96(1) 444; PC64LE-NEXT: addis 4, 2, .LCPI8_1@toc@ha 445; PC64LE-NEXT: stfd 31, 88(1) # 8-byte Folded Spill 446; PC64LE-NEXT: li 3, 64 447; PC64LE-NEXT: stxvd2x 63, 1, 3 # 16-byte Folded Spill 448; PC64LE-NEXT: addis 3, 2, .LCPI8_0@toc@ha 449; PC64LE-NEXT: lfs 31, .LCPI8_1@toc@l(4) 450; PC64LE-NEXT: lfs 1, .LCPI8_0@toc@l(3) 451; PC64LE-NEXT: fmr 2, 31 452; PC64LE-NEXT: bl fmod 453; PC64LE-NEXT: nop 454; PC64LE-NEXT: li 3, 48 455; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 456; PC64LE-NEXT: fmr 2, 31 457; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 458; PC64LE-NEXT: addis 3, 2, .LCPI8_2@toc@ha 459; PC64LE-NEXT: lfs 1, .LCPI8_2@toc@l(3) 460; PC64LE-NEXT: bl fmod 461; PC64LE-NEXT: nop 462; PC64LE-NEXT: li 3, 48 463; PC64LE-NEXT: fmr 2, 31 464; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 465; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 466; PC64LE-NEXT: addis 3, 2, .LCPI8_3@toc@ha 467; PC64LE-NEXT: xxmrghd 63, 1, 0 468; PC64LE-NEXT: lfs 1, .LCPI8_3@toc@l(3) 469; PC64LE-NEXT: bl fmod 470; PC64LE-NEXT: nop 471; PC64LE-NEXT: xxswapd 0, 63 472; PC64LE-NEXT: li 3, 64 473; PC64LE-NEXT: xxlor 2, 63, 63 474; PC64LE-NEXT: lfd 31, 88(1) # 8-byte Folded Reload 475; PC64LE-NEXT: lxvd2x 63, 1, 3 # 16-byte Folded Reload 476; PC64LE-NEXT: fmr 3, 1 477; PC64LE-NEXT: fmr 1, 0 478; PC64LE-NEXT: addi 1, 1, 96 479; PC64LE-NEXT: ld 0, 16(1) 480; PC64LE-NEXT: mtlr 0 481; PC64LE-NEXT: blr 482; 483; PC64LE9-LABEL: constrained_vector_frem_v3f64: 484; PC64LE9: # %bb.0: # %entry 485; PC64LE9-NEXT: mflr 0 486; PC64LE9-NEXT: std 0, 16(1) 487; PC64LE9-NEXT: stdu 1, -80(1) 488; PC64LE9-NEXT: addis 3, 2, .LCPI8_0@toc@ha 489; PC64LE9-NEXT: lfs 1, .LCPI8_0@toc@l(3) 490; PC64LE9-NEXT: addis 3, 2, .LCPI8_1@toc@ha 491; PC64LE9-NEXT: stfd 31, 72(1) # 8-byte Folded Spill 492; PC64LE9-NEXT: lfs 31, .LCPI8_1@toc@l(3) 493; PC64LE9-NEXT: fmr 2, 31 494; PC64LE9-NEXT: stxv 63, 48(1) # 16-byte Folded Spill 495; PC64LE9-NEXT: bl fmod 496; PC64LE9-NEXT: nop 497; PC64LE9-NEXT: addis 3, 2, .LCPI8_2@toc@ha 498; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 499; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 500; PC64LE9-NEXT: lfs 1, .LCPI8_2@toc@l(3) 501; PC64LE9-NEXT: fmr 2, 31 502; PC64LE9-NEXT: bl fmod 503; PC64LE9-NEXT: nop 504; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 505; PC64LE9-NEXT: addis 3, 2, .LCPI8_3@toc@ha 506; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 507; PC64LE9-NEXT: xxmrghd 63, 1, 0 508; PC64LE9-NEXT: lfs 1, .LCPI8_3@toc@l(3) 509; PC64LE9-NEXT: fmr 2, 31 510; PC64LE9-NEXT: bl fmod 511; PC64LE9-NEXT: nop 512; PC64LE9-NEXT: fmr 3, 1 513; PC64LE9-NEXT: xxswapd 1, 63 514; PC64LE9-NEXT: xscpsgndp 2, 63, 63 515; PC64LE9-NEXT: lxv 63, 48(1) # 16-byte Folded Reload 516; PC64LE9-NEXT: lfd 31, 72(1) # 8-byte Folded Reload 517; PC64LE9-NEXT: # kill: def $f1 killed $f1 killed $vsl1 518; PC64LE9-NEXT: addi 1, 1, 80 519; PC64LE9-NEXT: ld 0, 16(1) 520; PC64LE9-NEXT: mtlr 0 521; PC64LE9-NEXT: blr 522entry: 523 %rem = call <3 x double> @llvm.experimental.constrained.frem.v3f64( 524 <3 x double> <double 1.000000e+00, double 2.000000e+00, double 3.000000e+00>, 525 <3 x double> <double 1.000000e+01, double 1.000000e+01, double 1.000000e+01>, 526 metadata !"round.dynamic", 527 metadata !"fpexcept.strict") #1 528 ret <3 x double> %rem 529} 530 531define <4 x double> @constrained_vector_frem_v4f64() #0 { 532; PC64LE-LABEL: constrained_vector_frem_v4f64: 533; PC64LE: # %bb.0: 534; PC64LE-NEXT: mflr 0 535; PC64LE-NEXT: std 0, 16(1) 536; PC64LE-NEXT: stdu 1, -96(1) 537; PC64LE-NEXT: addis 4, 2, .LCPI9_1@toc@ha 538; PC64LE-NEXT: stfd 31, 88(1) # 8-byte Folded Spill 539; PC64LE-NEXT: li 3, 64 540; PC64LE-NEXT: stxvd2x 63, 1, 3 # 16-byte Folded Spill 541; PC64LE-NEXT: addis 3, 2, .LCPI9_0@toc@ha 542; PC64LE-NEXT: lfs 31, .LCPI9_1@toc@l(4) 543; PC64LE-NEXT: lfs 1, .LCPI9_0@toc@l(3) 544; PC64LE-NEXT: fmr 2, 31 545; PC64LE-NEXT: bl fmod 546; PC64LE-NEXT: nop 547; PC64LE-NEXT: li 3, 48 548; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 549; PC64LE-NEXT: fmr 2, 31 550; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 551; PC64LE-NEXT: addis 3, 2, .LCPI9_2@toc@ha 552; PC64LE-NEXT: lfs 1, .LCPI9_2@toc@l(3) 553; PC64LE-NEXT: bl fmod 554; PC64LE-NEXT: nop 555; PC64LE-NEXT: li 3, 48 556; PC64LE-NEXT: fmr 2, 31 557; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 558; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 559; PC64LE-NEXT: addis 3, 2, .LCPI9_3@toc@ha 560; PC64LE-NEXT: xxmrghd 63, 1, 0 561; PC64LE-NEXT: lfs 1, .LCPI9_3@toc@l(3) 562; PC64LE-NEXT: bl fmod 563; PC64LE-NEXT: nop 564; PC64LE-NEXT: li 3, 48 565; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 566; PC64LE-NEXT: fmr 2, 31 567; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 568; PC64LE-NEXT: addis 3, 2, .LCPI9_4@toc@ha 569; PC64LE-NEXT: lfs 1, .LCPI9_4@toc@l(3) 570; PC64LE-NEXT: bl fmod 571; PC64LE-NEXT: nop 572; PC64LE-NEXT: li 3, 48 573; PC64LE-NEXT: vmr 2, 31 574; PC64LE-NEXT: lfd 31, 88(1) # 8-byte Folded Reload 575; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 576; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 577; PC64LE-NEXT: li 3, 64 578; PC64LE-NEXT: lxvd2x 63, 1, 3 # 16-byte Folded Reload 579; PC64LE-NEXT: xxmrghd 35, 1, 0 580; PC64LE-NEXT: addi 1, 1, 96 581; PC64LE-NEXT: ld 0, 16(1) 582; PC64LE-NEXT: mtlr 0 583; PC64LE-NEXT: blr 584; 585; PC64LE9-LABEL: constrained_vector_frem_v4f64: 586; PC64LE9: # %bb.0: 587; PC64LE9-NEXT: mflr 0 588; PC64LE9-NEXT: std 0, 16(1) 589; PC64LE9-NEXT: stdu 1, -80(1) 590; PC64LE9-NEXT: addis 3, 2, .LCPI9_0@toc@ha 591; PC64LE9-NEXT: lfs 1, .LCPI9_0@toc@l(3) 592; PC64LE9-NEXT: addis 3, 2, .LCPI9_1@toc@ha 593; PC64LE9-NEXT: stfd 31, 72(1) # 8-byte Folded Spill 594; PC64LE9-NEXT: lfs 31, .LCPI9_1@toc@l(3) 595; PC64LE9-NEXT: fmr 2, 31 596; PC64LE9-NEXT: stxv 63, 48(1) # 16-byte Folded Spill 597; PC64LE9-NEXT: bl fmod 598; PC64LE9-NEXT: nop 599; PC64LE9-NEXT: addis 3, 2, .LCPI9_2@toc@ha 600; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 601; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 602; PC64LE9-NEXT: lfs 1, .LCPI9_2@toc@l(3) 603; PC64LE9-NEXT: fmr 2, 31 604; PC64LE9-NEXT: bl fmod 605; PC64LE9-NEXT: nop 606; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 607; PC64LE9-NEXT: addis 3, 2, .LCPI9_3@toc@ha 608; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 609; PC64LE9-NEXT: xxmrghd 63, 1, 0 610; PC64LE9-NEXT: lfs 1, .LCPI9_3@toc@l(3) 611; PC64LE9-NEXT: fmr 2, 31 612; PC64LE9-NEXT: bl fmod 613; PC64LE9-NEXT: nop 614; PC64LE9-NEXT: addis 3, 2, .LCPI9_4@toc@ha 615; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 616; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 617; PC64LE9-NEXT: lfs 1, .LCPI9_4@toc@l(3) 618; PC64LE9-NEXT: fmr 2, 31 619; PC64LE9-NEXT: bl fmod 620; PC64LE9-NEXT: nop 621; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 622; PC64LE9-NEXT: vmr 2, 31 623; PC64LE9-NEXT: lxv 63, 48(1) # 16-byte Folded Reload 624; PC64LE9-NEXT: lfd 31, 72(1) # 8-byte Folded Reload 625; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 626; PC64LE9-NEXT: xxmrghd 35, 1, 0 627; PC64LE9-NEXT: addi 1, 1, 80 628; PC64LE9-NEXT: ld 0, 16(1) 629; PC64LE9-NEXT: mtlr 0 630; PC64LE9-NEXT: blr 631 %rem = call <4 x double> @llvm.experimental.constrained.frem.v4f64( 632 <4 x double> <double 1.000000e+00, double 2.000000e+00, 633 double 3.000000e+00, double 4.000000e+00>, 634 <4 x double> <double 1.000000e+01, double 1.000000e+01, 635 double 1.000000e+01, double 1.000000e+01>, 636 metadata !"round.dynamic", 637 metadata !"fpexcept.strict") #1 638 ret <4 x double> %rem 639} 640 641define <1 x float> @constrained_vector_fmul_v1f32() #0 { 642; PC64LE-LABEL: constrained_vector_fmul_v1f32: 643; PC64LE: # %bb.0: # %entry 644; PC64LE-NEXT: addis 3, 2, .LCPI10_0@toc@ha 645; PC64LE-NEXT: addis 4, 2, .LCPI10_1@toc@ha 646; PC64LE-NEXT: lfs 0, .LCPI10_0@toc@l(3) 647; PC64LE-NEXT: lfs 1, .LCPI10_1@toc@l(4) 648; PC64LE-NEXT: xsmulsp 0, 1, 0 649; PC64LE-NEXT: xscvdpspn 0, 0 650; PC64LE-NEXT: xxsldwi 34, 0, 0, 1 651; PC64LE-NEXT: blr 652; 653; PC64LE9-LABEL: constrained_vector_fmul_v1f32: 654; PC64LE9: # %bb.0: # %entry 655; PC64LE9-NEXT: addis 3, 2, .LCPI10_0@toc@ha 656; PC64LE9-NEXT: lfs 0, .LCPI10_0@toc@l(3) 657; PC64LE9-NEXT: addis 3, 2, .LCPI10_1@toc@ha 658; PC64LE9-NEXT: lfs 1, .LCPI10_1@toc@l(3) 659; PC64LE9-NEXT: xsmulsp 0, 1, 0 660; PC64LE9-NEXT: xscvdpspn 0, 0 661; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 662; PC64LE9-NEXT: blr 663entry: 664 %mul = call <1 x float> @llvm.experimental.constrained.fmul.v1f32( 665 <1 x float> <float 0x7FF0000000000000>, 666 <1 x float> <float 2.000000e+00>, 667 metadata !"round.dynamic", 668 metadata !"fpexcept.strict") #1 669 ret <1 x float> %mul 670} 671 672define <2 x double> @constrained_vector_fmul_v2f64() #0 { 673; PC64LE-LABEL: constrained_vector_fmul_v2f64: 674; PC64LE: # %bb.0: # %entry 675; PC64LE-NEXT: addis 3, 2, .LCPI11_0@toc@ha 676; PC64LE-NEXT: addis 4, 2, .LCPI11_1@toc@ha 677; PC64LE-NEXT: addi 3, 3, .LCPI11_0@toc@l 678; PC64LE-NEXT: addi 4, 4, .LCPI11_1@toc@l 679; PC64LE-NEXT: lxvd2x 0, 0, 3 680; PC64LE-NEXT: lxvd2x 1, 0, 4 681; PC64LE-NEXT: xxswapd 0, 0 682; PC64LE-NEXT: xxswapd 1, 1 683; PC64LE-NEXT: xvmuldp 34, 1, 0 684; PC64LE-NEXT: blr 685; 686; PC64LE9-LABEL: constrained_vector_fmul_v2f64: 687; PC64LE9: # %bb.0: # %entry 688; PC64LE9-NEXT: addis 3, 2, .LCPI11_0@toc@ha 689; PC64LE9-NEXT: addi 3, 3, .LCPI11_0@toc@l 690; PC64LE9-NEXT: lxvx 0, 0, 3 691; PC64LE9-NEXT: addis 3, 2, .LCPI11_1@toc@ha 692; PC64LE9-NEXT: addi 3, 3, .LCPI11_1@toc@l 693; PC64LE9-NEXT: lxvx 1, 0, 3 694; PC64LE9-NEXT: xvmuldp 34, 1, 0 695; PC64LE9-NEXT: blr 696entry: 697 %mul = call <2 x double> @llvm.experimental.constrained.fmul.v2f64( 698 <2 x double> <double 0x7FEFFFFFFFFFFFFF, double 0x7FEFFFFFFFFFFFFF>, 699 <2 x double> <double 2.000000e+00, double 3.000000e+00>, 700 metadata !"round.dynamic", 701 metadata !"fpexcept.strict") #1 702 ret <2 x double> %mul 703} 704 705define <3 x float> @constrained_vector_fmul_v3f32() #0 { 706; PC64LE-LABEL: constrained_vector_fmul_v3f32: 707; PC64LE: # %bb.0: # %entry 708; PC64LE-NEXT: addis 3, 2, .LCPI12_1@toc@ha 709; PC64LE-NEXT: addis 4, 2, .LCPI12_3@toc@ha 710; PC64LE-NEXT: addis 5, 2, .LCPI12_2@toc@ha 711; PC64LE-NEXT: lfs 0, .LCPI12_1@toc@l(3) 712; PC64LE-NEXT: lfs 1, .LCPI12_3@toc@l(4) 713; PC64LE-NEXT: lfs 2, .LCPI12_2@toc@l(5) 714; PC64LE-NEXT: addis 3, 2, .LCPI12_0@toc@ha 715; PC64LE-NEXT: xsmulsp 1, 0, 1 716; PC64LE-NEXT: lfs 3, .LCPI12_0@toc@l(3) 717; PC64LE-NEXT: addis 3, 2, .LCPI12_4@toc@ha 718; PC64LE-NEXT: xsmulsp 2, 0, 2 719; PC64LE-NEXT: addi 3, 3, .LCPI12_4@toc@l 720; PC64LE-NEXT: lvx 4, 0, 3 721; PC64LE-NEXT: xsmulsp 0, 0, 3 722; PC64LE-NEXT: xscvdpspn 1, 1 723; PC64LE-NEXT: xscvdpspn 2, 2 724; PC64LE-NEXT: xscvdpspn 0, 0 725; PC64LE-NEXT: xxsldwi 34, 1, 1, 1 726; PC64LE-NEXT: xxsldwi 35, 2, 2, 1 727; PC64LE-NEXT: vmrglw 2, 3, 2 728; PC64LE-NEXT: xxsldwi 35, 0, 0, 1 729; PC64LE-NEXT: vperm 2, 3, 2, 4 730; PC64LE-NEXT: blr 731; 732; PC64LE9-LABEL: constrained_vector_fmul_v3f32: 733; PC64LE9: # %bb.0: # %entry 734; PC64LE9-NEXT: addis 3, 2, .LCPI12_0@toc@ha 735; PC64LE9-NEXT: lfs 0, .LCPI12_0@toc@l(3) 736; PC64LE9-NEXT: addis 3, 2, .LCPI12_1@toc@ha 737; PC64LE9-NEXT: lfs 1, .LCPI12_1@toc@l(3) 738; PC64LE9-NEXT: addis 3, 2, .LCPI12_2@toc@ha 739; PC64LE9-NEXT: xsmulsp 0, 1, 0 740; PC64LE9-NEXT: lfs 2, .LCPI12_2@toc@l(3) 741; PC64LE9-NEXT: addis 3, 2, .LCPI12_3@toc@ha 742; PC64LE9-NEXT: lfs 3, .LCPI12_3@toc@l(3) 743; PC64LE9-NEXT: addis 3, 2, .LCPI12_4@toc@ha 744; PC64LE9-NEXT: addi 3, 3, .LCPI12_4@toc@l 745; PC64LE9-NEXT: lxvx 36, 0, 3 746; PC64LE9-NEXT: xsmulsp 2, 1, 2 747; PC64LE9-NEXT: xsmulsp 1, 1, 3 748; PC64LE9-NEXT: xscvdpspn 0, 0 749; PC64LE9-NEXT: xscvdpspn 1, 1 750; PC64LE9-NEXT: xxsldwi 34, 1, 1, 1 751; PC64LE9-NEXT: xscvdpspn 1, 2 752; PC64LE9-NEXT: xxsldwi 35, 1, 1, 1 753; PC64LE9-NEXT: vmrglw 2, 3, 2 754; PC64LE9-NEXT: xxsldwi 35, 0, 0, 1 755; PC64LE9-NEXT: vperm 2, 3, 2, 4 756; PC64LE9-NEXT: blr 757entry: 758 %mul = call <3 x float> @llvm.experimental.constrained.fmul.v3f32( 759 <3 x float> <float 0x7FF0000000000000, float 0x7FF0000000000000, 760 float 0x7FF0000000000000>, 761 <3 x float> <float 1.000000e+00, float 1.000000e+01, float 1.000000e+02>, 762 metadata !"round.dynamic", 763 metadata !"fpexcept.strict") #1 764 ret <3 x float> %mul 765} 766 767define <3 x double> @constrained_vector_fmul_v3f64() #0 { 768; PC64LE-LABEL: constrained_vector_fmul_v3f64: 769; PC64LE: # %bb.0: # %entry 770; PC64LE-NEXT: addis 3, 2, .LCPI13_2@toc@ha 771; PC64LE-NEXT: addis 4, 2, .LCPI13_3@toc@ha 772; PC64LE-NEXT: addi 3, 3, .LCPI13_2@toc@l 773; PC64LE-NEXT: addi 4, 4, .LCPI13_3@toc@l 774; PC64LE-NEXT: lxvd2x 0, 0, 3 775; PC64LE-NEXT: lxvd2x 1, 0, 4 776; PC64LE-NEXT: addis 3, 2, .LCPI13_0@toc@ha 777; PC64LE-NEXT: addis 4, 2, .LCPI13_1@toc@ha 778; PC64LE-NEXT: lfd 3, .LCPI13_0@toc@l(3) 779; PC64LE-NEXT: xxswapd 0, 0 780; PC64LE-NEXT: xxswapd 1, 1 781; PC64LE-NEXT: xvmuldp 2, 1, 0 782; PC64LE-NEXT: lfs 0, .LCPI13_1@toc@l(4) 783; PC64LE-NEXT: xsmuldp 3, 3, 0 784; PC64LE-NEXT: xxswapd 1, 2 785; PC64LE-NEXT: # kill: def $f2 killed $f2 killed $vsl2 786; PC64LE-NEXT: # kill: def $f1 killed $f1 killed $vsl1 787; PC64LE-NEXT: blr 788; 789; PC64LE9-LABEL: constrained_vector_fmul_v3f64: 790; PC64LE9: # %bb.0: # %entry 791; PC64LE9-NEXT: addis 3, 2, .LCPI13_0@toc@ha 792; PC64LE9-NEXT: lfd 0, .LCPI13_0@toc@l(3) 793; PC64LE9-NEXT: addis 3, 2, .LCPI13_1@toc@ha 794; PC64LE9-NEXT: lfs 1, .LCPI13_1@toc@l(3) 795; PC64LE9-NEXT: addis 3, 2, .LCPI13_2@toc@ha 796; PC64LE9-NEXT: addi 3, 3, .LCPI13_2@toc@l 797; PC64LE9-NEXT: xsmuldp 3, 0, 1 798; PC64LE9-NEXT: lxvx 0, 0, 3 799; PC64LE9-NEXT: addis 3, 2, .LCPI13_3@toc@ha 800; PC64LE9-NEXT: addi 3, 3, .LCPI13_3@toc@l 801; PC64LE9-NEXT: lxvx 1, 0, 3 802; PC64LE9-NEXT: xvmuldp 2, 1, 0 803; PC64LE9-NEXT: xxswapd 1, 2 804; PC64LE9-NEXT: # kill: def $f1 killed $f1 killed $vsl1 805; PC64LE9-NEXT: # kill: def $f2 killed $f2 killed $vsl2 806; PC64LE9-NEXT: blr 807entry: 808 %mul = call <3 x double> @llvm.experimental.constrained.fmul.v3f64( 809 <3 x double> <double 0x7FEFFFFFFFFFFFFF, double 0x7FEFFFFFFFFFFFFF, 810 double 0x7FEFFFFFFFFFFFFF>, 811 <3 x double> <double 1.000000e+00, double 1.000000e+01, double 1.000000e+02>, 812 metadata !"round.dynamic", 813 metadata !"fpexcept.strict") #1 814 ret <3 x double> %mul 815} 816 817define <4 x double> @constrained_vector_fmul_v4f64() #0 { 818; PC64LE-LABEL: constrained_vector_fmul_v4f64: 819; PC64LE: # %bb.0: # %entry 820; PC64LE-NEXT: addis 3, 2, .LCPI14_0@toc@ha 821; PC64LE-NEXT: addis 4, 2, .LCPI14_1@toc@ha 822; PC64LE-NEXT: addis 5, 2, .LCPI14_2@toc@ha 823; PC64LE-NEXT: addi 3, 3, .LCPI14_0@toc@l 824; PC64LE-NEXT: addi 4, 4, .LCPI14_1@toc@l 825; PC64LE-NEXT: lxvd2x 0, 0, 3 826; PC64LE-NEXT: addi 3, 5, .LCPI14_2@toc@l 827; PC64LE-NEXT: lxvd2x 1, 0, 4 828; PC64LE-NEXT: lxvd2x 2, 0, 3 829; PC64LE-NEXT: xxswapd 0, 0 830; PC64LE-NEXT: xxswapd 1, 1 831; PC64LE-NEXT: xxswapd 2, 2 832; PC64LE-NEXT: xvmuldp 35, 1, 0 833; PC64LE-NEXT: xvmuldp 34, 1, 2 834; PC64LE-NEXT: blr 835; 836; PC64LE9-LABEL: constrained_vector_fmul_v4f64: 837; PC64LE9: # %bb.0: # %entry 838; PC64LE9-NEXT: addis 3, 2, .LCPI14_0@toc@ha 839; PC64LE9-NEXT: addi 3, 3, .LCPI14_0@toc@l 840; PC64LE9-NEXT: lxvx 0, 0, 3 841; PC64LE9-NEXT: addis 3, 2, .LCPI14_1@toc@ha 842; PC64LE9-NEXT: addi 3, 3, .LCPI14_1@toc@l 843; PC64LE9-NEXT: lxvx 1, 0, 3 844; PC64LE9-NEXT: addis 3, 2, .LCPI14_2@toc@ha 845; PC64LE9-NEXT: addi 3, 3, .LCPI14_2@toc@l 846; PC64LE9-NEXT: xvmuldp 35, 1, 0 847; PC64LE9-NEXT: lxvx 0, 0, 3 848; PC64LE9-NEXT: xvmuldp 34, 1, 0 849; PC64LE9-NEXT: blr 850entry: 851 %mul = call <4 x double> @llvm.experimental.constrained.fmul.v4f64( 852 <4 x double> <double 0x7FEFFFFFFFFFFFFF, double 0x7FEFFFFFFFFFFFFF, 853 double 0x7FEFFFFFFFFFFFFF, double 0x7FEFFFFFFFFFFFFF>, 854 <4 x double> <double 2.000000e+00, double 3.000000e+00, 855 double 4.000000e+00, double 5.000000e+00>, 856 metadata !"round.dynamic", 857 metadata !"fpexcept.strict") #1 858 ret <4 x double> %mul 859} 860 861define <1 x float> @constrained_vector_fadd_v1f32() #0 { 862; PC64LE-LABEL: constrained_vector_fadd_v1f32: 863; PC64LE: # %bb.0: # %entry 864; PC64LE-NEXT: addis 3, 2, .LCPI15_0@toc@ha 865; PC64LE-NEXT: addis 4, 2, .LCPI15_1@toc@ha 866; PC64LE-NEXT: lfs 0, .LCPI15_0@toc@l(3) 867; PC64LE-NEXT: lfs 1, .LCPI15_1@toc@l(4) 868; PC64LE-NEXT: xsaddsp 0, 1, 0 869; PC64LE-NEXT: xscvdpspn 0, 0 870; PC64LE-NEXT: xxsldwi 34, 0, 0, 1 871; PC64LE-NEXT: blr 872; 873; PC64LE9-LABEL: constrained_vector_fadd_v1f32: 874; PC64LE9: # %bb.0: # %entry 875; PC64LE9-NEXT: addis 3, 2, .LCPI15_0@toc@ha 876; PC64LE9-NEXT: lfs 0, .LCPI15_0@toc@l(3) 877; PC64LE9-NEXT: addis 3, 2, .LCPI15_1@toc@ha 878; PC64LE9-NEXT: lfs 1, .LCPI15_1@toc@l(3) 879; PC64LE9-NEXT: xsaddsp 0, 1, 0 880; PC64LE9-NEXT: xscvdpspn 0, 0 881; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 882; PC64LE9-NEXT: blr 883entry: 884 %add = call <1 x float> @llvm.experimental.constrained.fadd.v1f32( 885 <1 x float> <float 0x7FF0000000000000>, 886 <1 x float> <float 1.0>, 887 metadata !"round.dynamic", 888 metadata !"fpexcept.strict") #1 889 ret <1 x float> %add 890} 891 892define <2 x double> @constrained_vector_fadd_v2f64() #0 { 893; PC64LE-LABEL: constrained_vector_fadd_v2f64: 894; PC64LE: # %bb.0: # %entry 895; PC64LE-NEXT: addis 3, 2, .LCPI16_0@toc@ha 896; PC64LE-NEXT: addis 4, 2, .LCPI16_1@toc@ha 897; PC64LE-NEXT: addi 3, 3, .LCPI16_0@toc@l 898; PC64LE-NEXT: addi 4, 4, .LCPI16_1@toc@l 899; PC64LE-NEXT: lxvd2x 0, 0, 3 900; PC64LE-NEXT: lxvd2x 1, 0, 4 901; PC64LE-NEXT: xxswapd 0, 0 902; PC64LE-NEXT: xxswapd 1, 1 903; PC64LE-NEXT: xvadddp 34, 1, 0 904; PC64LE-NEXT: blr 905; 906; PC64LE9-LABEL: constrained_vector_fadd_v2f64: 907; PC64LE9: # %bb.0: # %entry 908; PC64LE9-NEXT: addis 3, 2, .LCPI16_0@toc@ha 909; PC64LE9-NEXT: addi 3, 3, .LCPI16_0@toc@l 910; PC64LE9-NEXT: lxvx 0, 0, 3 911; PC64LE9-NEXT: addis 3, 2, .LCPI16_1@toc@ha 912; PC64LE9-NEXT: addi 3, 3, .LCPI16_1@toc@l 913; PC64LE9-NEXT: lxvx 1, 0, 3 914; PC64LE9-NEXT: xvadddp 34, 1, 0 915; PC64LE9-NEXT: blr 916entry: 917 %add = call <2 x double> @llvm.experimental.constrained.fadd.v2f64( 918 <2 x double> <double 0x7FEFFFFFFFFFFFFF, double 0x7FEFFFFFFFFFFFFF>, 919 <2 x double> <double 1.000000e+00, double 1.000000e-01>, 920 metadata !"round.dynamic", 921 metadata !"fpexcept.strict") #1 922 ret <2 x double> %add 923} 924 925define <3 x float> @constrained_vector_fadd_v3f32() #0 { 926; PC64LE-LABEL: constrained_vector_fadd_v3f32: 927; PC64LE: # %bb.0: # %entry 928; PC64LE-NEXT: addis 3, 2, .LCPI17_0@toc@ha 929; PC64LE-NEXT: addis 4, 2, .LCPI17_2@toc@ha 930; PC64LE-NEXT: addis 5, 2, .LCPI17_1@toc@ha 931; PC64LE-NEXT: xxlxor 3, 3, 3 932; PC64LE-NEXT: lfs 0, .LCPI17_0@toc@l(3) 933; PC64LE-NEXT: lfs 1, .LCPI17_2@toc@l(4) 934; PC64LE-NEXT: lfs 2, .LCPI17_1@toc@l(5) 935; PC64LE-NEXT: addis 3, 2, .LCPI17_3@toc@ha 936; PC64LE-NEXT: addi 3, 3, .LCPI17_3@toc@l 937; PC64LE-NEXT: xsaddsp 1, 0, 1 938; PC64LE-NEXT: lvx 4, 0, 3 939; PC64LE-NEXT: xsaddsp 2, 0, 2 940; PC64LE-NEXT: xsaddsp 0, 0, 3 941; PC64LE-NEXT: xscvdpspn 1, 1 942; PC64LE-NEXT: xscvdpspn 2, 2 943; PC64LE-NEXT: xscvdpspn 0, 0 944; PC64LE-NEXT: xxsldwi 34, 1, 1, 1 945; PC64LE-NEXT: xxsldwi 35, 2, 2, 1 946; PC64LE-NEXT: vmrglw 2, 3, 2 947; PC64LE-NEXT: xxsldwi 35, 0, 0, 1 948; PC64LE-NEXT: vperm 2, 3, 2, 4 949; PC64LE-NEXT: blr 950; 951; PC64LE9-LABEL: constrained_vector_fadd_v3f32: 952; PC64LE9: # %bb.0: # %entry 953; PC64LE9-NEXT: addis 3, 2, .LCPI17_0@toc@ha 954; PC64LE9-NEXT: lfs 0, .LCPI17_0@toc@l(3) 955; PC64LE9-NEXT: addis 3, 2, .LCPI17_1@toc@ha 956; PC64LE9-NEXT: lfs 2, .LCPI17_1@toc@l(3) 957; PC64LE9-NEXT: addis 3, 2, .LCPI17_2@toc@ha 958; PC64LE9-NEXT: xsaddsp 2, 0, 2 959; PC64LE9-NEXT: lfs 3, .LCPI17_2@toc@l(3) 960; PC64LE9-NEXT: xxlxor 1, 1, 1 961; PC64LE9-NEXT: xsaddsp 1, 0, 1 962; PC64LE9-NEXT: xsaddsp 0, 0, 3 963; PC64LE9-NEXT: xscvdpspn 0, 0 964; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 965; PC64LE9-NEXT: xscvdpspn 0, 2 966; PC64LE9-NEXT: xxsldwi 35, 0, 0, 1 967; PC64LE9-NEXT: xscvdpspn 0, 1 968; PC64LE9-NEXT: addis 3, 2, .LCPI17_3@toc@ha 969; PC64LE9-NEXT: addi 3, 3, .LCPI17_3@toc@l 970; PC64LE9-NEXT: lxvx 36, 0, 3 971; PC64LE9-NEXT: vmrglw 2, 3, 2 972; PC64LE9-NEXT: xxsldwi 35, 0, 0, 1 973; PC64LE9-NEXT: vperm 2, 3, 2, 4 974; PC64LE9-NEXT: blr 975entry: 976 %add = call <3 x float> @llvm.experimental.constrained.fadd.v3f32( 977 <3 x float> <float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, 978 float 0xFFFFFFFFE0000000>, 979 <3 x float> <float 2.0, float 1.0, float 0.0>, 980 metadata !"round.dynamic", 981 metadata !"fpexcept.strict") #1 982 ret <3 x float> %add 983} 984 985define <3 x double> @constrained_vector_fadd_v3f64() #0 { 986; PC64LE-LABEL: constrained_vector_fadd_v3f64: 987; PC64LE: # %bb.0: # %entry 988; PC64LE-NEXT: addis 3, 2, .LCPI18_1@toc@ha 989; PC64LE-NEXT: addis 4, 2, .LCPI18_2@toc@ha 990; PC64LE-NEXT: addi 3, 3, .LCPI18_1@toc@l 991; PC64LE-NEXT: addi 4, 4, .LCPI18_2@toc@l 992; PC64LE-NEXT: lxvd2x 0, 0, 3 993; PC64LE-NEXT: lxvd2x 1, 0, 4 994; PC64LE-NEXT: addis 3, 2, .LCPI18_0@toc@ha 995; PC64LE-NEXT: lfd 3, .LCPI18_0@toc@l(3) 996; PC64LE-NEXT: xxswapd 0, 0 997; PC64LE-NEXT: xxswapd 1, 1 998; PC64LE-NEXT: xvadddp 2, 1, 0 999; PC64LE-NEXT: xxlxor 0, 0, 0 1000; PC64LE-NEXT: xsadddp 3, 3, 0 1001; PC64LE-NEXT: xxswapd 1, 2 1002; PC64LE-NEXT: # kill: def $f2 killed $f2 killed $vsl2 1003; PC64LE-NEXT: # kill: def $f1 killed $f1 killed $vsl1 1004; PC64LE-NEXT: blr 1005; 1006; PC64LE9-LABEL: constrained_vector_fadd_v3f64: 1007; PC64LE9: # %bb.0: # %entry 1008; PC64LE9-NEXT: addis 3, 2, .LCPI18_0@toc@ha 1009; PC64LE9-NEXT: lfd 0, .LCPI18_0@toc@l(3) 1010; PC64LE9-NEXT: addis 3, 2, .LCPI18_1@toc@ha 1011; PC64LE9-NEXT: xxlxor 1, 1, 1 1012; PC64LE9-NEXT: addi 3, 3, .LCPI18_1@toc@l 1013; PC64LE9-NEXT: xsadddp 3, 0, 1 1014; PC64LE9-NEXT: lxvx 0, 0, 3 1015; PC64LE9-NEXT: addis 3, 2, .LCPI18_2@toc@ha 1016; PC64LE9-NEXT: addi 3, 3, .LCPI18_2@toc@l 1017; PC64LE9-NEXT: lxvx 1, 0, 3 1018; PC64LE9-NEXT: xvadddp 2, 1, 0 1019; PC64LE9-NEXT: xxswapd 1, 2 1020; PC64LE9-NEXT: # kill: def $f1 killed $f1 killed $vsl1 1021; PC64LE9-NEXT: # kill: def $f2 killed $f2 killed $vsl2 1022; PC64LE9-NEXT: blr 1023entry: 1024 %add = call <3 x double> @llvm.experimental.constrained.fadd.v3f64( 1025 <3 x double> <double 0x7FEFFFFFFFFFFFFF, double 0x7FEFFFFFFFFFFFFF, 1026 double 0x7FEFFFFFFFFFFFFF>, 1027 <3 x double> <double 2.0, double 1.0, double 0.0>, 1028 metadata !"round.dynamic", 1029 metadata !"fpexcept.strict") #1 1030 ret <3 x double> %add 1031} 1032 1033define <4 x double> @constrained_vector_fadd_v4f64() #0 { 1034; PC64LE-LABEL: constrained_vector_fadd_v4f64: 1035; PC64LE: # %bb.0: # %entry 1036; PC64LE-NEXT: addis 3, 2, .LCPI19_0@toc@ha 1037; PC64LE-NEXT: addis 4, 2, .LCPI19_1@toc@ha 1038; PC64LE-NEXT: addis 5, 2, .LCPI19_2@toc@ha 1039; PC64LE-NEXT: addi 3, 3, .LCPI19_0@toc@l 1040; PC64LE-NEXT: addi 4, 4, .LCPI19_1@toc@l 1041; PC64LE-NEXT: lxvd2x 0, 0, 3 1042; PC64LE-NEXT: addi 3, 5, .LCPI19_2@toc@l 1043; PC64LE-NEXT: lxvd2x 1, 0, 4 1044; PC64LE-NEXT: lxvd2x 2, 0, 3 1045; PC64LE-NEXT: xxswapd 0, 0 1046; PC64LE-NEXT: xxswapd 1, 1 1047; PC64LE-NEXT: xxswapd 2, 2 1048; PC64LE-NEXT: xvadddp 35, 1, 0 1049; PC64LE-NEXT: xvadddp 34, 1, 2 1050; PC64LE-NEXT: blr 1051; 1052; PC64LE9-LABEL: constrained_vector_fadd_v4f64: 1053; PC64LE9: # %bb.0: # %entry 1054; PC64LE9-NEXT: addis 3, 2, .LCPI19_0@toc@ha 1055; PC64LE9-NEXT: addi 3, 3, .LCPI19_0@toc@l 1056; PC64LE9-NEXT: lxvx 0, 0, 3 1057; PC64LE9-NEXT: addis 3, 2, .LCPI19_1@toc@ha 1058; PC64LE9-NEXT: addi 3, 3, .LCPI19_1@toc@l 1059; PC64LE9-NEXT: lxvx 1, 0, 3 1060; PC64LE9-NEXT: addis 3, 2, .LCPI19_2@toc@ha 1061; PC64LE9-NEXT: addi 3, 3, .LCPI19_2@toc@l 1062; PC64LE9-NEXT: xvadddp 35, 1, 0 1063; PC64LE9-NEXT: lxvx 0, 0, 3 1064; PC64LE9-NEXT: xvadddp 34, 1, 0 1065; PC64LE9-NEXT: blr 1066entry: 1067 %add = call <4 x double> @llvm.experimental.constrained.fadd.v4f64( 1068 <4 x double> <double 0x7FEFFFFFFFFFFFFF, double 0x7FEFFFFFFFFFFFFF, 1069 double 0x7FEFFFFFFFFFFFFF, double 0x7FEFFFFFFFFFFFFF>, 1070 <4 x double> <double 1.000000e+00, double 1.000000e-01, 1071 double 2.000000e+00, double 2.000000e-01>, 1072 metadata !"round.dynamic", 1073 metadata !"fpexcept.strict") #1 1074 ret <4 x double> %add 1075} 1076 1077define <1 x float> @constrained_vector_fsub_v1f32() #0 { 1078; PC64LE-LABEL: constrained_vector_fsub_v1f32: 1079; PC64LE: # %bb.0: # %entry 1080; PC64LE-NEXT: addis 3, 2, .LCPI20_0@toc@ha 1081; PC64LE-NEXT: addis 4, 2, .LCPI20_1@toc@ha 1082; PC64LE-NEXT: lfs 0, .LCPI20_0@toc@l(3) 1083; PC64LE-NEXT: lfs 1, .LCPI20_1@toc@l(4) 1084; PC64LE-NEXT: xssubsp 0, 1, 0 1085; PC64LE-NEXT: xscvdpspn 0, 0 1086; PC64LE-NEXT: xxsldwi 34, 0, 0, 1 1087; PC64LE-NEXT: blr 1088; 1089; PC64LE9-LABEL: constrained_vector_fsub_v1f32: 1090; PC64LE9: # %bb.0: # %entry 1091; PC64LE9-NEXT: addis 3, 2, .LCPI20_0@toc@ha 1092; PC64LE9-NEXT: lfs 0, .LCPI20_0@toc@l(3) 1093; PC64LE9-NEXT: addis 3, 2, .LCPI20_1@toc@ha 1094; PC64LE9-NEXT: lfs 1, .LCPI20_1@toc@l(3) 1095; PC64LE9-NEXT: xssubsp 0, 1, 0 1096; PC64LE9-NEXT: xscvdpspn 0, 0 1097; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 1098; PC64LE9-NEXT: blr 1099entry: 1100 %sub = call <1 x float> @llvm.experimental.constrained.fsub.v1f32( 1101 <1 x float> <float 0x7FF0000000000000>, 1102 <1 x float> <float 1.000000e+00>, 1103 metadata !"round.dynamic", 1104 metadata !"fpexcept.strict") #1 1105 ret <1 x float> %sub 1106} 1107 1108define <2 x double> @constrained_vector_fsub_v2f64() #0 { 1109; PC64LE-LABEL: constrained_vector_fsub_v2f64: 1110; PC64LE: # %bb.0: # %entry 1111; PC64LE-NEXT: addis 3, 2, .LCPI21_0@toc@ha 1112; PC64LE-NEXT: addis 4, 2, .LCPI21_1@toc@ha 1113; PC64LE-NEXT: addi 3, 3, .LCPI21_0@toc@l 1114; PC64LE-NEXT: addi 4, 4, .LCPI21_1@toc@l 1115; PC64LE-NEXT: lxvd2x 0, 0, 3 1116; PC64LE-NEXT: lxvd2x 1, 0, 4 1117; PC64LE-NEXT: xxswapd 0, 0 1118; PC64LE-NEXT: xxswapd 1, 1 1119; PC64LE-NEXT: xvsubdp 34, 1, 0 1120; PC64LE-NEXT: blr 1121; 1122; PC64LE9-LABEL: constrained_vector_fsub_v2f64: 1123; PC64LE9: # %bb.0: # %entry 1124; PC64LE9-NEXT: addis 3, 2, .LCPI21_0@toc@ha 1125; PC64LE9-NEXT: addi 3, 3, .LCPI21_0@toc@l 1126; PC64LE9-NEXT: lxvx 0, 0, 3 1127; PC64LE9-NEXT: addis 3, 2, .LCPI21_1@toc@ha 1128; PC64LE9-NEXT: addi 3, 3, .LCPI21_1@toc@l 1129; PC64LE9-NEXT: lxvx 1, 0, 3 1130; PC64LE9-NEXT: xvsubdp 34, 1, 0 1131; PC64LE9-NEXT: blr 1132entry: 1133 %sub = call <2 x double> @llvm.experimental.constrained.fsub.v2f64( 1134 <2 x double> <double 0xFFEFFFFFFFFFFFFF, double 0xFFEFFFFFFFFFFFFF>, 1135 <2 x double> <double 1.000000e+00, double 1.000000e-01>, 1136 metadata !"round.dynamic", 1137 metadata !"fpexcept.strict") #1 1138 ret <2 x double> %sub 1139} 1140 1141define <3 x float> @constrained_vector_fsub_v3f32() #0 { 1142; PC64LE-LABEL: constrained_vector_fsub_v3f32: 1143; PC64LE: # %bb.0: # %entry 1144; PC64LE-NEXT: addis 3, 2, .LCPI22_0@toc@ha 1145; PC64LE-NEXT: addis 4, 2, .LCPI22_2@toc@ha 1146; PC64LE-NEXT: addis 5, 2, .LCPI22_1@toc@ha 1147; PC64LE-NEXT: xxlxor 3, 3, 3 1148; PC64LE-NEXT: lfs 0, .LCPI22_0@toc@l(3) 1149; PC64LE-NEXT: lfs 1, .LCPI22_2@toc@l(4) 1150; PC64LE-NEXT: lfs 2, .LCPI22_1@toc@l(5) 1151; PC64LE-NEXT: addis 3, 2, .LCPI22_3@toc@ha 1152; PC64LE-NEXT: addi 3, 3, .LCPI22_3@toc@l 1153; PC64LE-NEXT: xssubsp 1, 0, 1 1154; PC64LE-NEXT: lvx 4, 0, 3 1155; PC64LE-NEXT: xssubsp 2, 0, 2 1156; PC64LE-NEXT: xssubsp 0, 0, 3 1157; PC64LE-NEXT: xscvdpspn 1, 1 1158; PC64LE-NEXT: xscvdpspn 2, 2 1159; PC64LE-NEXT: xscvdpspn 0, 0 1160; PC64LE-NEXT: xxsldwi 34, 1, 1, 1 1161; PC64LE-NEXT: xxsldwi 35, 2, 2, 1 1162; PC64LE-NEXT: vmrglw 2, 3, 2 1163; PC64LE-NEXT: xxsldwi 35, 0, 0, 1 1164; PC64LE-NEXT: vperm 2, 3, 2, 4 1165; PC64LE-NEXT: blr 1166; 1167; PC64LE9-LABEL: constrained_vector_fsub_v3f32: 1168; PC64LE9: # %bb.0: # %entry 1169; PC64LE9-NEXT: addis 3, 2, .LCPI22_0@toc@ha 1170; PC64LE9-NEXT: lfs 0, .LCPI22_0@toc@l(3) 1171; PC64LE9-NEXT: addis 3, 2, .LCPI22_1@toc@ha 1172; PC64LE9-NEXT: lfs 2, .LCPI22_1@toc@l(3) 1173; PC64LE9-NEXT: addis 3, 2, .LCPI22_2@toc@ha 1174; PC64LE9-NEXT: xssubsp 2, 0, 2 1175; PC64LE9-NEXT: lfs 3, .LCPI22_2@toc@l(3) 1176; PC64LE9-NEXT: xxlxor 1, 1, 1 1177; PC64LE9-NEXT: xssubsp 1, 0, 1 1178; PC64LE9-NEXT: xssubsp 0, 0, 3 1179; PC64LE9-NEXT: xscvdpspn 0, 0 1180; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 1181; PC64LE9-NEXT: xscvdpspn 0, 2 1182; PC64LE9-NEXT: xxsldwi 35, 0, 0, 1 1183; PC64LE9-NEXT: xscvdpspn 0, 1 1184; PC64LE9-NEXT: addis 3, 2, .LCPI22_3@toc@ha 1185; PC64LE9-NEXT: addi 3, 3, .LCPI22_3@toc@l 1186; PC64LE9-NEXT: lxvx 36, 0, 3 1187; PC64LE9-NEXT: vmrglw 2, 3, 2 1188; PC64LE9-NEXT: xxsldwi 35, 0, 0, 1 1189; PC64LE9-NEXT: vperm 2, 3, 2, 4 1190; PC64LE9-NEXT: blr 1191entry: 1192 %sub = call <3 x float> @llvm.experimental.constrained.fsub.v3f32( 1193 <3 x float> <float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, 1194 float 0xFFFFFFFFE0000000>, 1195 <3 x float> <float 2.0, float 1.0, float 0.0>, 1196 metadata !"round.dynamic", 1197 metadata !"fpexcept.strict") #1 1198 ret <3 x float> %sub 1199} 1200 1201define <3 x double> @constrained_vector_fsub_v3f64() #0 { 1202; PC64LE-LABEL: constrained_vector_fsub_v3f64: 1203; PC64LE: # %bb.0: # %entry 1204; PC64LE-NEXT: addis 3, 2, .LCPI23_1@toc@ha 1205; PC64LE-NEXT: addis 4, 2, .LCPI23_2@toc@ha 1206; PC64LE-NEXT: addi 3, 3, .LCPI23_1@toc@l 1207; PC64LE-NEXT: addi 4, 4, .LCPI23_2@toc@l 1208; PC64LE-NEXT: lxvd2x 0, 0, 3 1209; PC64LE-NEXT: lxvd2x 1, 0, 4 1210; PC64LE-NEXT: addis 3, 2, .LCPI23_0@toc@ha 1211; PC64LE-NEXT: lfd 3, .LCPI23_0@toc@l(3) 1212; PC64LE-NEXT: xxswapd 0, 0 1213; PC64LE-NEXT: xxswapd 1, 1 1214; PC64LE-NEXT: xvsubdp 2, 1, 0 1215; PC64LE-NEXT: xxlxor 0, 0, 0 1216; PC64LE-NEXT: xssubdp 3, 3, 0 1217; PC64LE-NEXT: xxswapd 1, 2 1218; PC64LE-NEXT: # kill: def $f2 killed $f2 killed $vsl2 1219; PC64LE-NEXT: # kill: def $f1 killed $f1 killed $vsl1 1220; PC64LE-NEXT: blr 1221; 1222; PC64LE9-LABEL: constrained_vector_fsub_v3f64: 1223; PC64LE9: # %bb.0: # %entry 1224; PC64LE9-NEXT: addis 3, 2, .LCPI23_0@toc@ha 1225; PC64LE9-NEXT: lfd 0, .LCPI23_0@toc@l(3) 1226; PC64LE9-NEXT: addis 3, 2, .LCPI23_1@toc@ha 1227; PC64LE9-NEXT: xxlxor 1, 1, 1 1228; PC64LE9-NEXT: addi 3, 3, .LCPI23_1@toc@l 1229; PC64LE9-NEXT: xssubdp 3, 0, 1 1230; PC64LE9-NEXT: lxvx 0, 0, 3 1231; PC64LE9-NEXT: addis 3, 2, .LCPI23_2@toc@ha 1232; PC64LE9-NEXT: addi 3, 3, .LCPI23_2@toc@l 1233; PC64LE9-NEXT: lxvx 1, 0, 3 1234; PC64LE9-NEXT: xvsubdp 2, 1, 0 1235; PC64LE9-NEXT: xxswapd 1, 2 1236; PC64LE9-NEXT: # kill: def $f1 killed $f1 killed $vsl1 1237; PC64LE9-NEXT: # kill: def $f2 killed $f2 killed $vsl2 1238; PC64LE9-NEXT: blr 1239entry: 1240 %sub = call <3 x double> @llvm.experimental.constrained.fsub.v3f64( 1241 <3 x double> <double 0xFFEFFFFFFFFFFFFF, double 0xFFEFFFFFFFFFFFFF, 1242 double 0xFFEFFFFFFFFFFFFF>, 1243 <3 x double> <double 2.0, double 1.0, double 0.0>, 1244 metadata !"round.dynamic", 1245 metadata !"fpexcept.strict") #1 1246 ret <3 x double> %sub 1247} 1248 1249define <4 x double> @constrained_vector_fsub_v4f64() #0 { 1250; PC64LE-LABEL: constrained_vector_fsub_v4f64: 1251; PC64LE: # %bb.0: # %entry 1252; PC64LE-NEXT: addis 3, 2, .LCPI24_0@toc@ha 1253; PC64LE-NEXT: addis 4, 2, .LCPI24_1@toc@ha 1254; PC64LE-NEXT: addis 5, 2, .LCPI24_2@toc@ha 1255; PC64LE-NEXT: addi 3, 3, .LCPI24_0@toc@l 1256; PC64LE-NEXT: addi 4, 4, .LCPI24_1@toc@l 1257; PC64LE-NEXT: lxvd2x 0, 0, 3 1258; PC64LE-NEXT: addi 3, 5, .LCPI24_2@toc@l 1259; PC64LE-NEXT: lxvd2x 1, 0, 4 1260; PC64LE-NEXT: lxvd2x 2, 0, 3 1261; PC64LE-NEXT: xxswapd 0, 0 1262; PC64LE-NEXT: xxswapd 1, 1 1263; PC64LE-NEXT: xxswapd 2, 2 1264; PC64LE-NEXT: xvsubdp 35, 1, 0 1265; PC64LE-NEXT: xvsubdp 34, 1, 2 1266; PC64LE-NEXT: blr 1267; 1268; PC64LE9-LABEL: constrained_vector_fsub_v4f64: 1269; PC64LE9: # %bb.0: # %entry 1270; PC64LE9-NEXT: addis 3, 2, .LCPI24_0@toc@ha 1271; PC64LE9-NEXT: addi 3, 3, .LCPI24_0@toc@l 1272; PC64LE9-NEXT: lxvx 0, 0, 3 1273; PC64LE9-NEXT: addis 3, 2, .LCPI24_1@toc@ha 1274; PC64LE9-NEXT: addi 3, 3, .LCPI24_1@toc@l 1275; PC64LE9-NEXT: lxvx 1, 0, 3 1276; PC64LE9-NEXT: addis 3, 2, .LCPI24_2@toc@ha 1277; PC64LE9-NEXT: addi 3, 3, .LCPI24_2@toc@l 1278; PC64LE9-NEXT: xvsubdp 35, 1, 0 1279; PC64LE9-NEXT: lxvx 0, 0, 3 1280; PC64LE9-NEXT: xvsubdp 34, 1, 0 1281; PC64LE9-NEXT: blr 1282entry: 1283 %sub = call <4 x double> @llvm.experimental.constrained.fsub.v4f64( 1284 <4 x double> <double 0xFFEFFFFFFFFFFFFF, double 0xFFEFFFFFFFFFFFFF, 1285 double 0xFFEFFFFFFFFFFFFF, double 0xFFEFFFFFFFFFFFFF>, 1286 <4 x double> <double 1.000000e+00, double 1.000000e-01, 1287 double 2.000000e+00, double 2.000000e-01>, 1288 metadata !"round.dynamic", 1289 metadata !"fpexcept.strict") #1 1290 ret <4 x double> %sub 1291} 1292 1293define <1 x float> @constrained_vector_sqrt_v1f32() #0 { 1294; PC64LE-LABEL: constrained_vector_sqrt_v1f32: 1295; PC64LE: # %bb.0: # %entry 1296; PC64LE-NEXT: addis 3, 2, .LCPI25_0@toc@ha 1297; PC64LE-NEXT: lfs 0, .LCPI25_0@toc@l(3) 1298; PC64LE-NEXT: xssqrtsp 0, 0 1299; PC64LE-NEXT: xscvdpspn 0, 0 1300; PC64LE-NEXT: xxsldwi 34, 0, 0, 1 1301; PC64LE-NEXT: blr 1302; 1303; PC64LE9-LABEL: constrained_vector_sqrt_v1f32: 1304; PC64LE9: # %bb.0: # %entry 1305; PC64LE9-NEXT: addis 3, 2, .LCPI25_0@toc@ha 1306; PC64LE9-NEXT: lfs 0, .LCPI25_0@toc@l(3) 1307; PC64LE9-NEXT: xssqrtsp 0, 0 1308; PC64LE9-NEXT: xscvdpspn 0, 0 1309; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 1310; PC64LE9-NEXT: blr 1311entry: 1312 %sqrt = call <1 x float> @llvm.experimental.constrained.sqrt.v1f32( 1313 <1 x float> <float 42.0>, 1314 metadata !"round.dynamic", 1315 metadata !"fpexcept.strict") #1 1316 ret <1 x float> %sqrt 1317} 1318 1319define <2 x double> @constrained_vector_sqrt_v2f64() #0 { 1320; PC64LE-LABEL: constrained_vector_sqrt_v2f64: 1321; PC64LE: # %bb.0: # %entry 1322; PC64LE-NEXT: addis 3, 2, .LCPI26_0@toc@ha 1323; PC64LE-NEXT: addi 3, 3, .LCPI26_0@toc@l 1324; PC64LE-NEXT: lxvd2x 0, 0, 3 1325; PC64LE-NEXT: xxswapd 0, 0 1326; PC64LE-NEXT: xvsqrtdp 34, 0 1327; PC64LE-NEXT: blr 1328; 1329; PC64LE9-LABEL: constrained_vector_sqrt_v2f64: 1330; PC64LE9: # %bb.0: # %entry 1331; PC64LE9-NEXT: addis 3, 2, .LCPI26_0@toc@ha 1332; PC64LE9-NEXT: addi 3, 3, .LCPI26_0@toc@l 1333; PC64LE9-NEXT: lxvx 0, 0, 3 1334; PC64LE9-NEXT: xvsqrtdp 34, 0 1335; PC64LE9-NEXT: blr 1336entry: 1337 %sqrt = call <2 x double> @llvm.experimental.constrained.sqrt.v2f64( 1338 <2 x double> <double 42.0, double 42.1>, 1339 metadata !"round.dynamic", 1340 metadata !"fpexcept.strict") #1 1341 ret <2 x double> %sqrt 1342} 1343 1344define <3 x float> @constrained_vector_sqrt_v3f32() #0 { 1345; PC64LE-LABEL: constrained_vector_sqrt_v3f32: 1346; PC64LE: # %bb.0: # %entry 1347; PC64LE-NEXT: addis 3, 2, .LCPI27_2@toc@ha 1348; PC64LE-NEXT: addis 4, 2, .LCPI27_1@toc@ha 1349; PC64LE-NEXT: lfs 0, .LCPI27_2@toc@l(3) 1350; PC64LE-NEXT: lfs 1, .LCPI27_1@toc@l(4) 1351; PC64LE-NEXT: addis 3, 2, .LCPI27_0@toc@ha 1352; PC64LE-NEXT: xssqrtsp 0, 0 1353; PC64LE-NEXT: lfs 2, .LCPI27_0@toc@l(3) 1354; PC64LE-NEXT: addis 3, 2, .LCPI27_3@toc@ha 1355; PC64LE-NEXT: xssqrtsp 1, 1 1356; PC64LE-NEXT: addi 3, 3, .LCPI27_3@toc@l 1357; PC64LE-NEXT: xssqrtsp 2, 2 1358; PC64LE-NEXT: xscvdpspn 0, 0 1359; PC64LE-NEXT: xscvdpspn 1, 1 1360; PC64LE-NEXT: xxsldwi 34, 0, 0, 1 1361; PC64LE-NEXT: xscvdpspn 0, 2 1362; PC64LE-NEXT: xxsldwi 35, 1, 1, 1 1363; PC64LE-NEXT: vmrglw 2, 3, 2 1364; PC64LE-NEXT: lvx 3, 0, 3 1365; PC64LE-NEXT: xxsldwi 36, 0, 0, 1 1366; PC64LE-NEXT: vperm 2, 4, 2, 3 1367; PC64LE-NEXT: blr 1368; 1369; PC64LE9-LABEL: constrained_vector_sqrt_v3f32: 1370; PC64LE9: # %bb.0: # %entry 1371; PC64LE9-NEXT: addis 3, 2, .LCPI27_0@toc@ha 1372; PC64LE9-NEXT: lfs 0, .LCPI27_0@toc@l(3) 1373; PC64LE9-NEXT: addis 3, 2, .LCPI27_1@toc@ha 1374; PC64LE9-NEXT: lfs 1, .LCPI27_1@toc@l(3) 1375; PC64LE9-NEXT: addis 3, 2, .LCPI27_2@toc@ha 1376; PC64LE9-NEXT: xssqrtsp 0, 0 1377; PC64LE9-NEXT: lfs 2, .LCPI27_2@toc@l(3) 1378; PC64LE9-NEXT: addis 3, 2, .LCPI27_3@toc@ha 1379; PC64LE9-NEXT: addi 3, 3, .LCPI27_3@toc@l 1380; PC64LE9-NEXT: xssqrtsp 1, 1 1381; PC64LE9-NEXT: xssqrtsp 2, 2 1382; PC64LE9-NEXT: xscvdpspn 0, 0 1383; PC64LE9-NEXT: xscvdpspn 1, 1 1384; PC64LE9-NEXT: xscvdpspn 2, 2 1385; PC64LE9-NEXT: xxsldwi 36, 0, 0, 1 1386; PC64LE9-NEXT: xxsldwi 35, 1, 1, 1 1387; PC64LE9-NEXT: xxsldwi 34, 2, 2, 1 1388; PC64LE9-NEXT: vmrglw 2, 3, 2 1389; PC64LE9-NEXT: lxvx 35, 0, 3 1390; PC64LE9-NEXT: vperm 2, 4, 2, 3 1391; PC64LE9-NEXT: blr 1392entry: 1393 %sqrt = call <3 x float> @llvm.experimental.constrained.sqrt.v3f32( 1394 <3 x float> <float 42.0, float 43.0, float 44.0>, 1395 metadata !"round.dynamic", 1396 metadata !"fpexcept.strict") #1 1397 ret <3 x float> %sqrt 1398} 1399 1400define <3 x double> @constrained_vector_sqrt_v3f64() #0 { 1401; PC64LE-LABEL: constrained_vector_sqrt_v3f64: 1402; PC64LE: # %bb.0: # %entry 1403; PC64LE-NEXT: addis 3, 2, .LCPI28_1@toc@ha 1404; PC64LE-NEXT: addi 3, 3, .LCPI28_1@toc@l 1405; PC64LE-NEXT: lxvd2x 0, 0, 3 1406; PC64LE-NEXT: addis 3, 2, .LCPI28_0@toc@ha 1407; PC64LE-NEXT: lfd 1, .LCPI28_0@toc@l(3) 1408; PC64LE-NEXT: xxswapd 0, 0 1409; PC64LE-NEXT: xssqrtdp 3, 1 1410; PC64LE-NEXT: xvsqrtdp 2, 0 1411; PC64LE-NEXT: xxswapd 1, 2 1412; PC64LE-NEXT: # kill: def $f2 killed $f2 killed $vsl2 1413; PC64LE-NEXT: # kill: def $f1 killed $f1 killed $vsl1 1414; PC64LE-NEXT: blr 1415; 1416; PC64LE9-LABEL: constrained_vector_sqrt_v3f64: 1417; PC64LE9: # %bb.0: # %entry 1418; PC64LE9-NEXT: addis 3, 2, .LCPI28_0@toc@ha 1419; PC64LE9-NEXT: lfd 0, .LCPI28_0@toc@l(3) 1420; PC64LE9-NEXT: addis 3, 2, .LCPI28_1@toc@ha 1421; PC64LE9-NEXT: addi 3, 3, .LCPI28_1@toc@l 1422; PC64LE9-NEXT: xssqrtdp 3, 0 1423; PC64LE9-NEXT: lxvx 0, 0, 3 1424; PC64LE9-NEXT: xvsqrtdp 2, 0 1425; PC64LE9-NEXT: xxswapd 1, 2 1426; PC64LE9-NEXT: # kill: def $f1 killed $f1 killed $vsl1 1427; PC64LE9-NEXT: # kill: def $f2 killed $f2 killed $vsl2 1428; PC64LE9-NEXT: blr 1429entry: 1430 %sqrt = call <3 x double> @llvm.experimental.constrained.sqrt.v3f64( 1431 <3 x double> <double 42.0, double 42.1, double 42.2>, 1432 metadata !"round.dynamic", 1433 metadata !"fpexcept.strict") #1 1434 ret <3 x double> %sqrt 1435} 1436 1437define <4 x double> @constrained_vector_sqrt_v4f64() #0 { 1438; PC64LE-LABEL: constrained_vector_sqrt_v4f64: 1439; PC64LE: # %bb.0: # %entry 1440; PC64LE-NEXT: addis 3, 2, .LCPI29_0@toc@ha 1441; PC64LE-NEXT: addis 4, 2, .LCPI29_1@toc@ha 1442; PC64LE-NEXT: addi 3, 3, .LCPI29_0@toc@l 1443; PC64LE-NEXT: addi 4, 4, .LCPI29_1@toc@l 1444; PC64LE-NEXT: lxvd2x 0, 0, 3 1445; PC64LE-NEXT: lxvd2x 1, 0, 4 1446; PC64LE-NEXT: xxswapd 0, 0 1447; PC64LE-NEXT: xxswapd 1, 1 1448; PC64LE-NEXT: xvsqrtdp 34, 0 1449; PC64LE-NEXT: xvsqrtdp 35, 1 1450; PC64LE-NEXT: blr 1451; 1452; PC64LE9-LABEL: constrained_vector_sqrt_v4f64: 1453; PC64LE9: # %bb.0: # %entry 1454; PC64LE9-NEXT: addis 3, 2, .LCPI29_0@toc@ha 1455; PC64LE9-NEXT: addi 3, 3, .LCPI29_0@toc@l 1456; PC64LE9-NEXT: lxvx 0, 0, 3 1457; PC64LE9-NEXT: addis 3, 2, .LCPI29_1@toc@ha 1458; PC64LE9-NEXT: addi 3, 3, .LCPI29_1@toc@l 1459; PC64LE9-NEXT: xvsqrtdp 34, 0 1460; PC64LE9-NEXT: lxvx 0, 0, 3 1461; PC64LE9-NEXT: xvsqrtdp 35, 0 1462; PC64LE9-NEXT: blr 1463 entry: 1464 %sqrt = call <4 x double> @llvm.experimental.constrained.sqrt.v4f64( 1465 <4 x double> <double 42.0, double 42.1, 1466 double 42.2, double 42.3>, 1467 metadata !"round.dynamic", 1468 metadata !"fpexcept.strict") #1 1469 ret <4 x double> %sqrt 1470} 1471 1472define <1 x float> @constrained_vector_pow_v1f32() #0 { 1473; PC64LE-LABEL: constrained_vector_pow_v1f32: 1474; PC64LE: # %bb.0: # %entry 1475; PC64LE-NEXT: mflr 0 1476; PC64LE-NEXT: std 0, 16(1) 1477; PC64LE-NEXT: stdu 1, -32(1) 1478; PC64LE-NEXT: addis 3, 2, .LCPI30_0@toc@ha 1479; PC64LE-NEXT: addis 4, 2, .LCPI30_1@toc@ha 1480; PC64LE-NEXT: lfs 1, .LCPI30_0@toc@l(3) 1481; PC64LE-NEXT: lfs 2, .LCPI30_1@toc@l(4) 1482; PC64LE-NEXT: bl powf 1483; PC64LE-NEXT: nop 1484; PC64LE-NEXT: xscvdpspn 0, 1 1485; PC64LE-NEXT: xxsldwi 34, 0, 0, 1 1486; PC64LE-NEXT: addi 1, 1, 32 1487; PC64LE-NEXT: ld 0, 16(1) 1488; PC64LE-NEXT: mtlr 0 1489; PC64LE-NEXT: blr 1490; 1491; PC64LE9-LABEL: constrained_vector_pow_v1f32: 1492; PC64LE9: # %bb.0: # %entry 1493; PC64LE9-NEXT: mflr 0 1494; PC64LE9-NEXT: std 0, 16(1) 1495; PC64LE9-NEXT: stdu 1, -32(1) 1496; PC64LE9-NEXT: addis 3, 2, .LCPI30_0@toc@ha 1497; PC64LE9-NEXT: lfs 1, .LCPI30_0@toc@l(3) 1498; PC64LE9-NEXT: addis 3, 2, .LCPI30_1@toc@ha 1499; PC64LE9-NEXT: lfs 2, .LCPI30_1@toc@l(3) 1500; PC64LE9-NEXT: bl powf 1501; PC64LE9-NEXT: nop 1502; PC64LE9-NEXT: xscvdpspn 0, 1 1503; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 1504; PC64LE9-NEXT: addi 1, 1, 32 1505; PC64LE9-NEXT: ld 0, 16(1) 1506; PC64LE9-NEXT: mtlr 0 1507; PC64LE9-NEXT: blr 1508entry: 1509 %pow = call <1 x float> @llvm.experimental.constrained.pow.v1f32( 1510 <1 x float> <float 42.0>, 1511 <1 x float> <float 3.0>, 1512 metadata !"round.dynamic", 1513 metadata !"fpexcept.strict") #1 1514 ret <1 x float> %pow 1515} 1516 1517define <2 x double> @constrained_vector_pow_v2f64() #0 { 1518; PC64LE-LABEL: constrained_vector_pow_v2f64: 1519; PC64LE: # %bb.0: # %entry 1520; PC64LE-NEXT: mflr 0 1521; PC64LE-NEXT: stfd 31, -8(1) # 8-byte Folded Spill 1522; PC64LE-NEXT: std 0, 16(1) 1523; PC64LE-NEXT: stdu 1, -80(1) 1524; PC64LE-NEXT: addis 4, 2, .LCPI31_1@toc@ha 1525; PC64LE-NEXT: addis 3, 2, .LCPI31_0@toc@ha 1526; PC64LE-NEXT: lfs 31, .LCPI31_1@toc@l(4) 1527; PC64LE-NEXT: lfd 1, .LCPI31_0@toc@l(3) 1528; PC64LE-NEXT: fmr 2, 31 1529; PC64LE-NEXT: bl pow 1530; PC64LE-NEXT: nop 1531; PC64LE-NEXT: li 3, 48 1532; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 1533; PC64LE-NEXT: fmr 2, 31 1534; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 1535; PC64LE-NEXT: addis 3, 2, .LCPI31_2@toc@ha 1536; PC64LE-NEXT: lfd 1, .LCPI31_2@toc@l(3) 1537; PC64LE-NEXT: bl pow 1538; PC64LE-NEXT: nop 1539; PC64LE-NEXT: li 3, 48 1540; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 1541; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 1542; PC64LE-NEXT: xxmrghd 34, 1, 0 1543; PC64LE-NEXT: addi 1, 1, 80 1544; PC64LE-NEXT: ld 0, 16(1) 1545; PC64LE-NEXT: lfd 31, -8(1) # 8-byte Folded Reload 1546; PC64LE-NEXT: mtlr 0 1547; PC64LE-NEXT: blr 1548; 1549; PC64LE9-LABEL: constrained_vector_pow_v2f64: 1550; PC64LE9: # %bb.0: # %entry 1551; PC64LE9-NEXT: mflr 0 1552; PC64LE9-NEXT: stfd 31, -8(1) # 8-byte Folded Spill 1553; PC64LE9-NEXT: std 0, 16(1) 1554; PC64LE9-NEXT: stdu 1, -64(1) 1555; PC64LE9-NEXT: addis 3, 2, .LCPI31_0@toc@ha 1556; PC64LE9-NEXT: lfd 1, .LCPI31_0@toc@l(3) 1557; PC64LE9-NEXT: addis 3, 2, .LCPI31_1@toc@ha 1558; PC64LE9-NEXT: lfs 31, .LCPI31_1@toc@l(3) 1559; PC64LE9-NEXT: fmr 2, 31 1560; PC64LE9-NEXT: bl pow 1561; PC64LE9-NEXT: nop 1562; PC64LE9-NEXT: addis 3, 2, .LCPI31_2@toc@ha 1563; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 1564; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 1565; PC64LE9-NEXT: lfd 1, .LCPI31_2@toc@l(3) 1566; PC64LE9-NEXT: fmr 2, 31 1567; PC64LE9-NEXT: bl pow 1568; PC64LE9-NEXT: nop 1569; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 1570; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 1571; PC64LE9-NEXT: xxmrghd 34, 1, 0 1572; PC64LE9-NEXT: addi 1, 1, 64 1573; PC64LE9-NEXT: ld 0, 16(1) 1574; PC64LE9-NEXT: lfd 31, -8(1) # 8-byte Folded Reload 1575; PC64LE9-NEXT: mtlr 0 1576; PC64LE9-NEXT: blr 1577entry: 1578 %pow = call <2 x double> @llvm.experimental.constrained.pow.v2f64( 1579 <2 x double> <double 42.1, double 42.2>, 1580 <2 x double> <double 3.0, double 3.0>, 1581 metadata !"round.dynamic", 1582 metadata !"fpexcept.strict") #1 1583 ret <2 x double> %pow 1584} 1585 1586define <3 x float> @constrained_vector_pow_v3f32() #0 { 1587; PC64LE-LABEL: constrained_vector_pow_v3f32: 1588; PC64LE: # %bb.0: # %entry 1589; PC64LE-NEXT: mflr 0 1590; PC64LE-NEXT: stfd 29, -24(1) # 8-byte Folded Spill 1591; PC64LE-NEXT: stfd 30, -16(1) # 8-byte Folded Spill 1592; PC64LE-NEXT: stfd 31, -8(1) # 8-byte Folded Spill 1593; PC64LE-NEXT: std 0, 16(1) 1594; PC64LE-NEXT: stdu 1, -64(1) 1595; PC64LE-NEXT: addis 4, 2, .LCPI32_1@toc@ha 1596; PC64LE-NEXT: addis 3, 2, .LCPI32_0@toc@ha 1597; PC64LE-NEXT: lfs 31, .LCPI32_1@toc@l(4) 1598; PC64LE-NEXT: lfs 1, .LCPI32_0@toc@l(3) 1599; PC64LE-NEXT: fmr 2, 31 1600; PC64LE-NEXT: bl powf 1601; PC64LE-NEXT: nop 1602; PC64LE-NEXT: addis 3, 2, .LCPI32_2@toc@ha 1603; PC64LE-NEXT: fmr 2, 31 1604; PC64LE-NEXT: fmr 30, 1 1605; PC64LE-NEXT: lfs 1, .LCPI32_2@toc@l(3) 1606; PC64LE-NEXT: bl powf 1607; PC64LE-NEXT: nop 1608; PC64LE-NEXT: addis 3, 2, .LCPI32_3@toc@ha 1609; PC64LE-NEXT: fmr 2, 31 1610; PC64LE-NEXT: fmr 29, 1 1611; PC64LE-NEXT: lfs 1, .LCPI32_3@toc@l(3) 1612; PC64LE-NEXT: bl powf 1613; PC64LE-NEXT: nop 1614; PC64LE-NEXT: xscvdpspn 0, 29 1615; PC64LE-NEXT: addis 3, 2, .LCPI32_4@toc@ha 1616; PC64LE-NEXT: xscvdpspn 1, 1 1617; PC64LE-NEXT: addi 3, 3, .LCPI32_4@toc@l 1618; PC64LE-NEXT: lvx 4, 0, 3 1619; PC64LE-NEXT: xxsldwi 34, 0, 0, 1 1620; PC64LE-NEXT: xscvdpspn 0, 30 1621; PC64LE-NEXT: xxsldwi 35, 1, 1, 1 1622; PC64LE-NEXT: vmrglw 2, 2, 3 1623; PC64LE-NEXT: xxsldwi 35, 0, 0, 1 1624; PC64LE-NEXT: vperm 2, 3, 2, 4 1625; PC64LE-NEXT: addi 1, 1, 64 1626; PC64LE-NEXT: ld 0, 16(1) 1627; PC64LE-NEXT: lfd 31, -8(1) # 8-byte Folded Reload 1628; PC64LE-NEXT: lfd 30, -16(1) # 8-byte Folded Reload 1629; PC64LE-NEXT: lfd 29, -24(1) # 8-byte Folded Reload 1630; PC64LE-NEXT: mtlr 0 1631; PC64LE-NEXT: blr 1632; 1633; PC64LE9-LABEL: constrained_vector_pow_v3f32: 1634; PC64LE9: # %bb.0: # %entry 1635; PC64LE9-NEXT: mflr 0 1636; PC64LE9-NEXT: stfd 29, -24(1) # 8-byte Folded Spill 1637; PC64LE9-NEXT: stfd 30, -16(1) # 8-byte Folded Spill 1638; PC64LE9-NEXT: stfd 31, -8(1) # 8-byte Folded Spill 1639; PC64LE9-NEXT: std 0, 16(1) 1640; PC64LE9-NEXT: stdu 1, -64(1) 1641; PC64LE9-NEXT: addis 3, 2, .LCPI32_0@toc@ha 1642; PC64LE9-NEXT: lfs 1, .LCPI32_0@toc@l(3) 1643; PC64LE9-NEXT: addis 3, 2, .LCPI32_1@toc@ha 1644; PC64LE9-NEXT: lfs 31, .LCPI32_1@toc@l(3) 1645; PC64LE9-NEXT: fmr 2, 31 1646; PC64LE9-NEXT: bl powf 1647; PC64LE9-NEXT: nop 1648; PC64LE9-NEXT: addis 3, 2, .LCPI32_2@toc@ha 1649; PC64LE9-NEXT: fmr 30, 1 1650; PC64LE9-NEXT: lfs 1, .LCPI32_2@toc@l(3) 1651; PC64LE9-NEXT: fmr 2, 31 1652; PC64LE9-NEXT: bl powf 1653; PC64LE9-NEXT: nop 1654; PC64LE9-NEXT: addis 3, 2, .LCPI32_3@toc@ha 1655; PC64LE9-NEXT: fmr 29, 1 1656; PC64LE9-NEXT: lfs 1, .LCPI32_3@toc@l(3) 1657; PC64LE9-NEXT: fmr 2, 31 1658; PC64LE9-NEXT: bl powf 1659; PC64LE9-NEXT: nop 1660; PC64LE9-NEXT: xscvdpspn 0, 1 1661; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 1662; PC64LE9-NEXT: xscvdpspn 0, 29 1663; PC64LE9-NEXT: xxsldwi 35, 0, 0, 1 1664; PC64LE9-NEXT: xscvdpspn 0, 30 1665; PC64LE9-NEXT: addis 3, 2, .LCPI32_4@toc@ha 1666; PC64LE9-NEXT: addi 3, 3, .LCPI32_4@toc@l 1667; PC64LE9-NEXT: lxvx 36, 0, 3 1668; PC64LE9-NEXT: vmrglw 2, 3, 2 1669; PC64LE9-NEXT: xxsldwi 35, 0, 0, 1 1670; PC64LE9-NEXT: vperm 2, 3, 2, 4 1671; PC64LE9-NEXT: addi 1, 1, 64 1672; PC64LE9-NEXT: ld 0, 16(1) 1673; PC64LE9-NEXT: lfd 31, -8(1) # 8-byte Folded Reload 1674; PC64LE9-NEXT: lfd 30, -16(1) # 8-byte Folded Reload 1675; PC64LE9-NEXT: mtlr 0 1676; PC64LE9-NEXT: lfd 29, -24(1) # 8-byte Folded Reload 1677; PC64LE9-NEXT: blr 1678entry: 1679 %pow = call <3 x float> @llvm.experimental.constrained.pow.v3f32( 1680 <3 x float> <float 42.0, float 43.0, float 44.0>, 1681 <3 x float> <float 3.0, float 3.0, float 3.0>, 1682 metadata !"round.dynamic", 1683 metadata !"fpexcept.strict") #1 1684 ret <3 x float> %pow 1685} 1686 1687define <3 x double> @constrained_vector_pow_v3f64() #0 { 1688; PC64LE-LABEL: constrained_vector_pow_v3f64: 1689; PC64LE: # %bb.0: # %entry 1690; PC64LE-NEXT: mflr 0 1691; PC64LE-NEXT: std 0, 16(1) 1692; PC64LE-NEXT: stdu 1, -96(1) 1693; PC64LE-NEXT: addis 4, 2, .LCPI33_1@toc@ha 1694; PC64LE-NEXT: stfd 31, 88(1) # 8-byte Folded Spill 1695; PC64LE-NEXT: li 3, 64 1696; PC64LE-NEXT: stxvd2x 63, 1, 3 # 16-byte Folded Spill 1697; PC64LE-NEXT: addis 3, 2, .LCPI33_0@toc@ha 1698; PC64LE-NEXT: lfs 31, .LCPI33_1@toc@l(4) 1699; PC64LE-NEXT: lfs 1, .LCPI33_0@toc@l(3) 1700; PC64LE-NEXT: fmr 2, 31 1701; PC64LE-NEXT: bl pow 1702; PC64LE-NEXT: nop 1703; PC64LE-NEXT: li 3, 48 1704; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 1705; PC64LE-NEXT: fmr 2, 31 1706; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 1707; PC64LE-NEXT: addis 3, 2, .LCPI33_2@toc@ha 1708; PC64LE-NEXT: lfd 1, .LCPI33_2@toc@l(3) 1709; PC64LE-NEXT: bl pow 1710; PC64LE-NEXT: nop 1711; PC64LE-NEXT: li 3, 48 1712; PC64LE-NEXT: fmr 2, 31 1713; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 1714; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 1715; PC64LE-NEXT: addis 3, 2, .LCPI33_3@toc@ha 1716; PC64LE-NEXT: xxmrghd 63, 1, 0 1717; PC64LE-NEXT: lfd 1, .LCPI33_3@toc@l(3) 1718; PC64LE-NEXT: bl pow 1719; PC64LE-NEXT: nop 1720; PC64LE-NEXT: xxswapd 0, 63 1721; PC64LE-NEXT: li 3, 64 1722; PC64LE-NEXT: xxlor 2, 63, 63 1723; PC64LE-NEXT: lfd 31, 88(1) # 8-byte Folded Reload 1724; PC64LE-NEXT: lxvd2x 63, 1, 3 # 16-byte Folded Reload 1725; PC64LE-NEXT: fmr 3, 1 1726; PC64LE-NEXT: fmr 1, 0 1727; PC64LE-NEXT: addi 1, 1, 96 1728; PC64LE-NEXT: ld 0, 16(1) 1729; PC64LE-NEXT: mtlr 0 1730; PC64LE-NEXT: blr 1731; 1732; PC64LE9-LABEL: constrained_vector_pow_v3f64: 1733; PC64LE9: # %bb.0: # %entry 1734; PC64LE9-NEXT: mflr 0 1735; PC64LE9-NEXT: std 0, 16(1) 1736; PC64LE9-NEXT: stdu 1, -80(1) 1737; PC64LE9-NEXT: addis 3, 2, .LCPI33_0@toc@ha 1738; PC64LE9-NEXT: lfs 1, .LCPI33_0@toc@l(3) 1739; PC64LE9-NEXT: addis 3, 2, .LCPI33_1@toc@ha 1740; PC64LE9-NEXT: stfd 31, 72(1) # 8-byte Folded Spill 1741; PC64LE9-NEXT: lfs 31, .LCPI33_1@toc@l(3) 1742; PC64LE9-NEXT: fmr 2, 31 1743; PC64LE9-NEXT: stxv 63, 48(1) # 16-byte Folded Spill 1744; PC64LE9-NEXT: bl pow 1745; PC64LE9-NEXT: nop 1746; PC64LE9-NEXT: addis 3, 2, .LCPI33_2@toc@ha 1747; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 1748; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 1749; PC64LE9-NEXT: lfd 1, .LCPI33_2@toc@l(3) 1750; PC64LE9-NEXT: fmr 2, 31 1751; PC64LE9-NEXT: bl pow 1752; PC64LE9-NEXT: nop 1753; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 1754; PC64LE9-NEXT: addis 3, 2, .LCPI33_3@toc@ha 1755; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 1756; PC64LE9-NEXT: xxmrghd 63, 1, 0 1757; PC64LE9-NEXT: lfd 1, .LCPI33_3@toc@l(3) 1758; PC64LE9-NEXT: fmr 2, 31 1759; PC64LE9-NEXT: bl pow 1760; PC64LE9-NEXT: nop 1761; PC64LE9-NEXT: fmr 3, 1 1762; PC64LE9-NEXT: xxswapd 1, 63 1763; PC64LE9-NEXT: xscpsgndp 2, 63, 63 1764; PC64LE9-NEXT: lxv 63, 48(1) # 16-byte Folded Reload 1765; PC64LE9-NEXT: lfd 31, 72(1) # 8-byte Folded Reload 1766; PC64LE9-NEXT: # kill: def $f1 killed $f1 killed $vsl1 1767; PC64LE9-NEXT: addi 1, 1, 80 1768; PC64LE9-NEXT: ld 0, 16(1) 1769; PC64LE9-NEXT: mtlr 0 1770; PC64LE9-NEXT: blr 1771entry: 1772 %pow = call <3 x double> @llvm.experimental.constrained.pow.v3f64( 1773 <3 x double> <double 42.0, double 42.1, double 42.2>, 1774 <3 x double> <double 3.0, double 3.0, double 3.0>, 1775 metadata !"round.dynamic", 1776 metadata !"fpexcept.strict") #1 1777 ret <3 x double> %pow 1778} 1779 1780define <4 x double> @constrained_vector_pow_v4f64() #0 { 1781; PC64LE-LABEL: constrained_vector_pow_v4f64: 1782; PC64LE: # %bb.0: # %entry 1783; PC64LE-NEXT: mflr 0 1784; PC64LE-NEXT: std 0, 16(1) 1785; PC64LE-NEXT: stdu 1, -96(1) 1786; PC64LE-NEXT: addis 4, 2, .LCPI34_1@toc@ha 1787; PC64LE-NEXT: stfd 31, 88(1) # 8-byte Folded Spill 1788; PC64LE-NEXT: li 3, 64 1789; PC64LE-NEXT: stxvd2x 63, 1, 3 # 16-byte Folded Spill 1790; PC64LE-NEXT: addis 3, 2, .LCPI34_0@toc@ha 1791; PC64LE-NEXT: lfs 31, .LCPI34_1@toc@l(4) 1792; PC64LE-NEXT: lfd 1, .LCPI34_0@toc@l(3) 1793; PC64LE-NEXT: fmr 2, 31 1794; PC64LE-NEXT: bl pow 1795; PC64LE-NEXT: nop 1796; PC64LE-NEXT: li 3, 48 1797; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 1798; PC64LE-NEXT: fmr 2, 31 1799; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 1800; PC64LE-NEXT: addis 3, 2, .LCPI34_2@toc@ha 1801; PC64LE-NEXT: lfd 1, .LCPI34_2@toc@l(3) 1802; PC64LE-NEXT: bl pow 1803; PC64LE-NEXT: nop 1804; PC64LE-NEXT: li 3, 48 1805; PC64LE-NEXT: fmr 2, 31 1806; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 1807; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 1808; PC64LE-NEXT: addis 3, 2, .LCPI34_3@toc@ha 1809; PC64LE-NEXT: xxmrghd 63, 1, 0 1810; PC64LE-NEXT: lfd 1, .LCPI34_3@toc@l(3) 1811; PC64LE-NEXT: bl pow 1812; PC64LE-NEXT: nop 1813; PC64LE-NEXT: li 3, 48 1814; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 1815; PC64LE-NEXT: fmr 2, 31 1816; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 1817; PC64LE-NEXT: addis 3, 2, .LCPI34_4@toc@ha 1818; PC64LE-NEXT: lfd 1, .LCPI34_4@toc@l(3) 1819; PC64LE-NEXT: bl pow 1820; PC64LE-NEXT: nop 1821; PC64LE-NEXT: li 3, 48 1822; PC64LE-NEXT: vmr 2, 31 1823; PC64LE-NEXT: lfd 31, 88(1) # 8-byte Folded Reload 1824; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 1825; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 1826; PC64LE-NEXT: li 3, 64 1827; PC64LE-NEXT: lxvd2x 63, 1, 3 # 16-byte Folded Reload 1828; PC64LE-NEXT: xxmrghd 35, 1, 0 1829; PC64LE-NEXT: addi 1, 1, 96 1830; PC64LE-NEXT: ld 0, 16(1) 1831; PC64LE-NEXT: mtlr 0 1832; PC64LE-NEXT: blr 1833; 1834; PC64LE9-LABEL: constrained_vector_pow_v4f64: 1835; PC64LE9: # %bb.0: # %entry 1836; PC64LE9-NEXT: mflr 0 1837; PC64LE9-NEXT: std 0, 16(1) 1838; PC64LE9-NEXT: stdu 1, -80(1) 1839; PC64LE9-NEXT: addis 3, 2, .LCPI34_0@toc@ha 1840; PC64LE9-NEXT: lfd 1, .LCPI34_0@toc@l(3) 1841; PC64LE9-NEXT: addis 3, 2, .LCPI34_1@toc@ha 1842; PC64LE9-NEXT: stfd 31, 72(1) # 8-byte Folded Spill 1843; PC64LE9-NEXT: lfs 31, .LCPI34_1@toc@l(3) 1844; PC64LE9-NEXT: fmr 2, 31 1845; PC64LE9-NEXT: stxv 63, 48(1) # 16-byte Folded Spill 1846; PC64LE9-NEXT: bl pow 1847; PC64LE9-NEXT: nop 1848; PC64LE9-NEXT: addis 3, 2, .LCPI34_2@toc@ha 1849; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 1850; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 1851; PC64LE9-NEXT: lfd 1, .LCPI34_2@toc@l(3) 1852; PC64LE9-NEXT: fmr 2, 31 1853; PC64LE9-NEXT: bl pow 1854; PC64LE9-NEXT: nop 1855; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 1856; PC64LE9-NEXT: addis 3, 2, .LCPI34_3@toc@ha 1857; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 1858; PC64LE9-NEXT: xxmrghd 63, 1, 0 1859; PC64LE9-NEXT: lfd 1, .LCPI34_3@toc@l(3) 1860; PC64LE9-NEXT: fmr 2, 31 1861; PC64LE9-NEXT: bl pow 1862; PC64LE9-NEXT: nop 1863; PC64LE9-NEXT: addis 3, 2, .LCPI34_4@toc@ha 1864; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 1865; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 1866; PC64LE9-NEXT: lfd 1, .LCPI34_4@toc@l(3) 1867; PC64LE9-NEXT: fmr 2, 31 1868; PC64LE9-NEXT: bl pow 1869; PC64LE9-NEXT: nop 1870; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 1871; PC64LE9-NEXT: vmr 2, 31 1872; PC64LE9-NEXT: lxv 63, 48(1) # 16-byte Folded Reload 1873; PC64LE9-NEXT: lfd 31, 72(1) # 8-byte Folded Reload 1874; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 1875; PC64LE9-NEXT: xxmrghd 35, 1, 0 1876; PC64LE9-NEXT: addi 1, 1, 80 1877; PC64LE9-NEXT: ld 0, 16(1) 1878; PC64LE9-NEXT: mtlr 0 1879; PC64LE9-NEXT: blr 1880entry: 1881 %pow = call <4 x double> @llvm.experimental.constrained.pow.v4f64( 1882 <4 x double> <double 42.1, double 42.2, 1883 double 42.3, double 42.4>, 1884 <4 x double> <double 3.0, double 3.0, 1885 double 3.0, double 3.0>, 1886 metadata !"round.dynamic", 1887 metadata !"fpexcept.strict") #1 1888 ret <4 x double> %pow 1889} 1890 1891define <1 x float> @constrained_vector_powi_v1f32() #0 { 1892; PC64LE-LABEL: constrained_vector_powi_v1f32: 1893; PC64LE: # %bb.0: # %entry 1894; PC64LE-NEXT: mflr 0 1895; PC64LE-NEXT: std 0, 16(1) 1896; PC64LE-NEXT: stdu 1, -32(1) 1897; PC64LE-NEXT: addis 3, 2, .LCPI35_0@toc@ha 1898; PC64LE-NEXT: li 4, 3 1899; PC64LE-NEXT: lfs 1, .LCPI35_0@toc@l(3) 1900; PC64LE-NEXT: bl __powisf2 1901; PC64LE-NEXT: nop 1902; PC64LE-NEXT: xscvdpspn 0, 1 1903; PC64LE-NEXT: xxsldwi 34, 0, 0, 1 1904; PC64LE-NEXT: addi 1, 1, 32 1905; PC64LE-NEXT: ld 0, 16(1) 1906; PC64LE-NEXT: mtlr 0 1907; PC64LE-NEXT: blr 1908; 1909; PC64LE9-LABEL: constrained_vector_powi_v1f32: 1910; PC64LE9: # %bb.0: # %entry 1911; PC64LE9-NEXT: mflr 0 1912; PC64LE9-NEXT: std 0, 16(1) 1913; PC64LE9-NEXT: stdu 1, -32(1) 1914; PC64LE9-NEXT: addis 3, 2, .LCPI35_0@toc@ha 1915; PC64LE9-NEXT: lfs 1, .LCPI35_0@toc@l(3) 1916; PC64LE9-NEXT: li 4, 3 1917; PC64LE9-NEXT: bl __powisf2 1918; PC64LE9-NEXT: nop 1919; PC64LE9-NEXT: xscvdpspn 0, 1 1920; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 1921; PC64LE9-NEXT: addi 1, 1, 32 1922; PC64LE9-NEXT: ld 0, 16(1) 1923; PC64LE9-NEXT: mtlr 0 1924; PC64LE9-NEXT: blr 1925entry: 1926 %powi = call <1 x float> @llvm.experimental.constrained.powi.v1f32( 1927 <1 x float> <float 42.0>, 1928 i32 3, 1929 metadata !"round.dynamic", 1930 metadata !"fpexcept.strict") #1 1931 ret <1 x float> %powi 1932} 1933 1934define <2 x double> @constrained_vector_powi_v2f64() #0 { 1935; PC64LE-LABEL: constrained_vector_powi_v2f64: 1936; PC64LE: # %bb.0: # %entry 1937; PC64LE-NEXT: mflr 0 1938; PC64LE-NEXT: std 0, 16(1) 1939; PC64LE-NEXT: stdu 1, -64(1) 1940; PC64LE-NEXT: addis 3, 2, .LCPI36_0@toc@ha 1941; PC64LE-NEXT: li 4, 3 1942; PC64LE-NEXT: lfd 1, .LCPI36_0@toc@l(3) 1943; PC64LE-NEXT: bl __powidf2 1944; PC64LE-NEXT: nop 1945; PC64LE-NEXT: li 3, 48 1946; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 1947; PC64LE-NEXT: li 4, 3 1948; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 1949; PC64LE-NEXT: addis 3, 2, .LCPI36_1@toc@ha 1950; PC64LE-NEXT: lfd 1, .LCPI36_1@toc@l(3) 1951; PC64LE-NEXT: bl __powidf2 1952; PC64LE-NEXT: nop 1953; PC64LE-NEXT: li 3, 48 1954; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 1955; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 1956; PC64LE-NEXT: xxmrghd 34, 1, 0 1957; PC64LE-NEXT: addi 1, 1, 64 1958; PC64LE-NEXT: ld 0, 16(1) 1959; PC64LE-NEXT: mtlr 0 1960; PC64LE-NEXT: blr 1961; 1962; PC64LE9-LABEL: constrained_vector_powi_v2f64: 1963; PC64LE9: # %bb.0: # %entry 1964; PC64LE9-NEXT: mflr 0 1965; PC64LE9-NEXT: std 0, 16(1) 1966; PC64LE9-NEXT: stdu 1, -48(1) 1967; PC64LE9-NEXT: addis 3, 2, .LCPI36_0@toc@ha 1968; PC64LE9-NEXT: lfd 1, .LCPI36_0@toc@l(3) 1969; PC64LE9-NEXT: li 4, 3 1970; PC64LE9-NEXT: bl __powidf2 1971; PC64LE9-NEXT: nop 1972; PC64LE9-NEXT: addis 3, 2, .LCPI36_1@toc@ha 1973; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 1974; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 1975; PC64LE9-NEXT: lfd 1, .LCPI36_1@toc@l(3) 1976; PC64LE9-NEXT: li 4, 3 1977; PC64LE9-NEXT: bl __powidf2 1978; PC64LE9-NEXT: nop 1979; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 1980; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 1981; PC64LE9-NEXT: xxmrghd 34, 1, 0 1982; PC64LE9-NEXT: addi 1, 1, 48 1983; PC64LE9-NEXT: ld 0, 16(1) 1984; PC64LE9-NEXT: mtlr 0 1985; PC64LE9-NEXT: blr 1986entry: 1987 %powi = call <2 x double> @llvm.experimental.constrained.powi.v2f64( 1988 <2 x double> <double 42.1, double 42.2>, 1989 i32 3, 1990 metadata !"round.dynamic", 1991 metadata !"fpexcept.strict") #1 1992 ret <2 x double> %powi 1993} 1994 1995define <3 x float> @constrained_vector_powi_v3f32() #0 { 1996; 1997; 1998; PC64LE-LABEL: constrained_vector_powi_v3f32: 1999; PC64LE: # %bb.0: # %entry 2000; PC64LE-NEXT: mflr 0 2001; PC64LE-NEXT: stfd 30, -16(1) # 8-byte Folded Spill 2002; PC64LE-NEXT: stfd 31, -8(1) # 8-byte Folded Spill 2003; PC64LE-NEXT: std 0, 16(1) 2004; PC64LE-NEXT: stdu 1, -48(1) 2005; PC64LE-NEXT: addis 3, 2, .LCPI37_0@toc@ha 2006; PC64LE-NEXT: li 4, 3 2007; PC64LE-NEXT: lfs 1, .LCPI37_0@toc@l(3) 2008; PC64LE-NEXT: bl __powisf2 2009; PC64LE-NEXT: nop 2010; PC64LE-NEXT: addis 3, 2, .LCPI37_1@toc@ha 2011; PC64LE-NEXT: fmr 31, 1 2012; PC64LE-NEXT: li 4, 3 2013; PC64LE-NEXT: lfs 1, .LCPI37_1@toc@l(3) 2014; PC64LE-NEXT: bl __powisf2 2015; PC64LE-NEXT: nop 2016; PC64LE-NEXT: addis 3, 2, .LCPI37_2@toc@ha 2017; PC64LE-NEXT: fmr 30, 1 2018; PC64LE-NEXT: li 4, 3 2019; PC64LE-NEXT: lfs 1, .LCPI37_2@toc@l(3) 2020; PC64LE-NEXT: bl __powisf2 2021; PC64LE-NEXT: nop 2022; PC64LE-NEXT: xscvdpspn 0, 30 2023; PC64LE-NEXT: addis 3, 2, .LCPI37_3@toc@ha 2024; PC64LE-NEXT: xscvdpspn 1, 1 2025; PC64LE-NEXT: addi 3, 3, .LCPI37_3@toc@l 2026; PC64LE-NEXT: lvx 4, 0, 3 2027; PC64LE-NEXT: xxsldwi 34, 0, 0, 1 2028; PC64LE-NEXT: xscvdpspn 0, 31 2029; PC64LE-NEXT: xxsldwi 35, 1, 1, 1 2030; PC64LE-NEXT: vmrglw 2, 2, 3 2031; PC64LE-NEXT: xxsldwi 35, 0, 0, 1 2032; PC64LE-NEXT: vperm 2, 3, 2, 4 2033; PC64LE-NEXT: addi 1, 1, 48 2034; PC64LE-NEXT: ld 0, 16(1) 2035; PC64LE-NEXT: lfd 31, -8(1) # 8-byte Folded Reload 2036; PC64LE-NEXT: lfd 30, -16(1) # 8-byte Folded Reload 2037; PC64LE-NEXT: mtlr 0 2038; PC64LE-NEXT: blr 2039; 2040; PC64LE9-LABEL: constrained_vector_powi_v3f32: 2041; PC64LE9: # %bb.0: # %entry 2042; PC64LE9-NEXT: mflr 0 2043; PC64LE9-NEXT: stfd 30, -16(1) # 8-byte Folded Spill 2044; PC64LE9-NEXT: stfd 31, -8(1) # 8-byte Folded Spill 2045; PC64LE9-NEXT: std 0, 16(1) 2046; PC64LE9-NEXT: stdu 1, -48(1) 2047; PC64LE9-NEXT: addis 3, 2, .LCPI37_0@toc@ha 2048; PC64LE9-NEXT: lfs 1, .LCPI37_0@toc@l(3) 2049; PC64LE9-NEXT: li 4, 3 2050; PC64LE9-NEXT: bl __powisf2 2051; PC64LE9-NEXT: nop 2052; PC64LE9-NEXT: addis 3, 2, .LCPI37_1@toc@ha 2053; PC64LE9-NEXT: fmr 31, 1 2054; PC64LE9-NEXT: lfs 1, .LCPI37_1@toc@l(3) 2055; PC64LE9-NEXT: li 4, 3 2056; PC64LE9-NEXT: bl __powisf2 2057; PC64LE9-NEXT: nop 2058; PC64LE9-NEXT: addis 3, 2, .LCPI37_2@toc@ha 2059; PC64LE9-NEXT: fmr 30, 1 2060; PC64LE9-NEXT: lfs 1, .LCPI37_2@toc@l(3) 2061; PC64LE9-NEXT: li 4, 3 2062; PC64LE9-NEXT: bl __powisf2 2063; PC64LE9-NEXT: nop 2064; PC64LE9-NEXT: xscvdpspn 0, 1 2065; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 2066; PC64LE9-NEXT: xscvdpspn 0, 30 2067; PC64LE9-NEXT: xxsldwi 35, 0, 0, 1 2068; PC64LE9-NEXT: xscvdpspn 0, 31 2069; PC64LE9-NEXT: addis 3, 2, .LCPI37_3@toc@ha 2070; PC64LE9-NEXT: addi 3, 3, .LCPI37_3@toc@l 2071; PC64LE9-NEXT: lxvx 36, 0, 3 2072; PC64LE9-NEXT: vmrglw 2, 3, 2 2073; PC64LE9-NEXT: xxsldwi 35, 0, 0, 1 2074; PC64LE9-NEXT: vperm 2, 3, 2, 4 2075; PC64LE9-NEXT: addi 1, 1, 48 2076; PC64LE9-NEXT: ld 0, 16(1) 2077; PC64LE9-NEXT: lfd 31, -8(1) # 8-byte Folded Reload 2078; PC64LE9-NEXT: lfd 30, -16(1) # 8-byte Folded Reload 2079; PC64LE9-NEXT: mtlr 0 2080; PC64LE9-NEXT: blr 2081entry: 2082 %powi = call <3 x float> @llvm.experimental.constrained.powi.v3f32( 2083 <3 x float> <float 42.0, float 43.0, float 44.0>, 2084 i32 3, 2085 metadata !"round.dynamic", 2086 metadata !"fpexcept.strict") #1 2087 ret <3 x float> %powi 2088} 2089 2090define <3 x double> @constrained_vector_powi_v3f64() #0 { 2091; PC64LE-LABEL: constrained_vector_powi_v3f64: 2092; PC64LE: # %bb.0: # %entry 2093; PC64LE-NEXT: mflr 0 2094; PC64LE-NEXT: std 0, 16(1) 2095; PC64LE-NEXT: stdu 1, -80(1) 2096; PC64LE-NEXT: li 3, 64 2097; PC64LE-NEXT: li 4, 3 2098; PC64LE-NEXT: stxvd2x 63, 1, 3 # 16-byte Folded Spill 2099; PC64LE-NEXT: addis 3, 2, .LCPI38_0@toc@ha 2100; PC64LE-NEXT: lfd 1, .LCPI38_0@toc@l(3) 2101; PC64LE-NEXT: bl __powidf2 2102; PC64LE-NEXT: nop 2103; PC64LE-NEXT: li 3, 48 2104; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 2105; PC64LE-NEXT: li 4, 3 2106; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 2107; PC64LE-NEXT: addis 3, 2, .LCPI38_1@toc@ha 2108; PC64LE-NEXT: lfs 1, .LCPI38_1@toc@l(3) 2109; PC64LE-NEXT: bl __powidf2 2110; PC64LE-NEXT: nop 2111; PC64LE-NEXT: li 3, 48 2112; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 2113; PC64LE-NEXT: li 4, 3 2114; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 2115; PC64LE-NEXT: addis 3, 2, .LCPI38_2@toc@ha 2116; PC64LE-NEXT: xxmrghd 63, 0, 1 2117; PC64LE-NEXT: lfd 1, .LCPI38_2@toc@l(3) 2118; PC64LE-NEXT: bl __powidf2 2119; PC64LE-NEXT: nop 2120; PC64LE-NEXT: xxswapd 0, 63 2121; PC64LE-NEXT: li 3, 64 2122; PC64LE-NEXT: xxlor 2, 63, 63 2123; PC64LE-NEXT: lxvd2x 63, 1, 3 # 16-byte Folded Reload 2124; PC64LE-NEXT: fmr 3, 1 2125; PC64LE-NEXT: fmr 1, 0 2126; PC64LE-NEXT: addi 1, 1, 80 2127; PC64LE-NEXT: ld 0, 16(1) 2128; PC64LE-NEXT: mtlr 0 2129; PC64LE-NEXT: blr 2130; 2131; PC64LE9-LABEL: constrained_vector_powi_v3f64: 2132; PC64LE9: # %bb.0: # %entry 2133; PC64LE9-NEXT: mflr 0 2134; PC64LE9-NEXT: std 0, 16(1) 2135; PC64LE9-NEXT: stdu 1, -64(1) 2136; PC64LE9-NEXT: addis 3, 2, .LCPI38_0@toc@ha 2137; PC64LE9-NEXT: lfd 1, .LCPI38_0@toc@l(3) 2138; PC64LE9-NEXT: li 4, 3 2139; PC64LE9-NEXT: stxv 63, 48(1) # 16-byte Folded Spill 2140; PC64LE9-NEXT: bl __powidf2 2141; PC64LE9-NEXT: nop 2142; PC64LE9-NEXT: addis 3, 2, .LCPI38_1@toc@ha 2143; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 2144; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 2145; PC64LE9-NEXT: lfs 1, .LCPI38_1@toc@l(3) 2146; PC64LE9-NEXT: li 4, 3 2147; PC64LE9-NEXT: bl __powidf2 2148; PC64LE9-NEXT: nop 2149; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 2150; PC64LE9-NEXT: addis 3, 2, .LCPI38_2@toc@ha 2151; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 2152; PC64LE9-NEXT: xxmrghd 63, 0, 1 2153; PC64LE9-NEXT: lfd 1, .LCPI38_2@toc@l(3) 2154; PC64LE9-NEXT: li 4, 3 2155; PC64LE9-NEXT: bl __powidf2 2156; PC64LE9-NEXT: nop 2157; PC64LE9-NEXT: fmr 3, 1 2158; PC64LE9-NEXT: xxswapd 1, 63 2159; PC64LE9-NEXT: xscpsgndp 2, 63, 63 2160; PC64LE9-NEXT: lxv 63, 48(1) # 16-byte Folded Reload 2161; PC64LE9-NEXT: # kill: def $f1 killed $f1 killed $vsl1 2162; PC64LE9-NEXT: addi 1, 1, 64 2163; PC64LE9-NEXT: ld 0, 16(1) 2164; PC64LE9-NEXT: mtlr 0 2165; PC64LE9-NEXT: blr 2166entry: 2167 %powi = call <3 x double> @llvm.experimental.constrained.powi.v3f64( 2168 <3 x double> <double 42.0, double 42.1, double 42.2>, 2169 i32 3, 2170 metadata !"round.dynamic", 2171 metadata !"fpexcept.strict") #1 2172 ret <3 x double> %powi 2173} 2174 2175define <4 x double> @constrained_vector_powi_v4f64() #0 { 2176; PC64LE-LABEL: constrained_vector_powi_v4f64: 2177; PC64LE: # %bb.0: # %entry 2178; PC64LE-NEXT: mflr 0 2179; PC64LE-NEXT: std 0, 16(1) 2180; PC64LE-NEXT: stdu 1, -80(1) 2181; PC64LE-NEXT: li 3, 64 2182; PC64LE-NEXT: li 4, 3 2183; PC64LE-NEXT: stxvd2x 63, 1, 3 # 16-byte Folded Spill 2184; PC64LE-NEXT: addis 3, 2, .LCPI39_0@toc@ha 2185; PC64LE-NEXT: lfd 1, .LCPI39_0@toc@l(3) 2186; PC64LE-NEXT: bl __powidf2 2187; PC64LE-NEXT: nop 2188; PC64LE-NEXT: li 3, 48 2189; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 2190; PC64LE-NEXT: li 4, 3 2191; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 2192; PC64LE-NEXT: addis 3, 2, .LCPI39_1@toc@ha 2193; PC64LE-NEXT: lfd 1, .LCPI39_1@toc@l(3) 2194; PC64LE-NEXT: bl __powidf2 2195; PC64LE-NEXT: nop 2196; PC64LE-NEXT: li 3, 48 2197; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 2198; PC64LE-NEXT: li 4, 3 2199; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 2200; PC64LE-NEXT: addis 3, 2, .LCPI39_2@toc@ha 2201; PC64LE-NEXT: xxmrghd 63, 1, 0 2202; PC64LE-NEXT: lfd 1, .LCPI39_2@toc@l(3) 2203; PC64LE-NEXT: bl __powidf2 2204; PC64LE-NEXT: nop 2205; PC64LE-NEXT: li 3, 48 2206; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 2207; PC64LE-NEXT: li 4, 3 2208; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 2209; PC64LE-NEXT: addis 3, 2, .LCPI39_3@toc@ha 2210; PC64LE-NEXT: lfd 1, .LCPI39_3@toc@l(3) 2211; PC64LE-NEXT: bl __powidf2 2212; PC64LE-NEXT: nop 2213; PC64LE-NEXT: li 3, 48 2214; PC64LE-NEXT: vmr 2, 31 2215; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 2216; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 2217; PC64LE-NEXT: li 3, 64 2218; PC64LE-NEXT: lxvd2x 63, 1, 3 # 16-byte Folded Reload 2219; PC64LE-NEXT: xxmrghd 35, 1, 0 2220; PC64LE-NEXT: addi 1, 1, 80 2221; PC64LE-NEXT: ld 0, 16(1) 2222; PC64LE-NEXT: mtlr 0 2223; PC64LE-NEXT: blr 2224; 2225; PC64LE9-LABEL: constrained_vector_powi_v4f64: 2226; PC64LE9: # %bb.0: # %entry 2227; PC64LE9-NEXT: mflr 0 2228; PC64LE9-NEXT: std 0, 16(1) 2229; PC64LE9-NEXT: stdu 1, -64(1) 2230; PC64LE9-NEXT: addis 3, 2, .LCPI39_0@toc@ha 2231; PC64LE9-NEXT: lfd 1, .LCPI39_0@toc@l(3) 2232; PC64LE9-NEXT: li 4, 3 2233; PC64LE9-NEXT: stxv 63, 48(1) # 16-byte Folded Spill 2234; PC64LE9-NEXT: bl __powidf2 2235; PC64LE9-NEXT: nop 2236; PC64LE9-NEXT: addis 3, 2, .LCPI39_1@toc@ha 2237; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 2238; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 2239; PC64LE9-NEXT: lfd 1, .LCPI39_1@toc@l(3) 2240; PC64LE9-NEXT: li 4, 3 2241; PC64LE9-NEXT: bl __powidf2 2242; PC64LE9-NEXT: nop 2243; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 2244; PC64LE9-NEXT: addis 3, 2, .LCPI39_2@toc@ha 2245; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 2246; PC64LE9-NEXT: xxmrghd 63, 1, 0 2247; PC64LE9-NEXT: lfd 1, .LCPI39_2@toc@l(3) 2248; PC64LE9-NEXT: li 4, 3 2249; PC64LE9-NEXT: bl __powidf2 2250; PC64LE9-NEXT: nop 2251; PC64LE9-NEXT: addis 3, 2, .LCPI39_3@toc@ha 2252; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 2253; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 2254; PC64LE9-NEXT: lfd 1, .LCPI39_3@toc@l(3) 2255; PC64LE9-NEXT: li 4, 3 2256; PC64LE9-NEXT: bl __powidf2 2257; PC64LE9-NEXT: nop 2258; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 2259; PC64LE9-NEXT: vmr 2, 31 2260; PC64LE9-NEXT: lxv 63, 48(1) # 16-byte Folded Reload 2261; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 2262; PC64LE9-NEXT: xxmrghd 35, 1, 0 2263; PC64LE9-NEXT: addi 1, 1, 64 2264; PC64LE9-NEXT: ld 0, 16(1) 2265; PC64LE9-NEXT: mtlr 0 2266; PC64LE9-NEXT: blr 2267entry: 2268 %powi = call <4 x double> @llvm.experimental.constrained.powi.v4f64( 2269 <4 x double> <double 42.1, double 42.2, 2270 double 42.3, double 42.4>, 2271 i32 3, 2272 metadata !"round.dynamic", 2273 metadata !"fpexcept.strict") #1 2274 ret <4 x double> %powi 2275} 2276 2277define <1 x float> @constrained_vector_sin_v1f32() #0 { 2278; PC64LE-LABEL: constrained_vector_sin_v1f32: 2279; PC64LE: # %bb.0: # %entry 2280; PC64LE-NEXT: mflr 0 2281; PC64LE-NEXT: std 0, 16(1) 2282; PC64LE-NEXT: stdu 1, -32(1) 2283; PC64LE-NEXT: addis 3, 2, .LCPI40_0@toc@ha 2284; PC64LE-NEXT: lfs 1, .LCPI40_0@toc@l(3) 2285; PC64LE-NEXT: bl sinf 2286; PC64LE-NEXT: nop 2287; PC64LE-NEXT: xscvdpspn 0, 1 2288; PC64LE-NEXT: xxsldwi 34, 0, 0, 1 2289; PC64LE-NEXT: addi 1, 1, 32 2290; PC64LE-NEXT: ld 0, 16(1) 2291; PC64LE-NEXT: mtlr 0 2292; PC64LE-NEXT: blr 2293; 2294; PC64LE9-LABEL: constrained_vector_sin_v1f32: 2295; PC64LE9: # %bb.0: # %entry 2296; PC64LE9-NEXT: mflr 0 2297; PC64LE9-NEXT: std 0, 16(1) 2298; PC64LE9-NEXT: stdu 1, -32(1) 2299; PC64LE9-NEXT: addis 3, 2, .LCPI40_0@toc@ha 2300; PC64LE9-NEXT: lfs 1, .LCPI40_0@toc@l(3) 2301; PC64LE9-NEXT: bl sinf 2302; PC64LE9-NEXT: nop 2303; PC64LE9-NEXT: xscvdpspn 0, 1 2304; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 2305; PC64LE9-NEXT: addi 1, 1, 32 2306; PC64LE9-NEXT: ld 0, 16(1) 2307; PC64LE9-NEXT: mtlr 0 2308; PC64LE9-NEXT: blr 2309entry: 2310 %sin = call <1 x float> @llvm.experimental.constrained.sin.v1f32( 2311 <1 x float> <float 42.0>, 2312 metadata !"round.dynamic", 2313 metadata !"fpexcept.strict") #1 2314 ret <1 x float> %sin 2315} 2316 2317define <2 x double> @constrained_vector_sin_v2f64() #0 { 2318; PC64LE-LABEL: constrained_vector_sin_v2f64: 2319; PC64LE: # %bb.0: # %entry 2320; PC64LE-NEXT: mflr 0 2321; PC64LE-NEXT: std 0, 16(1) 2322; PC64LE-NEXT: stdu 1, -64(1) 2323; PC64LE-NEXT: addis 3, 2, .LCPI41_0@toc@ha 2324; PC64LE-NEXT: lfd 1, .LCPI41_0@toc@l(3) 2325; PC64LE-NEXT: bl sin 2326; PC64LE-NEXT: nop 2327; PC64LE-NEXT: li 3, 48 2328; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 2329; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 2330; PC64LE-NEXT: addis 3, 2, .LCPI41_1@toc@ha 2331; PC64LE-NEXT: lfs 1, .LCPI41_1@toc@l(3) 2332; PC64LE-NEXT: bl sin 2333; PC64LE-NEXT: nop 2334; PC64LE-NEXT: li 3, 48 2335; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 2336; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 2337; PC64LE-NEXT: xxmrghd 34, 0, 1 2338; PC64LE-NEXT: addi 1, 1, 64 2339; PC64LE-NEXT: ld 0, 16(1) 2340; PC64LE-NEXT: mtlr 0 2341; PC64LE-NEXT: blr 2342; 2343; PC64LE9-LABEL: constrained_vector_sin_v2f64: 2344; PC64LE9: # %bb.0: # %entry 2345; PC64LE9-NEXT: mflr 0 2346; PC64LE9-NEXT: std 0, 16(1) 2347; PC64LE9-NEXT: stdu 1, -48(1) 2348; PC64LE9-NEXT: addis 3, 2, .LCPI41_0@toc@ha 2349; PC64LE9-NEXT: lfd 1, .LCPI41_0@toc@l(3) 2350; PC64LE9-NEXT: bl sin 2351; PC64LE9-NEXT: nop 2352; PC64LE9-NEXT: addis 3, 2, .LCPI41_1@toc@ha 2353; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 2354; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 2355; PC64LE9-NEXT: lfs 1, .LCPI41_1@toc@l(3) 2356; PC64LE9-NEXT: bl sin 2357; PC64LE9-NEXT: nop 2358; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 2359; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 2360; PC64LE9-NEXT: xxmrghd 34, 0, 1 2361; PC64LE9-NEXT: addi 1, 1, 48 2362; PC64LE9-NEXT: ld 0, 16(1) 2363; PC64LE9-NEXT: mtlr 0 2364; PC64LE9-NEXT: blr 2365entry: 2366 %sin = call <2 x double> @llvm.experimental.constrained.sin.v2f64( 2367 <2 x double> <double 42.0, double 42.1>, 2368 metadata !"round.dynamic", 2369 metadata !"fpexcept.strict") #1 2370 ret <2 x double> %sin 2371} 2372 2373define <3 x float> @constrained_vector_sin_v3f32() #0 { 2374; PC64LE-LABEL: constrained_vector_sin_v3f32: 2375; PC64LE: # %bb.0: # %entry 2376; PC64LE-NEXT: mflr 0 2377; PC64LE-NEXT: stfd 30, -16(1) # 8-byte Folded Spill 2378; PC64LE-NEXT: stfd 31, -8(1) # 8-byte Folded Spill 2379; PC64LE-NEXT: std 0, 16(1) 2380; PC64LE-NEXT: stdu 1, -48(1) 2381; PC64LE-NEXT: addis 3, 2, .LCPI42_0@toc@ha 2382; PC64LE-NEXT: lfs 1, .LCPI42_0@toc@l(3) 2383; PC64LE-NEXT: bl sinf 2384; PC64LE-NEXT: nop 2385; PC64LE-NEXT: addis 3, 2, .LCPI42_1@toc@ha 2386; PC64LE-NEXT: fmr 31, 1 2387; PC64LE-NEXT: lfs 1, .LCPI42_1@toc@l(3) 2388; PC64LE-NEXT: bl sinf 2389; PC64LE-NEXT: nop 2390; PC64LE-NEXT: addis 3, 2, .LCPI42_2@toc@ha 2391; PC64LE-NEXT: fmr 30, 1 2392; PC64LE-NEXT: lfs 1, .LCPI42_2@toc@l(3) 2393; PC64LE-NEXT: bl sinf 2394; PC64LE-NEXT: nop 2395; PC64LE-NEXT: xscvdpspn 0, 30 2396; PC64LE-NEXT: addis 3, 2, .LCPI42_3@toc@ha 2397; PC64LE-NEXT: xscvdpspn 1, 1 2398; PC64LE-NEXT: addi 3, 3, .LCPI42_3@toc@l 2399; PC64LE-NEXT: xxsldwi 34, 0, 0, 1 2400; PC64LE-NEXT: xscvdpspn 0, 31 2401; PC64LE-NEXT: xxsldwi 35, 1, 1, 1 2402; PC64LE-NEXT: vmrglw 2, 2, 3 2403; PC64LE-NEXT: lvx 3, 0, 3 2404; PC64LE-NEXT: xxsldwi 36, 0, 0, 1 2405; PC64LE-NEXT: vperm 2, 4, 2, 3 2406; PC64LE-NEXT: addi 1, 1, 48 2407; PC64LE-NEXT: ld 0, 16(1) 2408; PC64LE-NEXT: lfd 31, -8(1) # 8-byte Folded Reload 2409; PC64LE-NEXT: lfd 30, -16(1) # 8-byte Folded Reload 2410; PC64LE-NEXT: mtlr 0 2411; PC64LE-NEXT: blr 2412; 2413; PC64LE9-LABEL: constrained_vector_sin_v3f32: 2414; PC64LE9: # %bb.0: # %entry 2415; PC64LE9-NEXT: mflr 0 2416; PC64LE9-NEXT: stfd 30, -16(1) # 8-byte Folded Spill 2417; PC64LE9-NEXT: stfd 31, -8(1) # 8-byte Folded Spill 2418; PC64LE9-NEXT: std 0, 16(1) 2419; PC64LE9-NEXT: stdu 1, -48(1) 2420; PC64LE9-NEXT: addis 3, 2, .LCPI42_0@toc@ha 2421; PC64LE9-NEXT: lfs 1, .LCPI42_0@toc@l(3) 2422; PC64LE9-NEXT: bl sinf 2423; PC64LE9-NEXT: nop 2424; PC64LE9-NEXT: addis 3, 2, .LCPI42_1@toc@ha 2425; PC64LE9-NEXT: fmr 31, 1 2426; PC64LE9-NEXT: lfs 1, .LCPI42_1@toc@l(3) 2427; PC64LE9-NEXT: bl sinf 2428; PC64LE9-NEXT: nop 2429; PC64LE9-NEXT: addis 3, 2, .LCPI42_2@toc@ha 2430; PC64LE9-NEXT: fmr 30, 1 2431; PC64LE9-NEXT: lfs 1, .LCPI42_2@toc@l(3) 2432; PC64LE9-NEXT: bl sinf 2433; PC64LE9-NEXT: nop 2434; PC64LE9-NEXT: xscvdpspn 0, 1 2435; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 2436; PC64LE9-NEXT: xscvdpspn 0, 30 2437; PC64LE9-NEXT: xxsldwi 35, 0, 0, 1 2438; PC64LE9-NEXT: xscvdpspn 0, 31 2439; PC64LE9-NEXT: addis 3, 2, .LCPI42_3@toc@ha 2440; PC64LE9-NEXT: addi 3, 3, .LCPI42_3@toc@l 2441; PC64LE9-NEXT: vmrglw 2, 3, 2 2442; PC64LE9-NEXT: lxvx 35, 0, 3 2443; PC64LE9-NEXT: xxsldwi 36, 0, 0, 1 2444; PC64LE9-NEXT: vperm 2, 4, 2, 3 2445; PC64LE9-NEXT: addi 1, 1, 48 2446; PC64LE9-NEXT: ld 0, 16(1) 2447; PC64LE9-NEXT: lfd 31, -8(1) # 8-byte Folded Reload 2448; PC64LE9-NEXT: lfd 30, -16(1) # 8-byte Folded Reload 2449; PC64LE9-NEXT: mtlr 0 2450; PC64LE9-NEXT: blr 2451entry: 2452 %sin = call <3 x float> @llvm.experimental.constrained.sin.v3f32( 2453 <3 x float> <float 42.0, float 43.0, float 44.0>, 2454 metadata !"round.dynamic", 2455 metadata !"fpexcept.strict") #1 2456 ret <3 x float> %sin 2457} 2458 2459define <3 x double> @constrained_vector_sin_v3f64() #0 { 2460; PC64LE-LABEL: constrained_vector_sin_v3f64: 2461; PC64LE: # %bb.0: # %entry 2462; PC64LE-NEXT: mflr 0 2463; PC64LE-NEXT: std 0, 16(1) 2464; PC64LE-NEXT: stdu 1, -80(1) 2465; PC64LE-NEXT: li 3, 64 2466; PC64LE-NEXT: stxvd2x 63, 1, 3 # 16-byte Folded Spill 2467; PC64LE-NEXT: addis 3, 2, .LCPI43_0@toc@ha 2468; PC64LE-NEXT: lfd 1, .LCPI43_0@toc@l(3) 2469; PC64LE-NEXT: bl sin 2470; PC64LE-NEXT: nop 2471; PC64LE-NEXT: li 3, 48 2472; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 2473; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 2474; PC64LE-NEXT: addis 3, 2, .LCPI43_1@toc@ha 2475; PC64LE-NEXT: lfs 1, .LCPI43_1@toc@l(3) 2476; PC64LE-NEXT: bl sin 2477; PC64LE-NEXT: nop 2478; PC64LE-NEXT: li 3, 48 2479; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 2480; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 2481; PC64LE-NEXT: addis 3, 2, .LCPI43_2@toc@ha 2482; PC64LE-NEXT: xxmrghd 63, 0, 1 2483; PC64LE-NEXT: lfd 1, .LCPI43_2@toc@l(3) 2484; PC64LE-NEXT: bl sin 2485; PC64LE-NEXT: nop 2486; PC64LE-NEXT: xxswapd 0, 63 2487; PC64LE-NEXT: li 3, 64 2488; PC64LE-NEXT: xxlor 2, 63, 63 2489; PC64LE-NEXT: lxvd2x 63, 1, 3 # 16-byte Folded Reload 2490; PC64LE-NEXT: fmr 3, 1 2491; PC64LE-NEXT: fmr 1, 0 2492; PC64LE-NEXT: addi 1, 1, 80 2493; PC64LE-NEXT: ld 0, 16(1) 2494; PC64LE-NEXT: mtlr 0 2495; PC64LE-NEXT: blr 2496; 2497; PC64LE9-LABEL: constrained_vector_sin_v3f64: 2498; PC64LE9: # %bb.0: # %entry 2499; PC64LE9-NEXT: mflr 0 2500; PC64LE9-NEXT: std 0, 16(1) 2501; PC64LE9-NEXT: stdu 1, -64(1) 2502; PC64LE9-NEXT: addis 3, 2, .LCPI43_0@toc@ha 2503; PC64LE9-NEXT: lfd 1, .LCPI43_0@toc@l(3) 2504; PC64LE9-NEXT: stxv 63, 48(1) # 16-byte Folded Spill 2505; PC64LE9-NEXT: bl sin 2506; PC64LE9-NEXT: nop 2507; PC64LE9-NEXT: addis 3, 2, .LCPI43_1@toc@ha 2508; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 2509; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 2510; PC64LE9-NEXT: lfs 1, .LCPI43_1@toc@l(3) 2511; PC64LE9-NEXT: bl sin 2512; PC64LE9-NEXT: nop 2513; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 2514; PC64LE9-NEXT: addis 3, 2, .LCPI43_2@toc@ha 2515; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 2516; PC64LE9-NEXT: xxmrghd 63, 0, 1 2517; PC64LE9-NEXT: lfd 1, .LCPI43_2@toc@l(3) 2518; PC64LE9-NEXT: bl sin 2519; PC64LE9-NEXT: nop 2520; PC64LE9-NEXT: fmr 3, 1 2521; PC64LE9-NEXT: xxswapd 1, 63 2522; PC64LE9-NEXT: xscpsgndp 2, 63, 63 2523; PC64LE9-NEXT: lxv 63, 48(1) # 16-byte Folded Reload 2524; PC64LE9-NEXT: # kill: def $f1 killed $f1 killed $vsl1 2525; PC64LE9-NEXT: addi 1, 1, 64 2526; PC64LE9-NEXT: ld 0, 16(1) 2527; PC64LE9-NEXT: mtlr 0 2528; PC64LE9-NEXT: blr 2529entry: 2530 %sin = call <3 x double> @llvm.experimental.constrained.sin.v3f64( 2531 <3 x double> <double 42.0, double 42.1, double 42.2>, 2532 metadata !"round.dynamic", 2533 metadata !"fpexcept.strict") #1 2534 ret <3 x double> %sin 2535} 2536 2537define <4 x double> @constrained_vector_sin_v4f64() #0 { 2538; PC64LE-LABEL: constrained_vector_sin_v4f64: 2539; PC64LE: # %bb.0: # %entry 2540; PC64LE-NEXT: mflr 0 2541; PC64LE-NEXT: std 0, 16(1) 2542; PC64LE-NEXT: stdu 1, -80(1) 2543; PC64LE-NEXT: li 3, 64 2544; PC64LE-NEXT: stxvd2x 63, 1, 3 # 16-byte Folded Spill 2545; PC64LE-NEXT: addis 3, 2, .LCPI44_0@toc@ha 2546; PC64LE-NEXT: lfd 1, .LCPI44_0@toc@l(3) 2547; PC64LE-NEXT: bl sin 2548; PC64LE-NEXT: nop 2549; PC64LE-NEXT: li 3, 48 2550; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 2551; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 2552; PC64LE-NEXT: addis 3, 2, .LCPI44_1@toc@ha 2553; PC64LE-NEXT: lfd 1, .LCPI44_1@toc@l(3) 2554; PC64LE-NEXT: bl sin 2555; PC64LE-NEXT: nop 2556; PC64LE-NEXT: li 3, 48 2557; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 2558; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 2559; PC64LE-NEXT: addis 3, 2, .LCPI44_2@toc@ha 2560; PC64LE-NEXT: xxmrghd 63, 1, 0 2561; PC64LE-NEXT: lfd 1, .LCPI44_2@toc@l(3) 2562; PC64LE-NEXT: bl sin 2563; PC64LE-NEXT: nop 2564; PC64LE-NEXT: li 3, 48 2565; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 2566; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 2567; PC64LE-NEXT: addis 3, 2, .LCPI44_3@toc@ha 2568; PC64LE-NEXT: lfs 1, .LCPI44_3@toc@l(3) 2569; PC64LE-NEXT: bl sin 2570; PC64LE-NEXT: nop 2571; PC64LE-NEXT: li 3, 48 2572; PC64LE-NEXT: vmr 3, 31 2573; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 2574; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 2575; PC64LE-NEXT: li 3, 64 2576; PC64LE-NEXT: lxvd2x 63, 1, 3 # 16-byte Folded Reload 2577; PC64LE-NEXT: xxmrghd 34, 0, 1 2578; PC64LE-NEXT: addi 1, 1, 80 2579; PC64LE-NEXT: ld 0, 16(1) 2580; PC64LE-NEXT: mtlr 0 2581; PC64LE-NEXT: blr 2582; 2583; PC64LE9-LABEL: constrained_vector_sin_v4f64: 2584; PC64LE9: # %bb.0: # %entry 2585; PC64LE9-NEXT: mflr 0 2586; PC64LE9-NEXT: std 0, 16(1) 2587; PC64LE9-NEXT: stdu 1, -64(1) 2588; PC64LE9-NEXT: addis 3, 2, .LCPI44_0@toc@ha 2589; PC64LE9-NEXT: lfd 1, .LCPI44_0@toc@l(3) 2590; PC64LE9-NEXT: stxv 63, 48(1) # 16-byte Folded Spill 2591; PC64LE9-NEXT: bl sin 2592; PC64LE9-NEXT: nop 2593; PC64LE9-NEXT: addis 3, 2, .LCPI44_1@toc@ha 2594; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 2595; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 2596; PC64LE9-NEXT: lfd 1, .LCPI44_1@toc@l(3) 2597; PC64LE9-NEXT: bl sin 2598; PC64LE9-NEXT: nop 2599; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 2600; PC64LE9-NEXT: addis 3, 2, .LCPI44_2@toc@ha 2601; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 2602; PC64LE9-NEXT: xxmrghd 63, 1, 0 2603; PC64LE9-NEXT: lfd 1, .LCPI44_2@toc@l(3) 2604; PC64LE9-NEXT: bl sin 2605; PC64LE9-NEXT: nop 2606; PC64LE9-NEXT: addis 3, 2, .LCPI44_3@toc@ha 2607; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 2608; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 2609; PC64LE9-NEXT: lfs 1, .LCPI44_3@toc@l(3) 2610; PC64LE9-NEXT: bl sin 2611; PC64LE9-NEXT: nop 2612; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 2613; PC64LE9-NEXT: vmr 3, 31 2614; PC64LE9-NEXT: lxv 63, 48(1) # 16-byte Folded Reload 2615; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 2616; PC64LE9-NEXT: xxmrghd 34, 0, 1 2617; PC64LE9-NEXT: addi 1, 1, 64 2618; PC64LE9-NEXT: ld 0, 16(1) 2619; PC64LE9-NEXT: mtlr 0 2620; PC64LE9-NEXT: blr 2621entry: 2622 %sin = call <4 x double> @llvm.experimental.constrained.sin.v4f64( 2623 <4 x double> <double 42.0, double 42.1, 2624 double 42.2, double 42.3>, 2625 metadata !"round.dynamic", 2626 metadata !"fpexcept.strict") #1 2627 ret <4 x double> %sin 2628} 2629 2630define <1 x float> @constrained_vector_cos_v1f32() #0 { 2631; PC64LE-LABEL: constrained_vector_cos_v1f32: 2632; PC64LE: # %bb.0: # %entry 2633; PC64LE-NEXT: mflr 0 2634; PC64LE-NEXT: std 0, 16(1) 2635; PC64LE-NEXT: stdu 1, -32(1) 2636; PC64LE-NEXT: addis 3, 2, .LCPI45_0@toc@ha 2637; PC64LE-NEXT: lfs 1, .LCPI45_0@toc@l(3) 2638; PC64LE-NEXT: bl cosf 2639; PC64LE-NEXT: nop 2640; PC64LE-NEXT: xscvdpspn 0, 1 2641; PC64LE-NEXT: xxsldwi 34, 0, 0, 1 2642; PC64LE-NEXT: addi 1, 1, 32 2643; PC64LE-NEXT: ld 0, 16(1) 2644; PC64LE-NEXT: mtlr 0 2645; PC64LE-NEXT: blr 2646; 2647; PC64LE9-LABEL: constrained_vector_cos_v1f32: 2648; PC64LE9: # %bb.0: # %entry 2649; PC64LE9-NEXT: mflr 0 2650; PC64LE9-NEXT: std 0, 16(1) 2651; PC64LE9-NEXT: stdu 1, -32(1) 2652; PC64LE9-NEXT: addis 3, 2, .LCPI45_0@toc@ha 2653; PC64LE9-NEXT: lfs 1, .LCPI45_0@toc@l(3) 2654; PC64LE9-NEXT: bl cosf 2655; PC64LE9-NEXT: nop 2656; PC64LE9-NEXT: xscvdpspn 0, 1 2657; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 2658; PC64LE9-NEXT: addi 1, 1, 32 2659; PC64LE9-NEXT: ld 0, 16(1) 2660; PC64LE9-NEXT: mtlr 0 2661; PC64LE9-NEXT: blr 2662entry: 2663 %cos = call <1 x float> @llvm.experimental.constrained.cos.v1f32( 2664 <1 x float> <float 42.0>, 2665 metadata !"round.dynamic", 2666 metadata !"fpexcept.strict") #1 2667 ret <1 x float> %cos 2668} 2669 2670define <2 x double> @constrained_vector_cos_v2f64() #0 { 2671; PC64LE-LABEL: constrained_vector_cos_v2f64: 2672; PC64LE: # %bb.0: # %entry 2673; PC64LE-NEXT: mflr 0 2674; PC64LE-NEXT: std 0, 16(1) 2675; PC64LE-NEXT: stdu 1, -64(1) 2676; PC64LE-NEXT: addis 3, 2, .LCPI46_0@toc@ha 2677; PC64LE-NEXT: lfd 1, .LCPI46_0@toc@l(3) 2678; PC64LE-NEXT: bl cos 2679; PC64LE-NEXT: nop 2680; PC64LE-NEXT: li 3, 48 2681; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 2682; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 2683; PC64LE-NEXT: addis 3, 2, .LCPI46_1@toc@ha 2684; PC64LE-NEXT: lfs 1, .LCPI46_1@toc@l(3) 2685; PC64LE-NEXT: bl cos 2686; PC64LE-NEXT: nop 2687; PC64LE-NEXT: li 3, 48 2688; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 2689; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 2690; PC64LE-NEXT: xxmrghd 34, 0, 1 2691; PC64LE-NEXT: addi 1, 1, 64 2692; PC64LE-NEXT: ld 0, 16(1) 2693; PC64LE-NEXT: mtlr 0 2694; PC64LE-NEXT: blr 2695; 2696; PC64LE9-LABEL: constrained_vector_cos_v2f64: 2697; PC64LE9: # %bb.0: # %entry 2698; PC64LE9-NEXT: mflr 0 2699; PC64LE9-NEXT: std 0, 16(1) 2700; PC64LE9-NEXT: stdu 1, -48(1) 2701; PC64LE9-NEXT: addis 3, 2, .LCPI46_0@toc@ha 2702; PC64LE9-NEXT: lfd 1, .LCPI46_0@toc@l(3) 2703; PC64LE9-NEXT: bl cos 2704; PC64LE9-NEXT: nop 2705; PC64LE9-NEXT: addis 3, 2, .LCPI46_1@toc@ha 2706; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 2707; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 2708; PC64LE9-NEXT: lfs 1, .LCPI46_1@toc@l(3) 2709; PC64LE9-NEXT: bl cos 2710; PC64LE9-NEXT: nop 2711; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 2712; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 2713; PC64LE9-NEXT: xxmrghd 34, 0, 1 2714; PC64LE9-NEXT: addi 1, 1, 48 2715; PC64LE9-NEXT: ld 0, 16(1) 2716; PC64LE9-NEXT: mtlr 0 2717; PC64LE9-NEXT: blr 2718entry: 2719 %cos = call <2 x double> @llvm.experimental.constrained.cos.v2f64( 2720 <2 x double> <double 42.0, double 42.1>, 2721 metadata !"round.dynamic", 2722 metadata !"fpexcept.strict") #1 2723 ret <2 x double> %cos 2724} 2725 2726define <3 x float> @constrained_vector_cos_v3f32() #0 { 2727; PC64LE-LABEL: constrained_vector_cos_v3f32: 2728; PC64LE: # %bb.0: # %entry 2729; PC64LE-NEXT: mflr 0 2730; PC64LE-NEXT: stfd 30, -16(1) # 8-byte Folded Spill 2731; PC64LE-NEXT: stfd 31, -8(1) # 8-byte Folded Spill 2732; PC64LE-NEXT: std 0, 16(1) 2733; PC64LE-NEXT: stdu 1, -48(1) 2734; PC64LE-NEXT: addis 3, 2, .LCPI47_0@toc@ha 2735; PC64LE-NEXT: lfs 1, .LCPI47_0@toc@l(3) 2736; PC64LE-NEXT: bl cosf 2737; PC64LE-NEXT: nop 2738; PC64LE-NEXT: addis 3, 2, .LCPI47_1@toc@ha 2739; PC64LE-NEXT: fmr 31, 1 2740; PC64LE-NEXT: lfs 1, .LCPI47_1@toc@l(3) 2741; PC64LE-NEXT: bl cosf 2742; PC64LE-NEXT: nop 2743; PC64LE-NEXT: addis 3, 2, .LCPI47_2@toc@ha 2744; PC64LE-NEXT: fmr 30, 1 2745; PC64LE-NEXT: lfs 1, .LCPI47_2@toc@l(3) 2746; PC64LE-NEXT: bl cosf 2747; PC64LE-NEXT: nop 2748; PC64LE-NEXT: xscvdpspn 0, 30 2749; PC64LE-NEXT: addis 3, 2, .LCPI47_3@toc@ha 2750; PC64LE-NEXT: xscvdpspn 1, 1 2751; PC64LE-NEXT: addi 3, 3, .LCPI47_3@toc@l 2752; PC64LE-NEXT: xxsldwi 34, 0, 0, 1 2753; PC64LE-NEXT: xscvdpspn 0, 31 2754; PC64LE-NEXT: xxsldwi 35, 1, 1, 1 2755; PC64LE-NEXT: vmrglw 2, 2, 3 2756; PC64LE-NEXT: lvx 3, 0, 3 2757; PC64LE-NEXT: xxsldwi 36, 0, 0, 1 2758; PC64LE-NEXT: vperm 2, 4, 2, 3 2759; PC64LE-NEXT: addi 1, 1, 48 2760; PC64LE-NEXT: ld 0, 16(1) 2761; PC64LE-NEXT: lfd 31, -8(1) # 8-byte Folded Reload 2762; PC64LE-NEXT: lfd 30, -16(1) # 8-byte Folded Reload 2763; PC64LE-NEXT: mtlr 0 2764; PC64LE-NEXT: blr 2765; 2766; PC64LE9-LABEL: constrained_vector_cos_v3f32: 2767; PC64LE9: # %bb.0: # %entry 2768; PC64LE9-NEXT: mflr 0 2769; PC64LE9-NEXT: stfd 30, -16(1) # 8-byte Folded Spill 2770; PC64LE9-NEXT: stfd 31, -8(1) # 8-byte Folded Spill 2771; PC64LE9-NEXT: std 0, 16(1) 2772; PC64LE9-NEXT: stdu 1, -48(1) 2773; PC64LE9-NEXT: addis 3, 2, .LCPI47_0@toc@ha 2774; PC64LE9-NEXT: lfs 1, .LCPI47_0@toc@l(3) 2775; PC64LE9-NEXT: bl cosf 2776; PC64LE9-NEXT: nop 2777; PC64LE9-NEXT: addis 3, 2, .LCPI47_1@toc@ha 2778; PC64LE9-NEXT: fmr 31, 1 2779; PC64LE9-NEXT: lfs 1, .LCPI47_1@toc@l(3) 2780; PC64LE9-NEXT: bl cosf 2781; PC64LE9-NEXT: nop 2782; PC64LE9-NEXT: addis 3, 2, .LCPI47_2@toc@ha 2783; PC64LE9-NEXT: fmr 30, 1 2784; PC64LE9-NEXT: lfs 1, .LCPI47_2@toc@l(3) 2785; PC64LE9-NEXT: bl cosf 2786; PC64LE9-NEXT: nop 2787; PC64LE9-NEXT: xscvdpspn 0, 1 2788; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 2789; PC64LE9-NEXT: xscvdpspn 0, 30 2790; PC64LE9-NEXT: xxsldwi 35, 0, 0, 1 2791; PC64LE9-NEXT: xscvdpspn 0, 31 2792; PC64LE9-NEXT: addis 3, 2, .LCPI47_3@toc@ha 2793; PC64LE9-NEXT: addi 3, 3, .LCPI47_3@toc@l 2794; PC64LE9-NEXT: vmrglw 2, 3, 2 2795; PC64LE9-NEXT: lxvx 35, 0, 3 2796; PC64LE9-NEXT: xxsldwi 36, 0, 0, 1 2797; PC64LE9-NEXT: vperm 2, 4, 2, 3 2798; PC64LE9-NEXT: addi 1, 1, 48 2799; PC64LE9-NEXT: ld 0, 16(1) 2800; PC64LE9-NEXT: lfd 31, -8(1) # 8-byte Folded Reload 2801; PC64LE9-NEXT: lfd 30, -16(1) # 8-byte Folded Reload 2802; PC64LE9-NEXT: mtlr 0 2803; PC64LE9-NEXT: blr 2804entry: 2805 %cos = call <3 x float> @llvm.experimental.constrained.cos.v3f32( 2806 <3 x float> <float 42.0, float 43.0, float 44.0>, 2807 metadata !"round.dynamic", 2808 metadata !"fpexcept.strict") #1 2809 ret <3 x float> %cos 2810} 2811 2812define <3 x double> @constrained_vector_cos_v3f64() #0 { 2813; PC64LE-LABEL: constrained_vector_cos_v3f64: 2814; PC64LE: # %bb.0: # %entry 2815; PC64LE-NEXT: mflr 0 2816; PC64LE-NEXT: std 0, 16(1) 2817; PC64LE-NEXT: stdu 1, -80(1) 2818; PC64LE-NEXT: li 3, 64 2819; PC64LE-NEXT: stxvd2x 63, 1, 3 # 16-byte Folded Spill 2820; PC64LE-NEXT: addis 3, 2, .LCPI48_0@toc@ha 2821; PC64LE-NEXT: lfd 1, .LCPI48_0@toc@l(3) 2822; PC64LE-NEXT: bl cos 2823; PC64LE-NEXT: nop 2824; PC64LE-NEXT: li 3, 48 2825; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 2826; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 2827; PC64LE-NEXT: addis 3, 2, .LCPI48_1@toc@ha 2828; PC64LE-NEXT: lfs 1, .LCPI48_1@toc@l(3) 2829; PC64LE-NEXT: bl cos 2830; PC64LE-NEXT: nop 2831; PC64LE-NEXT: li 3, 48 2832; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 2833; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 2834; PC64LE-NEXT: addis 3, 2, .LCPI48_2@toc@ha 2835; PC64LE-NEXT: xxmrghd 63, 0, 1 2836; PC64LE-NEXT: lfd 1, .LCPI48_2@toc@l(3) 2837; PC64LE-NEXT: bl cos 2838; PC64LE-NEXT: nop 2839; PC64LE-NEXT: xxswapd 0, 63 2840; PC64LE-NEXT: li 3, 64 2841; PC64LE-NEXT: xxlor 2, 63, 63 2842; PC64LE-NEXT: lxvd2x 63, 1, 3 # 16-byte Folded Reload 2843; PC64LE-NEXT: fmr 3, 1 2844; PC64LE-NEXT: fmr 1, 0 2845; PC64LE-NEXT: addi 1, 1, 80 2846; PC64LE-NEXT: ld 0, 16(1) 2847; PC64LE-NEXT: mtlr 0 2848; PC64LE-NEXT: blr 2849; 2850; PC64LE9-LABEL: constrained_vector_cos_v3f64: 2851; PC64LE9: # %bb.0: # %entry 2852; PC64LE9-NEXT: mflr 0 2853; PC64LE9-NEXT: std 0, 16(1) 2854; PC64LE9-NEXT: stdu 1, -64(1) 2855; PC64LE9-NEXT: addis 3, 2, .LCPI48_0@toc@ha 2856; PC64LE9-NEXT: lfd 1, .LCPI48_0@toc@l(3) 2857; PC64LE9-NEXT: stxv 63, 48(1) # 16-byte Folded Spill 2858; PC64LE9-NEXT: bl cos 2859; PC64LE9-NEXT: nop 2860; PC64LE9-NEXT: addis 3, 2, .LCPI48_1@toc@ha 2861; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 2862; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 2863; PC64LE9-NEXT: lfs 1, .LCPI48_1@toc@l(3) 2864; PC64LE9-NEXT: bl cos 2865; PC64LE9-NEXT: nop 2866; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 2867; PC64LE9-NEXT: addis 3, 2, .LCPI48_2@toc@ha 2868; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 2869; PC64LE9-NEXT: xxmrghd 63, 0, 1 2870; PC64LE9-NEXT: lfd 1, .LCPI48_2@toc@l(3) 2871; PC64LE9-NEXT: bl cos 2872; PC64LE9-NEXT: nop 2873; PC64LE9-NEXT: fmr 3, 1 2874; PC64LE9-NEXT: xxswapd 1, 63 2875; PC64LE9-NEXT: xscpsgndp 2, 63, 63 2876; PC64LE9-NEXT: lxv 63, 48(1) # 16-byte Folded Reload 2877; PC64LE9-NEXT: # kill: def $f1 killed $f1 killed $vsl1 2878; PC64LE9-NEXT: addi 1, 1, 64 2879; PC64LE9-NEXT: ld 0, 16(1) 2880; PC64LE9-NEXT: mtlr 0 2881; PC64LE9-NEXT: blr 2882entry: 2883 %cos = call <3 x double> @llvm.experimental.constrained.cos.v3f64( 2884 <3 x double> <double 42.0, double 42.1, double 42.2>, 2885 metadata !"round.dynamic", 2886 metadata !"fpexcept.strict") #1 2887 ret <3 x double> %cos 2888} 2889 2890define <4 x double> @constrained_vector_cos_v4f64() #0 { 2891; PC64LE-LABEL: constrained_vector_cos_v4f64: 2892; PC64LE: # %bb.0: # %entry 2893; PC64LE-NEXT: mflr 0 2894; PC64LE-NEXT: std 0, 16(1) 2895; PC64LE-NEXT: stdu 1, -80(1) 2896; PC64LE-NEXT: li 3, 64 2897; PC64LE-NEXT: stxvd2x 63, 1, 3 # 16-byte Folded Spill 2898; PC64LE-NEXT: addis 3, 2, .LCPI49_0@toc@ha 2899; PC64LE-NEXT: lfd 1, .LCPI49_0@toc@l(3) 2900; PC64LE-NEXT: bl cos 2901; PC64LE-NEXT: nop 2902; PC64LE-NEXT: li 3, 48 2903; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 2904; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 2905; PC64LE-NEXT: addis 3, 2, .LCPI49_1@toc@ha 2906; PC64LE-NEXT: lfd 1, .LCPI49_1@toc@l(3) 2907; PC64LE-NEXT: bl cos 2908; PC64LE-NEXT: nop 2909; PC64LE-NEXT: li 3, 48 2910; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 2911; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 2912; PC64LE-NEXT: addis 3, 2, .LCPI49_2@toc@ha 2913; PC64LE-NEXT: xxmrghd 63, 1, 0 2914; PC64LE-NEXT: lfd 1, .LCPI49_2@toc@l(3) 2915; PC64LE-NEXT: bl cos 2916; PC64LE-NEXT: nop 2917; PC64LE-NEXT: li 3, 48 2918; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 2919; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 2920; PC64LE-NEXT: addis 3, 2, .LCPI49_3@toc@ha 2921; PC64LE-NEXT: lfs 1, .LCPI49_3@toc@l(3) 2922; PC64LE-NEXT: bl cos 2923; PC64LE-NEXT: nop 2924; PC64LE-NEXT: li 3, 48 2925; PC64LE-NEXT: vmr 3, 31 2926; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 2927; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 2928; PC64LE-NEXT: li 3, 64 2929; PC64LE-NEXT: lxvd2x 63, 1, 3 # 16-byte Folded Reload 2930; PC64LE-NEXT: xxmrghd 34, 0, 1 2931; PC64LE-NEXT: addi 1, 1, 80 2932; PC64LE-NEXT: ld 0, 16(1) 2933; PC64LE-NEXT: mtlr 0 2934; PC64LE-NEXT: blr 2935; 2936; PC64LE9-LABEL: constrained_vector_cos_v4f64: 2937; PC64LE9: # %bb.0: # %entry 2938; PC64LE9-NEXT: mflr 0 2939; PC64LE9-NEXT: std 0, 16(1) 2940; PC64LE9-NEXT: stdu 1, -64(1) 2941; PC64LE9-NEXT: addis 3, 2, .LCPI49_0@toc@ha 2942; PC64LE9-NEXT: lfd 1, .LCPI49_0@toc@l(3) 2943; PC64LE9-NEXT: stxv 63, 48(1) # 16-byte Folded Spill 2944; PC64LE9-NEXT: bl cos 2945; PC64LE9-NEXT: nop 2946; PC64LE9-NEXT: addis 3, 2, .LCPI49_1@toc@ha 2947; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 2948; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 2949; PC64LE9-NEXT: lfd 1, .LCPI49_1@toc@l(3) 2950; PC64LE9-NEXT: bl cos 2951; PC64LE9-NEXT: nop 2952; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 2953; PC64LE9-NEXT: addis 3, 2, .LCPI49_2@toc@ha 2954; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 2955; PC64LE9-NEXT: xxmrghd 63, 1, 0 2956; PC64LE9-NEXT: lfd 1, .LCPI49_2@toc@l(3) 2957; PC64LE9-NEXT: bl cos 2958; PC64LE9-NEXT: nop 2959; PC64LE9-NEXT: addis 3, 2, .LCPI49_3@toc@ha 2960; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 2961; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 2962; PC64LE9-NEXT: lfs 1, .LCPI49_3@toc@l(3) 2963; PC64LE9-NEXT: bl cos 2964; PC64LE9-NEXT: nop 2965; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 2966; PC64LE9-NEXT: vmr 3, 31 2967; PC64LE9-NEXT: lxv 63, 48(1) # 16-byte Folded Reload 2968; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 2969; PC64LE9-NEXT: xxmrghd 34, 0, 1 2970; PC64LE9-NEXT: addi 1, 1, 64 2971; PC64LE9-NEXT: ld 0, 16(1) 2972; PC64LE9-NEXT: mtlr 0 2973; PC64LE9-NEXT: blr 2974entry: 2975 %cos = call <4 x double> @llvm.experimental.constrained.cos.v4f64( 2976 <4 x double> <double 42.0, double 42.1, 2977 double 42.2, double 42.3>, 2978 metadata !"round.dynamic", 2979 metadata !"fpexcept.strict") #1 2980 ret <4 x double> %cos 2981} 2982 2983define <1 x float> @constrained_vector_exp_v1f32() #0 { 2984; PC64LE-LABEL: constrained_vector_exp_v1f32: 2985; PC64LE: # %bb.0: # %entry 2986; PC64LE-NEXT: mflr 0 2987; PC64LE-NEXT: std 0, 16(1) 2988; PC64LE-NEXT: stdu 1, -32(1) 2989; PC64LE-NEXT: addis 3, 2, .LCPI50_0@toc@ha 2990; PC64LE-NEXT: lfs 1, .LCPI50_0@toc@l(3) 2991; PC64LE-NEXT: bl expf 2992; PC64LE-NEXT: nop 2993; PC64LE-NEXT: xscvdpspn 0, 1 2994; PC64LE-NEXT: xxsldwi 34, 0, 0, 1 2995; PC64LE-NEXT: addi 1, 1, 32 2996; PC64LE-NEXT: ld 0, 16(1) 2997; PC64LE-NEXT: mtlr 0 2998; PC64LE-NEXT: blr 2999; 3000; PC64LE9-LABEL: constrained_vector_exp_v1f32: 3001; PC64LE9: # %bb.0: # %entry 3002; PC64LE9-NEXT: mflr 0 3003; PC64LE9-NEXT: std 0, 16(1) 3004; PC64LE9-NEXT: stdu 1, -32(1) 3005; PC64LE9-NEXT: addis 3, 2, .LCPI50_0@toc@ha 3006; PC64LE9-NEXT: lfs 1, .LCPI50_0@toc@l(3) 3007; PC64LE9-NEXT: bl expf 3008; PC64LE9-NEXT: nop 3009; PC64LE9-NEXT: xscvdpspn 0, 1 3010; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 3011; PC64LE9-NEXT: addi 1, 1, 32 3012; PC64LE9-NEXT: ld 0, 16(1) 3013; PC64LE9-NEXT: mtlr 0 3014; PC64LE9-NEXT: blr 3015entry: 3016 %exp = call <1 x float> @llvm.experimental.constrained.exp.v1f32( 3017 <1 x float> <float 42.0>, 3018 metadata !"round.dynamic", 3019 metadata !"fpexcept.strict") #1 3020 ret <1 x float> %exp 3021} 3022 3023define <2 x double> @constrained_vector_exp_v2f64() #0 { 3024; PC64LE-LABEL: constrained_vector_exp_v2f64: 3025; PC64LE: # %bb.0: # %entry 3026; PC64LE-NEXT: mflr 0 3027; PC64LE-NEXT: std 0, 16(1) 3028; PC64LE-NEXT: stdu 1, -64(1) 3029; PC64LE-NEXT: addis 3, 2, .LCPI51_0@toc@ha 3030; PC64LE-NEXT: lfd 1, .LCPI51_0@toc@l(3) 3031; PC64LE-NEXT: bl exp 3032; PC64LE-NEXT: nop 3033; PC64LE-NEXT: li 3, 48 3034; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 3035; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 3036; PC64LE-NEXT: addis 3, 2, .LCPI51_1@toc@ha 3037; PC64LE-NEXT: lfs 1, .LCPI51_1@toc@l(3) 3038; PC64LE-NEXT: bl exp 3039; PC64LE-NEXT: nop 3040; PC64LE-NEXT: li 3, 48 3041; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 3042; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 3043; PC64LE-NEXT: xxmrghd 34, 0, 1 3044; PC64LE-NEXT: addi 1, 1, 64 3045; PC64LE-NEXT: ld 0, 16(1) 3046; PC64LE-NEXT: mtlr 0 3047; PC64LE-NEXT: blr 3048; 3049; PC64LE9-LABEL: constrained_vector_exp_v2f64: 3050; PC64LE9: # %bb.0: # %entry 3051; PC64LE9-NEXT: mflr 0 3052; PC64LE9-NEXT: std 0, 16(1) 3053; PC64LE9-NEXT: stdu 1, -48(1) 3054; PC64LE9-NEXT: addis 3, 2, .LCPI51_0@toc@ha 3055; PC64LE9-NEXT: lfd 1, .LCPI51_0@toc@l(3) 3056; PC64LE9-NEXT: bl exp 3057; PC64LE9-NEXT: nop 3058; PC64LE9-NEXT: addis 3, 2, .LCPI51_1@toc@ha 3059; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 3060; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 3061; PC64LE9-NEXT: lfs 1, .LCPI51_1@toc@l(3) 3062; PC64LE9-NEXT: bl exp 3063; PC64LE9-NEXT: nop 3064; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 3065; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 3066; PC64LE9-NEXT: xxmrghd 34, 0, 1 3067; PC64LE9-NEXT: addi 1, 1, 48 3068; PC64LE9-NEXT: ld 0, 16(1) 3069; PC64LE9-NEXT: mtlr 0 3070; PC64LE9-NEXT: blr 3071entry: 3072 %exp = call <2 x double> @llvm.experimental.constrained.exp.v2f64( 3073 <2 x double> <double 42.0, double 42.1>, 3074 metadata !"round.dynamic", 3075 metadata !"fpexcept.strict") #1 3076 ret <2 x double> %exp 3077} 3078 3079define <3 x float> @constrained_vector_exp_v3f32() #0 { 3080; PC64LE-LABEL: constrained_vector_exp_v3f32: 3081; PC64LE: # %bb.0: # %entry 3082; PC64LE-NEXT: mflr 0 3083; PC64LE-NEXT: stfd 30, -16(1) # 8-byte Folded Spill 3084; PC64LE-NEXT: stfd 31, -8(1) # 8-byte Folded Spill 3085; PC64LE-NEXT: std 0, 16(1) 3086; PC64LE-NEXT: stdu 1, -48(1) 3087; PC64LE-NEXT: addis 3, 2, .LCPI52_0@toc@ha 3088; PC64LE-NEXT: lfs 1, .LCPI52_0@toc@l(3) 3089; PC64LE-NEXT: bl expf 3090; PC64LE-NEXT: nop 3091; PC64LE-NEXT: addis 3, 2, .LCPI52_1@toc@ha 3092; PC64LE-NEXT: fmr 31, 1 3093; PC64LE-NEXT: lfs 1, .LCPI52_1@toc@l(3) 3094; PC64LE-NEXT: bl expf 3095; PC64LE-NEXT: nop 3096; PC64LE-NEXT: addis 3, 2, .LCPI52_2@toc@ha 3097; PC64LE-NEXT: fmr 30, 1 3098; PC64LE-NEXT: lfs 1, .LCPI52_2@toc@l(3) 3099; PC64LE-NEXT: bl expf 3100; PC64LE-NEXT: nop 3101; PC64LE-NEXT: xscvdpspn 0, 30 3102; PC64LE-NEXT: addis 3, 2, .LCPI52_3@toc@ha 3103; PC64LE-NEXT: xscvdpspn 1, 1 3104; PC64LE-NEXT: addi 3, 3, .LCPI52_3@toc@l 3105; PC64LE-NEXT: xxsldwi 34, 0, 0, 1 3106; PC64LE-NEXT: xscvdpspn 0, 31 3107; PC64LE-NEXT: xxsldwi 35, 1, 1, 1 3108; PC64LE-NEXT: vmrglw 2, 2, 3 3109; PC64LE-NEXT: lvx 3, 0, 3 3110; PC64LE-NEXT: xxsldwi 36, 0, 0, 1 3111; PC64LE-NEXT: vperm 2, 4, 2, 3 3112; PC64LE-NEXT: addi 1, 1, 48 3113; PC64LE-NEXT: ld 0, 16(1) 3114; PC64LE-NEXT: lfd 31, -8(1) # 8-byte Folded Reload 3115; PC64LE-NEXT: lfd 30, -16(1) # 8-byte Folded Reload 3116; PC64LE-NEXT: mtlr 0 3117; PC64LE-NEXT: blr 3118; 3119; PC64LE9-LABEL: constrained_vector_exp_v3f32: 3120; PC64LE9: # %bb.0: # %entry 3121; PC64LE9-NEXT: mflr 0 3122; PC64LE9-NEXT: stfd 30, -16(1) # 8-byte Folded Spill 3123; PC64LE9-NEXT: stfd 31, -8(1) # 8-byte Folded Spill 3124; PC64LE9-NEXT: std 0, 16(1) 3125; PC64LE9-NEXT: stdu 1, -48(1) 3126; PC64LE9-NEXT: addis 3, 2, .LCPI52_0@toc@ha 3127; PC64LE9-NEXT: lfs 1, .LCPI52_0@toc@l(3) 3128; PC64LE9-NEXT: bl expf 3129; PC64LE9-NEXT: nop 3130; PC64LE9-NEXT: addis 3, 2, .LCPI52_1@toc@ha 3131; PC64LE9-NEXT: fmr 31, 1 3132; PC64LE9-NEXT: lfs 1, .LCPI52_1@toc@l(3) 3133; PC64LE9-NEXT: bl expf 3134; PC64LE9-NEXT: nop 3135; PC64LE9-NEXT: addis 3, 2, .LCPI52_2@toc@ha 3136; PC64LE9-NEXT: fmr 30, 1 3137; PC64LE9-NEXT: lfs 1, .LCPI52_2@toc@l(3) 3138; PC64LE9-NEXT: bl expf 3139; PC64LE9-NEXT: nop 3140; PC64LE9-NEXT: xscvdpspn 0, 1 3141; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 3142; PC64LE9-NEXT: xscvdpspn 0, 30 3143; PC64LE9-NEXT: xxsldwi 35, 0, 0, 1 3144; PC64LE9-NEXT: xscvdpspn 0, 31 3145; PC64LE9-NEXT: addis 3, 2, .LCPI52_3@toc@ha 3146; PC64LE9-NEXT: addi 3, 3, .LCPI52_3@toc@l 3147; PC64LE9-NEXT: vmrglw 2, 3, 2 3148; PC64LE9-NEXT: lxvx 35, 0, 3 3149; PC64LE9-NEXT: xxsldwi 36, 0, 0, 1 3150; PC64LE9-NEXT: vperm 2, 4, 2, 3 3151; PC64LE9-NEXT: addi 1, 1, 48 3152; PC64LE9-NEXT: ld 0, 16(1) 3153; PC64LE9-NEXT: lfd 31, -8(1) # 8-byte Folded Reload 3154; PC64LE9-NEXT: lfd 30, -16(1) # 8-byte Folded Reload 3155; PC64LE9-NEXT: mtlr 0 3156; PC64LE9-NEXT: blr 3157entry: 3158 %exp = call <3 x float> @llvm.experimental.constrained.exp.v3f32( 3159 <3 x float> <float 42.0, float 43.0, float 44.0>, 3160 metadata !"round.dynamic", 3161 metadata !"fpexcept.strict") #1 3162 ret <3 x float> %exp 3163} 3164 3165define <3 x double> @constrained_vector_exp_v3f64() #0 { 3166; PC64LE-LABEL: constrained_vector_exp_v3f64: 3167; PC64LE: # %bb.0: # %entry 3168; PC64LE-NEXT: mflr 0 3169; PC64LE-NEXT: std 0, 16(1) 3170; PC64LE-NEXT: stdu 1, -80(1) 3171; PC64LE-NEXT: li 3, 64 3172; PC64LE-NEXT: stxvd2x 63, 1, 3 # 16-byte Folded Spill 3173; PC64LE-NEXT: addis 3, 2, .LCPI53_0@toc@ha 3174; PC64LE-NEXT: lfd 1, .LCPI53_0@toc@l(3) 3175; PC64LE-NEXT: bl exp 3176; PC64LE-NEXT: nop 3177; PC64LE-NEXT: li 3, 48 3178; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 3179; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 3180; PC64LE-NEXT: addis 3, 2, .LCPI53_1@toc@ha 3181; PC64LE-NEXT: lfs 1, .LCPI53_1@toc@l(3) 3182; PC64LE-NEXT: bl exp 3183; PC64LE-NEXT: nop 3184; PC64LE-NEXT: li 3, 48 3185; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 3186; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 3187; PC64LE-NEXT: addis 3, 2, .LCPI53_2@toc@ha 3188; PC64LE-NEXT: xxmrghd 63, 0, 1 3189; PC64LE-NEXT: lfd 1, .LCPI53_2@toc@l(3) 3190; PC64LE-NEXT: bl exp 3191; PC64LE-NEXT: nop 3192; PC64LE-NEXT: xxswapd 0, 63 3193; PC64LE-NEXT: li 3, 64 3194; PC64LE-NEXT: xxlor 2, 63, 63 3195; PC64LE-NEXT: lxvd2x 63, 1, 3 # 16-byte Folded Reload 3196; PC64LE-NEXT: fmr 3, 1 3197; PC64LE-NEXT: fmr 1, 0 3198; PC64LE-NEXT: addi 1, 1, 80 3199; PC64LE-NEXT: ld 0, 16(1) 3200; PC64LE-NEXT: mtlr 0 3201; PC64LE-NEXT: blr 3202; 3203; PC64LE9-LABEL: constrained_vector_exp_v3f64: 3204; PC64LE9: # %bb.0: # %entry 3205; PC64LE9-NEXT: mflr 0 3206; PC64LE9-NEXT: std 0, 16(1) 3207; PC64LE9-NEXT: stdu 1, -64(1) 3208; PC64LE9-NEXT: addis 3, 2, .LCPI53_0@toc@ha 3209; PC64LE9-NEXT: lfd 1, .LCPI53_0@toc@l(3) 3210; PC64LE9-NEXT: stxv 63, 48(1) # 16-byte Folded Spill 3211; PC64LE9-NEXT: bl exp 3212; PC64LE9-NEXT: nop 3213; PC64LE9-NEXT: addis 3, 2, .LCPI53_1@toc@ha 3214; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 3215; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 3216; PC64LE9-NEXT: lfs 1, .LCPI53_1@toc@l(3) 3217; PC64LE9-NEXT: bl exp 3218; PC64LE9-NEXT: nop 3219; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 3220; PC64LE9-NEXT: addis 3, 2, .LCPI53_2@toc@ha 3221; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 3222; PC64LE9-NEXT: xxmrghd 63, 0, 1 3223; PC64LE9-NEXT: lfd 1, .LCPI53_2@toc@l(3) 3224; PC64LE9-NEXT: bl exp 3225; PC64LE9-NEXT: nop 3226; PC64LE9-NEXT: fmr 3, 1 3227; PC64LE9-NEXT: xxswapd 1, 63 3228; PC64LE9-NEXT: xscpsgndp 2, 63, 63 3229; PC64LE9-NEXT: lxv 63, 48(1) # 16-byte Folded Reload 3230; PC64LE9-NEXT: # kill: def $f1 killed $f1 killed $vsl1 3231; PC64LE9-NEXT: addi 1, 1, 64 3232; PC64LE9-NEXT: ld 0, 16(1) 3233; PC64LE9-NEXT: mtlr 0 3234; PC64LE9-NEXT: blr 3235entry: 3236 %exp = call <3 x double> @llvm.experimental.constrained.exp.v3f64( 3237 <3 x double> <double 42.0, double 42.1, double 42.2>, 3238 metadata !"round.dynamic", 3239 metadata !"fpexcept.strict") #1 3240 ret <3 x double> %exp 3241} 3242 3243define <4 x double> @constrained_vector_exp_v4f64() #0 { 3244; PC64LE-LABEL: constrained_vector_exp_v4f64: 3245; PC64LE: # %bb.0: # %entry 3246; PC64LE-NEXT: mflr 0 3247; PC64LE-NEXT: std 0, 16(1) 3248; PC64LE-NEXT: stdu 1, -80(1) 3249; PC64LE-NEXT: li 3, 64 3250; PC64LE-NEXT: stxvd2x 63, 1, 3 # 16-byte Folded Spill 3251; PC64LE-NEXT: addis 3, 2, .LCPI54_0@toc@ha 3252; PC64LE-NEXT: lfd 1, .LCPI54_0@toc@l(3) 3253; PC64LE-NEXT: bl exp 3254; PC64LE-NEXT: nop 3255; PC64LE-NEXT: li 3, 48 3256; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 3257; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 3258; PC64LE-NEXT: addis 3, 2, .LCPI54_1@toc@ha 3259; PC64LE-NEXT: lfd 1, .LCPI54_1@toc@l(3) 3260; PC64LE-NEXT: bl exp 3261; PC64LE-NEXT: nop 3262; PC64LE-NEXT: li 3, 48 3263; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 3264; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 3265; PC64LE-NEXT: addis 3, 2, .LCPI54_2@toc@ha 3266; PC64LE-NEXT: xxmrghd 63, 1, 0 3267; PC64LE-NEXT: lfd 1, .LCPI54_2@toc@l(3) 3268; PC64LE-NEXT: bl exp 3269; PC64LE-NEXT: nop 3270; PC64LE-NEXT: li 3, 48 3271; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 3272; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 3273; PC64LE-NEXT: addis 3, 2, .LCPI54_3@toc@ha 3274; PC64LE-NEXT: lfs 1, .LCPI54_3@toc@l(3) 3275; PC64LE-NEXT: bl exp 3276; PC64LE-NEXT: nop 3277; PC64LE-NEXT: li 3, 48 3278; PC64LE-NEXT: vmr 3, 31 3279; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 3280; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 3281; PC64LE-NEXT: li 3, 64 3282; PC64LE-NEXT: lxvd2x 63, 1, 3 # 16-byte Folded Reload 3283; PC64LE-NEXT: xxmrghd 34, 0, 1 3284; PC64LE-NEXT: addi 1, 1, 80 3285; PC64LE-NEXT: ld 0, 16(1) 3286; PC64LE-NEXT: mtlr 0 3287; PC64LE-NEXT: blr 3288; 3289; PC64LE9-LABEL: constrained_vector_exp_v4f64: 3290; PC64LE9: # %bb.0: # %entry 3291; PC64LE9-NEXT: mflr 0 3292; PC64LE9-NEXT: std 0, 16(1) 3293; PC64LE9-NEXT: stdu 1, -64(1) 3294; PC64LE9-NEXT: addis 3, 2, .LCPI54_0@toc@ha 3295; PC64LE9-NEXT: lfd 1, .LCPI54_0@toc@l(3) 3296; PC64LE9-NEXT: stxv 63, 48(1) # 16-byte Folded Spill 3297; PC64LE9-NEXT: bl exp 3298; PC64LE9-NEXT: nop 3299; PC64LE9-NEXT: addis 3, 2, .LCPI54_1@toc@ha 3300; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 3301; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 3302; PC64LE9-NEXT: lfd 1, .LCPI54_1@toc@l(3) 3303; PC64LE9-NEXT: bl exp 3304; PC64LE9-NEXT: nop 3305; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 3306; PC64LE9-NEXT: addis 3, 2, .LCPI54_2@toc@ha 3307; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 3308; PC64LE9-NEXT: xxmrghd 63, 1, 0 3309; PC64LE9-NEXT: lfd 1, .LCPI54_2@toc@l(3) 3310; PC64LE9-NEXT: bl exp 3311; PC64LE9-NEXT: nop 3312; PC64LE9-NEXT: addis 3, 2, .LCPI54_3@toc@ha 3313; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 3314; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 3315; PC64LE9-NEXT: lfs 1, .LCPI54_3@toc@l(3) 3316; PC64LE9-NEXT: bl exp 3317; PC64LE9-NEXT: nop 3318; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 3319; PC64LE9-NEXT: vmr 3, 31 3320; PC64LE9-NEXT: lxv 63, 48(1) # 16-byte Folded Reload 3321; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 3322; PC64LE9-NEXT: xxmrghd 34, 0, 1 3323; PC64LE9-NEXT: addi 1, 1, 64 3324; PC64LE9-NEXT: ld 0, 16(1) 3325; PC64LE9-NEXT: mtlr 0 3326; PC64LE9-NEXT: blr 3327entry: 3328 %exp = call <4 x double> @llvm.experimental.constrained.exp.v4f64( 3329 <4 x double> <double 42.0, double 42.1, 3330 double 42.2, double 42.3>, 3331 metadata !"round.dynamic", 3332 metadata !"fpexcept.strict") #1 3333 ret <4 x double> %exp 3334} 3335 3336define <1 x float> @constrained_vector_exp2_v1f32() #0 { 3337; PC64LE-LABEL: constrained_vector_exp2_v1f32: 3338; PC64LE: # %bb.0: # %entry 3339; PC64LE-NEXT: mflr 0 3340; PC64LE-NEXT: std 0, 16(1) 3341; PC64LE-NEXT: stdu 1, -32(1) 3342; PC64LE-NEXT: addis 3, 2, .LCPI55_0@toc@ha 3343; PC64LE-NEXT: lfs 1, .LCPI55_0@toc@l(3) 3344; PC64LE-NEXT: bl exp2f 3345; PC64LE-NEXT: nop 3346; PC64LE-NEXT: xscvdpspn 0, 1 3347; PC64LE-NEXT: xxsldwi 34, 0, 0, 1 3348; PC64LE-NEXT: addi 1, 1, 32 3349; PC64LE-NEXT: ld 0, 16(1) 3350; PC64LE-NEXT: mtlr 0 3351; PC64LE-NEXT: blr 3352; 3353; PC64LE9-LABEL: constrained_vector_exp2_v1f32: 3354; PC64LE9: # %bb.0: # %entry 3355; PC64LE9-NEXT: mflr 0 3356; PC64LE9-NEXT: std 0, 16(1) 3357; PC64LE9-NEXT: stdu 1, -32(1) 3358; PC64LE9-NEXT: addis 3, 2, .LCPI55_0@toc@ha 3359; PC64LE9-NEXT: lfs 1, .LCPI55_0@toc@l(3) 3360; PC64LE9-NEXT: bl exp2f 3361; PC64LE9-NEXT: nop 3362; PC64LE9-NEXT: xscvdpspn 0, 1 3363; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 3364; PC64LE9-NEXT: addi 1, 1, 32 3365; PC64LE9-NEXT: ld 0, 16(1) 3366; PC64LE9-NEXT: mtlr 0 3367; PC64LE9-NEXT: blr 3368entry: 3369 %exp2 = call <1 x float> @llvm.experimental.constrained.exp2.v1f32( 3370 <1 x float> <float 42.0>, 3371 metadata !"round.dynamic", 3372 metadata !"fpexcept.strict") #1 3373 ret <1 x float> %exp2 3374} 3375 3376define <2 x double> @constrained_vector_exp2_v2f64() #0 { 3377; PC64LE-LABEL: constrained_vector_exp2_v2f64: 3378; PC64LE: # %bb.0: # %entry 3379; PC64LE-NEXT: mflr 0 3380; PC64LE-NEXT: std 0, 16(1) 3381; PC64LE-NEXT: stdu 1, -64(1) 3382; PC64LE-NEXT: addis 3, 2, .LCPI56_0@toc@ha 3383; PC64LE-NEXT: lfd 1, .LCPI56_0@toc@l(3) 3384; PC64LE-NEXT: bl exp2 3385; PC64LE-NEXT: nop 3386; PC64LE-NEXT: li 3, 48 3387; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 3388; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 3389; PC64LE-NEXT: addis 3, 2, .LCPI56_1@toc@ha 3390; PC64LE-NEXT: lfs 1, .LCPI56_1@toc@l(3) 3391; PC64LE-NEXT: bl exp2 3392; PC64LE-NEXT: nop 3393; PC64LE-NEXT: li 3, 48 3394; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 3395; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 3396; PC64LE-NEXT: xxmrghd 34, 1, 0 3397; PC64LE-NEXT: addi 1, 1, 64 3398; PC64LE-NEXT: ld 0, 16(1) 3399; PC64LE-NEXT: mtlr 0 3400; PC64LE-NEXT: blr 3401; 3402; PC64LE9-LABEL: constrained_vector_exp2_v2f64: 3403; PC64LE9: # %bb.0: # %entry 3404; PC64LE9-NEXT: mflr 0 3405; PC64LE9-NEXT: std 0, 16(1) 3406; PC64LE9-NEXT: stdu 1, -48(1) 3407; PC64LE9-NEXT: addis 3, 2, .LCPI56_0@toc@ha 3408; PC64LE9-NEXT: lfd 1, .LCPI56_0@toc@l(3) 3409; PC64LE9-NEXT: bl exp2 3410; PC64LE9-NEXT: nop 3411; PC64LE9-NEXT: addis 3, 2, .LCPI56_1@toc@ha 3412; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 3413; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 3414; PC64LE9-NEXT: lfs 1, .LCPI56_1@toc@l(3) 3415; PC64LE9-NEXT: bl exp2 3416; PC64LE9-NEXT: nop 3417; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 3418; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 3419; PC64LE9-NEXT: xxmrghd 34, 1, 0 3420; PC64LE9-NEXT: addi 1, 1, 48 3421; PC64LE9-NEXT: ld 0, 16(1) 3422; PC64LE9-NEXT: mtlr 0 3423; PC64LE9-NEXT: blr 3424entry: 3425 %exp2 = call <2 x double> @llvm.experimental.constrained.exp2.v2f64( 3426 <2 x double> <double 42.1, double 42.0>, 3427 metadata !"round.dynamic", 3428 metadata !"fpexcept.strict") #1 3429 ret <2 x double> %exp2 3430} 3431 3432define <3 x float> @constrained_vector_exp2_v3f32() #0 { 3433; PC64LE-LABEL: constrained_vector_exp2_v3f32: 3434; PC64LE: # %bb.0: # %entry 3435; PC64LE-NEXT: mflr 0 3436; PC64LE-NEXT: stfd 30, -16(1) # 8-byte Folded Spill 3437; PC64LE-NEXT: stfd 31, -8(1) # 8-byte Folded Spill 3438; PC64LE-NEXT: std 0, 16(1) 3439; PC64LE-NEXT: stdu 1, -48(1) 3440; PC64LE-NEXT: addis 3, 2, .LCPI57_0@toc@ha 3441; PC64LE-NEXT: lfs 1, .LCPI57_0@toc@l(3) 3442; PC64LE-NEXT: bl exp2f 3443; PC64LE-NEXT: nop 3444; PC64LE-NEXT: addis 3, 2, .LCPI57_1@toc@ha 3445; PC64LE-NEXT: fmr 31, 1 3446; PC64LE-NEXT: lfs 1, .LCPI57_1@toc@l(3) 3447; PC64LE-NEXT: bl exp2f 3448; PC64LE-NEXT: nop 3449; PC64LE-NEXT: addis 3, 2, .LCPI57_2@toc@ha 3450; PC64LE-NEXT: fmr 30, 1 3451; PC64LE-NEXT: lfs 1, .LCPI57_2@toc@l(3) 3452; PC64LE-NEXT: bl exp2f 3453; PC64LE-NEXT: nop 3454; PC64LE-NEXT: xscvdpspn 0, 30 3455; PC64LE-NEXT: addis 3, 2, .LCPI57_3@toc@ha 3456; PC64LE-NEXT: xscvdpspn 1, 1 3457; PC64LE-NEXT: addi 3, 3, .LCPI57_3@toc@l 3458; PC64LE-NEXT: xxsldwi 34, 0, 0, 1 3459; PC64LE-NEXT: xscvdpspn 0, 31 3460; PC64LE-NEXT: xxsldwi 35, 1, 1, 1 3461; PC64LE-NEXT: vmrglw 2, 2, 3 3462; PC64LE-NEXT: lvx 3, 0, 3 3463; PC64LE-NEXT: xxsldwi 36, 0, 0, 1 3464; PC64LE-NEXT: vperm 2, 4, 2, 3 3465; PC64LE-NEXT: addi 1, 1, 48 3466; PC64LE-NEXT: ld 0, 16(1) 3467; PC64LE-NEXT: lfd 31, -8(1) # 8-byte Folded Reload 3468; PC64LE-NEXT: lfd 30, -16(1) # 8-byte Folded Reload 3469; PC64LE-NEXT: mtlr 0 3470; PC64LE-NEXT: blr 3471; 3472; PC64LE9-LABEL: constrained_vector_exp2_v3f32: 3473; PC64LE9: # %bb.0: # %entry 3474; PC64LE9-NEXT: mflr 0 3475; PC64LE9-NEXT: stfd 30, -16(1) # 8-byte Folded Spill 3476; PC64LE9-NEXT: stfd 31, -8(1) # 8-byte Folded Spill 3477; PC64LE9-NEXT: std 0, 16(1) 3478; PC64LE9-NEXT: stdu 1, -48(1) 3479; PC64LE9-NEXT: addis 3, 2, .LCPI57_0@toc@ha 3480; PC64LE9-NEXT: lfs 1, .LCPI57_0@toc@l(3) 3481; PC64LE9-NEXT: bl exp2f 3482; PC64LE9-NEXT: nop 3483; PC64LE9-NEXT: addis 3, 2, .LCPI57_1@toc@ha 3484; PC64LE9-NEXT: fmr 31, 1 3485; PC64LE9-NEXT: lfs 1, .LCPI57_1@toc@l(3) 3486; PC64LE9-NEXT: bl exp2f 3487; PC64LE9-NEXT: nop 3488; PC64LE9-NEXT: addis 3, 2, .LCPI57_2@toc@ha 3489; PC64LE9-NEXT: fmr 30, 1 3490; PC64LE9-NEXT: lfs 1, .LCPI57_2@toc@l(3) 3491; PC64LE9-NEXT: bl exp2f 3492; PC64LE9-NEXT: nop 3493; PC64LE9-NEXT: xscvdpspn 0, 1 3494; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 3495; PC64LE9-NEXT: xscvdpspn 0, 30 3496; PC64LE9-NEXT: xxsldwi 35, 0, 0, 1 3497; PC64LE9-NEXT: xscvdpspn 0, 31 3498; PC64LE9-NEXT: addis 3, 2, .LCPI57_3@toc@ha 3499; PC64LE9-NEXT: addi 3, 3, .LCPI57_3@toc@l 3500; PC64LE9-NEXT: vmrglw 2, 3, 2 3501; PC64LE9-NEXT: lxvx 35, 0, 3 3502; PC64LE9-NEXT: xxsldwi 36, 0, 0, 1 3503; PC64LE9-NEXT: vperm 2, 4, 2, 3 3504; PC64LE9-NEXT: addi 1, 1, 48 3505; PC64LE9-NEXT: ld 0, 16(1) 3506; PC64LE9-NEXT: lfd 31, -8(1) # 8-byte Folded Reload 3507; PC64LE9-NEXT: lfd 30, -16(1) # 8-byte Folded Reload 3508; PC64LE9-NEXT: mtlr 0 3509; PC64LE9-NEXT: blr 3510entry: 3511 %exp2 = call <3 x float> @llvm.experimental.constrained.exp2.v3f32( 3512 <3 x float> <float 42.0, float 43.0, float 44.0>, 3513 metadata !"round.dynamic", 3514 metadata !"fpexcept.strict") #1 3515 ret <3 x float> %exp2 3516} 3517 3518define <3 x double> @constrained_vector_exp2_v3f64() #0 { 3519; PC64LE-LABEL: constrained_vector_exp2_v3f64: 3520; PC64LE: # %bb.0: # %entry 3521; PC64LE-NEXT: mflr 0 3522; PC64LE-NEXT: std 0, 16(1) 3523; PC64LE-NEXT: stdu 1, -80(1) 3524; PC64LE-NEXT: li 3, 64 3525; PC64LE-NEXT: stxvd2x 63, 1, 3 # 16-byte Folded Spill 3526; PC64LE-NEXT: addis 3, 2, .LCPI58_0@toc@ha 3527; PC64LE-NEXT: lfd 1, .LCPI58_0@toc@l(3) 3528; PC64LE-NEXT: bl exp2 3529; PC64LE-NEXT: nop 3530; PC64LE-NEXT: li 3, 48 3531; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 3532; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 3533; PC64LE-NEXT: addis 3, 2, .LCPI58_1@toc@ha 3534; PC64LE-NEXT: lfs 1, .LCPI58_1@toc@l(3) 3535; PC64LE-NEXT: bl exp2 3536; PC64LE-NEXT: nop 3537; PC64LE-NEXT: li 3, 48 3538; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 3539; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 3540; PC64LE-NEXT: addis 3, 2, .LCPI58_2@toc@ha 3541; PC64LE-NEXT: xxmrghd 63, 0, 1 3542; PC64LE-NEXT: lfd 1, .LCPI58_2@toc@l(3) 3543; PC64LE-NEXT: bl exp2 3544; PC64LE-NEXT: nop 3545; PC64LE-NEXT: xxswapd 0, 63 3546; PC64LE-NEXT: li 3, 64 3547; PC64LE-NEXT: xxlor 2, 63, 63 3548; PC64LE-NEXT: lxvd2x 63, 1, 3 # 16-byte Folded Reload 3549; PC64LE-NEXT: fmr 3, 1 3550; PC64LE-NEXT: fmr 1, 0 3551; PC64LE-NEXT: addi 1, 1, 80 3552; PC64LE-NEXT: ld 0, 16(1) 3553; PC64LE-NEXT: mtlr 0 3554; PC64LE-NEXT: blr 3555; 3556; PC64LE9-LABEL: constrained_vector_exp2_v3f64: 3557; PC64LE9: # %bb.0: # %entry 3558; PC64LE9-NEXT: mflr 0 3559; PC64LE9-NEXT: std 0, 16(1) 3560; PC64LE9-NEXT: stdu 1, -64(1) 3561; PC64LE9-NEXT: addis 3, 2, .LCPI58_0@toc@ha 3562; PC64LE9-NEXT: lfd 1, .LCPI58_0@toc@l(3) 3563; PC64LE9-NEXT: stxv 63, 48(1) # 16-byte Folded Spill 3564; PC64LE9-NEXT: bl exp2 3565; PC64LE9-NEXT: nop 3566; PC64LE9-NEXT: addis 3, 2, .LCPI58_1@toc@ha 3567; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 3568; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 3569; PC64LE9-NEXT: lfs 1, .LCPI58_1@toc@l(3) 3570; PC64LE9-NEXT: bl exp2 3571; PC64LE9-NEXT: nop 3572; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 3573; PC64LE9-NEXT: addis 3, 2, .LCPI58_2@toc@ha 3574; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 3575; PC64LE9-NEXT: xxmrghd 63, 0, 1 3576; PC64LE9-NEXT: lfd 1, .LCPI58_2@toc@l(3) 3577; PC64LE9-NEXT: bl exp2 3578; PC64LE9-NEXT: nop 3579; PC64LE9-NEXT: fmr 3, 1 3580; PC64LE9-NEXT: xxswapd 1, 63 3581; PC64LE9-NEXT: xscpsgndp 2, 63, 63 3582; PC64LE9-NEXT: lxv 63, 48(1) # 16-byte Folded Reload 3583; PC64LE9-NEXT: # kill: def $f1 killed $f1 killed $vsl1 3584; PC64LE9-NEXT: addi 1, 1, 64 3585; PC64LE9-NEXT: ld 0, 16(1) 3586; PC64LE9-NEXT: mtlr 0 3587; PC64LE9-NEXT: blr 3588entry: 3589 %exp2 = call <3 x double> @llvm.experimental.constrained.exp2.v3f64( 3590 <3 x double> <double 42.0, double 42.1, double 42.2>, 3591 metadata !"round.dynamic", 3592 metadata !"fpexcept.strict") #1 3593 ret <3 x double> %exp2 3594} 3595 3596define <4 x double> @constrained_vector_exp2_v4f64() #0 { 3597; PC64LE-LABEL: constrained_vector_exp2_v4f64: 3598; PC64LE: # %bb.0: # %entry 3599; PC64LE-NEXT: mflr 0 3600; PC64LE-NEXT: std 0, 16(1) 3601; PC64LE-NEXT: stdu 1, -80(1) 3602; PC64LE-NEXT: li 3, 64 3603; PC64LE-NEXT: stxvd2x 63, 1, 3 # 16-byte Folded Spill 3604; PC64LE-NEXT: addis 3, 2, .LCPI59_0@toc@ha 3605; PC64LE-NEXT: lfd 1, .LCPI59_0@toc@l(3) 3606; PC64LE-NEXT: bl exp2 3607; PC64LE-NEXT: nop 3608; PC64LE-NEXT: li 3, 48 3609; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 3610; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 3611; PC64LE-NEXT: addis 3, 2, .LCPI59_1@toc@ha 3612; PC64LE-NEXT: lfd 1, .LCPI59_1@toc@l(3) 3613; PC64LE-NEXT: bl exp2 3614; PC64LE-NEXT: nop 3615; PC64LE-NEXT: li 3, 48 3616; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 3617; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 3618; PC64LE-NEXT: addis 3, 2, .LCPI59_2@toc@ha 3619; PC64LE-NEXT: xxmrghd 63, 1, 0 3620; PC64LE-NEXT: lfd 1, .LCPI59_2@toc@l(3) 3621; PC64LE-NEXT: bl exp2 3622; PC64LE-NEXT: nop 3623; PC64LE-NEXT: li 3, 48 3624; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 3625; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 3626; PC64LE-NEXT: addis 3, 2, .LCPI59_3@toc@ha 3627; PC64LE-NEXT: lfd 1, .LCPI59_3@toc@l(3) 3628; PC64LE-NEXT: bl exp2 3629; PC64LE-NEXT: nop 3630; PC64LE-NEXT: li 3, 48 3631; PC64LE-NEXT: vmr 2, 31 3632; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 3633; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 3634; PC64LE-NEXT: li 3, 64 3635; PC64LE-NEXT: lxvd2x 63, 1, 3 # 16-byte Folded Reload 3636; PC64LE-NEXT: xxmrghd 35, 1, 0 3637; PC64LE-NEXT: addi 1, 1, 80 3638; PC64LE-NEXT: ld 0, 16(1) 3639; PC64LE-NEXT: mtlr 0 3640; PC64LE-NEXT: blr 3641; 3642; PC64LE9-LABEL: constrained_vector_exp2_v4f64: 3643; PC64LE9: # %bb.0: # %entry 3644; PC64LE9-NEXT: mflr 0 3645; PC64LE9-NEXT: std 0, 16(1) 3646; PC64LE9-NEXT: stdu 1, -64(1) 3647; PC64LE9-NEXT: addis 3, 2, .LCPI59_0@toc@ha 3648; PC64LE9-NEXT: lfd 1, .LCPI59_0@toc@l(3) 3649; PC64LE9-NEXT: stxv 63, 48(1) # 16-byte Folded Spill 3650; PC64LE9-NEXT: bl exp2 3651; PC64LE9-NEXT: nop 3652; PC64LE9-NEXT: addis 3, 2, .LCPI59_1@toc@ha 3653; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 3654; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 3655; PC64LE9-NEXT: lfd 1, .LCPI59_1@toc@l(3) 3656; PC64LE9-NEXT: bl exp2 3657; PC64LE9-NEXT: nop 3658; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 3659; PC64LE9-NEXT: addis 3, 2, .LCPI59_2@toc@ha 3660; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 3661; PC64LE9-NEXT: xxmrghd 63, 1, 0 3662; PC64LE9-NEXT: lfd 1, .LCPI59_2@toc@l(3) 3663; PC64LE9-NEXT: bl exp2 3664; PC64LE9-NEXT: nop 3665; PC64LE9-NEXT: addis 3, 2, .LCPI59_3@toc@ha 3666; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 3667; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 3668; PC64LE9-NEXT: lfd 1, .LCPI59_3@toc@l(3) 3669; PC64LE9-NEXT: bl exp2 3670; PC64LE9-NEXT: nop 3671; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 3672; PC64LE9-NEXT: vmr 2, 31 3673; PC64LE9-NEXT: lxv 63, 48(1) # 16-byte Folded Reload 3674; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 3675; PC64LE9-NEXT: xxmrghd 35, 1, 0 3676; PC64LE9-NEXT: addi 1, 1, 64 3677; PC64LE9-NEXT: ld 0, 16(1) 3678; PC64LE9-NEXT: mtlr 0 3679; PC64LE9-NEXT: blr 3680entry: 3681 %exp2 = call <4 x double> @llvm.experimental.constrained.exp2.v4f64( 3682 <4 x double> <double 42.1, double 42.2, 3683 double 42.3, double 42.4>, 3684 metadata !"round.dynamic", 3685 metadata !"fpexcept.strict") #1 3686 ret <4 x double> %exp2 3687} 3688 3689define <1 x float> @constrained_vector_log_v1f32() #0 { 3690; PC64LE-LABEL: constrained_vector_log_v1f32: 3691; PC64LE: # %bb.0: # %entry 3692; PC64LE-NEXT: mflr 0 3693; PC64LE-NEXT: std 0, 16(1) 3694; PC64LE-NEXT: stdu 1, -32(1) 3695; PC64LE-NEXT: addis 3, 2, .LCPI60_0@toc@ha 3696; PC64LE-NEXT: lfs 1, .LCPI60_0@toc@l(3) 3697; PC64LE-NEXT: bl logf 3698; PC64LE-NEXT: nop 3699; PC64LE-NEXT: xscvdpspn 0, 1 3700; PC64LE-NEXT: xxsldwi 34, 0, 0, 1 3701; PC64LE-NEXT: addi 1, 1, 32 3702; PC64LE-NEXT: ld 0, 16(1) 3703; PC64LE-NEXT: mtlr 0 3704; PC64LE-NEXT: blr 3705; 3706; PC64LE9-LABEL: constrained_vector_log_v1f32: 3707; PC64LE9: # %bb.0: # %entry 3708; PC64LE9-NEXT: mflr 0 3709; PC64LE9-NEXT: std 0, 16(1) 3710; PC64LE9-NEXT: stdu 1, -32(1) 3711; PC64LE9-NEXT: addis 3, 2, .LCPI60_0@toc@ha 3712; PC64LE9-NEXT: lfs 1, .LCPI60_0@toc@l(3) 3713; PC64LE9-NEXT: bl logf 3714; PC64LE9-NEXT: nop 3715; PC64LE9-NEXT: xscvdpspn 0, 1 3716; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 3717; PC64LE9-NEXT: addi 1, 1, 32 3718; PC64LE9-NEXT: ld 0, 16(1) 3719; PC64LE9-NEXT: mtlr 0 3720; PC64LE9-NEXT: blr 3721entry: 3722 %log = call <1 x float> @llvm.experimental.constrained.log.v1f32( 3723 <1 x float> <float 42.0>, 3724 metadata !"round.dynamic", 3725 metadata !"fpexcept.strict") #1 3726 ret <1 x float> %log 3727} 3728 3729define <2 x double> @constrained_vector_log_v2f64() #0 { 3730; PC64LE-LABEL: constrained_vector_log_v2f64: 3731; PC64LE: # %bb.0: # %entry 3732; PC64LE-NEXT: mflr 0 3733; PC64LE-NEXT: std 0, 16(1) 3734; PC64LE-NEXT: stdu 1, -64(1) 3735; PC64LE-NEXT: addis 3, 2, .LCPI61_0@toc@ha 3736; PC64LE-NEXT: lfd 1, .LCPI61_0@toc@l(3) 3737; PC64LE-NEXT: bl log 3738; PC64LE-NEXT: nop 3739; PC64LE-NEXT: li 3, 48 3740; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 3741; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 3742; PC64LE-NEXT: addis 3, 2, .LCPI61_1@toc@ha 3743; PC64LE-NEXT: lfs 1, .LCPI61_1@toc@l(3) 3744; PC64LE-NEXT: bl log 3745; PC64LE-NEXT: nop 3746; PC64LE-NEXT: li 3, 48 3747; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 3748; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 3749; PC64LE-NEXT: xxmrghd 34, 0, 1 3750; PC64LE-NEXT: addi 1, 1, 64 3751; PC64LE-NEXT: ld 0, 16(1) 3752; PC64LE-NEXT: mtlr 0 3753; PC64LE-NEXT: blr 3754; 3755; PC64LE9-LABEL: constrained_vector_log_v2f64: 3756; PC64LE9: # %bb.0: # %entry 3757; PC64LE9-NEXT: mflr 0 3758; PC64LE9-NEXT: std 0, 16(1) 3759; PC64LE9-NEXT: stdu 1, -48(1) 3760; PC64LE9-NEXT: addis 3, 2, .LCPI61_0@toc@ha 3761; PC64LE9-NEXT: lfd 1, .LCPI61_0@toc@l(3) 3762; PC64LE9-NEXT: bl log 3763; PC64LE9-NEXT: nop 3764; PC64LE9-NEXT: addis 3, 2, .LCPI61_1@toc@ha 3765; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 3766; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 3767; PC64LE9-NEXT: lfs 1, .LCPI61_1@toc@l(3) 3768; PC64LE9-NEXT: bl log 3769; PC64LE9-NEXT: nop 3770; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 3771; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 3772; PC64LE9-NEXT: xxmrghd 34, 0, 1 3773; PC64LE9-NEXT: addi 1, 1, 48 3774; PC64LE9-NEXT: ld 0, 16(1) 3775; PC64LE9-NEXT: mtlr 0 3776; PC64LE9-NEXT: blr 3777entry: 3778 %log = call <2 x double> @llvm.experimental.constrained.log.v2f64( 3779 <2 x double> <double 42.0, double 42.1>, 3780 metadata !"round.dynamic", 3781 metadata !"fpexcept.strict") #1 3782 ret <2 x double> %log 3783} 3784 3785define <3 x float> @constrained_vector_log_v3f32() #0 { 3786; PC64LE-LABEL: constrained_vector_log_v3f32: 3787; PC64LE: # %bb.0: # %entry 3788; PC64LE-NEXT: mflr 0 3789; PC64LE-NEXT: stfd 30, -16(1) # 8-byte Folded Spill 3790; PC64LE-NEXT: stfd 31, -8(1) # 8-byte Folded Spill 3791; PC64LE-NEXT: std 0, 16(1) 3792; PC64LE-NEXT: stdu 1, -48(1) 3793; PC64LE-NEXT: addis 3, 2, .LCPI62_0@toc@ha 3794; PC64LE-NEXT: lfs 1, .LCPI62_0@toc@l(3) 3795; PC64LE-NEXT: bl logf 3796; PC64LE-NEXT: nop 3797; PC64LE-NEXT: addis 3, 2, .LCPI62_1@toc@ha 3798; PC64LE-NEXT: fmr 31, 1 3799; PC64LE-NEXT: lfs 1, .LCPI62_1@toc@l(3) 3800; PC64LE-NEXT: bl logf 3801; PC64LE-NEXT: nop 3802; PC64LE-NEXT: addis 3, 2, .LCPI62_2@toc@ha 3803; PC64LE-NEXT: fmr 30, 1 3804; PC64LE-NEXT: lfs 1, .LCPI62_2@toc@l(3) 3805; PC64LE-NEXT: bl logf 3806; PC64LE-NEXT: nop 3807; PC64LE-NEXT: xscvdpspn 0, 30 3808; PC64LE-NEXT: addis 3, 2, .LCPI62_3@toc@ha 3809; PC64LE-NEXT: xscvdpspn 1, 1 3810; PC64LE-NEXT: addi 3, 3, .LCPI62_3@toc@l 3811; PC64LE-NEXT: xxsldwi 34, 0, 0, 1 3812; PC64LE-NEXT: xscvdpspn 0, 31 3813; PC64LE-NEXT: xxsldwi 35, 1, 1, 1 3814; PC64LE-NEXT: vmrglw 2, 2, 3 3815; PC64LE-NEXT: lvx 3, 0, 3 3816; PC64LE-NEXT: xxsldwi 36, 0, 0, 1 3817; PC64LE-NEXT: vperm 2, 4, 2, 3 3818; PC64LE-NEXT: addi 1, 1, 48 3819; PC64LE-NEXT: ld 0, 16(1) 3820; PC64LE-NEXT: lfd 31, -8(1) # 8-byte Folded Reload 3821; PC64LE-NEXT: lfd 30, -16(1) # 8-byte Folded Reload 3822; PC64LE-NEXT: mtlr 0 3823; PC64LE-NEXT: blr 3824; 3825; PC64LE9-LABEL: constrained_vector_log_v3f32: 3826; PC64LE9: # %bb.0: # %entry 3827; PC64LE9-NEXT: mflr 0 3828; PC64LE9-NEXT: stfd 30, -16(1) # 8-byte Folded Spill 3829; PC64LE9-NEXT: stfd 31, -8(1) # 8-byte Folded Spill 3830; PC64LE9-NEXT: std 0, 16(1) 3831; PC64LE9-NEXT: stdu 1, -48(1) 3832; PC64LE9-NEXT: addis 3, 2, .LCPI62_0@toc@ha 3833; PC64LE9-NEXT: lfs 1, .LCPI62_0@toc@l(3) 3834; PC64LE9-NEXT: bl logf 3835; PC64LE9-NEXT: nop 3836; PC64LE9-NEXT: addis 3, 2, .LCPI62_1@toc@ha 3837; PC64LE9-NEXT: fmr 31, 1 3838; PC64LE9-NEXT: lfs 1, .LCPI62_1@toc@l(3) 3839; PC64LE9-NEXT: bl logf 3840; PC64LE9-NEXT: nop 3841; PC64LE9-NEXT: addis 3, 2, .LCPI62_2@toc@ha 3842; PC64LE9-NEXT: fmr 30, 1 3843; PC64LE9-NEXT: lfs 1, .LCPI62_2@toc@l(3) 3844; PC64LE9-NEXT: bl logf 3845; PC64LE9-NEXT: nop 3846; PC64LE9-NEXT: xscvdpspn 0, 1 3847; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 3848; PC64LE9-NEXT: xscvdpspn 0, 30 3849; PC64LE9-NEXT: xxsldwi 35, 0, 0, 1 3850; PC64LE9-NEXT: xscvdpspn 0, 31 3851; PC64LE9-NEXT: addis 3, 2, .LCPI62_3@toc@ha 3852; PC64LE9-NEXT: addi 3, 3, .LCPI62_3@toc@l 3853; PC64LE9-NEXT: vmrglw 2, 3, 2 3854; PC64LE9-NEXT: lxvx 35, 0, 3 3855; PC64LE9-NEXT: xxsldwi 36, 0, 0, 1 3856; PC64LE9-NEXT: vperm 2, 4, 2, 3 3857; PC64LE9-NEXT: addi 1, 1, 48 3858; PC64LE9-NEXT: ld 0, 16(1) 3859; PC64LE9-NEXT: lfd 31, -8(1) # 8-byte Folded Reload 3860; PC64LE9-NEXT: lfd 30, -16(1) # 8-byte Folded Reload 3861; PC64LE9-NEXT: mtlr 0 3862; PC64LE9-NEXT: blr 3863entry: 3864 %log = call <3 x float> @llvm.experimental.constrained.log.v3f32( 3865 <3 x float> <float 42.0, float 43.0, float 44.0>, 3866 metadata !"round.dynamic", 3867 metadata !"fpexcept.strict") #1 3868 ret <3 x float> %log 3869} 3870 3871define <3 x double> @constrained_vector_log_v3f64() #0 { 3872; PC64LE-LABEL: constrained_vector_log_v3f64: 3873; PC64LE: # %bb.0: # %entry 3874; PC64LE-NEXT: mflr 0 3875; PC64LE-NEXT: std 0, 16(1) 3876; PC64LE-NEXT: stdu 1, -80(1) 3877; PC64LE-NEXT: li 3, 64 3878; PC64LE-NEXT: stxvd2x 63, 1, 3 # 16-byte Folded Spill 3879; PC64LE-NEXT: addis 3, 2, .LCPI63_0@toc@ha 3880; PC64LE-NEXT: lfd 1, .LCPI63_0@toc@l(3) 3881; PC64LE-NEXT: bl log 3882; PC64LE-NEXT: nop 3883; PC64LE-NEXT: li 3, 48 3884; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 3885; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 3886; PC64LE-NEXT: addis 3, 2, .LCPI63_1@toc@ha 3887; PC64LE-NEXT: lfs 1, .LCPI63_1@toc@l(3) 3888; PC64LE-NEXT: bl log 3889; PC64LE-NEXT: nop 3890; PC64LE-NEXT: li 3, 48 3891; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 3892; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 3893; PC64LE-NEXT: addis 3, 2, .LCPI63_2@toc@ha 3894; PC64LE-NEXT: xxmrghd 63, 0, 1 3895; PC64LE-NEXT: lfd 1, .LCPI63_2@toc@l(3) 3896; PC64LE-NEXT: bl log 3897; PC64LE-NEXT: nop 3898; PC64LE-NEXT: xxswapd 0, 63 3899; PC64LE-NEXT: li 3, 64 3900; PC64LE-NEXT: xxlor 2, 63, 63 3901; PC64LE-NEXT: lxvd2x 63, 1, 3 # 16-byte Folded Reload 3902; PC64LE-NEXT: fmr 3, 1 3903; PC64LE-NEXT: fmr 1, 0 3904; PC64LE-NEXT: addi 1, 1, 80 3905; PC64LE-NEXT: ld 0, 16(1) 3906; PC64LE-NEXT: mtlr 0 3907; PC64LE-NEXT: blr 3908; 3909; PC64LE9-LABEL: constrained_vector_log_v3f64: 3910; PC64LE9: # %bb.0: # %entry 3911; PC64LE9-NEXT: mflr 0 3912; PC64LE9-NEXT: std 0, 16(1) 3913; PC64LE9-NEXT: stdu 1, -64(1) 3914; PC64LE9-NEXT: addis 3, 2, .LCPI63_0@toc@ha 3915; PC64LE9-NEXT: lfd 1, .LCPI63_0@toc@l(3) 3916; PC64LE9-NEXT: stxv 63, 48(1) # 16-byte Folded Spill 3917; PC64LE9-NEXT: bl log 3918; PC64LE9-NEXT: nop 3919; PC64LE9-NEXT: addis 3, 2, .LCPI63_1@toc@ha 3920; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 3921; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 3922; PC64LE9-NEXT: lfs 1, .LCPI63_1@toc@l(3) 3923; PC64LE9-NEXT: bl log 3924; PC64LE9-NEXT: nop 3925; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 3926; PC64LE9-NEXT: addis 3, 2, .LCPI63_2@toc@ha 3927; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 3928; PC64LE9-NEXT: xxmrghd 63, 0, 1 3929; PC64LE9-NEXT: lfd 1, .LCPI63_2@toc@l(3) 3930; PC64LE9-NEXT: bl log 3931; PC64LE9-NEXT: nop 3932; PC64LE9-NEXT: fmr 3, 1 3933; PC64LE9-NEXT: xxswapd 1, 63 3934; PC64LE9-NEXT: xscpsgndp 2, 63, 63 3935; PC64LE9-NEXT: lxv 63, 48(1) # 16-byte Folded Reload 3936; PC64LE9-NEXT: # kill: def $f1 killed $f1 killed $vsl1 3937; PC64LE9-NEXT: addi 1, 1, 64 3938; PC64LE9-NEXT: ld 0, 16(1) 3939; PC64LE9-NEXT: mtlr 0 3940; PC64LE9-NEXT: blr 3941entry: 3942 %log = call <3 x double> @llvm.experimental.constrained.log.v3f64( 3943 <3 x double> <double 42.0, double 42.1, double 42.2>, 3944 metadata !"round.dynamic", 3945 metadata !"fpexcept.strict") #1 3946 ret <3 x double> %log 3947} 3948 3949define <4 x double> @constrained_vector_log_v4f64() #0 { 3950; PC64LE-LABEL: constrained_vector_log_v4f64: 3951; PC64LE: # %bb.0: # %entry 3952; PC64LE-NEXT: mflr 0 3953; PC64LE-NEXT: std 0, 16(1) 3954; PC64LE-NEXT: stdu 1, -80(1) 3955; PC64LE-NEXT: li 3, 64 3956; PC64LE-NEXT: stxvd2x 63, 1, 3 # 16-byte Folded Spill 3957; PC64LE-NEXT: addis 3, 2, .LCPI64_0@toc@ha 3958; PC64LE-NEXT: lfd 1, .LCPI64_0@toc@l(3) 3959; PC64LE-NEXT: bl log 3960; PC64LE-NEXT: nop 3961; PC64LE-NEXT: li 3, 48 3962; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 3963; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 3964; PC64LE-NEXT: addis 3, 2, .LCPI64_1@toc@ha 3965; PC64LE-NEXT: lfd 1, .LCPI64_1@toc@l(3) 3966; PC64LE-NEXT: bl log 3967; PC64LE-NEXT: nop 3968; PC64LE-NEXT: li 3, 48 3969; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 3970; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 3971; PC64LE-NEXT: addis 3, 2, .LCPI64_2@toc@ha 3972; PC64LE-NEXT: xxmrghd 63, 1, 0 3973; PC64LE-NEXT: lfd 1, .LCPI64_2@toc@l(3) 3974; PC64LE-NEXT: bl log 3975; PC64LE-NEXT: nop 3976; PC64LE-NEXT: li 3, 48 3977; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 3978; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 3979; PC64LE-NEXT: addis 3, 2, .LCPI64_3@toc@ha 3980; PC64LE-NEXT: lfs 1, .LCPI64_3@toc@l(3) 3981; PC64LE-NEXT: bl log 3982; PC64LE-NEXT: nop 3983; PC64LE-NEXT: li 3, 48 3984; PC64LE-NEXT: vmr 3, 31 3985; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 3986; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 3987; PC64LE-NEXT: li 3, 64 3988; PC64LE-NEXT: lxvd2x 63, 1, 3 # 16-byte Folded Reload 3989; PC64LE-NEXT: xxmrghd 34, 0, 1 3990; PC64LE-NEXT: addi 1, 1, 80 3991; PC64LE-NEXT: ld 0, 16(1) 3992; PC64LE-NEXT: mtlr 0 3993; PC64LE-NEXT: blr 3994; 3995; PC64LE9-LABEL: constrained_vector_log_v4f64: 3996; PC64LE9: # %bb.0: # %entry 3997; PC64LE9-NEXT: mflr 0 3998; PC64LE9-NEXT: std 0, 16(1) 3999; PC64LE9-NEXT: stdu 1, -64(1) 4000; PC64LE9-NEXT: addis 3, 2, .LCPI64_0@toc@ha 4001; PC64LE9-NEXT: lfd 1, .LCPI64_0@toc@l(3) 4002; PC64LE9-NEXT: stxv 63, 48(1) # 16-byte Folded Spill 4003; PC64LE9-NEXT: bl log 4004; PC64LE9-NEXT: nop 4005; PC64LE9-NEXT: addis 3, 2, .LCPI64_1@toc@ha 4006; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 4007; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 4008; PC64LE9-NEXT: lfd 1, .LCPI64_1@toc@l(3) 4009; PC64LE9-NEXT: bl log 4010; PC64LE9-NEXT: nop 4011; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 4012; PC64LE9-NEXT: addis 3, 2, .LCPI64_2@toc@ha 4013; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 4014; PC64LE9-NEXT: xxmrghd 63, 1, 0 4015; PC64LE9-NEXT: lfd 1, .LCPI64_2@toc@l(3) 4016; PC64LE9-NEXT: bl log 4017; PC64LE9-NEXT: nop 4018; PC64LE9-NEXT: addis 3, 2, .LCPI64_3@toc@ha 4019; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 4020; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 4021; PC64LE9-NEXT: lfs 1, .LCPI64_3@toc@l(3) 4022; PC64LE9-NEXT: bl log 4023; PC64LE9-NEXT: nop 4024; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 4025; PC64LE9-NEXT: vmr 3, 31 4026; PC64LE9-NEXT: lxv 63, 48(1) # 16-byte Folded Reload 4027; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 4028; PC64LE9-NEXT: xxmrghd 34, 0, 1 4029; PC64LE9-NEXT: addi 1, 1, 64 4030; PC64LE9-NEXT: ld 0, 16(1) 4031; PC64LE9-NEXT: mtlr 0 4032; PC64LE9-NEXT: blr 4033entry: 4034 %log = call <4 x double> @llvm.experimental.constrained.log.v4f64( 4035 <4 x double> <double 42.0, double 42.1, 4036 double 42.2, double 42.3>, 4037 metadata !"round.dynamic", 4038 metadata !"fpexcept.strict") #1 4039 ret <4 x double> %log 4040} 4041 4042define <1 x float> @constrained_vector_log10_v1f32() #0 { 4043; PC64LE-LABEL: constrained_vector_log10_v1f32: 4044; PC64LE: # %bb.0: # %entry 4045; PC64LE-NEXT: mflr 0 4046; PC64LE-NEXT: std 0, 16(1) 4047; PC64LE-NEXT: stdu 1, -32(1) 4048; PC64LE-NEXT: addis 3, 2, .LCPI65_0@toc@ha 4049; PC64LE-NEXT: lfs 1, .LCPI65_0@toc@l(3) 4050; PC64LE-NEXT: bl log10f 4051; PC64LE-NEXT: nop 4052; PC64LE-NEXT: xscvdpspn 0, 1 4053; PC64LE-NEXT: xxsldwi 34, 0, 0, 1 4054; PC64LE-NEXT: addi 1, 1, 32 4055; PC64LE-NEXT: ld 0, 16(1) 4056; PC64LE-NEXT: mtlr 0 4057; PC64LE-NEXT: blr 4058; 4059; PC64LE9-LABEL: constrained_vector_log10_v1f32: 4060; PC64LE9: # %bb.0: # %entry 4061; PC64LE9-NEXT: mflr 0 4062; PC64LE9-NEXT: std 0, 16(1) 4063; PC64LE9-NEXT: stdu 1, -32(1) 4064; PC64LE9-NEXT: addis 3, 2, .LCPI65_0@toc@ha 4065; PC64LE9-NEXT: lfs 1, .LCPI65_0@toc@l(3) 4066; PC64LE9-NEXT: bl log10f 4067; PC64LE9-NEXT: nop 4068; PC64LE9-NEXT: xscvdpspn 0, 1 4069; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 4070; PC64LE9-NEXT: addi 1, 1, 32 4071; PC64LE9-NEXT: ld 0, 16(1) 4072; PC64LE9-NEXT: mtlr 0 4073; PC64LE9-NEXT: blr 4074entry: 4075 %log10 = call <1 x float> @llvm.experimental.constrained.log10.v1f32( 4076 <1 x float> <float 42.0>, 4077 metadata !"round.dynamic", 4078 metadata !"fpexcept.strict") #1 4079 ret <1 x float> %log10 4080} 4081 4082define <2 x double> @constrained_vector_log10_v2f64() #0 { 4083; PC64LE-LABEL: constrained_vector_log10_v2f64: 4084; PC64LE: # %bb.0: # %entry 4085; PC64LE-NEXT: mflr 0 4086; PC64LE-NEXT: std 0, 16(1) 4087; PC64LE-NEXT: stdu 1, -64(1) 4088; PC64LE-NEXT: addis 3, 2, .LCPI66_0@toc@ha 4089; PC64LE-NEXT: lfd 1, .LCPI66_0@toc@l(3) 4090; PC64LE-NEXT: bl log10 4091; PC64LE-NEXT: nop 4092; PC64LE-NEXT: li 3, 48 4093; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 4094; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 4095; PC64LE-NEXT: addis 3, 2, .LCPI66_1@toc@ha 4096; PC64LE-NEXT: lfs 1, .LCPI66_1@toc@l(3) 4097; PC64LE-NEXT: bl log10 4098; PC64LE-NEXT: nop 4099; PC64LE-NEXT: li 3, 48 4100; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 4101; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 4102; PC64LE-NEXT: xxmrghd 34, 0, 1 4103; PC64LE-NEXT: addi 1, 1, 64 4104; PC64LE-NEXT: ld 0, 16(1) 4105; PC64LE-NEXT: mtlr 0 4106; PC64LE-NEXT: blr 4107; 4108; PC64LE9-LABEL: constrained_vector_log10_v2f64: 4109; PC64LE9: # %bb.0: # %entry 4110; PC64LE9-NEXT: mflr 0 4111; PC64LE9-NEXT: std 0, 16(1) 4112; PC64LE9-NEXT: stdu 1, -48(1) 4113; PC64LE9-NEXT: addis 3, 2, .LCPI66_0@toc@ha 4114; PC64LE9-NEXT: lfd 1, .LCPI66_0@toc@l(3) 4115; PC64LE9-NEXT: bl log10 4116; PC64LE9-NEXT: nop 4117; PC64LE9-NEXT: addis 3, 2, .LCPI66_1@toc@ha 4118; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 4119; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 4120; PC64LE9-NEXT: lfs 1, .LCPI66_1@toc@l(3) 4121; PC64LE9-NEXT: bl log10 4122; PC64LE9-NEXT: nop 4123; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 4124; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 4125; PC64LE9-NEXT: xxmrghd 34, 0, 1 4126; PC64LE9-NEXT: addi 1, 1, 48 4127; PC64LE9-NEXT: ld 0, 16(1) 4128; PC64LE9-NEXT: mtlr 0 4129; PC64LE9-NEXT: blr 4130entry: 4131 %log10 = call <2 x double> @llvm.experimental.constrained.log10.v2f64( 4132 <2 x double> <double 42.0, double 42.1>, 4133 metadata !"round.dynamic", 4134 metadata !"fpexcept.strict") #1 4135 ret <2 x double> %log10 4136} 4137 4138define <3 x float> @constrained_vector_log10_v3f32() #0 { 4139; PC64LE-LABEL: constrained_vector_log10_v3f32: 4140; PC64LE: # %bb.0: # %entry 4141; PC64LE-NEXT: mflr 0 4142; PC64LE-NEXT: stfd 30, -16(1) # 8-byte Folded Spill 4143; PC64LE-NEXT: stfd 31, -8(1) # 8-byte Folded Spill 4144; PC64LE-NEXT: std 0, 16(1) 4145; PC64LE-NEXT: stdu 1, -48(1) 4146; PC64LE-NEXT: addis 3, 2, .LCPI67_0@toc@ha 4147; PC64LE-NEXT: lfs 1, .LCPI67_0@toc@l(3) 4148; PC64LE-NEXT: bl log10f 4149; PC64LE-NEXT: nop 4150; PC64LE-NEXT: addis 3, 2, .LCPI67_1@toc@ha 4151; PC64LE-NEXT: fmr 31, 1 4152; PC64LE-NEXT: lfs 1, .LCPI67_1@toc@l(3) 4153; PC64LE-NEXT: bl log10f 4154; PC64LE-NEXT: nop 4155; PC64LE-NEXT: addis 3, 2, .LCPI67_2@toc@ha 4156; PC64LE-NEXT: fmr 30, 1 4157; PC64LE-NEXT: lfs 1, .LCPI67_2@toc@l(3) 4158; PC64LE-NEXT: bl log10f 4159; PC64LE-NEXT: nop 4160; PC64LE-NEXT: xscvdpspn 0, 30 4161; PC64LE-NEXT: addis 3, 2, .LCPI67_3@toc@ha 4162; PC64LE-NEXT: xscvdpspn 1, 1 4163; PC64LE-NEXT: addi 3, 3, .LCPI67_3@toc@l 4164; PC64LE-NEXT: xxsldwi 34, 0, 0, 1 4165; PC64LE-NEXT: xscvdpspn 0, 31 4166; PC64LE-NEXT: xxsldwi 35, 1, 1, 1 4167; PC64LE-NEXT: vmrglw 2, 2, 3 4168; PC64LE-NEXT: lvx 3, 0, 3 4169; PC64LE-NEXT: xxsldwi 36, 0, 0, 1 4170; PC64LE-NEXT: vperm 2, 4, 2, 3 4171; PC64LE-NEXT: addi 1, 1, 48 4172; PC64LE-NEXT: ld 0, 16(1) 4173; PC64LE-NEXT: lfd 31, -8(1) # 8-byte Folded Reload 4174; PC64LE-NEXT: lfd 30, -16(1) # 8-byte Folded Reload 4175; PC64LE-NEXT: mtlr 0 4176; PC64LE-NEXT: blr 4177; 4178; PC64LE9-LABEL: constrained_vector_log10_v3f32: 4179; PC64LE9: # %bb.0: # %entry 4180; PC64LE9-NEXT: mflr 0 4181; PC64LE9-NEXT: stfd 30, -16(1) # 8-byte Folded Spill 4182; PC64LE9-NEXT: stfd 31, -8(1) # 8-byte Folded Spill 4183; PC64LE9-NEXT: std 0, 16(1) 4184; PC64LE9-NEXT: stdu 1, -48(1) 4185; PC64LE9-NEXT: addis 3, 2, .LCPI67_0@toc@ha 4186; PC64LE9-NEXT: lfs 1, .LCPI67_0@toc@l(3) 4187; PC64LE9-NEXT: bl log10f 4188; PC64LE9-NEXT: nop 4189; PC64LE9-NEXT: addis 3, 2, .LCPI67_1@toc@ha 4190; PC64LE9-NEXT: fmr 31, 1 4191; PC64LE9-NEXT: lfs 1, .LCPI67_1@toc@l(3) 4192; PC64LE9-NEXT: bl log10f 4193; PC64LE9-NEXT: nop 4194; PC64LE9-NEXT: addis 3, 2, .LCPI67_2@toc@ha 4195; PC64LE9-NEXT: fmr 30, 1 4196; PC64LE9-NEXT: lfs 1, .LCPI67_2@toc@l(3) 4197; PC64LE9-NEXT: bl log10f 4198; PC64LE9-NEXT: nop 4199; PC64LE9-NEXT: xscvdpspn 0, 1 4200; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 4201; PC64LE9-NEXT: xscvdpspn 0, 30 4202; PC64LE9-NEXT: xxsldwi 35, 0, 0, 1 4203; PC64LE9-NEXT: xscvdpspn 0, 31 4204; PC64LE9-NEXT: addis 3, 2, .LCPI67_3@toc@ha 4205; PC64LE9-NEXT: addi 3, 3, .LCPI67_3@toc@l 4206; PC64LE9-NEXT: vmrglw 2, 3, 2 4207; PC64LE9-NEXT: lxvx 35, 0, 3 4208; PC64LE9-NEXT: xxsldwi 36, 0, 0, 1 4209; PC64LE9-NEXT: vperm 2, 4, 2, 3 4210; PC64LE9-NEXT: addi 1, 1, 48 4211; PC64LE9-NEXT: ld 0, 16(1) 4212; PC64LE9-NEXT: lfd 31, -8(1) # 8-byte Folded Reload 4213; PC64LE9-NEXT: lfd 30, -16(1) # 8-byte Folded Reload 4214; PC64LE9-NEXT: mtlr 0 4215; PC64LE9-NEXT: blr 4216entry: 4217 %log10 = call <3 x float> @llvm.experimental.constrained.log10.v3f32( 4218 <3 x float> <float 42.0, float 43.0, float 44.0>, 4219 metadata !"round.dynamic", 4220 metadata !"fpexcept.strict") #1 4221 ret <3 x float> %log10 4222} 4223 4224define <3 x double> @constrained_vector_log10_v3f64() #0 { 4225; PC64LE-LABEL: constrained_vector_log10_v3f64: 4226; PC64LE: # %bb.0: # %entry 4227; PC64LE-NEXT: mflr 0 4228; PC64LE-NEXT: std 0, 16(1) 4229; PC64LE-NEXT: stdu 1, -80(1) 4230; PC64LE-NEXT: li 3, 64 4231; PC64LE-NEXT: stxvd2x 63, 1, 3 # 16-byte Folded Spill 4232; PC64LE-NEXT: addis 3, 2, .LCPI68_0@toc@ha 4233; PC64LE-NEXT: lfd 1, .LCPI68_0@toc@l(3) 4234; PC64LE-NEXT: bl log10 4235; PC64LE-NEXT: nop 4236; PC64LE-NEXT: li 3, 48 4237; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 4238; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 4239; PC64LE-NEXT: addis 3, 2, .LCPI68_1@toc@ha 4240; PC64LE-NEXT: lfs 1, .LCPI68_1@toc@l(3) 4241; PC64LE-NEXT: bl log10 4242; PC64LE-NEXT: nop 4243; PC64LE-NEXT: li 3, 48 4244; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 4245; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 4246; PC64LE-NEXT: addis 3, 2, .LCPI68_2@toc@ha 4247; PC64LE-NEXT: xxmrghd 63, 0, 1 4248; PC64LE-NEXT: lfd 1, .LCPI68_2@toc@l(3) 4249; PC64LE-NEXT: bl log10 4250; PC64LE-NEXT: nop 4251; PC64LE-NEXT: xxswapd 0, 63 4252; PC64LE-NEXT: li 3, 64 4253; PC64LE-NEXT: xxlor 2, 63, 63 4254; PC64LE-NEXT: lxvd2x 63, 1, 3 # 16-byte Folded Reload 4255; PC64LE-NEXT: fmr 3, 1 4256; PC64LE-NEXT: fmr 1, 0 4257; PC64LE-NEXT: addi 1, 1, 80 4258; PC64LE-NEXT: ld 0, 16(1) 4259; PC64LE-NEXT: mtlr 0 4260; PC64LE-NEXT: blr 4261; 4262; PC64LE9-LABEL: constrained_vector_log10_v3f64: 4263; PC64LE9: # %bb.0: # %entry 4264; PC64LE9-NEXT: mflr 0 4265; PC64LE9-NEXT: std 0, 16(1) 4266; PC64LE9-NEXT: stdu 1, -64(1) 4267; PC64LE9-NEXT: addis 3, 2, .LCPI68_0@toc@ha 4268; PC64LE9-NEXT: lfd 1, .LCPI68_0@toc@l(3) 4269; PC64LE9-NEXT: stxv 63, 48(1) # 16-byte Folded Spill 4270; PC64LE9-NEXT: bl log10 4271; PC64LE9-NEXT: nop 4272; PC64LE9-NEXT: addis 3, 2, .LCPI68_1@toc@ha 4273; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 4274; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 4275; PC64LE9-NEXT: lfs 1, .LCPI68_1@toc@l(3) 4276; PC64LE9-NEXT: bl log10 4277; PC64LE9-NEXT: nop 4278; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 4279; PC64LE9-NEXT: addis 3, 2, .LCPI68_2@toc@ha 4280; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 4281; PC64LE9-NEXT: xxmrghd 63, 0, 1 4282; PC64LE9-NEXT: lfd 1, .LCPI68_2@toc@l(3) 4283; PC64LE9-NEXT: bl log10 4284; PC64LE9-NEXT: nop 4285; PC64LE9-NEXT: fmr 3, 1 4286; PC64LE9-NEXT: xxswapd 1, 63 4287; PC64LE9-NEXT: xscpsgndp 2, 63, 63 4288; PC64LE9-NEXT: lxv 63, 48(1) # 16-byte Folded Reload 4289; PC64LE9-NEXT: # kill: def $f1 killed $f1 killed $vsl1 4290; PC64LE9-NEXT: addi 1, 1, 64 4291; PC64LE9-NEXT: ld 0, 16(1) 4292; PC64LE9-NEXT: mtlr 0 4293; PC64LE9-NEXT: blr 4294entry: 4295 %log10 = call <3 x double> @llvm.experimental.constrained.log10.v3f64( 4296 <3 x double> <double 42.0, double 42.1, double 42.2>, 4297 metadata !"round.dynamic", 4298 metadata !"fpexcept.strict") #1 4299 ret <3 x double> %log10 4300} 4301 4302define <4 x double> @constrained_vector_log10_v4f64() #0 { 4303; PC64LE-LABEL: constrained_vector_log10_v4f64: 4304; PC64LE: # %bb.0: # %entry 4305; PC64LE-NEXT: mflr 0 4306; PC64LE-NEXT: std 0, 16(1) 4307; PC64LE-NEXT: stdu 1, -80(1) 4308; PC64LE-NEXT: li 3, 64 4309; PC64LE-NEXT: stxvd2x 63, 1, 3 # 16-byte Folded Spill 4310; PC64LE-NEXT: addis 3, 2, .LCPI69_0@toc@ha 4311; PC64LE-NEXT: lfd 1, .LCPI69_0@toc@l(3) 4312; PC64LE-NEXT: bl log10 4313; PC64LE-NEXT: nop 4314; PC64LE-NEXT: li 3, 48 4315; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 4316; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 4317; PC64LE-NEXT: addis 3, 2, .LCPI69_1@toc@ha 4318; PC64LE-NEXT: lfd 1, .LCPI69_1@toc@l(3) 4319; PC64LE-NEXT: bl log10 4320; PC64LE-NEXT: nop 4321; PC64LE-NEXT: li 3, 48 4322; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 4323; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 4324; PC64LE-NEXT: addis 3, 2, .LCPI69_2@toc@ha 4325; PC64LE-NEXT: xxmrghd 63, 1, 0 4326; PC64LE-NEXT: lfd 1, .LCPI69_2@toc@l(3) 4327; PC64LE-NEXT: bl log10 4328; PC64LE-NEXT: nop 4329; PC64LE-NEXT: li 3, 48 4330; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 4331; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 4332; PC64LE-NEXT: addis 3, 2, .LCPI69_3@toc@ha 4333; PC64LE-NEXT: lfs 1, .LCPI69_3@toc@l(3) 4334; PC64LE-NEXT: bl log10 4335; PC64LE-NEXT: nop 4336; PC64LE-NEXT: li 3, 48 4337; PC64LE-NEXT: vmr 3, 31 4338; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 4339; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 4340; PC64LE-NEXT: li 3, 64 4341; PC64LE-NEXT: lxvd2x 63, 1, 3 # 16-byte Folded Reload 4342; PC64LE-NEXT: xxmrghd 34, 0, 1 4343; PC64LE-NEXT: addi 1, 1, 80 4344; PC64LE-NEXT: ld 0, 16(1) 4345; PC64LE-NEXT: mtlr 0 4346; PC64LE-NEXT: blr 4347; 4348; PC64LE9-LABEL: constrained_vector_log10_v4f64: 4349; PC64LE9: # %bb.0: # %entry 4350; PC64LE9-NEXT: mflr 0 4351; PC64LE9-NEXT: std 0, 16(1) 4352; PC64LE9-NEXT: stdu 1, -64(1) 4353; PC64LE9-NEXT: addis 3, 2, .LCPI69_0@toc@ha 4354; PC64LE9-NEXT: lfd 1, .LCPI69_0@toc@l(3) 4355; PC64LE9-NEXT: stxv 63, 48(1) # 16-byte Folded Spill 4356; PC64LE9-NEXT: bl log10 4357; PC64LE9-NEXT: nop 4358; PC64LE9-NEXT: addis 3, 2, .LCPI69_1@toc@ha 4359; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 4360; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 4361; PC64LE9-NEXT: lfd 1, .LCPI69_1@toc@l(3) 4362; PC64LE9-NEXT: bl log10 4363; PC64LE9-NEXT: nop 4364; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 4365; PC64LE9-NEXT: addis 3, 2, .LCPI69_2@toc@ha 4366; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 4367; PC64LE9-NEXT: xxmrghd 63, 1, 0 4368; PC64LE9-NEXT: lfd 1, .LCPI69_2@toc@l(3) 4369; PC64LE9-NEXT: bl log10 4370; PC64LE9-NEXT: nop 4371; PC64LE9-NEXT: addis 3, 2, .LCPI69_3@toc@ha 4372; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 4373; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 4374; PC64LE9-NEXT: lfs 1, .LCPI69_3@toc@l(3) 4375; PC64LE9-NEXT: bl log10 4376; PC64LE9-NEXT: nop 4377; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 4378; PC64LE9-NEXT: vmr 3, 31 4379; PC64LE9-NEXT: lxv 63, 48(1) # 16-byte Folded Reload 4380; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 4381; PC64LE9-NEXT: xxmrghd 34, 0, 1 4382; PC64LE9-NEXT: addi 1, 1, 64 4383; PC64LE9-NEXT: ld 0, 16(1) 4384; PC64LE9-NEXT: mtlr 0 4385; PC64LE9-NEXT: blr 4386entry: 4387 %log10 = call <4 x double> @llvm.experimental.constrained.log10.v4f64( 4388 <4 x double> <double 42.0, double 42.1, 4389 double 42.2, double 42.3>, 4390 metadata !"round.dynamic", 4391 metadata !"fpexcept.strict") #1 4392 ret <4 x double> %log10 4393} 4394 4395define <1 x float> @constrained_vector_log2_v1f32() #0 { 4396; PC64LE-LABEL: constrained_vector_log2_v1f32: 4397; PC64LE: # %bb.0: # %entry 4398; PC64LE-NEXT: mflr 0 4399; PC64LE-NEXT: std 0, 16(1) 4400; PC64LE-NEXT: stdu 1, -32(1) 4401; PC64LE-NEXT: addis 3, 2, .LCPI70_0@toc@ha 4402; PC64LE-NEXT: lfs 1, .LCPI70_0@toc@l(3) 4403; PC64LE-NEXT: bl log2f 4404; PC64LE-NEXT: nop 4405; PC64LE-NEXT: xscvdpspn 0, 1 4406; PC64LE-NEXT: xxsldwi 34, 0, 0, 1 4407; PC64LE-NEXT: addi 1, 1, 32 4408; PC64LE-NEXT: ld 0, 16(1) 4409; PC64LE-NEXT: mtlr 0 4410; PC64LE-NEXT: blr 4411; 4412; PC64LE9-LABEL: constrained_vector_log2_v1f32: 4413; PC64LE9: # %bb.0: # %entry 4414; PC64LE9-NEXT: mflr 0 4415; PC64LE9-NEXT: std 0, 16(1) 4416; PC64LE9-NEXT: stdu 1, -32(1) 4417; PC64LE9-NEXT: addis 3, 2, .LCPI70_0@toc@ha 4418; PC64LE9-NEXT: lfs 1, .LCPI70_0@toc@l(3) 4419; PC64LE9-NEXT: bl log2f 4420; PC64LE9-NEXT: nop 4421; PC64LE9-NEXT: xscvdpspn 0, 1 4422; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 4423; PC64LE9-NEXT: addi 1, 1, 32 4424; PC64LE9-NEXT: ld 0, 16(1) 4425; PC64LE9-NEXT: mtlr 0 4426; PC64LE9-NEXT: blr 4427entry: 4428 %log2 = call <1 x float> @llvm.experimental.constrained.log2.v1f32( 4429 <1 x float> <float 42.0>, 4430 metadata !"round.dynamic", 4431 metadata !"fpexcept.strict") #1 4432 ret <1 x float> %log2 4433} 4434 4435define <2 x double> @constrained_vector_log2_v2f64() #0 { 4436; PC64LE-LABEL: constrained_vector_log2_v2f64: 4437; PC64LE: # %bb.0: # %entry 4438; PC64LE-NEXT: mflr 0 4439; PC64LE-NEXT: std 0, 16(1) 4440; PC64LE-NEXT: stdu 1, -64(1) 4441; PC64LE-NEXT: addis 3, 2, .LCPI71_0@toc@ha 4442; PC64LE-NEXT: lfd 1, .LCPI71_0@toc@l(3) 4443; PC64LE-NEXT: bl log2 4444; PC64LE-NEXT: nop 4445; PC64LE-NEXT: li 3, 48 4446; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 4447; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 4448; PC64LE-NEXT: addis 3, 2, .LCPI71_1@toc@ha 4449; PC64LE-NEXT: lfs 1, .LCPI71_1@toc@l(3) 4450; PC64LE-NEXT: bl log2 4451; PC64LE-NEXT: nop 4452; PC64LE-NEXT: li 3, 48 4453; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 4454; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 4455; PC64LE-NEXT: xxmrghd 34, 0, 1 4456; PC64LE-NEXT: addi 1, 1, 64 4457; PC64LE-NEXT: ld 0, 16(1) 4458; PC64LE-NEXT: mtlr 0 4459; PC64LE-NEXT: blr 4460; 4461; PC64LE9-LABEL: constrained_vector_log2_v2f64: 4462; PC64LE9: # %bb.0: # %entry 4463; PC64LE9-NEXT: mflr 0 4464; PC64LE9-NEXT: std 0, 16(1) 4465; PC64LE9-NEXT: stdu 1, -48(1) 4466; PC64LE9-NEXT: addis 3, 2, .LCPI71_0@toc@ha 4467; PC64LE9-NEXT: lfd 1, .LCPI71_0@toc@l(3) 4468; PC64LE9-NEXT: bl log2 4469; PC64LE9-NEXT: nop 4470; PC64LE9-NEXT: addis 3, 2, .LCPI71_1@toc@ha 4471; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 4472; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 4473; PC64LE9-NEXT: lfs 1, .LCPI71_1@toc@l(3) 4474; PC64LE9-NEXT: bl log2 4475; PC64LE9-NEXT: nop 4476; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 4477; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 4478; PC64LE9-NEXT: xxmrghd 34, 0, 1 4479; PC64LE9-NEXT: addi 1, 1, 48 4480; PC64LE9-NEXT: ld 0, 16(1) 4481; PC64LE9-NEXT: mtlr 0 4482; PC64LE9-NEXT: blr 4483entry: 4484 %log2 = call <2 x double> @llvm.experimental.constrained.log2.v2f64( 4485 <2 x double> <double 42.0, double 42.1>, 4486 metadata !"round.dynamic", 4487 metadata !"fpexcept.strict") #1 4488 ret <2 x double> %log2 4489} 4490 4491define <3 x float> @constrained_vector_log2_v3f32() #0 { 4492; PC64LE-LABEL: constrained_vector_log2_v3f32: 4493; PC64LE: # %bb.0: # %entry 4494; PC64LE-NEXT: mflr 0 4495; PC64LE-NEXT: stfd 30, -16(1) # 8-byte Folded Spill 4496; PC64LE-NEXT: stfd 31, -8(1) # 8-byte Folded Spill 4497; PC64LE-NEXT: std 0, 16(1) 4498; PC64LE-NEXT: stdu 1, -48(1) 4499; PC64LE-NEXT: addis 3, 2, .LCPI72_0@toc@ha 4500; PC64LE-NEXT: lfs 1, .LCPI72_0@toc@l(3) 4501; PC64LE-NEXT: bl log2f 4502; PC64LE-NEXT: nop 4503; PC64LE-NEXT: addis 3, 2, .LCPI72_1@toc@ha 4504; PC64LE-NEXT: fmr 31, 1 4505; PC64LE-NEXT: lfs 1, .LCPI72_1@toc@l(3) 4506; PC64LE-NEXT: bl log2f 4507; PC64LE-NEXT: nop 4508; PC64LE-NEXT: addis 3, 2, .LCPI72_2@toc@ha 4509; PC64LE-NEXT: fmr 30, 1 4510; PC64LE-NEXT: lfs 1, .LCPI72_2@toc@l(3) 4511; PC64LE-NEXT: bl log2f 4512; PC64LE-NEXT: nop 4513; PC64LE-NEXT: xscvdpspn 0, 30 4514; PC64LE-NEXT: addis 3, 2, .LCPI72_3@toc@ha 4515; PC64LE-NEXT: xscvdpspn 1, 1 4516; PC64LE-NEXT: addi 3, 3, .LCPI72_3@toc@l 4517; PC64LE-NEXT: xxsldwi 34, 0, 0, 1 4518; PC64LE-NEXT: xscvdpspn 0, 31 4519; PC64LE-NEXT: xxsldwi 35, 1, 1, 1 4520; PC64LE-NEXT: vmrglw 2, 2, 3 4521; PC64LE-NEXT: lvx 3, 0, 3 4522; PC64LE-NEXT: xxsldwi 36, 0, 0, 1 4523; PC64LE-NEXT: vperm 2, 4, 2, 3 4524; PC64LE-NEXT: addi 1, 1, 48 4525; PC64LE-NEXT: ld 0, 16(1) 4526; PC64LE-NEXT: lfd 31, -8(1) # 8-byte Folded Reload 4527; PC64LE-NEXT: lfd 30, -16(1) # 8-byte Folded Reload 4528; PC64LE-NEXT: mtlr 0 4529; PC64LE-NEXT: blr 4530; 4531; PC64LE9-LABEL: constrained_vector_log2_v3f32: 4532; PC64LE9: # %bb.0: # %entry 4533; PC64LE9-NEXT: mflr 0 4534; PC64LE9-NEXT: stfd 30, -16(1) # 8-byte Folded Spill 4535; PC64LE9-NEXT: stfd 31, -8(1) # 8-byte Folded Spill 4536; PC64LE9-NEXT: std 0, 16(1) 4537; PC64LE9-NEXT: stdu 1, -48(1) 4538; PC64LE9-NEXT: addis 3, 2, .LCPI72_0@toc@ha 4539; PC64LE9-NEXT: lfs 1, .LCPI72_0@toc@l(3) 4540; PC64LE9-NEXT: bl log2f 4541; PC64LE9-NEXT: nop 4542; PC64LE9-NEXT: addis 3, 2, .LCPI72_1@toc@ha 4543; PC64LE9-NEXT: fmr 31, 1 4544; PC64LE9-NEXT: lfs 1, .LCPI72_1@toc@l(3) 4545; PC64LE9-NEXT: bl log2f 4546; PC64LE9-NEXT: nop 4547; PC64LE9-NEXT: addis 3, 2, .LCPI72_2@toc@ha 4548; PC64LE9-NEXT: fmr 30, 1 4549; PC64LE9-NEXT: lfs 1, .LCPI72_2@toc@l(3) 4550; PC64LE9-NEXT: bl log2f 4551; PC64LE9-NEXT: nop 4552; PC64LE9-NEXT: xscvdpspn 0, 1 4553; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 4554; PC64LE9-NEXT: xscvdpspn 0, 30 4555; PC64LE9-NEXT: xxsldwi 35, 0, 0, 1 4556; PC64LE9-NEXT: xscvdpspn 0, 31 4557; PC64LE9-NEXT: addis 3, 2, .LCPI72_3@toc@ha 4558; PC64LE9-NEXT: addi 3, 3, .LCPI72_3@toc@l 4559; PC64LE9-NEXT: vmrglw 2, 3, 2 4560; PC64LE9-NEXT: lxvx 35, 0, 3 4561; PC64LE9-NEXT: xxsldwi 36, 0, 0, 1 4562; PC64LE9-NEXT: vperm 2, 4, 2, 3 4563; PC64LE9-NEXT: addi 1, 1, 48 4564; PC64LE9-NEXT: ld 0, 16(1) 4565; PC64LE9-NEXT: lfd 31, -8(1) # 8-byte Folded Reload 4566; PC64LE9-NEXT: lfd 30, -16(1) # 8-byte Folded Reload 4567; PC64LE9-NEXT: mtlr 0 4568; PC64LE9-NEXT: blr 4569entry: 4570 %log2 = call <3 x float> @llvm.experimental.constrained.log2.v3f32( 4571 <3 x float> <float 42.0, float 43.0, float 44.0>, 4572 metadata !"round.dynamic", 4573 metadata !"fpexcept.strict") #1 4574 ret <3 x float> %log2 4575} 4576 4577define <3 x double> @constrained_vector_log2_v3f64() #0 { 4578; PC64LE-LABEL: constrained_vector_log2_v3f64: 4579; PC64LE: # %bb.0: # %entry 4580; PC64LE-NEXT: mflr 0 4581; PC64LE-NEXT: std 0, 16(1) 4582; PC64LE-NEXT: stdu 1, -80(1) 4583; PC64LE-NEXT: li 3, 64 4584; PC64LE-NEXT: stxvd2x 63, 1, 3 # 16-byte Folded Spill 4585; PC64LE-NEXT: addis 3, 2, .LCPI73_0@toc@ha 4586; PC64LE-NEXT: lfd 1, .LCPI73_0@toc@l(3) 4587; PC64LE-NEXT: bl log2 4588; PC64LE-NEXT: nop 4589; PC64LE-NEXT: li 3, 48 4590; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 4591; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 4592; PC64LE-NEXT: addis 3, 2, .LCPI73_1@toc@ha 4593; PC64LE-NEXT: lfs 1, .LCPI73_1@toc@l(3) 4594; PC64LE-NEXT: bl log2 4595; PC64LE-NEXT: nop 4596; PC64LE-NEXT: li 3, 48 4597; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 4598; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 4599; PC64LE-NEXT: addis 3, 2, .LCPI73_2@toc@ha 4600; PC64LE-NEXT: xxmrghd 63, 0, 1 4601; PC64LE-NEXT: lfd 1, .LCPI73_2@toc@l(3) 4602; PC64LE-NEXT: bl log2 4603; PC64LE-NEXT: nop 4604; PC64LE-NEXT: xxswapd 0, 63 4605; PC64LE-NEXT: li 3, 64 4606; PC64LE-NEXT: xxlor 2, 63, 63 4607; PC64LE-NEXT: lxvd2x 63, 1, 3 # 16-byte Folded Reload 4608; PC64LE-NEXT: fmr 3, 1 4609; PC64LE-NEXT: fmr 1, 0 4610; PC64LE-NEXT: addi 1, 1, 80 4611; PC64LE-NEXT: ld 0, 16(1) 4612; PC64LE-NEXT: mtlr 0 4613; PC64LE-NEXT: blr 4614; 4615; PC64LE9-LABEL: constrained_vector_log2_v3f64: 4616; PC64LE9: # %bb.0: # %entry 4617; PC64LE9-NEXT: mflr 0 4618; PC64LE9-NEXT: std 0, 16(1) 4619; PC64LE9-NEXT: stdu 1, -64(1) 4620; PC64LE9-NEXT: addis 3, 2, .LCPI73_0@toc@ha 4621; PC64LE9-NEXT: lfd 1, .LCPI73_0@toc@l(3) 4622; PC64LE9-NEXT: stxv 63, 48(1) # 16-byte Folded Spill 4623; PC64LE9-NEXT: bl log2 4624; PC64LE9-NEXT: nop 4625; PC64LE9-NEXT: addis 3, 2, .LCPI73_1@toc@ha 4626; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 4627; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 4628; PC64LE9-NEXT: lfs 1, .LCPI73_1@toc@l(3) 4629; PC64LE9-NEXT: bl log2 4630; PC64LE9-NEXT: nop 4631; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 4632; PC64LE9-NEXT: addis 3, 2, .LCPI73_2@toc@ha 4633; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 4634; PC64LE9-NEXT: xxmrghd 63, 0, 1 4635; PC64LE9-NEXT: lfd 1, .LCPI73_2@toc@l(3) 4636; PC64LE9-NEXT: bl log2 4637; PC64LE9-NEXT: nop 4638; PC64LE9-NEXT: fmr 3, 1 4639; PC64LE9-NEXT: xxswapd 1, 63 4640; PC64LE9-NEXT: xscpsgndp 2, 63, 63 4641; PC64LE9-NEXT: lxv 63, 48(1) # 16-byte Folded Reload 4642; PC64LE9-NEXT: # kill: def $f1 killed $f1 killed $vsl1 4643; PC64LE9-NEXT: addi 1, 1, 64 4644; PC64LE9-NEXT: ld 0, 16(1) 4645; PC64LE9-NEXT: mtlr 0 4646; PC64LE9-NEXT: blr 4647entry: 4648 %log2 = call <3 x double> @llvm.experimental.constrained.log2.v3f64( 4649 <3 x double> <double 42.0, double 42.1, double 42.2>, 4650 metadata !"round.dynamic", 4651 metadata !"fpexcept.strict") #1 4652 ret <3 x double> %log2 4653} 4654 4655define <4 x double> @constrained_vector_log2_v4f64() #0 { 4656; PC64LE-LABEL: constrained_vector_log2_v4f64: 4657; PC64LE: # %bb.0: # %entry 4658; PC64LE-NEXT: mflr 0 4659; PC64LE-NEXT: std 0, 16(1) 4660; PC64LE-NEXT: stdu 1, -80(1) 4661; PC64LE-NEXT: li 3, 64 4662; PC64LE-NEXT: stxvd2x 63, 1, 3 # 16-byte Folded Spill 4663; PC64LE-NEXT: addis 3, 2, .LCPI74_0@toc@ha 4664; PC64LE-NEXT: lfd 1, .LCPI74_0@toc@l(3) 4665; PC64LE-NEXT: bl log2 4666; PC64LE-NEXT: nop 4667; PC64LE-NEXT: li 3, 48 4668; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 4669; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 4670; PC64LE-NEXT: addis 3, 2, .LCPI74_1@toc@ha 4671; PC64LE-NEXT: lfd 1, .LCPI74_1@toc@l(3) 4672; PC64LE-NEXT: bl log2 4673; PC64LE-NEXT: nop 4674; PC64LE-NEXT: li 3, 48 4675; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 4676; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 4677; PC64LE-NEXT: addis 3, 2, .LCPI74_2@toc@ha 4678; PC64LE-NEXT: xxmrghd 63, 1, 0 4679; PC64LE-NEXT: lfd 1, .LCPI74_2@toc@l(3) 4680; PC64LE-NEXT: bl log2 4681; PC64LE-NEXT: nop 4682; PC64LE-NEXT: li 3, 48 4683; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 4684; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 4685; PC64LE-NEXT: addis 3, 2, .LCPI74_3@toc@ha 4686; PC64LE-NEXT: lfs 1, .LCPI74_3@toc@l(3) 4687; PC64LE-NEXT: bl log2 4688; PC64LE-NEXT: nop 4689; PC64LE-NEXT: li 3, 48 4690; PC64LE-NEXT: vmr 3, 31 4691; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 4692; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 4693; PC64LE-NEXT: li 3, 64 4694; PC64LE-NEXT: lxvd2x 63, 1, 3 # 16-byte Folded Reload 4695; PC64LE-NEXT: xxmrghd 34, 0, 1 4696; PC64LE-NEXT: addi 1, 1, 80 4697; PC64LE-NEXT: ld 0, 16(1) 4698; PC64LE-NEXT: mtlr 0 4699; PC64LE-NEXT: blr 4700; 4701; PC64LE9-LABEL: constrained_vector_log2_v4f64: 4702; PC64LE9: # %bb.0: # %entry 4703; PC64LE9-NEXT: mflr 0 4704; PC64LE9-NEXT: std 0, 16(1) 4705; PC64LE9-NEXT: stdu 1, -64(1) 4706; PC64LE9-NEXT: addis 3, 2, .LCPI74_0@toc@ha 4707; PC64LE9-NEXT: lfd 1, .LCPI74_0@toc@l(3) 4708; PC64LE9-NEXT: stxv 63, 48(1) # 16-byte Folded Spill 4709; PC64LE9-NEXT: bl log2 4710; PC64LE9-NEXT: nop 4711; PC64LE9-NEXT: addis 3, 2, .LCPI74_1@toc@ha 4712; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 4713; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 4714; PC64LE9-NEXT: lfd 1, .LCPI74_1@toc@l(3) 4715; PC64LE9-NEXT: bl log2 4716; PC64LE9-NEXT: nop 4717; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 4718; PC64LE9-NEXT: addis 3, 2, .LCPI74_2@toc@ha 4719; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 4720; PC64LE9-NEXT: xxmrghd 63, 1, 0 4721; PC64LE9-NEXT: lfd 1, .LCPI74_2@toc@l(3) 4722; PC64LE9-NEXT: bl log2 4723; PC64LE9-NEXT: nop 4724; PC64LE9-NEXT: addis 3, 2, .LCPI74_3@toc@ha 4725; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 4726; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 4727; PC64LE9-NEXT: lfs 1, .LCPI74_3@toc@l(3) 4728; PC64LE9-NEXT: bl log2 4729; PC64LE9-NEXT: nop 4730; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 4731; PC64LE9-NEXT: vmr 3, 31 4732; PC64LE9-NEXT: lxv 63, 48(1) # 16-byte Folded Reload 4733; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 4734; PC64LE9-NEXT: xxmrghd 34, 0, 1 4735; PC64LE9-NEXT: addi 1, 1, 64 4736; PC64LE9-NEXT: ld 0, 16(1) 4737; PC64LE9-NEXT: mtlr 0 4738; PC64LE9-NEXT: blr 4739entry: 4740 %log2 = call <4 x double> @llvm.experimental.constrained.log2.v4f64( 4741 <4 x double> <double 42.0, double 42.1, 4742 double 42.2, double 42.3>, 4743 metadata !"round.dynamic", 4744 metadata !"fpexcept.strict") #1 4745 ret <4 x double> %log2 4746} 4747 4748define <1 x float> @constrained_vector_rint_v1f32() #0 { 4749; PC64LE-LABEL: constrained_vector_rint_v1f32: 4750; PC64LE: # %bb.0: # %entry 4751; PC64LE-NEXT: addis 3, 2, .LCPI75_0@toc@ha 4752; PC64LE-NEXT: lfs 0, .LCPI75_0@toc@l(3) 4753; PC64LE-NEXT: xsrdpic 0, 0 4754; PC64LE-NEXT: xscvdpspn 0, 0 4755; PC64LE-NEXT: xxsldwi 34, 0, 0, 1 4756; PC64LE-NEXT: blr 4757; 4758; PC64LE9-LABEL: constrained_vector_rint_v1f32: 4759; PC64LE9: # %bb.0: # %entry 4760; PC64LE9-NEXT: addis 3, 2, .LCPI75_0@toc@ha 4761; PC64LE9-NEXT: lfs 0, .LCPI75_0@toc@l(3) 4762; PC64LE9-NEXT: xsrdpic 0, 0 4763; PC64LE9-NEXT: xscvdpspn 0, 0 4764; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 4765; PC64LE9-NEXT: blr 4766entry: 4767 %rint = call <1 x float> @llvm.experimental.constrained.rint.v1f32( 4768 <1 x float> <float 42.0>, 4769 metadata !"round.dynamic", 4770 metadata !"fpexcept.strict") #1 4771 ret <1 x float> %rint 4772} 4773 4774define <2 x double> @constrained_vector_rint_v2f64() #0 { 4775; PC64LE-LABEL: constrained_vector_rint_v2f64: 4776; PC64LE: # %bb.0: # %entry 4777; PC64LE-NEXT: addis 3, 2, .LCPI76_0@toc@ha 4778; PC64LE-NEXT: addi 3, 3, .LCPI76_0@toc@l 4779; PC64LE-NEXT: lxvd2x 0, 0, 3 4780; PC64LE-NEXT: xxswapd 0, 0 4781; PC64LE-NEXT: xvrdpic 34, 0 4782; PC64LE-NEXT: blr 4783; 4784; PC64LE9-LABEL: constrained_vector_rint_v2f64: 4785; PC64LE9: # %bb.0: # %entry 4786; PC64LE9-NEXT: addis 3, 2, .LCPI76_0@toc@ha 4787; PC64LE9-NEXT: addi 3, 3, .LCPI76_0@toc@l 4788; PC64LE9-NEXT: lxvx 0, 0, 3 4789; PC64LE9-NEXT: xvrdpic 34, 0 4790; PC64LE9-NEXT: blr 4791entry: 4792 %rint = call <2 x double> @llvm.experimental.constrained.rint.v2f64( 4793 <2 x double> <double 42.1, double 42.0>, 4794 metadata !"round.dynamic", 4795 metadata !"fpexcept.strict") #1 4796 ret <2 x double> %rint 4797} 4798 4799define <3 x float> @constrained_vector_rint_v3f32() #0 { 4800; PC64LE-LABEL: constrained_vector_rint_v3f32: 4801; PC64LE: # %bb.0: # %entry 4802; PC64LE-NEXT: addis 3, 2, .LCPI77_2@toc@ha 4803; PC64LE-NEXT: addis 4, 2, .LCPI77_1@toc@ha 4804; PC64LE-NEXT: lfs 0, .LCPI77_2@toc@l(3) 4805; PC64LE-NEXT: lfs 1, .LCPI77_1@toc@l(4) 4806; PC64LE-NEXT: addis 3, 2, .LCPI77_0@toc@ha 4807; PC64LE-NEXT: xsrdpic 0, 0 4808; PC64LE-NEXT: lfs 2, .LCPI77_0@toc@l(3) 4809; PC64LE-NEXT: addis 3, 2, .LCPI77_3@toc@ha 4810; PC64LE-NEXT: xsrdpic 1, 1 4811; PC64LE-NEXT: addi 3, 3, .LCPI77_3@toc@l 4812; PC64LE-NEXT: xsrdpic 2, 2 4813; PC64LE-NEXT: xscvdpspn 0, 0 4814; PC64LE-NEXT: xscvdpspn 1, 1 4815; PC64LE-NEXT: xxsldwi 34, 0, 0, 1 4816; PC64LE-NEXT: xscvdpspn 0, 2 4817; PC64LE-NEXT: xxsldwi 35, 1, 1, 1 4818; PC64LE-NEXT: vmrglw 2, 3, 2 4819; PC64LE-NEXT: lvx 3, 0, 3 4820; PC64LE-NEXT: xxsldwi 36, 0, 0, 1 4821; PC64LE-NEXT: vperm 2, 4, 2, 3 4822; PC64LE-NEXT: blr 4823; 4824; PC64LE9-LABEL: constrained_vector_rint_v3f32: 4825; PC64LE9: # %bb.0: # %entry 4826; PC64LE9-NEXT: addis 3, 2, .LCPI77_0@toc@ha 4827; PC64LE9-NEXT: lfs 0, .LCPI77_0@toc@l(3) 4828; PC64LE9-NEXT: addis 3, 2, .LCPI77_1@toc@ha 4829; PC64LE9-NEXT: lfs 1, .LCPI77_1@toc@l(3) 4830; PC64LE9-NEXT: addis 3, 2, .LCPI77_2@toc@ha 4831; PC64LE9-NEXT: xsrdpic 0, 0 4832; PC64LE9-NEXT: lfs 2, .LCPI77_2@toc@l(3) 4833; PC64LE9-NEXT: addis 3, 2, .LCPI77_3@toc@ha 4834; PC64LE9-NEXT: addi 3, 3, .LCPI77_3@toc@l 4835; PC64LE9-NEXT: xsrdpic 1, 1 4836; PC64LE9-NEXT: xsrdpic 2, 2 4837; PC64LE9-NEXT: xscvdpspn 0, 0 4838; PC64LE9-NEXT: xscvdpspn 1, 1 4839; PC64LE9-NEXT: xscvdpspn 2, 2 4840; PC64LE9-NEXT: xxsldwi 36, 0, 0, 1 4841; PC64LE9-NEXT: xxsldwi 35, 1, 1, 1 4842; PC64LE9-NEXT: xxsldwi 34, 2, 2, 1 4843; PC64LE9-NEXT: vmrglw 2, 3, 2 4844; PC64LE9-NEXT: lxvx 35, 0, 3 4845; PC64LE9-NEXT: vperm 2, 4, 2, 3 4846; PC64LE9-NEXT: blr 4847 entry: 4848 %rint = call <3 x float> @llvm.experimental.constrained.rint.v3f32( 4849 <3 x float> <float 42.0, float 43.0, float 44.0>, 4850 metadata !"round.dynamic", 4851 metadata !"fpexcept.strict") #1 4852 ret <3 x float> %rint 4853} 4854 4855define <3 x double> @constrained_vector_rint_v3f64() #0 { 4856; PC64LE-LABEL: constrained_vector_rint_v3f64: 4857; PC64LE: # %bb.0: # %entry 4858; PC64LE-NEXT: addis 3, 2, .LCPI78_1@toc@ha 4859; PC64LE-NEXT: addi 3, 3, .LCPI78_1@toc@l 4860; PC64LE-NEXT: lxvd2x 0, 0, 3 4861; PC64LE-NEXT: addis 3, 2, .LCPI78_0@toc@ha 4862; PC64LE-NEXT: lfd 1, .LCPI78_0@toc@l(3) 4863; PC64LE-NEXT: xxswapd 0, 0 4864; PC64LE-NEXT: xsrdpic 3, 1 4865; PC64LE-NEXT: xvrdpic 2, 0 4866; PC64LE-NEXT: xxswapd 1, 2 4867; PC64LE-NEXT: # kill: def $f2 killed $f2 killed $vsl2 4868; PC64LE-NEXT: # kill: def $f1 killed $f1 killed $vsl1 4869; PC64LE-NEXT: blr 4870; 4871; PC64LE9-LABEL: constrained_vector_rint_v3f64: 4872; PC64LE9: # %bb.0: # %entry 4873; PC64LE9-NEXT: addis 3, 2, .LCPI78_0@toc@ha 4874; PC64LE9-NEXT: lfd 0, .LCPI78_0@toc@l(3) 4875; PC64LE9-NEXT: addis 3, 2, .LCPI78_1@toc@ha 4876; PC64LE9-NEXT: addi 3, 3, .LCPI78_1@toc@l 4877; PC64LE9-NEXT: xsrdpic 3, 0 4878; PC64LE9-NEXT: lxvx 0, 0, 3 4879; PC64LE9-NEXT: xvrdpic 2, 0 4880; PC64LE9-NEXT: xxswapd 1, 2 4881; PC64LE9-NEXT: # kill: def $f1 killed $f1 killed $vsl1 4882; PC64LE9-NEXT: # kill: def $f2 killed $f2 killed $vsl2 4883; PC64LE9-NEXT: blr 4884entry: 4885 %rint = call <3 x double> @llvm.experimental.constrained.rint.v3f64( 4886 <3 x double> <double 42.0, double 42.1, double 42.2>, 4887 metadata !"round.dynamic", 4888 metadata !"fpexcept.strict") #1 4889 ret <3 x double> %rint 4890} 4891 4892define <4 x double> @constrained_vector_rint_v4f64() #0 { 4893; PC64LE-LABEL: constrained_vector_rint_v4f64: 4894; PC64LE: # %bb.0: # %entry 4895; PC64LE-NEXT: addis 3, 2, .LCPI79_0@toc@ha 4896; PC64LE-NEXT: addis 4, 2, .LCPI79_1@toc@ha 4897; PC64LE-NEXT: addi 3, 3, .LCPI79_0@toc@l 4898; PC64LE-NEXT: lxvd2x 0, 0, 3 4899; PC64LE-NEXT: addi 3, 4, .LCPI79_1@toc@l 4900; PC64LE-NEXT: lxvd2x 1, 0, 3 4901; PC64LE-NEXT: xxswapd 0, 0 4902; PC64LE-NEXT: xxswapd 1, 1 4903; PC64LE-NEXT: xvrdpic 34, 0 4904; PC64LE-NEXT: xvrdpic 35, 1 4905; PC64LE-NEXT: blr 4906; 4907; PC64LE9-LABEL: constrained_vector_rint_v4f64: 4908; PC64LE9: # %bb.0: # %entry 4909; PC64LE9-NEXT: addis 3, 2, .LCPI79_0@toc@ha 4910; PC64LE9-NEXT: addi 3, 3, .LCPI79_0@toc@l 4911; PC64LE9-NEXT: lxvx 0, 0, 3 4912; PC64LE9-NEXT: addis 3, 2, .LCPI79_1@toc@ha 4913; PC64LE9-NEXT: addi 3, 3, .LCPI79_1@toc@l 4914; PC64LE9-NEXT: xvrdpic 34, 0 4915; PC64LE9-NEXT: lxvx 0, 0, 3 4916; PC64LE9-NEXT: xvrdpic 35, 0 4917; PC64LE9-NEXT: blr 4918entry: 4919 %rint = call <4 x double> @llvm.experimental.constrained.rint.v4f64( 4920 <4 x double> <double 42.1, double 42.2, 4921 double 42.3, double 42.4>, 4922 metadata !"round.dynamic", 4923 metadata !"fpexcept.strict") #1 4924 ret <4 x double> %rint 4925} 4926 4927define <1 x float> @constrained_vector_nearbyint_v1f32() #0 { 4928; PC64LE-LABEL: constrained_vector_nearbyint_v1f32: 4929; PC64LE: # %bb.0: # %entry 4930; PC64LE-NEXT: mflr 0 4931; PC64LE-NEXT: std 0, 16(1) 4932; PC64LE-NEXT: stdu 1, -32(1) 4933; PC64LE-NEXT: addis 3, 2, .LCPI80_0@toc@ha 4934; PC64LE-NEXT: lfs 1, .LCPI80_0@toc@l(3) 4935; PC64LE-NEXT: bl nearbyintf 4936; PC64LE-NEXT: nop 4937; PC64LE-NEXT: xscvdpspn 0, 1 4938; PC64LE-NEXT: xxsldwi 34, 0, 0, 1 4939; PC64LE-NEXT: addi 1, 1, 32 4940; PC64LE-NEXT: ld 0, 16(1) 4941; PC64LE-NEXT: mtlr 0 4942; PC64LE-NEXT: blr 4943; 4944; PC64LE9-LABEL: constrained_vector_nearbyint_v1f32: 4945; PC64LE9: # %bb.0: # %entry 4946; PC64LE9-NEXT: mflr 0 4947; PC64LE9-NEXT: std 0, 16(1) 4948; PC64LE9-NEXT: stdu 1, -32(1) 4949; PC64LE9-NEXT: addis 3, 2, .LCPI80_0@toc@ha 4950; PC64LE9-NEXT: lfs 1, .LCPI80_0@toc@l(3) 4951; PC64LE9-NEXT: bl nearbyintf 4952; PC64LE9-NEXT: nop 4953; PC64LE9-NEXT: xscvdpspn 0, 1 4954; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 4955; PC64LE9-NEXT: addi 1, 1, 32 4956; PC64LE9-NEXT: ld 0, 16(1) 4957; PC64LE9-NEXT: mtlr 0 4958; PC64LE9-NEXT: blr 4959entry: 4960 %nearby = call <1 x float> @llvm.experimental.constrained.nearbyint.v1f32( 4961 <1 x float> <float 42.0>, 4962 metadata !"round.dynamic", 4963 metadata !"fpexcept.strict") #1 4964 ret <1 x float> %nearby 4965} 4966 4967define <2 x double> @constrained_vector_nearbyint_v2f64() #0 { 4968; PC64LE-LABEL: constrained_vector_nearbyint_v2f64: 4969; PC64LE: # %bb.0: # %entry 4970; PC64LE-NEXT: mflr 0 4971; PC64LE-NEXT: std 0, 16(1) 4972; PC64LE-NEXT: stdu 1, -64(1) 4973; PC64LE-NEXT: addis 3, 2, .LCPI81_0@toc@ha 4974; PC64LE-NEXT: lfd 1, .LCPI81_0@toc@l(3) 4975; PC64LE-NEXT: bl nearbyint 4976; PC64LE-NEXT: nop 4977; PC64LE-NEXT: li 3, 48 4978; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 4979; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 4980; PC64LE-NEXT: addis 3, 2, .LCPI81_1@toc@ha 4981; PC64LE-NEXT: lfs 1, .LCPI81_1@toc@l(3) 4982; PC64LE-NEXT: bl nearbyint 4983; PC64LE-NEXT: nop 4984; PC64LE-NEXT: li 3, 48 4985; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 4986; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 4987; PC64LE-NEXT: xxmrghd 34, 1, 0 4988; PC64LE-NEXT: addi 1, 1, 64 4989; PC64LE-NEXT: ld 0, 16(1) 4990; PC64LE-NEXT: mtlr 0 4991; PC64LE-NEXT: blr 4992; 4993; PC64LE9-LABEL: constrained_vector_nearbyint_v2f64: 4994; PC64LE9: # %bb.0: # %entry 4995; PC64LE9-NEXT: mflr 0 4996; PC64LE9-NEXT: std 0, 16(1) 4997; PC64LE9-NEXT: stdu 1, -48(1) 4998; PC64LE9-NEXT: addis 3, 2, .LCPI81_0@toc@ha 4999; PC64LE9-NEXT: lfd 1, .LCPI81_0@toc@l(3) 5000; PC64LE9-NEXT: bl nearbyint 5001; PC64LE9-NEXT: nop 5002; PC64LE9-NEXT: addis 3, 2, .LCPI81_1@toc@ha 5003; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 5004; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 5005; PC64LE9-NEXT: lfs 1, .LCPI81_1@toc@l(3) 5006; PC64LE9-NEXT: bl nearbyint 5007; PC64LE9-NEXT: nop 5008; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 5009; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 5010; PC64LE9-NEXT: xxmrghd 34, 1, 0 5011; PC64LE9-NEXT: addi 1, 1, 48 5012; PC64LE9-NEXT: ld 0, 16(1) 5013; PC64LE9-NEXT: mtlr 0 5014; PC64LE9-NEXT: blr 5015entry: 5016 %nearby = call <2 x double> @llvm.experimental.constrained.nearbyint.v2f64( 5017 <2 x double> <double 42.1, double 42.0>, 5018 metadata !"round.dynamic", 5019 metadata !"fpexcept.strict") #1 5020 ret <2 x double> %nearby 5021} 5022 5023define <3 x float> @constrained_vector_nearbyint_v3f32() #0 { 5024; PC64LE-LABEL: constrained_vector_nearbyint_v3f32: 5025; PC64LE: # %bb.0: # %entry 5026; PC64LE-NEXT: mflr 0 5027; PC64LE-NEXT: stfd 30, -16(1) # 8-byte Folded Spill 5028; PC64LE-NEXT: stfd 31, -8(1) # 8-byte Folded Spill 5029; PC64LE-NEXT: std 0, 16(1) 5030; PC64LE-NEXT: stdu 1, -48(1) 5031; PC64LE-NEXT: addis 3, 2, .LCPI82_0@toc@ha 5032; PC64LE-NEXT: lfs 1, .LCPI82_0@toc@l(3) 5033; PC64LE-NEXT: bl nearbyintf 5034; PC64LE-NEXT: nop 5035; PC64LE-NEXT: addis 3, 2, .LCPI82_1@toc@ha 5036; PC64LE-NEXT: fmr 31, 1 5037; PC64LE-NEXT: lfs 1, .LCPI82_1@toc@l(3) 5038; PC64LE-NEXT: bl nearbyintf 5039; PC64LE-NEXT: nop 5040; PC64LE-NEXT: addis 3, 2, .LCPI82_2@toc@ha 5041; PC64LE-NEXT: fmr 30, 1 5042; PC64LE-NEXT: lfs 1, .LCPI82_2@toc@l(3) 5043; PC64LE-NEXT: bl nearbyintf 5044; PC64LE-NEXT: nop 5045; PC64LE-NEXT: xscvdpspn 0, 30 5046; PC64LE-NEXT: addis 3, 2, .LCPI82_3@toc@ha 5047; PC64LE-NEXT: xscvdpspn 1, 1 5048; PC64LE-NEXT: addi 3, 3, .LCPI82_3@toc@l 5049; PC64LE-NEXT: xxsldwi 34, 0, 0, 1 5050; PC64LE-NEXT: xscvdpspn 0, 31 5051; PC64LE-NEXT: xxsldwi 35, 1, 1, 1 5052; PC64LE-NEXT: vmrglw 2, 2, 3 5053; PC64LE-NEXT: lvx 3, 0, 3 5054; PC64LE-NEXT: xxsldwi 36, 0, 0, 1 5055; PC64LE-NEXT: vperm 2, 4, 2, 3 5056; PC64LE-NEXT: addi 1, 1, 48 5057; PC64LE-NEXT: ld 0, 16(1) 5058; PC64LE-NEXT: lfd 31, -8(1) # 8-byte Folded Reload 5059; PC64LE-NEXT: lfd 30, -16(1) # 8-byte Folded Reload 5060; PC64LE-NEXT: mtlr 0 5061; PC64LE-NEXT: blr 5062; 5063; PC64LE9-LABEL: constrained_vector_nearbyint_v3f32: 5064; PC64LE9: # %bb.0: # %entry 5065; PC64LE9-NEXT: mflr 0 5066; PC64LE9-NEXT: stfd 30, -16(1) # 8-byte Folded Spill 5067; PC64LE9-NEXT: stfd 31, -8(1) # 8-byte Folded Spill 5068; PC64LE9-NEXT: std 0, 16(1) 5069; PC64LE9-NEXT: stdu 1, -48(1) 5070; PC64LE9-NEXT: addis 3, 2, .LCPI82_0@toc@ha 5071; PC64LE9-NEXT: lfs 1, .LCPI82_0@toc@l(3) 5072; PC64LE9-NEXT: bl nearbyintf 5073; PC64LE9-NEXT: nop 5074; PC64LE9-NEXT: addis 3, 2, .LCPI82_1@toc@ha 5075; PC64LE9-NEXT: fmr 31, 1 5076; PC64LE9-NEXT: lfs 1, .LCPI82_1@toc@l(3) 5077; PC64LE9-NEXT: bl nearbyintf 5078; PC64LE9-NEXT: nop 5079; PC64LE9-NEXT: addis 3, 2, .LCPI82_2@toc@ha 5080; PC64LE9-NEXT: fmr 30, 1 5081; PC64LE9-NEXT: lfs 1, .LCPI82_2@toc@l(3) 5082; PC64LE9-NEXT: bl nearbyintf 5083; PC64LE9-NEXT: nop 5084; PC64LE9-NEXT: xscvdpspn 0, 1 5085; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 5086; PC64LE9-NEXT: xscvdpspn 0, 30 5087; PC64LE9-NEXT: xxsldwi 35, 0, 0, 1 5088; PC64LE9-NEXT: xscvdpspn 0, 31 5089; PC64LE9-NEXT: addis 3, 2, .LCPI82_3@toc@ha 5090; PC64LE9-NEXT: addi 3, 3, .LCPI82_3@toc@l 5091; PC64LE9-NEXT: vmrglw 2, 3, 2 5092; PC64LE9-NEXT: lxvx 35, 0, 3 5093; PC64LE9-NEXT: xxsldwi 36, 0, 0, 1 5094; PC64LE9-NEXT: vperm 2, 4, 2, 3 5095; PC64LE9-NEXT: addi 1, 1, 48 5096; PC64LE9-NEXT: ld 0, 16(1) 5097; PC64LE9-NEXT: lfd 31, -8(1) # 8-byte Folded Reload 5098; PC64LE9-NEXT: lfd 30, -16(1) # 8-byte Folded Reload 5099; PC64LE9-NEXT: mtlr 0 5100; PC64LE9-NEXT: blr 5101entry: 5102 %nearby = call <3 x float> @llvm.experimental.constrained.nearbyint.v3f32( 5103 <3 x float> <float 42.0, float 43.0, float 44.0>, 5104 metadata !"round.dynamic", 5105 metadata !"fpexcept.strict") #1 5106 ret <3 x float> %nearby 5107} 5108 5109define <3 x double> @constrained_vector_nearby_v3f64() #0 { 5110; PC64LE-LABEL: constrained_vector_nearby_v3f64: 5111; PC64LE: # %bb.0: # %entry 5112; PC64LE-NEXT: mflr 0 5113; PC64LE-NEXT: std 0, 16(1) 5114; PC64LE-NEXT: stdu 1, -80(1) 5115; PC64LE-NEXT: li 3, 64 5116; PC64LE-NEXT: stxvd2x 63, 1, 3 # 16-byte Folded Spill 5117; PC64LE-NEXT: addis 3, 2, .LCPI83_0@toc@ha 5118; PC64LE-NEXT: lfd 1, .LCPI83_0@toc@l(3) 5119; PC64LE-NEXT: bl nearbyint 5120; PC64LE-NEXT: nop 5121; PC64LE-NEXT: li 3, 48 5122; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 5123; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 5124; PC64LE-NEXT: addis 3, 2, .LCPI83_1@toc@ha 5125; PC64LE-NEXT: lfs 1, .LCPI83_1@toc@l(3) 5126; PC64LE-NEXT: bl nearbyint 5127; PC64LE-NEXT: nop 5128; PC64LE-NEXT: li 3, 48 5129; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 5130; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 5131; PC64LE-NEXT: addis 3, 2, .LCPI83_2@toc@ha 5132; PC64LE-NEXT: xxmrghd 63, 0, 1 5133; PC64LE-NEXT: lfd 1, .LCPI83_2@toc@l(3) 5134; PC64LE-NEXT: bl nearbyint 5135; PC64LE-NEXT: nop 5136; PC64LE-NEXT: xxswapd 0, 63 5137; PC64LE-NEXT: li 3, 64 5138; PC64LE-NEXT: xxlor 2, 63, 63 5139; PC64LE-NEXT: lxvd2x 63, 1, 3 # 16-byte Folded Reload 5140; PC64LE-NEXT: fmr 3, 1 5141; PC64LE-NEXT: fmr 1, 0 5142; PC64LE-NEXT: addi 1, 1, 80 5143; PC64LE-NEXT: ld 0, 16(1) 5144; PC64LE-NEXT: mtlr 0 5145; PC64LE-NEXT: blr 5146; 5147; PC64LE9-LABEL: constrained_vector_nearby_v3f64: 5148; PC64LE9: # %bb.0: # %entry 5149; PC64LE9-NEXT: mflr 0 5150; PC64LE9-NEXT: std 0, 16(1) 5151; PC64LE9-NEXT: stdu 1, -64(1) 5152; PC64LE9-NEXT: addis 3, 2, .LCPI83_0@toc@ha 5153; PC64LE9-NEXT: lfd 1, .LCPI83_0@toc@l(3) 5154; PC64LE9-NEXT: stxv 63, 48(1) # 16-byte Folded Spill 5155; PC64LE9-NEXT: bl nearbyint 5156; PC64LE9-NEXT: nop 5157; PC64LE9-NEXT: addis 3, 2, .LCPI83_1@toc@ha 5158; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 5159; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 5160; PC64LE9-NEXT: lfs 1, .LCPI83_1@toc@l(3) 5161; PC64LE9-NEXT: bl nearbyint 5162; PC64LE9-NEXT: nop 5163; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 5164; PC64LE9-NEXT: addis 3, 2, .LCPI83_2@toc@ha 5165; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 5166; PC64LE9-NEXT: xxmrghd 63, 0, 1 5167; PC64LE9-NEXT: lfd 1, .LCPI83_2@toc@l(3) 5168; PC64LE9-NEXT: bl nearbyint 5169; PC64LE9-NEXT: nop 5170; PC64LE9-NEXT: fmr 3, 1 5171; PC64LE9-NEXT: xxswapd 1, 63 5172; PC64LE9-NEXT: xscpsgndp 2, 63, 63 5173; PC64LE9-NEXT: lxv 63, 48(1) # 16-byte Folded Reload 5174; PC64LE9-NEXT: # kill: def $f1 killed $f1 killed $vsl1 5175; PC64LE9-NEXT: addi 1, 1, 64 5176; PC64LE9-NEXT: ld 0, 16(1) 5177; PC64LE9-NEXT: mtlr 0 5178; PC64LE9-NEXT: blr 5179entry: 5180 %nearby = call <3 x double> @llvm.experimental.constrained.nearbyint.v3f64( 5181 <3 x double> <double 42.0, double 42.1, double 42.2>, 5182 metadata !"round.dynamic", 5183 metadata !"fpexcept.strict") #1 5184 ret <3 x double> %nearby 5185} 5186 5187define <4 x double> @constrained_vector_nearbyint_v4f64() #0 { 5188; PC64LE-LABEL: constrained_vector_nearbyint_v4f64: 5189; PC64LE: # %bb.0: # %entry 5190; PC64LE-NEXT: mflr 0 5191; PC64LE-NEXT: std 0, 16(1) 5192; PC64LE-NEXT: stdu 1, -80(1) 5193; PC64LE-NEXT: li 3, 64 5194; PC64LE-NEXT: stxvd2x 63, 1, 3 # 16-byte Folded Spill 5195; PC64LE-NEXT: addis 3, 2, .LCPI84_0@toc@ha 5196; PC64LE-NEXT: lfd 1, .LCPI84_0@toc@l(3) 5197; PC64LE-NEXT: bl nearbyint 5198; PC64LE-NEXT: nop 5199; PC64LE-NEXT: li 3, 48 5200; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 5201; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 5202; PC64LE-NEXT: addis 3, 2, .LCPI84_1@toc@ha 5203; PC64LE-NEXT: lfd 1, .LCPI84_1@toc@l(3) 5204; PC64LE-NEXT: bl nearbyint 5205; PC64LE-NEXT: nop 5206; PC64LE-NEXT: li 3, 48 5207; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 5208; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 5209; PC64LE-NEXT: addis 3, 2, .LCPI84_2@toc@ha 5210; PC64LE-NEXT: xxmrghd 63, 1, 0 5211; PC64LE-NEXT: lfd 1, .LCPI84_2@toc@l(3) 5212; PC64LE-NEXT: bl nearbyint 5213; PC64LE-NEXT: nop 5214; PC64LE-NEXT: li 3, 48 5215; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 5216; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 5217; PC64LE-NEXT: addis 3, 2, .LCPI84_3@toc@ha 5218; PC64LE-NEXT: lfd 1, .LCPI84_3@toc@l(3) 5219; PC64LE-NEXT: bl nearbyint 5220; PC64LE-NEXT: nop 5221; PC64LE-NEXT: li 3, 48 5222; PC64LE-NEXT: vmr 2, 31 5223; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 5224; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 5225; PC64LE-NEXT: li 3, 64 5226; PC64LE-NEXT: lxvd2x 63, 1, 3 # 16-byte Folded Reload 5227; PC64LE-NEXT: xxmrghd 35, 1, 0 5228; PC64LE-NEXT: addi 1, 1, 80 5229; PC64LE-NEXT: ld 0, 16(1) 5230; PC64LE-NEXT: mtlr 0 5231; PC64LE-NEXT: blr 5232; 5233; PC64LE9-LABEL: constrained_vector_nearbyint_v4f64: 5234; PC64LE9: # %bb.0: # %entry 5235; PC64LE9-NEXT: mflr 0 5236; PC64LE9-NEXT: std 0, 16(1) 5237; PC64LE9-NEXT: stdu 1, -64(1) 5238; PC64LE9-NEXT: addis 3, 2, .LCPI84_0@toc@ha 5239; PC64LE9-NEXT: lfd 1, .LCPI84_0@toc@l(3) 5240; PC64LE9-NEXT: stxv 63, 48(1) # 16-byte Folded Spill 5241; PC64LE9-NEXT: bl nearbyint 5242; PC64LE9-NEXT: nop 5243; PC64LE9-NEXT: addis 3, 2, .LCPI84_1@toc@ha 5244; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 5245; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 5246; PC64LE9-NEXT: lfd 1, .LCPI84_1@toc@l(3) 5247; PC64LE9-NEXT: bl nearbyint 5248; PC64LE9-NEXT: nop 5249; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 5250; PC64LE9-NEXT: addis 3, 2, .LCPI84_2@toc@ha 5251; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 5252; PC64LE9-NEXT: xxmrghd 63, 1, 0 5253; PC64LE9-NEXT: lfd 1, .LCPI84_2@toc@l(3) 5254; PC64LE9-NEXT: bl nearbyint 5255; PC64LE9-NEXT: nop 5256; PC64LE9-NEXT: addis 3, 2, .LCPI84_3@toc@ha 5257; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 5258; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 5259; PC64LE9-NEXT: lfd 1, .LCPI84_3@toc@l(3) 5260; PC64LE9-NEXT: bl nearbyint 5261; PC64LE9-NEXT: nop 5262; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 5263; PC64LE9-NEXT: vmr 2, 31 5264; PC64LE9-NEXT: lxv 63, 48(1) # 16-byte Folded Reload 5265; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 5266; PC64LE9-NEXT: xxmrghd 35, 1, 0 5267; PC64LE9-NEXT: addi 1, 1, 64 5268; PC64LE9-NEXT: ld 0, 16(1) 5269; PC64LE9-NEXT: mtlr 0 5270; PC64LE9-NEXT: blr 5271entry: 5272 %nearby = call <4 x double> @llvm.experimental.constrained.nearbyint.v4f64( 5273 <4 x double> <double 42.1, double 42.2, 5274 double 42.3, double 42.4>, 5275 metadata !"round.dynamic", 5276 metadata !"fpexcept.strict") #1 5277 ret <4 x double> %nearby 5278} 5279 5280define <1 x float> @constrained_vector_maxnum_v1f32() #0 { 5281; PC64LE-LABEL: constrained_vector_maxnum_v1f32: 5282; PC64LE: # %bb.0: # %entry 5283; PC64LE-NEXT: mflr 0 5284; PC64LE-NEXT: std 0, 16(1) 5285; PC64LE-NEXT: stdu 1, -32(1) 5286; PC64LE-NEXT: addis 3, 2, .LCPI85_0@toc@ha 5287; PC64LE-NEXT: addis 4, 2, .LCPI85_1@toc@ha 5288; PC64LE-NEXT: lfs 1, .LCPI85_0@toc@l(3) 5289; PC64LE-NEXT: lfs 2, .LCPI85_1@toc@l(4) 5290; PC64LE-NEXT: bl fmaxf 5291; PC64LE-NEXT: nop 5292; PC64LE-NEXT: xscvdpspn 0, 1 5293; PC64LE-NEXT: xxsldwi 34, 0, 0, 1 5294; PC64LE-NEXT: addi 1, 1, 32 5295; PC64LE-NEXT: ld 0, 16(1) 5296; PC64LE-NEXT: mtlr 0 5297; PC64LE-NEXT: blr 5298; 5299; PC64LE9-LABEL: constrained_vector_maxnum_v1f32: 5300; PC64LE9: # %bb.0: # %entry 5301; PC64LE9-NEXT: mflr 0 5302; PC64LE9-NEXT: std 0, 16(1) 5303; PC64LE9-NEXT: stdu 1, -32(1) 5304; PC64LE9-NEXT: addis 3, 2, .LCPI85_0@toc@ha 5305; PC64LE9-NEXT: lfs 1, .LCPI85_0@toc@l(3) 5306; PC64LE9-NEXT: addis 3, 2, .LCPI85_1@toc@ha 5307; PC64LE9-NEXT: lfs 2, .LCPI85_1@toc@l(3) 5308; PC64LE9-NEXT: bl fmaxf 5309; PC64LE9-NEXT: nop 5310; PC64LE9-NEXT: xscvdpspn 0, 1 5311; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 5312; PC64LE9-NEXT: addi 1, 1, 32 5313; PC64LE9-NEXT: ld 0, 16(1) 5314; PC64LE9-NEXT: mtlr 0 5315; PC64LE9-NEXT: blr 5316entry: 5317 %max = call <1 x float> @llvm.experimental.constrained.maxnum.v1f32( 5318 <1 x float> <float 42.0>, <1 x float> <float 41.0>, 5319 metadata !"fpexcept.strict") #1 5320 ret <1 x float> %max 5321} 5322 5323define <2 x double> @constrained_vector_maxnum_v2f64() #0 { 5324; PC64LE-LABEL: constrained_vector_maxnum_v2f64: 5325; PC64LE: # %bb.0: # %entry 5326; PC64LE-NEXT: mflr 0 5327; PC64LE-NEXT: std 0, 16(1) 5328; PC64LE-NEXT: stdu 1, -64(1) 5329; PC64LE-NEXT: addis 3, 2, .LCPI86_0@toc@ha 5330; PC64LE-NEXT: addis 4, 2, .LCPI86_1@toc@ha 5331; PC64LE-NEXT: lfs 1, .LCPI86_0@toc@l(3) 5332; PC64LE-NEXT: lfs 2, .LCPI86_1@toc@l(4) 5333; PC64LE-NEXT: bl fmax 5334; PC64LE-NEXT: nop 5335; PC64LE-NEXT: li 3, 48 5336; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 5337; PC64LE-NEXT: addis 4, 2, .LCPI86_3@toc@ha 5338; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 5339; PC64LE-NEXT: addis 3, 2, .LCPI86_2@toc@ha 5340; PC64LE-NEXT: lfs 2, .LCPI86_3@toc@l(4) 5341; PC64LE-NEXT: lfs 1, .LCPI86_2@toc@l(3) 5342; PC64LE-NEXT: bl fmax 5343; PC64LE-NEXT: nop 5344; PC64LE-NEXT: li 3, 48 5345; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 5346; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 5347; PC64LE-NEXT: xxmrghd 34, 1, 0 5348; PC64LE-NEXT: addi 1, 1, 64 5349; PC64LE-NEXT: ld 0, 16(1) 5350; PC64LE-NEXT: mtlr 0 5351; PC64LE-NEXT: blr 5352; 5353; PC64LE9-LABEL: constrained_vector_maxnum_v2f64: 5354; PC64LE9: # %bb.0: # %entry 5355; PC64LE9-NEXT: mflr 0 5356; PC64LE9-NEXT: std 0, 16(1) 5357; PC64LE9-NEXT: stdu 1, -48(1) 5358; PC64LE9-NEXT: addis 3, 2, .LCPI86_0@toc@ha 5359; PC64LE9-NEXT: lfs 1, .LCPI86_0@toc@l(3) 5360; PC64LE9-NEXT: addis 3, 2, .LCPI86_1@toc@ha 5361; PC64LE9-NEXT: lfs 2, .LCPI86_1@toc@l(3) 5362; PC64LE9-NEXT: bl fmax 5363; PC64LE9-NEXT: nop 5364; PC64LE9-NEXT: addis 3, 2, .LCPI86_2@toc@ha 5365; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 5366; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 5367; PC64LE9-NEXT: lfs 1, .LCPI86_2@toc@l(3) 5368; PC64LE9-NEXT: addis 3, 2, .LCPI86_3@toc@ha 5369; PC64LE9-NEXT: lfs 2, .LCPI86_3@toc@l(3) 5370; PC64LE9-NEXT: bl fmax 5371; PC64LE9-NEXT: nop 5372; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 5373; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 5374; PC64LE9-NEXT: xxmrghd 34, 1, 0 5375; PC64LE9-NEXT: addi 1, 1, 48 5376; PC64LE9-NEXT: ld 0, 16(1) 5377; PC64LE9-NEXT: mtlr 0 5378; PC64LE9-NEXT: blr 5379entry: 5380 %max = call <2 x double> @llvm.experimental.constrained.maxnum.v2f64( 5381 <2 x double> <double 43.0, double 42.0>, 5382 <2 x double> <double 41.0, double 40.0>, 5383 metadata !"fpexcept.strict") #1 5384 ret <2 x double> %max 5385} 5386 5387define <3 x float> @constrained_vector_maxnum_v3f32() #0 { 5388; PC64LE-LABEL: constrained_vector_maxnum_v3f32: 5389; PC64LE: # %bb.0: # %entry 5390; PC64LE-NEXT: mflr 0 5391; PC64LE-NEXT: stfd 29, -24(1) # 8-byte Folded Spill 5392; PC64LE-NEXT: stfd 30, -16(1) # 8-byte Folded Spill 5393; PC64LE-NEXT: stfd 31, -8(1) # 8-byte Folded Spill 5394; PC64LE-NEXT: std 0, 16(1) 5395; PC64LE-NEXT: stdu 1, -64(1) 5396; PC64LE-NEXT: addis 4, 2, .LCPI87_1@toc@ha 5397; PC64LE-NEXT: addis 3, 2, .LCPI87_0@toc@ha 5398; PC64LE-NEXT: lfs 31, .LCPI87_1@toc@l(4) 5399; PC64LE-NEXT: lfs 1, .LCPI87_0@toc@l(3) 5400; PC64LE-NEXT: fmr 2, 31 5401; PC64LE-NEXT: bl fmaxf 5402; PC64LE-NEXT: nop 5403; PC64LE-NEXT: addis 3, 2, .LCPI87_2@toc@ha 5404; PC64LE-NEXT: addis 4, 2, .LCPI87_3@toc@ha 5405; PC64LE-NEXT: fmr 30, 1 5406; PC64LE-NEXT: lfs 1, .LCPI87_2@toc@l(3) 5407; PC64LE-NEXT: lfs 2, .LCPI87_3@toc@l(4) 5408; PC64LE-NEXT: bl fmaxf 5409; PC64LE-NEXT: nop 5410; PC64LE-NEXT: fmr 29, 1 5411; PC64LE-NEXT: addis 3, 2, .LCPI87_4@toc@ha 5412; PC64LE-NEXT: fmr 1, 31 5413; PC64LE-NEXT: lfs 2, .LCPI87_4@toc@l(3) 5414; PC64LE-NEXT: bl fmaxf 5415; PC64LE-NEXT: nop 5416; PC64LE-NEXT: xscvdpspn 0, 29 5417; PC64LE-NEXT: addis 3, 2, .LCPI87_5@toc@ha 5418; PC64LE-NEXT: xscvdpspn 1, 1 5419; PC64LE-NEXT: addi 3, 3, .LCPI87_5@toc@l 5420; PC64LE-NEXT: lvx 4, 0, 3 5421; PC64LE-NEXT: xxsldwi 34, 0, 0, 1 5422; PC64LE-NEXT: xscvdpspn 0, 30 5423; PC64LE-NEXT: xxsldwi 35, 1, 1, 1 5424; PC64LE-NEXT: vmrglw 2, 2, 3 5425; PC64LE-NEXT: xxsldwi 35, 0, 0, 1 5426; PC64LE-NEXT: vperm 2, 3, 2, 4 5427; PC64LE-NEXT: addi 1, 1, 64 5428; PC64LE-NEXT: ld 0, 16(1) 5429; PC64LE-NEXT: lfd 31, -8(1) # 8-byte Folded Reload 5430; PC64LE-NEXT: lfd 30, -16(1) # 8-byte Folded Reload 5431; PC64LE-NEXT: lfd 29, -24(1) # 8-byte Folded Reload 5432; PC64LE-NEXT: mtlr 0 5433; PC64LE-NEXT: blr 5434; 5435; PC64LE9-LABEL: constrained_vector_maxnum_v3f32: 5436; PC64LE9: # %bb.0: # %entry 5437; PC64LE9-NEXT: mflr 0 5438; PC64LE9-NEXT: stfd 29, -24(1) # 8-byte Folded Spill 5439; PC64LE9-NEXT: stfd 30, -16(1) # 8-byte Folded Spill 5440; PC64LE9-NEXT: stfd 31, -8(1) # 8-byte Folded Spill 5441; PC64LE9-NEXT: std 0, 16(1) 5442; PC64LE9-NEXT: stdu 1, -64(1) 5443; PC64LE9-NEXT: addis 3, 2, .LCPI87_0@toc@ha 5444; PC64LE9-NEXT: lfs 1, .LCPI87_0@toc@l(3) 5445; PC64LE9-NEXT: addis 3, 2, .LCPI87_1@toc@ha 5446; PC64LE9-NEXT: lfs 31, .LCPI87_1@toc@l(3) 5447; PC64LE9-NEXT: fmr 2, 31 5448; PC64LE9-NEXT: bl fmaxf 5449; PC64LE9-NEXT: nop 5450; PC64LE9-NEXT: addis 3, 2, .LCPI87_2@toc@ha 5451; PC64LE9-NEXT: fmr 30, 1 5452; PC64LE9-NEXT: lfs 1, .LCPI87_2@toc@l(3) 5453; PC64LE9-NEXT: addis 3, 2, .LCPI87_3@toc@ha 5454; PC64LE9-NEXT: lfs 2, .LCPI87_3@toc@l(3) 5455; PC64LE9-NEXT: bl fmaxf 5456; PC64LE9-NEXT: nop 5457; PC64LE9-NEXT: addis 3, 2, .LCPI87_4@toc@ha 5458; PC64LE9-NEXT: lfs 2, .LCPI87_4@toc@l(3) 5459; PC64LE9-NEXT: fmr 29, 1 5460; PC64LE9-NEXT: fmr 1, 31 5461; PC64LE9-NEXT: bl fmaxf 5462; PC64LE9-NEXT: nop 5463; PC64LE9-NEXT: xscvdpspn 0, 1 5464; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 5465; PC64LE9-NEXT: xscvdpspn 0, 29 5466; PC64LE9-NEXT: xxsldwi 35, 0, 0, 1 5467; PC64LE9-NEXT: xscvdpspn 0, 30 5468; PC64LE9-NEXT: addis 3, 2, .LCPI87_5@toc@ha 5469; PC64LE9-NEXT: addi 3, 3, .LCPI87_5@toc@l 5470; PC64LE9-NEXT: lxvx 36, 0, 3 5471; PC64LE9-NEXT: vmrglw 2, 3, 2 5472; PC64LE9-NEXT: xxsldwi 35, 0, 0, 1 5473; PC64LE9-NEXT: vperm 2, 3, 2, 4 5474; PC64LE9-NEXT: addi 1, 1, 64 5475; PC64LE9-NEXT: ld 0, 16(1) 5476; PC64LE9-NEXT: lfd 31, -8(1) # 8-byte Folded Reload 5477; PC64LE9-NEXT: lfd 30, -16(1) # 8-byte Folded Reload 5478; PC64LE9-NEXT: mtlr 0 5479; PC64LE9-NEXT: lfd 29, -24(1) # 8-byte Folded Reload 5480; PC64LE9-NEXT: blr 5481entry: 5482 %max = call <3 x float> @llvm.experimental.constrained.maxnum.v3f32( 5483 <3 x float> <float 43.0, float 44.0, float 45.0>, 5484 <3 x float> <float 41.0, float 42.0, float 43.0>, 5485 metadata !"fpexcept.strict") #1 5486 ret <3 x float> %max 5487} 5488 5489define <3 x double> @constrained_vector_max_v3f64() #0 { 5490; PC64LE-LABEL: constrained_vector_max_v3f64: 5491; PC64LE: # %bb.0: # %entry 5492; PC64LE-NEXT: mflr 0 5493; PC64LE-NEXT: std 0, 16(1) 5494; PC64LE-NEXT: stdu 1, -80(1) 5495; PC64LE-NEXT: li 3, 64 5496; PC64LE-NEXT: addis 4, 2, .LCPI88_1@toc@ha 5497; PC64LE-NEXT: stxvd2x 63, 1, 3 # 16-byte Folded Spill 5498; PC64LE-NEXT: addis 3, 2, .LCPI88_0@toc@ha 5499; PC64LE-NEXT: lfs 2, .LCPI88_1@toc@l(4) 5500; PC64LE-NEXT: lfs 1, .LCPI88_0@toc@l(3) 5501; PC64LE-NEXT: bl fmax 5502; PC64LE-NEXT: nop 5503; PC64LE-NEXT: li 3, 48 5504; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 5505; PC64LE-NEXT: addis 4, 2, .LCPI88_3@toc@ha 5506; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 5507; PC64LE-NEXT: addis 3, 2, .LCPI88_2@toc@ha 5508; PC64LE-NEXT: lfs 2, .LCPI88_3@toc@l(4) 5509; PC64LE-NEXT: lfs 1, .LCPI88_2@toc@l(3) 5510; PC64LE-NEXT: bl fmax 5511; PC64LE-NEXT: nop 5512; PC64LE-NEXT: li 3, 48 5513; PC64LE-NEXT: addis 4, 2, .LCPI88_5@toc@ha 5514; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 5515; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 5516; PC64LE-NEXT: addis 3, 2, .LCPI88_4@toc@ha 5517; PC64LE-NEXT: lfs 2, .LCPI88_5@toc@l(4) 5518; PC64LE-NEXT: xxmrghd 63, 1, 0 5519; PC64LE-NEXT: lfs 1, .LCPI88_4@toc@l(3) 5520; PC64LE-NEXT: bl fmax 5521; PC64LE-NEXT: nop 5522; PC64LE-NEXT: xxswapd 0, 63 5523; PC64LE-NEXT: li 3, 64 5524; PC64LE-NEXT: xxlor 2, 63, 63 5525; PC64LE-NEXT: lxvd2x 63, 1, 3 # 16-byte Folded Reload 5526; PC64LE-NEXT: fmr 3, 1 5527; PC64LE-NEXT: fmr 1, 0 5528; PC64LE-NEXT: addi 1, 1, 80 5529; PC64LE-NEXT: ld 0, 16(1) 5530; PC64LE-NEXT: mtlr 0 5531; PC64LE-NEXT: blr 5532; 5533; PC64LE9-LABEL: constrained_vector_max_v3f64: 5534; PC64LE9: # %bb.0: # %entry 5535; PC64LE9-NEXT: mflr 0 5536; PC64LE9-NEXT: std 0, 16(1) 5537; PC64LE9-NEXT: stdu 1, -64(1) 5538; PC64LE9-NEXT: addis 3, 2, .LCPI88_0@toc@ha 5539; PC64LE9-NEXT: lfs 1, .LCPI88_0@toc@l(3) 5540; PC64LE9-NEXT: addis 3, 2, .LCPI88_1@toc@ha 5541; PC64LE9-NEXT: lfs 2, .LCPI88_1@toc@l(3) 5542; PC64LE9-NEXT: stxv 63, 48(1) # 16-byte Folded Spill 5543; PC64LE9-NEXT: bl fmax 5544; PC64LE9-NEXT: nop 5545; PC64LE9-NEXT: addis 3, 2, .LCPI88_2@toc@ha 5546; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 5547; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 5548; PC64LE9-NEXT: lfs 1, .LCPI88_2@toc@l(3) 5549; PC64LE9-NEXT: addis 3, 2, .LCPI88_3@toc@ha 5550; PC64LE9-NEXT: lfs 2, .LCPI88_3@toc@l(3) 5551; PC64LE9-NEXT: bl fmax 5552; PC64LE9-NEXT: nop 5553; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 5554; PC64LE9-NEXT: addis 3, 2, .LCPI88_4@toc@ha 5555; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 5556; PC64LE9-NEXT: xxmrghd 63, 1, 0 5557; PC64LE9-NEXT: lfs 1, .LCPI88_4@toc@l(3) 5558; PC64LE9-NEXT: addis 3, 2, .LCPI88_5@toc@ha 5559; PC64LE9-NEXT: lfs 2, .LCPI88_5@toc@l(3) 5560; PC64LE9-NEXT: bl fmax 5561; PC64LE9-NEXT: nop 5562; PC64LE9-NEXT: fmr 3, 1 5563; PC64LE9-NEXT: xxswapd 1, 63 5564; PC64LE9-NEXT: xscpsgndp 2, 63, 63 5565; PC64LE9-NEXT: lxv 63, 48(1) # 16-byte Folded Reload 5566; PC64LE9-NEXT: # kill: def $f1 killed $f1 killed $vsl1 5567; PC64LE9-NEXT: addi 1, 1, 64 5568; PC64LE9-NEXT: ld 0, 16(1) 5569; PC64LE9-NEXT: mtlr 0 5570; PC64LE9-NEXT: blr 5571entry: 5572 %max = call <3 x double> @llvm.experimental.constrained.maxnum.v3f64( 5573 <3 x double> <double 43.0, double 44.0, double 45.0>, 5574 <3 x double> <double 40.0, double 41.0, double 42.0>, 5575 metadata !"fpexcept.strict") #1 5576 ret <3 x double> %max 5577} 5578 5579define <4 x double> @constrained_vector_maxnum_v4f64() #0 { 5580; PC64LE-LABEL: constrained_vector_maxnum_v4f64: 5581; PC64LE: # %bb.0: # %entry 5582; PC64LE-NEXT: mflr 0 5583; PC64LE-NEXT: std 0, 16(1) 5584; PC64LE-NEXT: stdu 1, -80(1) 5585; PC64LE-NEXT: li 3, 64 5586; PC64LE-NEXT: addis 4, 2, .LCPI89_1@toc@ha 5587; PC64LE-NEXT: stxvd2x 63, 1, 3 # 16-byte Folded Spill 5588; PC64LE-NEXT: addis 3, 2, .LCPI89_0@toc@ha 5589; PC64LE-NEXT: lfs 2, .LCPI89_1@toc@l(4) 5590; PC64LE-NEXT: lfs 1, .LCPI89_0@toc@l(3) 5591; PC64LE-NEXT: bl fmax 5592; PC64LE-NEXT: nop 5593; PC64LE-NEXT: li 3, 48 5594; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 5595; PC64LE-NEXT: addis 4, 2, .LCPI89_3@toc@ha 5596; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 5597; PC64LE-NEXT: addis 3, 2, .LCPI89_2@toc@ha 5598; PC64LE-NEXT: lfs 2, .LCPI89_3@toc@l(4) 5599; PC64LE-NEXT: lfs 1, .LCPI89_2@toc@l(3) 5600; PC64LE-NEXT: bl fmax 5601; PC64LE-NEXT: nop 5602; PC64LE-NEXT: li 3, 48 5603; PC64LE-NEXT: addis 4, 2, .LCPI89_5@toc@ha 5604; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 5605; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 5606; PC64LE-NEXT: addis 3, 2, .LCPI89_4@toc@ha 5607; PC64LE-NEXT: lfs 2, .LCPI89_5@toc@l(4) 5608; PC64LE-NEXT: xxmrghd 63, 1, 0 5609; PC64LE-NEXT: lfs 1, .LCPI89_4@toc@l(3) 5610; PC64LE-NEXT: bl fmax 5611; PC64LE-NEXT: nop 5612; PC64LE-NEXT: li 3, 48 5613; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 5614; PC64LE-NEXT: addis 4, 2, .LCPI89_7@toc@ha 5615; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 5616; PC64LE-NEXT: addis 3, 2, .LCPI89_6@toc@ha 5617; PC64LE-NEXT: lfs 2, .LCPI89_7@toc@l(4) 5618; PC64LE-NEXT: lfs 1, .LCPI89_6@toc@l(3) 5619; PC64LE-NEXT: bl fmax 5620; PC64LE-NEXT: nop 5621; PC64LE-NEXT: li 3, 48 5622; PC64LE-NEXT: vmr 2, 31 5623; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 5624; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 5625; PC64LE-NEXT: li 3, 64 5626; PC64LE-NEXT: lxvd2x 63, 1, 3 # 16-byte Folded Reload 5627; PC64LE-NEXT: xxmrghd 35, 1, 0 5628; PC64LE-NEXT: addi 1, 1, 80 5629; PC64LE-NEXT: ld 0, 16(1) 5630; PC64LE-NEXT: mtlr 0 5631; PC64LE-NEXT: blr 5632; 5633; PC64LE9-LABEL: constrained_vector_maxnum_v4f64: 5634; PC64LE9: # %bb.0: # %entry 5635; PC64LE9-NEXT: mflr 0 5636; PC64LE9-NEXT: std 0, 16(1) 5637; PC64LE9-NEXT: stdu 1, -64(1) 5638; PC64LE9-NEXT: addis 3, 2, .LCPI89_0@toc@ha 5639; PC64LE9-NEXT: lfs 1, .LCPI89_0@toc@l(3) 5640; PC64LE9-NEXT: addis 3, 2, .LCPI89_1@toc@ha 5641; PC64LE9-NEXT: lfs 2, .LCPI89_1@toc@l(3) 5642; PC64LE9-NEXT: stxv 63, 48(1) # 16-byte Folded Spill 5643; PC64LE9-NEXT: bl fmax 5644; PC64LE9-NEXT: nop 5645; PC64LE9-NEXT: addis 3, 2, .LCPI89_2@toc@ha 5646; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 5647; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 5648; PC64LE9-NEXT: lfs 1, .LCPI89_2@toc@l(3) 5649; PC64LE9-NEXT: addis 3, 2, .LCPI89_3@toc@ha 5650; PC64LE9-NEXT: lfs 2, .LCPI89_3@toc@l(3) 5651; PC64LE9-NEXT: bl fmax 5652; PC64LE9-NEXT: nop 5653; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 5654; PC64LE9-NEXT: addis 3, 2, .LCPI89_4@toc@ha 5655; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 5656; PC64LE9-NEXT: xxmrghd 63, 1, 0 5657; PC64LE9-NEXT: lfs 1, .LCPI89_4@toc@l(3) 5658; PC64LE9-NEXT: addis 3, 2, .LCPI89_5@toc@ha 5659; PC64LE9-NEXT: lfs 2, .LCPI89_5@toc@l(3) 5660; PC64LE9-NEXT: bl fmax 5661; PC64LE9-NEXT: nop 5662; PC64LE9-NEXT: addis 3, 2, .LCPI89_6@toc@ha 5663; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 5664; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 5665; PC64LE9-NEXT: lfs 1, .LCPI89_6@toc@l(3) 5666; PC64LE9-NEXT: addis 3, 2, .LCPI89_7@toc@ha 5667; PC64LE9-NEXT: lfs 2, .LCPI89_7@toc@l(3) 5668; PC64LE9-NEXT: bl fmax 5669; PC64LE9-NEXT: nop 5670; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 5671; PC64LE9-NEXT: vmr 2, 31 5672; PC64LE9-NEXT: lxv 63, 48(1) # 16-byte Folded Reload 5673; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 5674; PC64LE9-NEXT: xxmrghd 35, 1, 0 5675; PC64LE9-NEXT: addi 1, 1, 64 5676; PC64LE9-NEXT: ld 0, 16(1) 5677; PC64LE9-NEXT: mtlr 0 5678; PC64LE9-NEXT: blr 5679entry: 5680 %max = call <4 x double> @llvm.experimental.constrained.maxnum.v4f64( 5681 <4 x double> <double 44.0, double 45.0, 5682 double 46.0, double 47.0>, 5683 <4 x double> <double 40.0, double 41.0, 5684 double 42.0, double 43.0>, 5685 metadata !"fpexcept.strict") #1 5686 ret <4 x double> %max 5687} 5688 5689define <1 x float> @constrained_vector_minnum_v1f32() #0 { 5690; PC64LE-LABEL: constrained_vector_minnum_v1f32: 5691; PC64LE: # %bb.0: # %entry 5692; PC64LE-NEXT: mflr 0 5693; PC64LE-NEXT: std 0, 16(1) 5694; PC64LE-NEXT: stdu 1, -32(1) 5695; PC64LE-NEXT: addis 3, 2, .LCPI90_0@toc@ha 5696; PC64LE-NEXT: addis 4, 2, .LCPI90_1@toc@ha 5697; PC64LE-NEXT: lfs 1, .LCPI90_0@toc@l(3) 5698; PC64LE-NEXT: lfs 2, .LCPI90_1@toc@l(4) 5699; PC64LE-NEXT: bl fminf 5700; PC64LE-NEXT: nop 5701; PC64LE-NEXT: xscvdpspn 0, 1 5702; PC64LE-NEXT: xxsldwi 34, 0, 0, 1 5703; PC64LE-NEXT: addi 1, 1, 32 5704; PC64LE-NEXT: ld 0, 16(1) 5705; PC64LE-NEXT: mtlr 0 5706; PC64LE-NEXT: blr 5707; 5708; PC64LE9-LABEL: constrained_vector_minnum_v1f32: 5709; PC64LE9: # %bb.0: # %entry 5710; PC64LE9-NEXT: mflr 0 5711; PC64LE9-NEXT: std 0, 16(1) 5712; PC64LE9-NEXT: stdu 1, -32(1) 5713; PC64LE9-NEXT: addis 3, 2, .LCPI90_0@toc@ha 5714; PC64LE9-NEXT: lfs 1, .LCPI90_0@toc@l(3) 5715; PC64LE9-NEXT: addis 3, 2, .LCPI90_1@toc@ha 5716; PC64LE9-NEXT: lfs 2, .LCPI90_1@toc@l(3) 5717; PC64LE9-NEXT: bl fminf 5718; PC64LE9-NEXT: nop 5719; PC64LE9-NEXT: xscvdpspn 0, 1 5720; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 5721; PC64LE9-NEXT: addi 1, 1, 32 5722; PC64LE9-NEXT: ld 0, 16(1) 5723; PC64LE9-NEXT: mtlr 0 5724; PC64LE9-NEXT: blr 5725 entry: 5726 %min = call <1 x float> @llvm.experimental.constrained.minnum.v1f32( 5727 <1 x float> <float 42.0>, <1 x float> <float 41.0>, 5728 metadata !"fpexcept.strict") #1 5729 ret <1 x float> %min 5730} 5731 5732define <2 x double> @constrained_vector_minnum_v2f64() #0 { 5733; PC64LE-LABEL: constrained_vector_minnum_v2f64: 5734; PC64LE: # %bb.0: # %entry 5735; PC64LE-NEXT: mflr 0 5736; PC64LE-NEXT: std 0, 16(1) 5737; PC64LE-NEXT: stdu 1, -64(1) 5738; PC64LE-NEXT: addis 3, 2, .LCPI91_0@toc@ha 5739; PC64LE-NEXT: addis 4, 2, .LCPI91_1@toc@ha 5740; PC64LE-NEXT: lfs 1, .LCPI91_0@toc@l(3) 5741; PC64LE-NEXT: lfs 2, .LCPI91_1@toc@l(4) 5742; PC64LE-NEXT: bl fmin 5743; PC64LE-NEXT: nop 5744; PC64LE-NEXT: li 3, 48 5745; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 5746; PC64LE-NEXT: addis 4, 2, .LCPI91_3@toc@ha 5747; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 5748; PC64LE-NEXT: addis 3, 2, .LCPI91_2@toc@ha 5749; PC64LE-NEXT: lfs 2, .LCPI91_3@toc@l(4) 5750; PC64LE-NEXT: lfs 1, .LCPI91_2@toc@l(3) 5751; PC64LE-NEXT: bl fmin 5752; PC64LE-NEXT: nop 5753; PC64LE-NEXT: li 3, 48 5754; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 5755; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 5756; PC64LE-NEXT: xxmrghd 34, 1, 0 5757; PC64LE-NEXT: addi 1, 1, 64 5758; PC64LE-NEXT: ld 0, 16(1) 5759; PC64LE-NEXT: mtlr 0 5760; PC64LE-NEXT: blr 5761; 5762; PC64LE9-LABEL: constrained_vector_minnum_v2f64: 5763; PC64LE9: # %bb.0: # %entry 5764; PC64LE9-NEXT: mflr 0 5765; PC64LE9-NEXT: std 0, 16(1) 5766; PC64LE9-NEXT: stdu 1, -48(1) 5767; PC64LE9-NEXT: addis 3, 2, .LCPI91_0@toc@ha 5768; PC64LE9-NEXT: lfs 1, .LCPI91_0@toc@l(3) 5769; PC64LE9-NEXT: addis 3, 2, .LCPI91_1@toc@ha 5770; PC64LE9-NEXT: lfs 2, .LCPI91_1@toc@l(3) 5771; PC64LE9-NEXT: bl fmin 5772; PC64LE9-NEXT: nop 5773; PC64LE9-NEXT: addis 3, 2, .LCPI91_2@toc@ha 5774; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 5775; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 5776; PC64LE9-NEXT: lfs 1, .LCPI91_2@toc@l(3) 5777; PC64LE9-NEXT: addis 3, 2, .LCPI91_3@toc@ha 5778; PC64LE9-NEXT: lfs 2, .LCPI91_3@toc@l(3) 5779; PC64LE9-NEXT: bl fmin 5780; PC64LE9-NEXT: nop 5781; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 5782; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 5783; PC64LE9-NEXT: xxmrghd 34, 1, 0 5784; PC64LE9-NEXT: addi 1, 1, 48 5785; PC64LE9-NEXT: ld 0, 16(1) 5786; PC64LE9-NEXT: mtlr 0 5787; PC64LE9-NEXT: blr 5788entry: 5789 %min = call <2 x double> @llvm.experimental.constrained.minnum.v2f64( 5790 <2 x double> <double 43.0, double 42.0>, 5791 <2 x double> <double 41.0, double 40.0>, 5792 metadata !"fpexcept.strict") #1 5793 ret <2 x double> %min 5794} 5795 5796define <3 x float> @constrained_vector_minnum_v3f32() #0 { 5797; PC64LE-LABEL: constrained_vector_minnum_v3f32: 5798; PC64LE: # %bb.0: # %entry 5799; PC64LE-NEXT: mflr 0 5800; PC64LE-NEXT: stfd 29, -24(1) # 8-byte Folded Spill 5801; PC64LE-NEXT: stfd 30, -16(1) # 8-byte Folded Spill 5802; PC64LE-NEXT: stfd 31, -8(1) # 8-byte Folded Spill 5803; PC64LE-NEXT: std 0, 16(1) 5804; PC64LE-NEXT: stdu 1, -64(1) 5805; PC64LE-NEXT: addis 4, 2, .LCPI92_1@toc@ha 5806; PC64LE-NEXT: addis 3, 2, .LCPI92_0@toc@ha 5807; PC64LE-NEXT: lfs 31, .LCPI92_1@toc@l(4) 5808; PC64LE-NEXT: lfs 1, .LCPI92_0@toc@l(3) 5809; PC64LE-NEXT: fmr 2, 31 5810; PC64LE-NEXT: bl fminf 5811; PC64LE-NEXT: nop 5812; PC64LE-NEXT: addis 3, 2, .LCPI92_2@toc@ha 5813; PC64LE-NEXT: addis 4, 2, .LCPI92_3@toc@ha 5814; PC64LE-NEXT: fmr 30, 1 5815; PC64LE-NEXT: lfs 1, .LCPI92_2@toc@l(3) 5816; PC64LE-NEXT: lfs 2, .LCPI92_3@toc@l(4) 5817; PC64LE-NEXT: bl fminf 5818; PC64LE-NEXT: nop 5819; PC64LE-NEXT: fmr 29, 1 5820; PC64LE-NEXT: addis 3, 2, .LCPI92_4@toc@ha 5821; PC64LE-NEXT: fmr 1, 31 5822; PC64LE-NEXT: lfs 2, .LCPI92_4@toc@l(3) 5823; PC64LE-NEXT: bl fminf 5824; PC64LE-NEXT: nop 5825; PC64LE-NEXT: xscvdpspn 0, 29 5826; PC64LE-NEXT: addis 3, 2, .LCPI92_5@toc@ha 5827; PC64LE-NEXT: xscvdpspn 1, 1 5828; PC64LE-NEXT: addi 3, 3, .LCPI92_5@toc@l 5829; PC64LE-NEXT: lvx 4, 0, 3 5830; PC64LE-NEXT: xxsldwi 34, 0, 0, 1 5831; PC64LE-NEXT: xscvdpspn 0, 30 5832; PC64LE-NEXT: xxsldwi 35, 1, 1, 1 5833; PC64LE-NEXT: vmrglw 2, 2, 3 5834; PC64LE-NEXT: xxsldwi 35, 0, 0, 1 5835; PC64LE-NEXT: vperm 2, 3, 2, 4 5836; PC64LE-NEXT: addi 1, 1, 64 5837; PC64LE-NEXT: ld 0, 16(1) 5838; PC64LE-NEXT: lfd 31, -8(1) # 8-byte Folded Reload 5839; PC64LE-NEXT: lfd 30, -16(1) # 8-byte Folded Reload 5840; PC64LE-NEXT: lfd 29, -24(1) # 8-byte Folded Reload 5841; PC64LE-NEXT: mtlr 0 5842; PC64LE-NEXT: blr 5843; 5844; PC64LE9-LABEL: constrained_vector_minnum_v3f32: 5845; PC64LE9: # %bb.0: # %entry 5846; PC64LE9-NEXT: mflr 0 5847; PC64LE9-NEXT: stfd 29, -24(1) # 8-byte Folded Spill 5848; PC64LE9-NEXT: stfd 30, -16(1) # 8-byte Folded Spill 5849; PC64LE9-NEXT: stfd 31, -8(1) # 8-byte Folded Spill 5850; PC64LE9-NEXT: std 0, 16(1) 5851; PC64LE9-NEXT: stdu 1, -64(1) 5852; PC64LE9-NEXT: addis 3, 2, .LCPI92_0@toc@ha 5853; PC64LE9-NEXT: lfs 1, .LCPI92_0@toc@l(3) 5854; PC64LE9-NEXT: addis 3, 2, .LCPI92_1@toc@ha 5855; PC64LE9-NEXT: lfs 31, .LCPI92_1@toc@l(3) 5856; PC64LE9-NEXT: fmr 2, 31 5857; PC64LE9-NEXT: bl fminf 5858; PC64LE9-NEXT: nop 5859; PC64LE9-NEXT: addis 3, 2, .LCPI92_2@toc@ha 5860; PC64LE9-NEXT: fmr 30, 1 5861; PC64LE9-NEXT: lfs 1, .LCPI92_2@toc@l(3) 5862; PC64LE9-NEXT: addis 3, 2, .LCPI92_3@toc@ha 5863; PC64LE9-NEXT: lfs 2, .LCPI92_3@toc@l(3) 5864; PC64LE9-NEXT: bl fminf 5865; PC64LE9-NEXT: nop 5866; PC64LE9-NEXT: addis 3, 2, .LCPI92_4@toc@ha 5867; PC64LE9-NEXT: lfs 2, .LCPI92_4@toc@l(3) 5868; PC64LE9-NEXT: fmr 29, 1 5869; PC64LE9-NEXT: fmr 1, 31 5870; PC64LE9-NEXT: bl fminf 5871; PC64LE9-NEXT: nop 5872; PC64LE9-NEXT: xscvdpspn 0, 1 5873; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 5874; PC64LE9-NEXT: xscvdpspn 0, 29 5875; PC64LE9-NEXT: xxsldwi 35, 0, 0, 1 5876; PC64LE9-NEXT: xscvdpspn 0, 30 5877; PC64LE9-NEXT: addis 3, 2, .LCPI92_5@toc@ha 5878; PC64LE9-NEXT: addi 3, 3, .LCPI92_5@toc@l 5879; PC64LE9-NEXT: lxvx 36, 0, 3 5880; PC64LE9-NEXT: vmrglw 2, 3, 2 5881; PC64LE9-NEXT: xxsldwi 35, 0, 0, 1 5882; PC64LE9-NEXT: vperm 2, 3, 2, 4 5883; PC64LE9-NEXT: addi 1, 1, 64 5884; PC64LE9-NEXT: ld 0, 16(1) 5885; PC64LE9-NEXT: lfd 31, -8(1) # 8-byte Folded Reload 5886; PC64LE9-NEXT: lfd 30, -16(1) # 8-byte Folded Reload 5887; PC64LE9-NEXT: mtlr 0 5888; PC64LE9-NEXT: lfd 29, -24(1) # 8-byte Folded Reload 5889; PC64LE9-NEXT: blr 5890entry: 5891 %min = call <3 x float> @llvm.experimental.constrained.minnum.v3f32( 5892 <3 x float> <float 43.0, float 44.0, float 45.0>, 5893 <3 x float> <float 41.0, float 42.0, float 43.0>, 5894 metadata !"fpexcept.strict") #1 5895 ret <3 x float> %min 5896} 5897 5898define <3 x double> @constrained_vector_min_v3f64() #0 { 5899; PC64LE-LABEL: constrained_vector_min_v3f64: 5900; PC64LE: # %bb.0: # %entry 5901; PC64LE-NEXT: mflr 0 5902; PC64LE-NEXT: std 0, 16(1) 5903; PC64LE-NEXT: stdu 1, -80(1) 5904; PC64LE-NEXT: li 3, 64 5905; PC64LE-NEXT: addis 4, 2, .LCPI93_1@toc@ha 5906; PC64LE-NEXT: stxvd2x 63, 1, 3 # 16-byte Folded Spill 5907; PC64LE-NEXT: addis 3, 2, .LCPI93_0@toc@ha 5908; PC64LE-NEXT: lfs 2, .LCPI93_1@toc@l(4) 5909; PC64LE-NEXT: lfs 1, .LCPI93_0@toc@l(3) 5910; PC64LE-NEXT: bl fmin 5911; PC64LE-NEXT: nop 5912; PC64LE-NEXT: li 3, 48 5913; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 5914; PC64LE-NEXT: addis 4, 2, .LCPI93_3@toc@ha 5915; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 5916; PC64LE-NEXT: addis 3, 2, .LCPI93_2@toc@ha 5917; PC64LE-NEXT: lfs 2, .LCPI93_3@toc@l(4) 5918; PC64LE-NEXT: lfs 1, .LCPI93_2@toc@l(3) 5919; PC64LE-NEXT: bl fmin 5920; PC64LE-NEXT: nop 5921; PC64LE-NEXT: li 3, 48 5922; PC64LE-NEXT: addis 4, 2, .LCPI93_5@toc@ha 5923; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 5924; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 5925; PC64LE-NEXT: addis 3, 2, .LCPI93_4@toc@ha 5926; PC64LE-NEXT: lfs 2, .LCPI93_5@toc@l(4) 5927; PC64LE-NEXT: xxmrghd 63, 1, 0 5928; PC64LE-NEXT: lfs 1, .LCPI93_4@toc@l(3) 5929; PC64LE-NEXT: bl fmin 5930; PC64LE-NEXT: nop 5931; PC64LE-NEXT: xxswapd 0, 63 5932; PC64LE-NEXT: li 3, 64 5933; PC64LE-NEXT: xxlor 2, 63, 63 5934; PC64LE-NEXT: lxvd2x 63, 1, 3 # 16-byte Folded Reload 5935; PC64LE-NEXT: fmr 3, 1 5936; PC64LE-NEXT: fmr 1, 0 5937; PC64LE-NEXT: addi 1, 1, 80 5938; PC64LE-NEXT: ld 0, 16(1) 5939; PC64LE-NEXT: mtlr 0 5940; PC64LE-NEXT: blr 5941; 5942; PC64LE9-LABEL: constrained_vector_min_v3f64: 5943; PC64LE9: # %bb.0: # %entry 5944; PC64LE9-NEXT: mflr 0 5945; PC64LE9-NEXT: std 0, 16(1) 5946; PC64LE9-NEXT: stdu 1, -64(1) 5947; PC64LE9-NEXT: addis 3, 2, .LCPI93_0@toc@ha 5948; PC64LE9-NEXT: lfs 1, .LCPI93_0@toc@l(3) 5949; PC64LE9-NEXT: addis 3, 2, .LCPI93_1@toc@ha 5950; PC64LE9-NEXT: lfs 2, .LCPI93_1@toc@l(3) 5951; PC64LE9-NEXT: stxv 63, 48(1) # 16-byte Folded Spill 5952; PC64LE9-NEXT: bl fmin 5953; PC64LE9-NEXT: nop 5954; PC64LE9-NEXT: addis 3, 2, .LCPI93_2@toc@ha 5955; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 5956; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 5957; PC64LE9-NEXT: lfs 1, .LCPI93_2@toc@l(3) 5958; PC64LE9-NEXT: addis 3, 2, .LCPI93_3@toc@ha 5959; PC64LE9-NEXT: lfs 2, .LCPI93_3@toc@l(3) 5960; PC64LE9-NEXT: bl fmin 5961; PC64LE9-NEXT: nop 5962; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 5963; PC64LE9-NEXT: addis 3, 2, .LCPI93_4@toc@ha 5964; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 5965; PC64LE9-NEXT: xxmrghd 63, 1, 0 5966; PC64LE9-NEXT: lfs 1, .LCPI93_4@toc@l(3) 5967; PC64LE9-NEXT: addis 3, 2, .LCPI93_5@toc@ha 5968; PC64LE9-NEXT: lfs 2, .LCPI93_5@toc@l(3) 5969; PC64LE9-NEXT: bl fmin 5970; PC64LE9-NEXT: nop 5971; PC64LE9-NEXT: fmr 3, 1 5972; PC64LE9-NEXT: xxswapd 1, 63 5973; PC64LE9-NEXT: xscpsgndp 2, 63, 63 5974; PC64LE9-NEXT: lxv 63, 48(1) # 16-byte Folded Reload 5975; PC64LE9-NEXT: # kill: def $f1 killed $f1 killed $vsl1 5976; PC64LE9-NEXT: addi 1, 1, 64 5977; PC64LE9-NEXT: ld 0, 16(1) 5978; PC64LE9-NEXT: mtlr 0 5979; PC64LE9-NEXT: blr 5980entry: 5981 %min = call <3 x double> @llvm.experimental.constrained.minnum.v3f64( 5982 <3 x double> <double 43.0, double 44.0, double 45.0>, 5983 <3 x double> <double 40.0, double 41.0, double 42.0>, 5984 metadata !"fpexcept.strict") #1 5985 ret <3 x double> %min 5986} 5987 5988define <4 x double> @constrained_vector_minnum_v4f64() #0 { 5989; PC64LE-LABEL: constrained_vector_minnum_v4f64: 5990; PC64LE: # %bb.0: # %entry 5991; PC64LE-NEXT: mflr 0 5992; PC64LE-NEXT: std 0, 16(1) 5993; PC64LE-NEXT: stdu 1, -80(1) 5994; PC64LE-NEXT: li 3, 64 5995; PC64LE-NEXT: addis 4, 2, .LCPI94_1@toc@ha 5996; PC64LE-NEXT: stxvd2x 63, 1, 3 # 16-byte Folded Spill 5997; PC64LE-NEXT: addis 3, 2, .LCPI94_0@toc@ha 5998; PC64LE-NEXT: lfs 2, .LCPI94_1@toc@l(4) 5999; PC64LE-NEXT: lfs 1, .LCPI94_0@toc@l(3) 6000; PC64LE-NEXT: bl fmin 6001; PC64LE-NEXT: nop 6002; PC64LE-NEXT: li 3, 48 6003; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 6004; PC64LE-NEXT: addis 4, 2, .LCPI94_3@toc@ha 6005; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 6006; PC64LE-NEXT: addis 3, 2, .LCPI94_2@toc@ha 6007; PC64LE-NEXT: lfs 2, .LCPI94_3@toc@l(4) 6008; PC64LE-NEXT: lfs 1, .LCPI94_2@toc@l(3) 6009; PC64LE-NEXT: bl fmin 6010; PC64LE-NEXT: nop 6011; PC64LE-NEXT: li 3, 48 6012; PC64LE-NEXT: addis 4, 2, .LCPI94_5@toc@ha 6013; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 6014; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 6015; PC64LE-NEXT: addis 3, 2, .LCPI94_4@toc@ha 6016; PC64LE-NEXT: lfs 2, .LCPI94_5@toc@l(4) 6017; PC64LE-NEXT: xxmrghd 63, 1, 0 6018; PC64LE-NEXT: lfs 1, .LCPI94_4@toc@l(3) 6019; PC64LE-NEXT: bl fmin 6020; PC64LE-NEXT: nop 6021; PC64LE-NEXT: li 3, 48 6022; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 6023; PC64LE-NEXT: addis 4, 2, .LCPI94_7@toc@ha 6024; PC64LE-NEXT: stxvd2x 1, 1, 3 # 16-byte Folded Spill 6025; PC64LE-NEXT: addis 3, 2, .LCPI94_6@toc@ha 6026; PC64LE-NEXT: lfs 2, .LCPI94_7@toc@l(4) 6027; PC64LE-NEXT: lfs 1, .LCPI94_6@toc@l(3) 6028; PC64LE-NEXT: bl fmin 6029; PC64LE-NEXT: nop 6030; PC64LE-NEXT: li 3, 48 6031; PC64LE-NEXT: vmr 2, 31 6032; PC64LE-NEXT: # kill: def $f1 killed $f1 def $vsl1 6033; PC64LE-NEXT: lxvd2x 0, 1, 3 # 16-byte Folded Reload 6034; PC64LE-NEXT: li 3, 64 6035; PC64LE-NEXT: lxvd2x 63, 1, 3 # 16-byte Folded Reload 6036; PC64LE-NEXT: xxmrghd 35, 1, 0 6037; PC64LE-NEXT: addi 1, 1, 80 6038; PC64LE-NEXT: ld 0, 16(1) 6039; PC64LE-NEXT: mtlr 0 6040; PC64LE-NEXT: blr 6041; 6042; PC64LE9-LABEL: constrained_vector_minnum_v4f64: 6043; PC64LE9: # %bb.0: # %entry 6044; PC64LE9-NEXT: mflr 0 6045; PC64LE9-NEXT: std 0, 16(1) 6046; PC64LE9-NEXT: stdu 1, -64(1) 6047; PC64LE9-NEXT: addis 3, 2, .LCPI94_0@toc@ha 6048; PC64LE9-NEXT: lfs 1, .LCPI94_0@toc@l(3) 6049; PC64LE9-NEXT: addis 3, 2, .LCPI94_1@toc@ha 6050; PC64LE9-NEXT: lfs 2, .LCPI94_1@toc@l(3) 6051; PC64LE9-NEXT: stxv 63, 48(1) # 16-byte Folded Spill 6052; PC64LE9-NEXT: bl fmin 6053; PC64LE9-NEXT: nop 6054; PC64LE9-NEXT: addis 3, 2, .LCPI94_2@toc@ha 6055; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 6056; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 6057; PC64LE9-NEXT: lfs 1, .LCPI94_2@toc@l(3) 6058; PC64LE9-NEXT: addis 3, 2, .LCPI94_3@toc@ha 6059; PC64LE9-NEXT: lfs 2, .LCPI94_3@toc@l(3) 6060; PC64LE9-NEXT: bl fmin 6061; PC64LE9-NEXT: nop 6062; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 6063; PC64LE9-NEXT: addis 3, 2, .LCPI94_4@toc@ha 6064; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 6065; PC64LE9-NEXT: xxmrghd 63, 1, 0 6066; PC64LE9-NEXT: lfs 1, .LCPI94_4@toc@l(3) 6067; PC64LE9-NEXT: addis 3, 2, .LCPI94_5@toc@ha 6068; PC64LE9-NEXT: lfs 2, .LCPI94_5@toc@l(3) 6069; PC64LE9-NEXT: bl fmin 6070; PC64LE9-NEXT: nop 6071; PC64LE9-NEXT: addis 3, 2, .LCPI94_6@toc@ha 6072; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 6073; PC64LE9-NEXT: stxv 1, 32(1) # 16-byte Folded Spill 6074; PC64LE9-NEXT: lfs 1, .LCPI94_6@toc@l(3) 6075; PC64LE9-NEXT: addis 3, 2, .LCPI94_7@toc@ha 6076; PC64LE9-NEXT: lfs 2, .LCPI94_7@toc@l(3) 6077; PC64LE9-NEXT: bl fmin 6078; PC64LE9-NEXT: nop 6079; PC64LE9-NEXT: lxv 0, 32(1) # 16-byte Folded Reload 6080; PC64LE9-NEXT: vmr 2, 31 6081; PC64LE9-NEXT: lxv 63, 48(1) # 16-byte Folded Reload 6082; PC64LE9-NEXT: # kill: def $f1 killed $f1 def $vsl1 6083; PC64LE9-NEXT: xxmrghd 35, 1, 0 6084; PC64LE9-NEXT: addi 1, 1, 64 6085; PC64LE9-NEXT: ld 0, 16(1) 6086; PC64LE9-NEXT: mtlr 0 6087; PC64LE9-NEXT: blr 6088entry: 6089 %min = call <4 x double> @llvm.experimental.constrained.minnum.v4f64( 6090 <4 x double> <double 44.0, double 45.0, 6091 double 46.0, double 47.0>, 6092 <4 x double> <double 40.0, double 41.0, 6093 double 42.0, double 43.0>, 6094 metadata !"fpexcept.strict") #1 6095 ret <4 x double> %min 6096} 6097 6098define <1 x float> @constrained_vector_fptrunc_v1f64() #0 { 6099; PC64LE-LABEL: constrained_vector_fptrunc_v1f64: 6100; PC64LE: # %bb.0: # %entry 6101; PC64LE-NEXT: addis 3, 2, .LCPI95_0@toc@ha 6102; PC64LE-NEXT: lfd 0, .LCPI95_0@toc@l(3) 6103; PC64LE-NEXT: frsp 0, 0 6104; PC64LE-NEXT: xscvdpspn 0, 0 6105; PC64LE-NEXT: xxsldwi 34, 0, 0, 1 6106; PC64LE-NEXT: blr 6107; 6108; PC64LE9-LABEL: constrained_vector_fptrunc_v1f64: 6109; PC64LE9: # %bb.0: # %entry 6110; PC64LE9-NEXT: addis 3, 2, .LCPI95_0@toc@ha 6111; PC64LE9-NEXT: lfd 0, .LCPI95_0@toc@l(3) 6112; PC64LE9-NEXT: frsp 0, 0 6113; PC64LE9-NEXT: xscvdpspn 0, 0 6114; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 6115; PC64LE9-NEXT: blr 6116entry: 6117 %result = call <1 x float> @llvm.experimental.constrained.fptrunc.v1f32.v1f64( 6118 <1 x double><double 42.1>, 6119 metadata !"round.dynamic", 6120 metadata !"fpexcept.strict") #1 6121 ret <1 x float> %result 6122} 6123 6124define <2 x float> @constrained_vector_fptrunc_v2f64() #0 { 6125; PC64LE-LABEL: constrained_vector_fptrunc_v2f64: 6126; PC64LE: # %bb.0: # %entry 6127; PC64LE-NEXT: addis 3, 2, .LCPI96_0@toc@ha 6128; PC64LE-NEXT: addis 4, 2, .LCPI96_1@toc@ha 6129; PC64LE-NEXT: lfd 0, .LCPI96_0@toc@l(3) 6130; PC64LE-NEXT: lfd 1, .LCPI96_1@toc@l(4) 6131; PC64LE-NEXT: frsp 0, 0 6132; PC64LE-NEXT: frsp 1, 1 6133; PC64LE-NEXT: xscvdpspn 0, 0 6134; PC64LE-NEXT: xscvdpspn 1, 1 6135; PC64LE-NEXT: xxsldwi 34, 0, 0, 1 6136; PC64LE-NEXT: xxsldwi 35, 1, 1, 1 6137; PC64LE-NEXT: vmrglw 2, 3, 2 6138; PC64LE-NEXT: blr 6139; 6140; PC64LE9-LABEL: constrained_vector_fptrunc_v2f64: 6141; PC64LE9: # %bb.0: # %entry 6142; PC64LE9-NEXT: addis 3, 2, .LCPI96_0@toc@ha 6143; PC64LE9-NEXT: lfd 0, .LCPI96_0@toc@l(3) 6144; PC64LE9-NEXT: addis 3, 2, .LCPI96_1@toc@ha 6145; PC64LE9-NEXT: frsp 0, 0 6146; PC64LE9-NEXT: xscvdpspn 0, 0 6147; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 6148; PC64LE9-NEXT: lfd 0, .LCPI96_1@toc@l(3) 6149; PC64LE9-NEXT: frsp 0, 0 6150; PC64LE9-NEXT: xscvdpspn 0, 0 6151; PC64LE9-NEXT: xxsldwi 35, 0, 0, 1 6152; PC64LE9-NEXT: vmrglw 2, 3, 2 6153; PC64LE9-NEXT: blr 6154entry: 6155 %result = call <2 x float> @llvm.experimental.constrained.fptrunc.v2f32.v2f64( 6156 <2 x double><double 42.1, double 42.2>, 6157 metadata !"round.dynamic", 6158 metadata !"fpexcept.strict") #1 6159 ret <2 x float> %result 6160} 6161 6162define <3 x float> @constrained_vector_fptrunc_v3f64() #0 { 6163; PC64LE-LABEL: constrained_vector_fptrunc_v3f64: 6164; PC64LE: # %bb.0: # %entry 6165; PC64LE-NEXT: addis 3, 2, .LCPI97_0@toc@ha 6166; PC64LE-NEXT: addis 4, 2, .LCPI97_1@toc@ha 6167; PC64LE-NEXT: lfd 0, .LCPI97_0@toc@l(3) 6168; PC64LE-NEXT: lfd 1, .LCPI97_1@toc@l(4) 6169; PC64LE-NEXT: addis 3, 2, .LCPI97_3@toc@ha 6170; PC64LE-NEXT: frsp 0, 0 6171; PC64LE-NEXT: lfd 2, .LCPI97_3@toc@l(3) 6172; PC64LE-NEXT: addis 3, 2, .LCPI97_2@toc@ha 6173; PC64LE-NEXT: frsp 1, 1 6174; PC64LE-NEXT: addi 3, 3, .LCPI97_2@toc@l 6175; PC64LE-NEXT: frsp 2, 2 6176; PC64LE-NEXT: xscvdpspn 0, 0 6177; PC64LE-NEXT: xscvdpspn 1, 1 6178; PC64LE-NEXT: xxsldwi 34, 0, 0, 1 6179; PC64LE-NEXT: xscvdpspn 0, 2 6180; PC64LE-NEXT: xxsldwi 35, 1, 1, 1 6181; PC64LE-NEXT: vmrglw 2, 3, 2 6182; PC64LE-NEXT: lvx 3, 0, 3 6183; PC64LE-NEXT: xxsldwi 36, 0, 0, 1 6184; PC64LE-NEXT: vperm 2, 4, 2, 3 6185; PC64LE-NEXT: blr 6186; 6187; PC64LE9-LABEL: constrained_vector_fptrunc_v3f64: 6188; PC64LE9: # %bb.0: # %entry 6189; PC64LE9-NEXT: addis 3, 2, .LCPI97_0@toc@ha 6190; PC64LE9-NEXT: lfd 0, .LCPI97_0@toc@l(3) 6191; PC64LE9-NEXT: addis 3, 2, .LCPI97_1@toc@ha 6192; PC64LE9-NEXT: frsp 0, 0 6193; PC64LE9-NEXT: xscvdpspn 0, 0 6194; PC64LE9-NEXT: xxsldwi 34, 0, 0, 1 6195; PC64LE9-NEXT: lfd 0, .LCPI97_1@toc@l(3) 6196; PC64LE9-NEXT: addis 3, 2, .LCPI97_2@toc@ha 6197; PC64LE9-NEXT: addi 3, 3, .LCPI97_2@toc@l 6198; PC64LE9-NEXT: frsp 0, 0 6199; PC64LE9-NEXT: xscvdpspn 0, 0 6200; PC64LE9-NEXT: xxsldwi 35, 0, 0, 1 6201; PC64LE9-NEXT: vmrglw 2, 3, 2 6202; PC64LE9-NEXT: lxvx 35, 0, 3 6203; PC64LE9-NEXT: addis 3, 2, .LCPI97_3@toc@ha 6204; PC64LE9-NEXT: lfd 0, .LCPI97_3@toc@l(3) 6205; PC64LE9-NEXT: frsp 0, 0 6206; PC64LE9-NEXT: xscvdpspn 0, 0 6207; PC64LE9-NEXT: xxsldwi 36, 0, 0, 1 6208; PC64LE9-NEXT: vperm 2, 4, 2, 3 6209; PC64LE9-NEXT: blr 6210entry: 6211 %result = call <3 x float> @llvm.experimental.constrained.fptrunc.v3f32.v3f64( 6212 <3 x double><double 42.1, double 42.2, 6213 double 42.3>, 6214 metadata !"round.dynamic", 6215 metadata !"fpexcept.strict") #1 6216 ret <3 x float> %result 6217} 6218 6219define <4 x float> @constrained_vector_fptrunc_v4f64() #0 { 6220; PC64LE-LABEL: constrained_vector_fptrunc_v4f64: 6221; PC64LE: # %bb.0: # %entry 6222; PC64LE-NEXT: addis 3, 2, .LCPI98_0@toc@ha 6223; PC64LE-NEXT: addis 4, 2, .LCPI98_1@toc@ha 6224; PC64LE-NEXT: addis 5, 2, .LCPI98_2@toc@ha 6225; PC64LE-NEXT: addis 6, 2, .LCPI98_3@toc@ha 6226; PC64LE-NEXT: lfd 0, .LCPI98_0@toc@l(3) 6227; PC64LE-NEXT: lfd 1, .LCPI98_1@toc@l(4) 6228; PC64LE-NEXT: lfd 2, .LCPI98_2@toc@l(5) 6229; PC64LE-NEXT: lfd 3, .LCPI98_3@toc@l(6) 6230; PC64LE-NEXT: xxmrghd 0, 1, 0 6231; PC64LE-NEXT: xxmrghd 1, 3, 2 6232; PC64LE-NEXT: xvcvdpsp 34, 0 6233; PC64LE-NEXT: xvcvdpsp 35, 1 6234; PC64LE-NEXT: vmrgew 2, 3, 2 6235; PC64LE-NEXT: blr 6236; 6237; PC64LE9-LABEL: constrained_vector_fptrunc_v4f64: 6238; PC64LE9: # %bb.0: # %entry 6239; PC64LE9-NEXT: addis 3, 2, .LCPI98_0@toc@ha 6240; PC64LE9-NEXT: lfd 0, .LCPI98_0@toc@l(3) 6241; PC64LE9-NEXT: addis 3, 2, .LCPI98_1@toc@ha 6242; PC64LE9-NEXT: lfd 1, .LCPI98_1@toc@l(3) 6243; PC64LE9-NEXT: addis 3, 2, .LCPI98_2@toc@ha 6244; PC64LE9-NEXT: xxmrghd 0, 1, 0 6245; PC64LE9-NEXT: xvcvdpsp 34, 0 6246; PC64LE9-NEXT: lfd 0, .LCPI98_2@toc@l(3) 6247; PC64LE9-NEXT: addis 3, 2, .LCPI98_3@toc@ha 6248; PC64LE9-NEXT: lfd 1, .LCPI98_3@toc@l(3) 6249; PC64LE9-NEXT: xxmrghd 0, 1, 0 6250; PC64LE9-NEXT: xvcvdpsp 35, 0 6251; PC64LE9-NEXT: vmrgew 2, 3, 2 6252; PC64LE9-NEXT: blr 6253entry: 6254 %result = call <4 x float> @llvm.experimental.constrained.fptrunc.v4f32.v4f64( 6255 <4 x double><double 42.1, double 42.2, 6256 double 42.3, double 42.4>, 6257 metadata !"round.dynamic", 6258 metadata !"fpexcept.strict") #1 6259 ret <4 x float> %result 6260} 6261 6262define <1 x double> @constrained_vector_fpext_v1f32() #0 { 6263; PC64LE-LABEL: constrained_vector_fpext_v1f32: 6264; PC64LE: # %bb.0: # %entry 6265; PC64LE-NEXT: addis 3, 2, .LCPI99_0@toc@ha 6266; PC64LE-NEXT: lfs 0, .LCPI99_0@toc@l(3) 6267; PC64LE-NEXT: xxspltd 34, 0, 0 6268; PC64LE-NEXT: blr 6269; 6270; PC64LE9-LABEL: constrained_vector_fpext_v1f32: 6271; PC64LE9: # %bb.0: # %entry 6272; PC64LE9-NEXT: addis 3, 2, .LCPI99_0@toc@ha 6273; PC64LE9-NEXT: lfs 0, .LCPI99_0@toc@l(3) 6274; PC64LE9-NEXT: xxspltd 34, 0, 0 6275; PC64LE9-NEXT: blr 6276entry: 6277 %result = call <1 x double> @llvm.experimental.constrained.fpext.v1f64.v1f32( 6278 <1 x float><float 42.0>, 6279 metadata !"fpexcept.strict") #1 6280 ret <1 x double> %result 6281} 6282 6283define <2 x double> @constrained_vector_fpext_v2f32() #0 { 6284; PC64LE-LABEL: constrained_vector_fpext_v2f32: 6285; PC64LE: # %bb.0: # %entry 6286; PC64LE-NEXT: addis 3, 2, .LCPI100_0@toc@ha 6287; PC64LE-NEXT: addis 4, 2, .LCPI100_1@toc@ha 6288; PC64LE-NEXT: lfs 0, .LCPI100_0@toc@l(3) 6289; PC64LE-NEXT: lfs 1, .LCPI100_1@toc@l(4) 6290; PC64LE-NEXT: xxmrghd 34, 1, 0 6291; PC64LE-NEXT: blr 6292; 6293; PC64LE9-LABEL: constrained_vector_fpext_v2f32: 6294; PC64LE9: # %bb.0: # %entry 6295; PC64LE9-NEXT: addis 3, 2, .LCPI100_0@toc@ha 6296; PC64LE9-NEXT: lfs 0, .LCPI100_0@toc@l(3) 6297; PC64LE9-NEXT: addis 3, 2, .LCPI100_1@toc@ha 6298; PC64LE9-NEXT: lfs 1, .LCPI100_1@toc@l(3) 6299; PC64LE9-NEXT: xxmrghd 34, 1, 0 6300; PC64LE9-NEXT: blr 6301entry: 6302 %result = call <2 x double> @llvm.experimental.constrained.fpext.v2f64.v2f32( 6303 <2 x float><float 42.0, float 43.0>, 6304 metadata !"fpexcept.strict") #1 6305 ret <2 x double> %result 6306} 6307 6308define <3 x double> @constrained_vector_fpext_v3f32() #0 { 6309; PC64LE-LABEL: constrained_vector_fpext_v3f32: 6310; PC64LE: # %bb.0: # %entry 6311; PC64LE-NEXT: addis 3, 2, .LCPI101_0@toc@ha 6312; PC64LE-NEXT: addis 4, 2, .LCPI101_1@toc@ha 6313; PC64LE-NEXT: addis 5, 2, .LCPI101_2@toc@ha 6314; PC64LE-NEXT: lfs 1, .LCPI101_0@toc@l(3) 6315; PC64LE-NEXT: lfs 2, .LCPI101_1@toc@l(4) 6316; PC64LE-NEXT: lfs 3, .LCPI101_2@toc@l(5) 6317; PC64LE-NEXT: blr 6318; 6319; PC64LE9-LABEL: constrained_vector_fpext_v3f32: 6320; PC64LE9: # %bb.0: # %entry 6321; PC64LE9-NEXT: addis 3, 2, .LCPI101_0@toc@ha 6322; PC64LE9-NEXT: lfs 1, .LCPI101_0@toc@l(3) 6323; PC64LE9-NEXT: addis 3, 2, .LCPI101_1@toc@ha 6324; PC64LE9-NEXT: lfs 2, .LCPI101_1@toc@l(3) 6325; PC64LE9-NEXT: addis 3, 2, .LCPI101_2@toc@ha 6326; PC64LE9-NEXT: lfs 3, .LCPI101_2@toc@l(3) 6327; PC64LE9-NEXT: blr 6328entry: 6329 %result = call <3 x double> @llvm.experimental.constrained.fpext.v3f64.v3f32( 6330 <3 x float><float 42.0, float 43.0, 6331 float 44.0>, 6332 metadata !"fpexcept.strict") #1 6333 ret <3 x double> %result 6334} 6335 6336define <4 x double> @constrained_vector_fpext_v4f32() #0 { 6337; PC64LE-LABEL: constrained_vector_fpext_v4f32: 6338; PC64LE: # %bb.0: # %entry 6339; PC64LE-NEXT: addis 3, 2, .LCPI102_0@toc@ha 6340; PC64LE-NEXT: addis 4, 2, .LCPI102_1@toc@ha 6341; PC64LE-NEXT: addis 5, 2, .LCPI102_2@toc@ha 6342; PC64LE-NEXT: addis 6, 2, .LCPI102_3@toc@ha 6343; PC64LE-NEXT: lfs 0, .LCPI102_0@toc@l(3) 6344; PC64LE-NEXT: lfs 1, .LCPI102_1@toc@l(4) 6345; PC64LE-NEXT: lfs 2, .LCPI102_2@toc@l(5) 6346; PC64LE-NEXT: lfs 3, .LCPI102_3@toc@l(6) 6347; PC64LE-NEXT: xxmrghd 34, 1, 0 6348; PC64LE-NEXT: xxmrghd 35, 3, 2 6349; PC64LE-NEXT: blr 6350; 6351; PC64LE9-LABEL: constrained_vector_fpext_v4f32: 6352; PC64LE9: # %bb.0: # %entry 6353; PC64LE9-NEXT: addis 3, 2, .LCPI102_0@toc@ha 6354; PC64LE9-NEXT: lfs 0, .LCPI102_0@toc@l(3) 6355; PC64LE9-NEXT: addis 3, 2, .LCPI102_1@toc@ha 6356; PC64LE9-NEXT: lfs 1, .LCPI102_1@toc@l(3) 6357; PC64LE9-NEXT: addis 3, 2, .LCPI102_2@toc@ha 6358; PC64LE9-NEXT: xxmrghd 34, 1, 0 6359; PC64LE9-NEXT: lfs 0, .LCPI102_2@toc@l(3) 6360; PC64LE9-NEXT: addis 3, 2, .LCPI102_3@toc@ha 6361; PC64LE9-NEXT: lfs 1, .LCPI102_3@toc@l(3) 6362; PC64LE9-NEXT: xxmrghd 35, 1, 0 6363; PC64LE9-NEXT: blr 6364entry: 6365 %result = call <4 x double> @llvm.experimental.constrained.fpext.v4f64.v4f32( 6366 <4 x float><float 42.0, float 43.0, 6367 float 44.0, float 45.0>, 6368 metadata !"fpexcept.strict") #1 6369 ret <4 x double> %result 6370} 6371 6372define <1 x float> @constrained_vector_ceil_v1f32() #0 { 6373; PC64LE-LABEL: constrained_vector_ceil_v1f32: 6374; PC64LE: # %bb.0: # %entry 6375; PC64LE-NEXT: addis 3, 2, .LCPI103_0@toc@ha 6376; PC64LE-NEXT: addi 3, 3, .LCPI103_0@toc@l 6377; PC64LE-NEXT: lfiwzx 0, 0, 3 6378; PC64LE-NEXT: xxpermdi 34, 0, 0, 2 6379; PC64LE-NEXT: blr 6380; 6381; PC64LE9-LABEL: constrained_vector_ceil_v1f32: 6382; PC64LE9: # %bb.0: # %entry 6383; PC64LE9-NEXT: addis 3, 2, .LCPI103_0@toc@ha 6384; PC64LE9-NEXT: addi 3, 3, .LCPI103_0@toc@l 6385; PC64LE9-NEXT: lfiwzx 0, 0, 3 6386; PC64LE9-NEXT: xxpermdi 34, 0, 0, 2 6387; PC64LE9-NEXT: blr 6388entry: 6389 %ceil = call <1 x float> @llvm.experimental.constrained.ceil.v1f32( 6390 <1 x float> <float 1.5>, 6391 metadata !"fpexcept.strict") #1 6392 ret <1 x float> %ceil 6393} 6394 6395define <2 x double> @constrained_vector_ceil_v2f64() #0 { 6396; PC64LE-LABEL: constrained_vector_ceil_v2f64: 6397; PC64LE: # %bb.0: # %entry 6398; PC64LE-NEXT: addis 3, 2, .LCPI104_0@toc@ha 6399; PC64LE-NEXT: addi 3, 3, .LCPI104_0@toc@l 6400; PC64LE-NEXT: lxvd2x 0, 0, 3 6401; PC64LE-NEXT: xxswapd 34, 0 6402; PC64LE-NEXT: blr 6403; 6404; PC64LE9-LABEL: constrained_vector_ceil_v2f64: 6405; PC64LE9: # %bb.0: # %entry 6406; PC64LE9-NEXT: addis 3, 2, .LCPI104_0@toc@ha 6407; PC64LE9-NEXT: addi 3, 3, .LCPI104_0@toc@l 6408; PC64LE9-NEXT: lxvx 34, 0, 3 6409; PC64LE9-NEXT: blr 6410entry: 6411 %ceil = call <2 x double> @llvm.experimental.constrained.ceil.v2f64( 6412 <2 x double> <double 1.1, double 1.9>, 6413 metadata !"fpexcept.strict") #1 6414 ret <2 x double> %ceil 6415} 6416 6417define <3 x float> @constrained_vector_ceil_v3f32() #0 { 6418; PC64LE-LABEL: constrained_vector_ceil_v3f32: 6419; PC64LE: # %bb.0: # %entry 6420; PC64LE-NEXT: addis 3, 2, .LCPI105_0@toc@ha 6421; PC64LE-NEXT: addi 3, 3, .LCPI105_0@toc@l 6422; PC64LE-NEXT: lvx 2, 0, 3 6423; PC64LE-NEXT: blr 6424; 6425; PC64LE9-LABEL: constrained_vector_ceil_v3f32: 6426; PC64LE9: # %bb.0: # %entry 6427; PC64LE9-NEXT: addis 3, 2, .LCPI105_0@toc@ha 6428; PC64LE9-NEXT: addi 3, 3, .LCPI105_0@toc@l 6429; PC64LE9-NEXT: lxvx 34, 0, 3 6430; PC64LE9-NEXT: blr 6431entry: 6432 %ceil = call <3 x float> @llvm.experimental.constrained.ceil.v3f32( 6433 <3 x float> <float 1.5, float 2.5, float 3.5>, 6434 metadata !"fpexcept.strict") #1 6435 ret <3 x float> %ceil 6436} 6437 6438define <3 x double> @constrained_vector_ceil_v3f64() #0 { 6439; PC64LE-LABEL: constrained_vector_ceil_v3f64: 6440; PC64LE: # %bb.0: # %entry 6441; PC64LE-NEXT: addis 3, 2, .LCPI106_0@toc@ha 6442; PC64LE-NEXT: lfs 1, .LCPI106_0@toc@l(3) 6443; PC64LE-NEXT: fmr 2, 1 6444; PC64LE-NEXT: fmr 3, 1 6445; PC64LE-NEXT: blr 6446; 6447; PC64LE9-LABEL: constrained_vector_ceil_v3f64: 6448; PC64LE9: # %bb.0: # %entry 6449; PC64LE9-NEXT: addis 3, 2, .LCPI106_0@toc@ha 6450; PC64LE9-NEXT: lfs 1, .LCPI106_0@toc@l(3) 6451; PC64LE9-NEXT: fmr 2, 1 6452; PC64LE9-NEXT: fmr 3, 1 6453; PC64LE9-NEXT: blr 6454entry: 6455 %ceil = call <3 x double> @llvm.experimental.constrained.ceil.v3f64( 6456 <3 x double> <double 1.1, double 1.9, double 1.5>, 6457 metadata !"fpexcept.strict") #1 6458 ret <3 x double> %ceil 6459} 6460 6461define <1 x float> @constrained_vector_floor_v1f32() #0 { 6462; PC64LE-LABEL: constrained_vector_floor_v1f32: 6463; PC64LE: # %bb.0: # %entry 6464; PC64LE-NEXT: addis 3, 2, .LCPI107_0@toc@ha 6465; PC64LE-NEXT: addi 3, 3, .LCPI107_0@toc@l 6466; PC64LE-NEXT: lfiwzx 0, 0, 3 6467; PC64LE-NEXT: xxpermdi 34, 0, 0, 2 6468; PC64LE-NEXT: blr 6469; 6470; PC64LE9-LABEL: constrained_vector_floor_v1f32: 6471; PC64LE9: # %bb.0: # %entry 6472; PC64LE9-NEXT: addis 3, 2, .LCPI107_0@toc@ha 6473; PC64LE9-NEXT: addi 3, 3, .LCPI107_0@toc@l 6474; PC64LE9-NEXT: lfiwzx 0, 0, 3 6475; PC64LE9-NEXT: xxpermdi 34, 0, 0, 2 6476; PC64LE9-NEXT: blr 6477entry: 6478 %floor = call <1 x float> @llvm.experimental.constrained.floor.v1f32( 6479 <1 x float> <float 1.5>, 6480 metadata !"fpexcept.strict") #1 6481 ret <1 x float> %floor 6482} 6483 6484 6485define <2 x double> @constrained_vector_floor_v2f64() #0 { 6486; PC64LE-LABEL: constrained_vector_floor_v2f64: 6487; PC64LE: # %bb.0: # %entry 6488; PC64LE-NEXT: addis 3, 2, .LCPI108_0@toc@ha 6489; PC64LE-NEXT: addi 3, 3, .LCPI108_0@toc@l 6490; PC64LE-NEXT: lxvd2x 0, 0, 3 6491; PC64LE-NEXT: xxswapd 34, 0 6492; PC64LE-NEXT: blr 6493; 6494; PC64LE9-LABEL: constrained_vector_floor_v2f64: 6495; PC64LE9: # %bb.0: # %entry 6496; PC64LE9-NEXT: addis 3, 2, .LCPI108_0@toc@ha 6497; PC64LE9-NEXT: addi 3, 3, .LCPI108_0@toc@l 6498; PC64LE9-NEXT: lxvx 34, 0, 3 6499; PC64LE9-NEXT: blr 6500entry: 6501 %floor = call <2 x double> @llvm.experimental.constrained.floor.v2f64( 6502 <2 x double> <double 1.1, double 1.9>, 6503 metadata !"fpexcept.strict") #1 6504 ret <2 x double> %floor 6505} 6506 6507define <3 x float> @constrained_vector_floor_v3f32() #0 { 6508; PC64LE-LABEL: constrained_vector_floor_v3f32: 6509; PC64LE: # %bb.0: # %entry 6510; PC64LE-NEXT: addis 3, 2, .LCPI109_0@toc@ha 6511; PC64LE-NEXT: addi 3, 3, .LCPI109_0@toc@l 6512; PC64LE-NEXT: lvx 2, 0, 3 6513; PC64LE-NEXT: blr 6514; 6515; PC64LE9-LABEL: constrained_vector_floor_v3f32: 6516; PC64LE9: # %bb.0: # %entry 6517; PC64LE9-NEXT: addis 3, 2, .LCPI109_0@toc@ha 6518; PC64LE9-NEXT: addi 3, 3, .LCPI109_0@toc@l 6519; PC64LE9-NEXT: lxvx 34, 0, 3 6520; PC64LE9-NEXT: blr 6521entry: 6522 %floor = call <3 x float> @llvm.experimental.constrained.floor.v3f32( 6523 <3 x float> <float 1.5, float 2.5, float 3.5>, 6524 metadata !"fpexcept.strict") #1 6525 ret <3 x float> %floor 6526} 6527 6528define <3 x double> @constrained_vector_floor_v3f64() #0 { 6529; PC64LE-LABEL: constrained_vector_floor_v3f64: 6530; PC64LE: # %bb.0: # %entry 6531; PC64LE-NEXT: addis 3, 2, .LCPI110_0@toc@ha 6532; PC64LE-NEXT: lfs 1, .LCPI110_0@toc@l(3) 6533; PC64LE-NEXT: fmr 2, 1 6534; PC64LE-NEXT: fmr 3, 1 6535; PC64LE-NEXT: blr 6536; 6537; PC64LE9-LABEL: constrained_vector_floor_v3f64: 6538; PC64LE9: # %bb.0: # %entry 6539; PC64LE9-NEXT: addis 3, 2, .LCPI110_0@toc@ha 6540; PC64LE9-NEXT: lfs 1, .LCPI110_0@toc@l(3) 6541; PC64LE9-NEXT: fmr 2, 1 6542; PC64LE9-NEXT: fmr 3, 1 6543; PC64LE9-NEXT: blr 6544entry: 6545 %floor = call <3 x double> @llvm.experimental.constrained.floor.v3f64( 6546 <3 x double> <double 1.1, double 1.9, double 1.5>, 6547 metadata !"fpexcept.strict") #1 6548 ret <3 x double> %floor 6549} 6550 6551define <1 x float> @constrained_vector_round_v1f32() #0 { 6552; PC64LE-LABEL: constrained_vector_round_v1f32: 6553; PC64LE: # %bb.0: # %entry 6554; PC64LE-NEXT: addis 3, 2, .LCPI111_0@toc@ha 6555; PC64LE-NEXT: addi 3, 3, .LCPI111_0@toc@l 6556; PC64LE-NEXT: lfiwzx 0, 0, 3 6557; PC64LE-NEXT: xxpermdi 34, 0, 0, 2 6558; PC64LE-NEXT: blr 6559; 6560; PC64LE9-LABEL: constrained_vector_round_v1f32: 6561; PC64LE9: # %bb.0: # %entry 6562; PC64LE9-NEXT: addis 3, 2, .LCPI111_0@toc@ha 6563; PC64LE9-NEXT: addi 3, 3, .LCPI111_0@toc@l 6564; PC64LE9-NEXT: lfiwzx 0, 0, 3 6565; PC64LE9-NEXT: xxpermdi 34, 0, 0, 2 6566; PC64LE9-NEXT: blr 6567entry: 6568 %round = call <1 x float> @llvm.experimental.constrained.round.v1f32( 6569 <1 x float> <float 1.5>, 6570 metadata !"fpexcept.strict") #1 6571 ret <1 x float> %round 6572} 6573 6574define <2 x double> @constrained_vector_round_v2f64() #0 { 6575; PC64LE-LABEL: constrained_vector_round_v2f64: 6576; PC64LE: # %bb.0: # %entry 6577; PC64LE-NEXT: addis 3, 2, .LCPI112_0@toc@ha 6578; PC64LE-NEXT: addi 3, 3, .LCPI112_0@toc@l 6579; PC64LE-NEXT: lxvd2x 0, 0, 3 6580; PC64LE-NEXT: xxswapd 34, 0 6581; PC64LE-NEXT: blr 6582; 6583; PC64LE9-LABEL: constrained_vector_round_v2f64: 6584; PC64LE9: # %bb.0: # %entry 6585; PC64LE9-NEXT: addis 3, 2, .LCPI112_0@toc@ha 6586; PC64LE9-NEXT: addi 3, 3, .LCPI112_0@toc@l 6587; PC64LE9-NEXT: lxvx 34, 0, 3 6588; PC64LE9-NEXT: blr 6589entry: 6590 %round = call <2 x double> @llvm.experimental.constrained.round.v2f64( 6591 <2 x double> <double 1.1, double 1.9>, 6592 metadata !"fpexcept.strict") #1 6593 ret <2 x double> %round 6594} 6595 6596define <3 x float> @constrained_vector_round_v3f32() #0 { 6597; PC64LE-LABEL: constrained_vector_round_v3f32: 6598; PC64LE: # %bb.0: # %entry 6599; PC64LE-NEXT: addis 3, 2, .LCPI113_0@toc@ha 6600; PC64LE-NEXT: addi 3, 3, .LCPI113_0@toc@l 6601; PC64LE-NEXT: lvx 2, 0, 3 6602; PC64LE-NEXT: blr 6603; 6604; PC64LE9-LABEL: constrained_vector_round_v3f32: 6605; PC64LE9: # %bb.0: # %entry 6606; PC64LE9-NEXT: addis 3, 2, .LCPI113_0@toc@ha 6607; PC64LE9-NEXT: addi 3, 3, .LCPI113_0@toc@l 6608; PC64LE9-NEXT: lxvx 34, 0, 3 6609; PC64LE9-NEXT: blr 6610entry: 6611 %round = call <3 x float> @llvm.experimental.constrained.round.v3f32( 6612 <3 x float> <float 1.5, float 2.5, float 3.5>, 6613 metadata !"fpexcept.strict") #1 6614 ret <3 x float> %round 6615} 6616 6617 6618define <3 x double> @constrained_vector_round_v3f64() #0 { 6619; PC64LE-LABEL: constrained_vector_round_v3f64: 6620; PC64LE: # %bb.0: # %entry 6621; PC64LE-NEXT: addis 4, 2, .LCPI114_1@toc@ha 6622; PC64LE-NEXT: addis 3, 2, .LCPI114_0@toc@ha 6623; PC64LE-NEXT: lfs 2, .LCPI114_1@toc@l(4) 6624; PC64LE-NEXT: lfs 1, .LCPI114_0@toc@l(3) 6625; PC64LE-NEXT: fmr 3, 2 6626; PC64LE-NEXT: blr 6627; 6628; PC64LE9-LABEL: constrained_vector_round_v3f64: 6629; PC64LE9: # %bb.0: # %entry 6630; PC64LE9-NEXT: addis 3, 2, .LCPI114_0@toc@ha 6631; PC64LE9-NEXT: lfs 1, .LCPI114_0@toc@l(3) 6632; PC64LE9-NEXT: addis 3, 2, .LCPI114_1@toc@ha 6633; PC64LE9-NEXT: lfs 2, .LCPI114_1@toc@l(3) 6634; PC64LE9-NEXT: fmr 3, 2 6635; PC64LE9-NEXT: blr 6636entry: 6637 %round = call <3 x double> @llvm.experimental.constrained.round.v3f64( 6638 <3 x double> <double 1.1, double 1.9, double 1.5>, 6639 metadata !"fpexcept.strict") #1 6640 ret <3 x double> %round 6641} 6642 6643define <1 x float> @constrained_vector_trunc_v1f32() #0 { 6644; PC64LE-LABEL: constrained_vector_trunc_v1f32: 6645; PC64LE: # %bb.0: # %entry 6646; PC64LE-NEXT: addis 3, 2, .LCPI115_0@toc@ha 6647; PC64LE-NEXT: addi 3, 3, .LCPI115_0@toc@l 6648; PC64LE-NEXT: lfiwzx 0, 0, 3 6649; PC64LE-NEXT: xxpermdi 34, 0, 0, 2 6650; PC64LE-NEXT: blr 6651; 6652; PC64LE9-LABEL: constrained_vector_trunc_v1f32: 6653; PC64LE9: # %bb.0: # %entry 6654; PC64LE9-NEXT: addis 3, 2, .LCPI115_0@toc@ha 6655; PC64LE9-NEXT: addi 3, 3, .LCPI115_0@toc@l 6656; PC64LE9-NEXT: lfiwzx 0, 0, 3 6657; PC64LE9-NEXT: xxpermdi 34, 0, 0, 2 6658; PC64LE9-NEXT: blr 6659entry: 6660 %trunc = call <1 x float> @llvm.experimental.constrained.trunc.v1f32( 6661 <1 x float> <float 1.5>, 6662 metadata !"fpexcept.strict") #1 6663 ret <1 x float> %trunc 6664} 6665 6666define <2 x double> @constrained_vector_trunc_v2f64() #0 { 6667; PC64LE-LABEL: constrained_vector_trunc_v2f64: 6668; PC64LE: # %bb.0: # %entry 6669; PC64LE-NEXT: addis 3, 2, .LCPI116_0@toc@ha 6670; PC64LE-NEXT: addi 3, 3, .LCPI116_0@toc@l 6671; PC64LE-NEXT: lxvd2x 0, 0, 3 6672; PC64LE-NEXT: xxswapd 34, 0 6673; PC64LE-NEXT: blr 6674; 6675; PC64LE9-LABEL: constrained_vector_trunc_v2f64: 6676; PC64LE9: # %bb.0: # %entry 6677; PC64LE9-NEXT: addis 3, 2, .LCPI116_0@toc@ha 6678; PC64LE9-NEXT: addi 3, 3, .LCPI116_0@toc@l 6679; PC64LE9-NEXT: lxvx 34, 0, 3 6680; PC64LE9-NEXT: blr 6681entry: 6682 %trunc = call <2 x double> @llvm.experimental.constrained.trunc.v2f64( 6683 <2 x double> <double 1.1, double 1.9>, 6684 metadata !"fpexcept.strict") #1 6685 ret <2 x double> %trunc 6686} 6687 6688define <3 x float> @constrained_vector_trunc_v3f32() #0 { 6689; PC64LE-LABEL: constrained_vector_trunc_v3f32: 6690; PC64LE: # %bb.0: # %entry 6691; PC64LE-NEXT: addis 3, 2, .LCPI117_0@toc@ha 6692; PC64LE-NEXT: addi 3, 3, .LCPI117_0@toc@l 6693; PC64LE-NEXT: lvx 2, 0, 3 6694; PC64LE-NEXT: blr 6695; 6696; PC64LE9-LABEL: constrained_vector_trunc_v3f32: 6697; PC64LE9: # %bb.0: # %entry 6698; PC64LE9-NEXT: addis 3, 2, .LCPI117_0@toc@ha 6699; PC64LE9-NEXT: addi 3, 3, .LCPI117_0@toc@l 6700; PC64LE9-NEXT: lxvx 34, 0, 3 6701; PC64LE9-NEXT: blr 6702entry: 6703 %trunc = call <3 x float> @llvm.experimental.constrained.trunc.v3f32( 6704 <3 x float> <float 1.5, float 2.5, float 3.5>, 6705 metadata !"fpexcept.strict") #1 6706 ret <3 x float> %trunc 6707} 6708 6709define <3 x double> @constrained_vector_trunc_v3f64() #0 { 6710; PC64LE-LABEL: constrained_vector_trunc_v3f64: 6711; PC64LE: # %bb.0: # %entry 6712; PC64LE-NEXT: addis 3, 2, .LCPI118_0@toc@ha 6713; PC64LE-NEXT: lfs 1, .LCPI118_0@toc@l(3) 6714; PC64LE-NEXT: fmr 2, 1 6715; PC64LE-NEXT: fmr 3, 1 6716; PC64LE-NEXT: blr 6717; 6718; PC64LE9-LABEL: constrained_vector_trunc_v3f64: 6719; PC64LE9: # %bb.0: # %entry 6720; PC64LE9-NEXT: addis 3, 2, .LCPI118_0@toc@ha 6721; PC64LE9-NEXT: lfs 1, .LCPI118_0@toc@l(3) 6722; PC64LE9-NEXT: fmr 2, 1 6723; PC64LE9-NEXT: fmr 3, 1 6724; PC64LE9-NEXT: blr 6725entry: 6726 %trunc = call <3 x double> @llvm.experimental.constrained.trunc.v3f64( 6727 <3 x double> <double 1.1, double 1.9, double 1.5>, 6728 metadata !"fpexcept.strict") #1 6729 ret <3 x double> %trunc 6730} 6731 6732attributes #0 = { nounwind strictfp noimplicitfloat } 6733attributes #1 = { strictfp } 6734 6735; Single width declarations 6736declare <2 x double> @llvm.experimental.constrained.fadd.v2f64(<2 x double>, <2 x double>, metadata, metadata) 6737declare <2 x double> @llvm.experimental.constrained.fsub.v2f64(<2 x double>, <2 x double>, metadata, metadata) 6738declare <2 x double> @llvm.experimental.constrained.fmul.v2f64(<2 x double>, <2 x double>, metadata, metadata) 6739declare <2 x double> @llvm.experimental.constrained.fdiv.v2f64(<2 x double>, <2 x double>, metadata, metadata) 6740declare <2 x double> @llvm.experimental.constrained.frem.v2f64(<2 x double>, <2 x double>, metadata, metadata) 6741declare <2 x double> @llvm.experimental.constrained.sqrt.v2f64(<2 x double>, metadata, metadata) 6742declare <2 x double> @llvm.experimental.constrained.pow.v2f64(<2 x double>, <2 x double>, metadata, metadata) 6743declare <2 x double> @llvm.experimental.constrained.powi.v2f64(<2 x double>, i32, metadata, metadata) 6744declare <2 x double> @llvm.experimental.constrained.sin.v2f64(<2 x double>, metadata, metadata) 6745declare <2 x double> @llvm.experimental.constrained.cos.v2f64(<2 x double>, metadata, metadata) 6746declare <2 x double> @llvm.experimental.constrained.exp.v2f64(<2 x double>, metadata, metadata) 6747declare <2 x double> @llvm.experimental.constrained.exp2.v2f64(<2 x double>, metadata, metadata) 6748declare <2 x double> @llvm.experimental.constrained.log.v2f64(<2 x double>, metadata, metadata) 6749declare <2 x double> @llvm.experimental.constrained.log10.v2f64(<2 x double>, metadata, metadata) 6750declare <2 x double> @llvm.experimental.constrained.log2.v2f64(<2 x double>, metadata, metadata) 6751declare <2 x double> @llvm.experimental.constrained.rint.v2f64(<2 x double>, metadata, metadata) 6752declare <2 x double> @llvm.experimental.constrained.nearbyint.v2f64(<2 x double>, metadata, metadata) 6753declare <2 x double> @llvm.experimental.constrained.maxnum.v2f64(<2 x double>, <2 x double>, metadata) 6754declare <2 x double> @llvm.experimental.constrained.minnum.v2f64(<2 x double>, <2 x double>, metadata) 6755declare <2 x float> @llvm.experimental.constrained.fptrunc.v2f32.v2f64(<2 x double>, metadata, metadata) 6756declare <2 x double> @llvm.experimental.constrained.fpext.v2f64.v2f32(<2 x float>, metadata) 6757declare <2 x double> @llvm.experimental.constrained.ceil.v2f64(<2 x double>, metadata) 6758declare <2 x double> @llvm.experimental.constrained.floor.v2f64(<2 x double>, metadata) 6759declare <2 x double> @llvm.experimental.constrained.round.v2f64(<2 x double>, metadata) 6760declare <2 x double> @llvm.experimental.constrained.trunc.v2f64(<2 x double>, metadata) 6761 6762; Scalar width declarations 6763declare <1 x float> @llvm.experimental.constrained.fadd.v1f32(<1 x float>, <1 x float>, metadata, metadata) 6764declare <1 x float> @llvm.experimental.constrained.fsub.v1f32(<1 x float>, <1 x float>, metadata, metadata) 6765declare <1 x float> @llvm.experimental.constrained.fmul.v1f32(<1 x float>, <1 x float>, metadata, metadata) 6766declare <1 x float> @llvm.experimental.constrained.fdiv.v1f32(<1 x float>, <1 x float>, metadata, metadata) 6767declare <1 x float> @llvm.experimental.constrained.frem.v1f32(<1 x float>, <1 x float>, metadata, metadata) 6768declare <1 x float> @llvm.experimental.constrained.sqrt.v1f32(<1 x float>, metadata, metadata) 6769declare <1 x float> @llvm.experimental.constrained.pow.v1f32(<1 x float>, <1 x float>, metadata, metadata) 6770declare <1 x float> @llvm.experimental.constrained.powi.v1f32(<1 x float>, i32, metadata, metadata) 6771declare <1 x float> @llvm.experimental.constrained.sin.v1f32(<1 x float>, metadata, metadata) 6772declare <1 x float> @llvm.experimental.constrained.cos.v1f32(<1 x float>, metadata, metadata) 6773declare <1 x float> @llvm.experimental.constrained.exp.v1f32(<1 x float>, metadata, metadata) 6774declare <1 x float> @llvm.experimental.constrained.exp2.v1f32(<1 x float>, metadata, metadata) 6775declare <1 x float> @llvm.experimental.constrained.log.v1f32(<1 x float>, metadata, metadata) 6776declare <1 x float> @llvm.experimental.constrained.log10.v1f32(<1 x float>, metadata, metadata) 6777declare <1 x float> @llvm.experimental.constrained.log2.v1f32(<1 x float>, metadata, metadata) 6778declare <1 x float> @llvm.experimental.constrained.rint.v1f32(<1 x float>, metadata, metadata) 6779declare <1 x float> @llvm.experimental.constrained.nearbyint.v1f32(<1 x float>, metadata, metadata) 6780declare <1 x float> @llvm.experimental.constrained.maxnum.v1f32(<1 x float>, <1 x float>, metadata) 6781declare <1 x float> @llvm.experimental.constrained.minnum.v1f32(<1 x float>, <1 x float>, metadata) 6782declare <1 x float> @llvm.experimental.constrained.fptrunc.v1f32.v1f64(<1 x double>, metadata, metadata) 6783declare <1 x double> @llvm.experimental.constrained.fpext.v1f64.v1f32(<1 x float>, metadata) 6784declare <1 x float> @llvm.experimental.constrained.ceil.v1f32(<1 x float>, metadata) 6785declare <1 x float> @llvm.experimental.constrained.floor.v1f32(<1 x float>, metadata) 6786declare <1 x float> @llvm.experimental.constrained.round.v1f32(<1 x float>, metadata) 6787declare <1 x float> @llvm.experimental.constrained.trunc.v1f32(<1 x float>, metadata) 6788 6789; Illegal width declarations 6790declare <3 x float> @llvm.experimental.constrained.fadd.v3f32(<3 x float>, <3 x float>, metadata, metadata) 6791declare <3 x double> @llvm.experimental.constrained.fadd.v3f64(<3 x double>, <3 x double>, metadata, metadata) 6792declare <3 x float> @llvm.experimental.constrained.fsub.v3f32(<3 x float>, <3 x float>, metadata, metadata) 6793declare <3 x double> @llvm.experimental.constrained.fsub.v3f64(<3 x double>, <3 x double>, metadata, metadata) 6794declare <3 x float> @llvm.experimental.constrained.fmul.v3f32(<3 x float>, <3 x float>, metadata, metadata) 6795declare <3 x double> @llvm.experimental.constrained.fmul.v3f64(<3 x double>, <3 x double>, metadata, metadata) 6796declare <3 x float> @llvm.experimental.constrained.fdiv.v3f32(<3 x float>, <3 x float>, metadata, metadata) 6797declare <3 x double> @llvm.experimental.constrained.fdiv.v3f64(<3 x double>, <3 x double>, metadata, metadata) 6798declare <3 x float> @llvm.experimental.constrained.frem.v3f32(<3 x float>, <3 x float>, metadata, metadata) 6799declare <3 x double> @llvm.experimental.constrained.frem.v3f64(<3 x double>, <3 x double>, metadata, metadata) 6800declare <3 x float> @llvm.experimental.constrained.sqrt.v3f32(<3 x float>, metadata, metadata) 6801declare <3 x double> @llvm.experimental.constrained.sqrt.v3f64(<3 x double>, metadata, metadata) 6802declare <3 x float> @llvm.experimental.constrained.pow.v3f32(<3 x float>, <3 x float>, metadata, metadata) 6803declare <3 x double> @llvm.experimental.constrained.pow.v3f64(<3 x double>, <3 x double>, metadata, metadata) 6804declare <3 x float> @llvm.experimental.constrained.powi.v3f32(<3 x float>, i32, metadata, metadata) 6805declare <3 x double> @llvm.experimental.constrained.powi.v3f64(<3 x double>, i32, metadata, metadata) 6806declare <3 x float> @llvm.experimental.constrained.sin.v3f32(<3 x float>, metadata, metadata) 6807declare <3 x double> @llvm.experimental.constrained.sin.v3f64(<3 x double>, metadata, metadata) 6808declare <3 x float> @llvm.experimental.constrained.cos.v3f32(<3 x float>, metadata, metadata) 6809declare <3 x double> @llvm.experimental.constrained.cos.v3f64(<3 x double>, metadata, metadata) 6810declare <3 x float> @llvm.experimental.constrained.exp.v3f32(<3 x float>, metadata, metadata) 6811declare <3 x double> @llvm.experimental.constrained.exp.v3f64(<3 x double>, metadata, metadata) 6812declare <3 x float> @llvm.experimental.constrained.exp2.v3f32(<3 x float>, metadata, metadata) 6813declare <3 x double> @llvm.experimental.constrained.exp2.v3f64(<3 x double>, metadata, metadata) 6814declare <3 x float> @llvm.experimental.constrained.log.v3f32(<3 x float>, metadata, metadata) 6815declare <3 x double> @llvm.experimental.constrained.log.v3f64(<3 x double>, metadata, metadata) 6816declare <3 x float> @llvm.experimental.constrained.log10.v3f32(<3 x float>, metadata, metadata) 6817declare <3 x double> @llvm.experimental.constrained.log10.v3f64(<3 x double>, metadata, metadata) 6818declare <3 x float> @llvm.experimental.constrained.log2.v3f32(<3 x float>, metadata, metadata) 6819declare <3 x double> @llvm.experimental.constrained.log2.v3f64(<3 x double>, metadata, metadata) 6820declare <3 x float> @llvm.experimental.constrained.rint.v3f32(<3 x float>, metadata, metadata) 6821declare <3 x double> @llvm.experimental.constrained.rint.v3f64(<3 x double>, metadata, metadata) 6822declare <3 x float> @llvm.experimental.constrained.nearbyint.v3f32(<3 x float>, metadata, metadata) 6823declare <3 x double> @llvm.experimental.constrained.nearbyint.v3f64(<3 x double>, metadata, metadata) 6824declare <3 x float> @llvm.experimental.constrained.maxnum.v3f32(<3 x float>, <3 x float>, metadata) 6825declare <3 x double> @llvm.experimental.constrained.maxnum.v3f64(<3 x double>, <3 x double>, metadata) 6826declare <3 x float> @llvm.experimental.constrained.minnum.v3f32(<3 x float>, <3 x float>, metadata) 6827declare <3 x double> @llvm.experimental.constrained.minnum.v3f64(<3 x double>, <3 x double>, metadata) 6828declare <3 x float> @llvm.experimental.constrained.fptrunc.v3f32.v3f64(<3 x double>, metadata, metadata) 6829declare <3 x double> @llvm.experimental.constrained.fpext.v3f64.v3f32(<3 x float>, metadata) 6830declare <3 x float> @llvm.experimental.constrained.ceil.v3f32(<3 x float>, metadata) 6831declare <3 x double> @llvm.experimental.constrained.ceil.v3f64(<3 x double>, metadata) 6832declare <3 x float> @llvm.experimental.constrained.floor.v3f32(<3 x float>, metadata) 6833declare <3 x double> @llvm.experimental.constrained.floor.v3f64(<3 x double>, metadata) 6834declare <3 x float> @llvm.experimental.constrained.round.v3f32(<3 x float>, metadata) 6835declare <3 x double> @llvm.experimental.constrained.round.v3f64(<3 x double>, metadata) 6836declare <3 x float> @llvm.experimental.constrained.trunc.v3f32(<3 x float>, metadata) 6837declare <3 x double> @llvm.experimental.constrained.trunc.v3f64(<3 x double>, metadata) 6838 6839; Double width declarations 6840declare <4 x double> @llvm.experimental.constrained.fadd.v4f64(<4 x double>, <4 x double>, metadata, metadata) 6841declare <4 x double> @llvm.experimental.constrained.fsub.v4f64(<4 x double>, <4 x double>, metadata, metadata) 6842declare <4 x double> @llvm.experimental.constrained.fmul.v4f64(<4 x double>, <4 x double>, metadata, metadata) 6843declare <4 x double> @llvm.experimental.constrained.fdiv.v4f64(<4 x double>, <4 x double>, metadata, metadata) 6844declare <4 x double> @llvm.experimental.constrained.frem.v4f64(<4 x double>, <4 x double>, metadata, metadata) 6845declare <4 x double> @llvm.experimental.constrained.sqrt.v4f64(<4 x double>, metadata, metadata) 6846declare <4 x double> @llvm.experimental.constrained.pow.v4f64(<4 x double>, <4 x double>, metadata, metadata) 6847declare <4 x double> @llvm.experimental.constrained.powi.v4f64(<4 x double>, i32, metadata, metadata) 6848declare <4 x double> @llvm.experimental.constrained.sin.v4f64(<4 x double>, metadata, metadata) 6849declare <4 x double> @llvm.experimental.constrained.cos.v4f64(<4 x double>, metadata, metadata) 6850declare <4 x double> @llvm.experimental.constrained.exp.v4f64(<4 x double>, metadata, metadata) 6851declare <4 x double> @llvm.experimental.constrained.exp2.v4f64(<4 x double>, metadata, metadata) 6852declare <4 x double> @llvm.experimental.constrained.log.v4f64(<4 x double>, metadata, metadata) 6853declare <4 x double> @llvm.experimental.constrained.log10.v4f64(<4 x double>, metadata, metadata) 6854declare <4 x double> @llvm.experimental.constrained.log2.v4f64(<4 x double>, metadata, metadata) 6855declare <4 x double> @llvm.experimental.constrained.rint.v4f64(<4 x double>, metadata, metadata) 6856declare <4 x double> @llvm.experimental.constrained.nearbyint.v4f64(<4 x double>, metadata, metadata) 6857declare <4 x double> @llvm.experimental.constrained.maxnum.v4f64(<4 x double>, <4 x double>, metadata) 6858declare <4 x double> @llvm.experimental.constrained.minnum.v4f64(<4 x double>, <4 x double>, metadata) 6859declare <4 x float> @llvm.experimental.constrained.fptrunc.v4f32.v4f64(<4 x double>, metadata, metadata) 6860declare <4 x double> @llvm.experimental.constrained.fpext.v4f64.v4f32(<4 x float>, metadata) 6861declare <4 x double> @llvm.experimental.constrained.ceil.v4f64(<4 x double>, metadata) 6862declare <4 x double> @llvm.experimental.constrained.floor.v4f64(<4 x double>, metadata) 6863declare <4 x double> @llvm.experimental.constrained.round.v4f64(<4 x double>, metadata) 6864declare <4 x double> @llvm.experimental.constrained.trunc.v4f64(<4 x double>, metadata) 6865